Fix Fleet AI and LOTL test regressions after parallel merges.
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Stub slow syscheck/listen-port probes in agent tests, fix ai_snapshot mutex deadlock, reorder fleet clearance vs connectivity checks, and add AI control precedence plus LotlTimeline vitest coverage.
This commit is contained in:
@@ -9,6 +9,8 @@ import (
|
||||
|
||||
fleetai "crypto-miner-server/internal/ai"
|
||||
"crypto-miner-server/internal/db"
|
||||
"crypto-miner-server/internal/models"
|
||||
"crypto-miner-server/internal/strategy"
|
||||
)
|
||||
|
||||
type stubFleetAIConfig struct {
|
||||
@@ -52,7 +54,7 @@ func TestFleetAIHandlerGetDecisions(t *testing.T) {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { database.Close() })
|
||||
_ = database.InsertAIDecision("agent-x", "abc", `{"commands":[]}`, "noop:ok")
|
||||
_ = database.InsertAIDecision("agent-x", "abc", `{"commands":[]}`, "noop:ok", false, "", "", "")
|
||||
|
||||
h := NewFleetAIHandler(nil, database)
|
||||
req := httptest.NewRequest(http.MethodGet, "/api/v1/ai/decisions?agent_id=agent-x", nil)
|
||||
@@ -70,6 +72,60 @@ func TestFleetAIHandlerGetDecisions(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestFleetAIHandlerGetModels(t *testing.T) {
|
||||
modelSrv := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
||||
if r.URL.Path != "/v1/models" {
|
||||
http.NotFound(w, r)
|
||||
return
|
||||
}
|
||||
_ = json.NewEncoder(w).Encode(map[string]interface{}{
|
||||
"data": []map[string]string{{"id": "llama3.2"}},
|
||||
})
|
||||
}))
|
||||
t.Cleanup(modelSrv.Close)
|
||||
|
||||
cfg := &stubFleetAIConfig{view: FleetAIConfigView{AIEndpoint: modelSrv.URL + "/v1"}}
|
||||
h := NewFleetAIHandler(cfg, nil)
|
||||
req := httptest.NewRequest(http.MethodGet, "/api/v1/ai/models", nil)
|
||||
rec := httptest.NewRecorder()
|
||||
h.GetModels(rec, req)
|
||||
if rec.Code != http.StatusOK {
|
||||
t.Fatalf("status %d body %s", rec.Code, rec.Body.String())
|
||||
}
|
||||
var body map[string]interface{}
|
||||
if err := json.Unmarshal(rec.Body.Bytes(), &body); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
models, _ := body["models"].([]interface{})
|
||||
if len(models) != 1 {
|
||||
t.Fatalf("models: %v", body)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFleetAISnapshotOmitsAdaptiveWhenAIControl(t *testing.T) {
|
||||
database, err := db.New(t.TempDir())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { database.Close() })
|
||||
|
||||
hub := NewWSHub(database)
|
||||
hub.SetAdaptiveEngine(strategy.NewAdaptiveEngine(database, true))
|
||||
hub.SetServerPolicy(ServerPolicy{AIControlEnabled: true})
|
||||
agentID := "snap-agent-1"
|
||||
_ = database.UpsertAgent(&models.Agent{
|
||||
ID: agentID, Name: "node-a", Platform: "windows", Status: "online",
|
||||
})
|
||||
|
||||
snap, ok := hub.FleetAISnapshot(agentID)
|
||||
if !ok {
|
||||
t.Fatal("snapshot not found")
|
||||
}
|
||||
if snap.Adaptive != nil {
|
||||
t.Fatalf("adaptive must be nil when AI control enabled, got %+v", snap.Adaptive)
|
||||
}
|
||||
}
|
||||
|
||||
func TestFleetAIExecutorRestartMining(t *testing.T) {
|
||||
hub := NewWSHub(nil)
|
||||
exec := &FleetAIExecutor{Hub: hub}
|
||||
|
||||
Reference in New Issue
Block a user