65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package miner
|
|
|
|
import (
|
|
"os/exec"
|
|
"runtime"
|
|
"strings"
|
|
"testing"
|
|
|
|
"crypto-miner-agent/config"
|
|
)
|
|
|
|
func TestWSLLauncherStartUsesWslExe(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.Skip("WSL launcher tests require windows")
|
|
}
|
|
|
|
var gotCLI string
|
|
var gotArgs []string
|
|
SetWSLExecCommand(func(name string, args ...string) *exec.Cmd {
|
|
gotCLI = name
|
|
gotArgs = append([]string(nil), args...)
|
|
if len(args) >= 4 && args[3] == "systemctl" {
|
|
return exec.Command("cmd", "/c", "exit 1")
|
|
}
|
|
return exec.Command("ping", "-n", "2", "127.0.0.1")
|
|
})
|
|
defer SetWSLExecCommand(nil)
|
|
|
|
cfg := config.RuntimeConfig{
|
|
BuiltinConfig: config.BuiltinConfig{
|
|
Wallet: "89QUKeqsKEGfP9Vpiph8jEXc3YyVFN5dKeYdMFVraVG4SGU3jAprbBp9AgRutKxzPSdQQMp9EGeG7Wmh8NRfniiaMMYpmC3",
|
|
WorkerName: "wsl-worker",
|
|
PoolHost: "pool.example.com",
|
|
PoolPort: 3333,
|
|
},
|
|
}
|
|
wslRT := WSLRuntimeInfo{Available: true, CLI: "wsl.exe", Distros: []string{"Ubuntu"}}
|
|
|
|
launcher, err := NewWSLLauncher(cfg, wslRT)
|
|
if err != nil {
|
|
t.Fatalf("NewWSLLauncher: %v", err)
|
|
}
|
|
if err := launcher.Start(); err != nil {
|
|
t.Fatalf("Start: %v", err)
|
|
}
|
|
defer launcher.Stop()
|
|
|
|
if gotCLI != "wsl.exe" {
|
|
t.Fatalf("CLI=%q want wsl.exe", gotCLI)
|
|
}
|
|
if !strings.Contains(strings.Join(gotArgs, " "), "AETHERFORGE_WALLET=") {
|
|
t.Fatalf("expected wallet env in wsl command, args=%v", gotArgs)
|
|
}
|
|
if !launcher.Running() {
|
|
t.Fatal("Running() false after Start")
|
|
}
|
|
}
|
|
|
|
func TestNewWSLLauncherUnavailable(t *testing.T) {
|
|
_, err := NewWSLLauncher(config.RuntimeConfig{}, WSLRuntimeInfo{})
|
|
if err == nil {
|
|
t.Fatal("expected error without WSL")
|
|
}
|
|
}
|