Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
89 lines
2.4 KiB
Go
89 lines
2.4 KiB
Go
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"])
|
|
}
|
|
}
|