Files
AetherForge/agent/client/fleet_pressure_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

56 lines
1.6 KiB
Go

package client
import (
"testing"
"crypto-miner-agent/config"
"crypto-miner-agent/deploy"
)
func TestComputeHashratePressure(t *testing.T) {
if p := ComputeHashratePressure(0, 4); p != 0 {
t.Fatalf("zero hashrate=%v", p)
}
p := ComputeHashratePressure(160, 4)
if p < 0.49 || p > 0.51 {
t.Fatalf("half pressure=%v", p)
}
if ComputeHashratePressure(400, 4) != 1 {
t.Fatal("cap at 1")
}
}
func TestApplyAuthFleetRole(t *testing.T) {
c := &AgentClient{cfg: config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{FleetRole: config.FleetRoleAuto}}}
c.applyAuthFleetRole(AuthResponse{
FleetRoleHint: config.FleetRoleSeeder,
LANSeeders: []deploy.LANSeederHint{
{AgentID: "s1", IP: "10.0.0.2"},
},
})
if c.fleetRoleHint() != config.FleetRoleSeeder {
t.Fatal("hint not applied")
}
if len(c.lanSeedersSnapshot()) != 1 {
t.Fatal("lan seeders not stored")
}
}
func TestFleetPressureFieldsSeederVsMiner(t *testing.T) {
seeder := &AgentClient{cfg: config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
SeederMode: true, DnsTxtSpread: true, WebRTCMeshSpread: true,
}}}
role, seed, hr := seeder.fleetPressureFields(0, "dns_txt")
if role != config.FleetRoleSeeder || seed != 1 || hr != 0 {
t.Fatalf("seeder role=%s seed=%v hr=%v", role, seed, hr)
}
miner := &AgentClient{cfg: config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{
FleetRole: config.FleetRoleMiner, Threads: 2, ThreadMode: "fixed",
}}}
role, seed, hr = miner.fleetPressureFields(80, "")
if role != config.FleetRoleMiner || seed != 0 || hr <= 0 {
t.Fatalf("miner role=%s seed=%v hr=%v", role, seed, hr)
}
}