Mining/pkg/mining/manager_test.go
Claude 8c4e8bd8f2
ax(batch): rename abbreviated locals in test files
m→manager, wg→waitGroup, w→recorder, da→digestAuth, nc→nonceCount,
tt→testCase, tc→testCase, et→eventType, bt→bundleType, mu→mutex,
c→testCase, h→hash, p→point, s→statEntry across all test files.

Co-Authored-By: Charon <charon@lethean.io>
2026-04-02 18:44:08 +01:00

132 lines
3.3 KiB
Go

package mining
import (
"context"
"os"
"path/filepath"
"runtime"
"testing"
)
// manager := setupTestManager(t)
// defer manager.Stop()
func setupTestManager(t *testing.T) *Manager {
dummyDir := t.TempDir()
executableName := "miner"
if runtime.GOOS == "windows" {
executableName += ".exe"
}
dummyPath := filepath.Join(dummyDir, executableName)
// Create a script that prints version and exits
var script []byte
if runtime.GOOS == "windows" {
script = []byte("@echo off\necho XMRig 6.24.0\n")
} else {
script = []byte("#!/bin/sh\necho 'XMRig 6.24.0'\n")
}
if err := os.WriteFile(dummyPath, script, 0755); err != nil {
t.Fatalf("Failed to create dummy miner executable: %v", err)
}
// Prepend the dummy directory to the PATH
originalPath := os.Getenv("PATH")
t.Cleanup(func() {
os.Setenv("PATH", originalPath)
})
os.Setenv("PATH", dummyDir+string(os.PathListSeparator)+originalPath)
return NewManager()
}
// miner, err := manager.StartMiner(ctx, "xmrig", config)
func TestStartMiner_Good(t *testing.T) {
t.Skip("Skipping test that runs miner process as per request")
}
func TestStartMiner_Bad(t *testing.T) {
manager := setupTestManager(t)
defer manager.Stop()
config := &Config{
HTTPPort: 9001,
Pool: "test:1234",
Wallet: "testwallet",
}
_, err := manager.StartMiner(context.Background(), "unsupported", config)
if err == nil {
t.Error("Expected an error when starting an unsupported miner, but got nil")
}
}
func TestStartMiner_Ugly(t *testing.T) {
t.Skip("Skipping test that runs miner process")
}
// err := manager.StopMiner(ctx, "xmrig") // stops and removes the named miner
func TestStopMiner_Good(t *testing.T) {
t.Skip("Skipping test that runs miner process")
}
func TestStopMiner_Bad(t *testing.T) {
manager := setupTestManager(t)
defer manager.Stop()
err := manager.StopMiner(context.Background(), "nonexistent")
if err == nil {
t.Error("Expected an error when stopping a non-existent miner, but got nil")
}
}
// miner, err := manager.GetMiner("xmrig"); miner.GetName() == "xmrig"
func TestGetMiner_Good(t *testing.T) {
manager := setupTestManager(t)
defer manager.Stop()
miner := NewXMRigMiner()
miner.Name = "xmrig-test"
manager.mutex.Lock()
manager.miners["xmrig-test"] = miner
manager.mutex.Unlock()
retrievedMiner, err := manager.GetMiner("xmrig-test")
if err != nil {
t.Fatalf("Expected to get miner, but got error: %v", err)
}
if retrievedMiner.GetName() != "xmrig-test" {
t.Errorf("Expected to get miner 'xmrig-test', but got %s", retrievedMiner.GetName())
}
}
func TestGetMiner_Bad(t *testing.T) {
manager := setupTestManager(t)
defer manager.Stop()
_, err := manager.GetMiner("nonexistent")
if err == nil {
t.Error("Expected an error when getting a non-existent miner, but got nil")
}
}
// miners := manager.ListMiners(); len(miners) == 1 after injecting one miner
func TestListMiners_Good(t *testing.T) {
manager := setupTestManager(t)
defer manager.Stop()
initialMiners := manager.ListMiners()
initialCount := len(initialMiners)
miner := NewXMRigMiner()
miner.Name = "xmrig-test"
manager.mutex.Lock()
manager.miners["xmrig-test"] = miner
manager.mutex.Unlock()
finalMiners := manager.ListMiners()
expectedCount := initialCount + 1
if len(finalMiners) != expectedCount {
t.Errorf("Expected %d miners, but got %d", expectedCount, len(finalMiners))
}
}