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:
59
server/internal/api/spread_immunity_test.go
Normal file
59
server/internal/api/spread_immunity_test.go
Normal file
@@ -0,0 +1,59 @@
|
||||
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)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user