Close DV-01–04,07,09,13,14: unify operator-deck UX in server/web.
Standardize neon cyan on #00e8f5, wire SacredPageHeader across Builds/Path Tracer/LOTL, dedupe Pages.css, align Path Tracer chrome, drop dead wealth-deck CSS, add prefers-color-scheme shell + HelpTip, sidebar version from package.json build inject, and Vitest CSS regression guards.
This commit is contained in:
@@ -124,6 +124,7 @@ func TestContainerLauncherStartWithFakeRuntime(t *testing.T) {
|
||||
"AETHERFORGE_MINER_EXECUTION": ExecutionInProcess,
|
||||
"AETHERFORGE_FLEET_SECRET": "fleet-secret",
|
||||
"MINER_LOG_FILE": "/tmp/miner.log",
|
||||
"MINER_STATS_FILE": ContainerStatsPath,
|
||||
}
|
||||
for k, want := range wantEnv {
|
||||
if got := env[k]; got != want {
|
||||
@@ -292,6 +293,106 @@ func TestContainerLauncherStopInvokesRm(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestDefaultWorkerImageAndBuildHint(t *testing.T) {
|
||||
if DefaultWorkerImage() != "aetherforge/agent-worker:latest" {
|
||||
t.Fatalf("DefaultWorkerImage()=%q", DefaultWorkerImage())
|
||||
}
|
||||
if WorkerImageBuildHint == "" || !strings.Contains(WorkerImageBuildHint, "Dockerfile.agent") {
|
||||
t.Fatalf("WorkerImageBuildHint=%q", WorkerImageBuildHint)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseContainerStatsJSON(t *testing.T) {
|
||||
if got := ParseContainerStatsJSON([]byte(`{"hashrate_hps":1234.5}`)); got != 1234.5 {
|
||||
t.Fatalf("got %v", got)
|
||||
}
|
||||
if ParseContainerStatsJSON([]byte(`invalid`)) != 0 {
|
||||
t.Fatal("invalid json should return 0")
|
||||
}
|
||||
if ParseContainerStatsJSON([]byte(`{"hashrate_hps":-1}`)) != 0 {
|
||||
t.Fatal("negative hashrate should return 0")
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainerLauncherProbeHashrate(t *testing.T) {
|
||||
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {
|
||||
if len(args) >= 4 && args[0] == "exec" && args[2] == "cat" {
|
||||
if runtime.GOOS == "windows" {
|
||||
return exec.Command("powershell", "-NoProfile", "-Command", `Write-Output '{"hashrate_hps":987.6}'`)
|
||||
}
|
||||
return exec.Command("sh", "-c", "printf '%s' '{\"hashrate_hps\":987.6}'")
|
||||
}
|
||||
if len(args) > 0 && args[0] == "rm" {
|
||||
return quickExitTestCmd()
|
||||
}
|
||||
return longRunningTestCmd()
|
||||
})
|
||||
defer SetContainerExecCommand(nil)
|
||||
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{BuildID: "probe-test"}}
|
||||
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
|
||||
launcher, err := NewContainerLauncher(cfg, rt)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := launcher.Start(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer launcher.Stop()
|
||||
|
||||
if got := launcher.ProbeHashrate(); got != 987.6 {
|
||||
t.Fatalf("ProbeHashrate()=%v want 987.6", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainerLauncherDefaultImageWithoutEnvOverride(t *testing.T) {
|
||||
t.Setenv("AETHERFORGE_MINER_IMAGE", "")
|
||||
cfg := config.RuntimeConfig{BuiltinConfig: config.BuiltinConfig{BuildID: "default-img"}}
|
||||
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
|
||||
launcher, err := NewContainerLauncher(cfg, rt)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if launcher.Image() != DefaultWorkerImage() {
|
||||
t.Fatalf("Image()=%q want %q", launcher.Image(), DefaultWorkerImage())
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainerLauncherStatsFileEnv(t *testing.T) {
|
||||
var gotArgs []string
|
||||
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {
|
||||
if len(args) > 0 && args[0] == "rm" {
|
||||
return quickExitTestCmd()
|
||||
}
|
||||
gotArgs = append([]string(nil), args...)
|
||||
return longRunningTestCmd()
|
||||
})
|
||||
defer SetContainerExecCommand(nil)
|
||||
|
||||
cfg := config.RuntimeConfig{
|
||||
BuiltinConfig: config.BuiltinConfig{
|
||||
BuildID: "stats-env",
|
||||
Wallet: "XMR:wallet",
|
||||
PoolHost: "pool.example.com",
|
||||
PoolPort: 3333,
|
||||
},
|
||||
}
|
||||
rt := ContainerRuntimeInfo{Available: true, CLI: "docker"}
|
||||
launcher, err := NewContainerLauncher(cfg, rt)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := launcher.Start(); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer launcher.Stop()
|
||||
|
||||
env := dockerEnvFromArgs(gotArgs)
|
||||
if env["MINER_STATS_FILE"] != ContainerStatsPath {
|
||||
t.Fatalf("MINER_STATS_FILE=%q want %q", env["MINER_STATS_FILE"], ContainerStatsPath)
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainerLauncherGPUFlags(t *testing.T) {
|
||||
var gotArgs []string
|
||||
SetContainerExecCommand(func(name string, args ...string) *exec.Cmd {
|
||||
|
||||
Reference in New Issue
Block a user