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