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