fix: address P0-2b review issues - build tag and actionType guard

1. Add //go:build !cgo to control_host_test.go so the stub-testing
   tests only run in non-CGO builds, matching the stub.go build
   constraint. Clean up dead nil check in SignatureCompiles test.

2. Replace two independent if-statements for actionType mapping in
   ControlHost with a map lookup + explicit guard, consistent with
   ControlQueue's ActionMap pattern. Prevents silent zero-value
   actionType if SupportedHostActions expands later.
This commit is contained in:
Rongsong Shen 2026-04-17 08:25:05 +00:00
parent 8124cda83e
commit 5807a05cbb
2 changed files with 11 additions and 9 deletions

View file

@ -1,3 +1,5 @@
//go:build !cgo
package backend
import (
@ -18,8 +20,5 @@ func TestControlHost_StubReturnsError(t *testing.T) {
// signature matches: func ControlHost(hostname string, action int) error.
// If the signature changes this test will not compile.
func TestControlHost_SignatureCompiles(t *testing.T) {
var fn func(string, int) error = ControlHost
if fn == nil {
t.Fatal("ControlHost must not be nil")
}
var _ func(string, int) error = ControlHost
}

View file

@ -407,12 +407,15 @@ func (h *HostHandler) ControlHost(ctx *gin.Context) {
ReturnError(ctx, common.ERROR_CODE, err.Error(), nil)
return
}
var actionType int
if baseAction == "close" {
actionType = models.HOST_CLOSE
hostActionMap := map[string]int{
"open": models.HOST_OPEN,
"close": models.HOST_CLOSE,
}
if baseAction == "open" {
actionType = models.HOST_OPEN
actionType, exists := hostActionMap[baseAction]
if !exists {
logger.Error("Unsupported action type", zap.String("baseAction", baseAction))
ReturnError(ctx, common.INVALID_PARAMS_CODE, "Unsupported action type: "+baseAction, nil)
return
}
successHosts := []map[string]interface{}{}