From 1def7d8d3a731f9002cb47533bf24c24db0539e8 Mon Sep 17 00:00:00 2001 From: henrygd Date: Wed, 18 Feb 2026 13:44:54 -0500 Subject: [PATCH] agent: add dockerManager.retrySleep method to mock time.Sleep in tests --- agent/docker.go | 12 +++++------- agent/docker_test.go | 6 ++++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/agent/docker.go b/agent/docker.go index 13e867c8..c02c038a 100644 --- a/agent/docker.go +++ b/agent/docker.go @@ -72,6 +72,7 @@ type dockerManager struct { // cacheTimeMs -> DeltaTracker for network bytes sent/received networkSentTrackers map[uint16]*deltatracker.DeltaTracker[string, uint64] networkRecvTrackers map[uint16]*deltatracker.DeltaTracker[string, uint64] + retrySleep func(time.Duration) } // userAgentRoundTripper is a custom http.RoundTripper that adds a User-Agent header to all requests @@ -565,6 +566,7 @@ func newDockerManager() *dockerManager { lastCpuReadTime: make(map[uint16]map[string]time.Time), networkSentTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]), networkRecvTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]), + retrySleep: time.Sleep, } // If using podman, return client @@ -574,7 +576,7 @@ func newDockerManager() *dockerManager { return manager } - // this can take up to 5 seconds with retry, so run in goroutine + // run version check in goroutine to avoid blocking (server may not be ready and requires retries) go manager.checkDockerVersion() // give version check a chance to complete before returning @@ -601,12 +603,8 @@ func (dm *dockerManager) checkDockerVersion() { resp.Body.Close() } if i < versionMaxTries { - if err != nil { - slog.Debug("Failed to get Docker version; retrying", "attempt", i, "error", err) - } else { - slog.Debug("Failed to get Docker version; retrying", "attempt", i, "status code", resp.StatusCode) - } - time.Sleep(5 * time.Second) + slog.Debug("Failed to get Docker version; retrying", "attempt", i, "err", err, "response", resp) + dm.retrySleep(5 * time.Second) } } if err != nil || resp.StatusCode != http.StatusOK { diff --git a/agent/docker_test.go b/agent/docker_test.go index 16a8890c..4a4ad8c2 100644 --- a/agent/docker_test.go +++ b/agent/docker_test.go @@ -387,8 +387,8 @@ func TestDockerManagerCreation(t *testing.T) { func TestCheckDockerVersion(t *testing.T) { tests := []struct { - name string - responses []struct { + name string + responses []struct { statusCode int body string } @@ -465,6 +465,7 @@ func TestCheckDockerVersion(t *testing.T) { }, }, }, + retrySleep: func(time.Duration) {}, } dm.checkDockerVersion() @@ -485,6 +486,7 @@ func TestCheckDockerVersion(t *testing.T) { }, }, }, + retrySleep: func(time.Duration) {}, } dm.checkDockerVersion()