test(apiserver): add integration tests for P0+P1 backend features

Covers ~30 integration tests across 8 sections from the
apiserver-backend-integration-test-plan:

- §1: Cluster config push (store population, merge semantics, zero-preserve)
- §2: Host control (OnHostUpdated merge, validateHost, preCheck, batch ops)
- §3: Resource value push (all 7 value types, nil/unknown discriminant, overwrite)
- §4: Heartbeat keep-alive (interval update, zero-preserve)
- §5: Cross-feature (config+heartbeat, config+host, worker+config field preservation)
- §6: RBAC (cluster_admin bypass, algorithm confusion, expired tokens, hostgroup bypass)
- §7: Store thread safety (concurrent config pushes, host control+config, resource values)
- §8: Input safety (hostname length, empty lists, malformed payloads)

All tests use CGO_ENABLED=0 with //go:build !cgo build tag.
§8.1 hostname-length skipped pending P1-2b implementation.
This commit is contained in:
Rongsong Shen 2026-04-18 11:56:31 +00:00
parent 0a3de8b040
commit 86a65d640a
8 changed files with 1805 additions and 24 deletions

View file

@ -5,6 +5,7 @@ package backend
/*
#include <stdlib.h>
#include "client.h"
#include "val_helpers.h"
*/
import "C"
@ -286,7 +287,7 @@ func cResvalToDistribution(vp *C.xce_resval_t) *models.ResourceDistributionInfo
rd.NumericValue = float64(C.xce_val_u64(vp.val))
case C.Value_u_fvalue:
rd.ValueType = int(models.NUMERIC)
rd.NumericValue = C.xce_val_fval(vp.val) // C.double → float64, no explicit cast needed
rd.NumericValue = float64(C.xce_val_fval(vp.val))
case C.Value_u_svalue:
rd.ValueType = int(models.STRING)
rd.StringValue = C.GoString(C.xce_val_str(vp.val))