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>
132 lines
3.3 KiB
Go
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))
|
|
}
|
|
}
|