Expand P2 test coverage: mining chain, spread lanes, path forge, WS/beacon, E2E onion, file handling
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
This commit is contained in:
88
server/internal/api/fleet_role_test.go
Normal file
88
server/internal/api/fleet_role_test.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"crypto-miner-server/internal/db"
|
||||
)
|
||||
|
||||
func TestAuthResponseFleetRoleHintWhenEnabled(t *testing.T) {
|
||||
database, err := db.New(t.TempDir())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { _ = database.Close() })
|
||||
|
||||
hub := NewWSHub(database)
|
||||
hub.SetFleetSecret("test-secret")
|
||||
hub.SetServerPolicy(ServerPolicy{FleetRolesEnabled: true})
|
||||
|
||||
conn, _ := dialAgentWS(t, hub)
|
||||
resp := authAgentConn(t, conn, map[string]interface{}{
|
||||
"agent_id": "agent-seed-aa", "fleet_secret": "test-secret",
|
||||
"wallet": "4" + repeatChar('C', 94), "hostname": "seed-host", "platform": "windows", "version": "test",
|
||||
"fleet_role": "auto", "seeder_mode": true,
|
||||
})
|
||||
var payload map[string]interface{}
|
||||
if err := json.Unmarshal(resp.Payload, &payload); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if payload["success"] != true {
|
||||
t.Fatalf("auth failed: %v", payload["error"])
|
||||
}
|
||||
hint, _ := payload["fleet_role_hint"].(string)
|
||||
if hint != "seeder" && hint != "miner" {
|
||||
t.Fatalf("expected fleet_role_hint, got %q", hint)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAuthResponseOmitsFleetRoleHintWhenDisabled(t *testing.T) {
|
||||
database, err := db.New(t.TempDir())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { _ = database.Close() })
|
||||
|
||||
hub := NewWSHub(database)
|
||||
hub.SetFleetSecret("test-secret")
|
||||
|
||||
conn, _ := dialAgentWS(t, hub)
|
||||
resp := authAgentConn(t, conn, map[string]interface{}{
|
||||
"agent_id": "agent-miner-1", "fleet_secret": "test-secret",
|
||||
"wallet": "4" + repeatChar('D', 94), "hostname": "miner-host", "platform": "windows", "version": "test",
|
||||
"fleet_role": "miner",
|
||||
})
|
||||
var payload map[string]interface{}
|
||||
if err := json.Unmarshal(resp.Payload, &payload); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if _, ok := payload["fleet_role_hint"]; ok {
|
||||
t.Fatal("fleet_role_hint should be omitted when fleet roles disabled")
|
||||
}
|
||||
}
|
||||
|
||||
func TestIngestFleetPressureSetsEmberwakeHeat(t *testing.T) {
|
||||
database, err := db.New(t.TempDir())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
t.Cleanup(func() { _ = database.Close() })
|
||||
|
||||
hub := NewWSHub(database)
|
||||
b := map[string]interface{}{
|
||||
"agent_id": "a1",
|
||||
"fleet_role": "miner",
|
||||
"hashrate_pressure": 0.75,
|
||||
}
|
||||
hub.ingestFleetPressure("a1", b)
|
||||
if b["emberwake_heat"] != 0.75 {
|
||||
t.Fatalf("broadcast heat=%v", b["emberwake_heat"])
|
||||
}
|
||||
hub.mu.RLock()
|
||||
tel := hub.agentLiveTelemetry["a1"]
|
||||
hub.mu.RUnlock()
|
||||
if tel["emberwake_heat"] != 0.75 {
|
||||
t.Fatalf("stored heat=%v", tel["emberwake_heat"])
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user