From de8e2c5d94ea9a759175c87702c6be8b27ff6f98 Mon Sep 17 00:00:00 2001 From: Snider <631881+Snider@users.noreply.github.com> Date: Mon, 2 Feb 2026 02:06:36 +0000 Subject: [PATCH] Fix CI failures in peer ping implementation Fixed multiple issues causing CI failures: - Fixed C++ build on Linux by excluding macOS-specific source files in miner/core/tests/CMakeLists.txt. - Fixed Go test panic in pkg/mining/manager_test.go by properly checking for nil return from StartMiner. - Fixed runtime panic in pkg/mining/service.go where generateRequestID was attempting to base64 decode a timestamp string; replaced with crypto/rand. - Verified removal of unused fmt import in pkg/ueps/packet.go. --- miner/core/tests/CMakeLists.txt | 5 +++++ pkg/mining/manager_test.go | 9 ++++++++- pkg/mining/service.go | 10 +++++++--- pkg/ueps/packet.go | 1 - 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/miner/core/tests/CMakeLists.txt b/miner/core/tests/CMakeLists.txt index e2d349c..0ac1f08 100644 --- a/miner/core/tests/CMakeLists.txt +++ b/miner/core/tests/CMakeLists.txt @@ -18,8 +18,13 @@ list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_riscv.*") if (WIN32) list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_unix\\.cpp$") list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_linux\\.cpp$") + list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_mac\\.cpp$") +elseif (APPLE) + list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_win\\.cpp$") + list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_linux\\.cpp$") else() list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_win\\.cpp$") + list(FILTER MINER_SOURCES EXCLUDE REGEX ".*_mac\\.cpp$") endif() # Create a library with common test utilities and miner components diff --git a/pkg/mining/manager_test.go b/pkg/mining/manager_test.go index 94a46f8..329f0b9 100644 --- a/pkg/mining/manager_test.go +++ b/pkg/mining/manager_test.go @@ -151,7 +151,14 @@ func TestGetMiner_Good(t *testing.T) { } // Case 1: Get an existing miner - startedMiner, _ := m.StartMiner(context.Background(), "xmrig", config) + startedMiner, err := m.StartMiner(context.Background(), "xmrig", config) + if err != nil { + t.Fatalf("Failed to start miner: %v", err) + } + if startedMiner == nil { + t.Fatal("StartMiner returned nil miner") + } + retrievedMiner, err := m.GetMiner(startedMiner.GetName()) if err != nil { t.Fatalf("Expected to get miner, but got error: %v", err) diff --git a/pkg/mining/service.go b/pkg/mining/service.go index f65ea40..ddee4bd 100644 --- a/pkg/mining/service.go +++ b/pkg/mining/service.go @@ -2,6 +2,7 @@ package mining import ( "context" + "crypto/rand" "encoding/base64" "encoding/json" "fmt" @@ -203,9 +204,12 @@ func requestIDMiddleware() gin.HandlerFunc { // generateRequestID creates a unique request ID using timestamp and random bytes func generateRequestID() string { - b := make([]byte, 8) - _, _ = base64.StdEncoding.Decode(b, []byte(fmt.Sprintf("%d", time.Now().UnixNano()))) - return fmt.Sprintf("%d-%x", time.Now().UnixMilli(), b[:4]) + b := make([]byte, 4) + if _, err := rand.Read(b); err != nil { + // Fallback if random source fails (unlikely) + return fmt.Sprintf("%d", time.Now().UnixNano()) + } + return fmt.Sprintf("%d-%x", time.Now().UnixMilli(), b) } // getRequestID extracts the request ID from gin context diff --git a/pkg/ueps/packet.go b/pkg/ueps/packet.go index 8331202..7c75334 100644 --- a/pkg/ueps/packet.go +++ b/pkg/ueps/packet.go @@ -6,7 +6,6 @@ import ( "crypto/sha256" "encoding/binary" "errors" - "fmt" "io" )