mirror of
https://github.com/henrygd/beszel.git
synced 2026-03-22 05:36:15 +01:00
agent: add dockerManager.retrySleep method to mock time.Sleep in tests
This commit is contained in:
@@ -72,6 +72,7 @@ type dockerManager struct {
|
|||||||
// cacheTimeMs -> DeltaTracker for network bytes sent/received
|
// cacheTimeMs -> DeltaTracker for network bytes sent/received
|
||||||
networkSentTrackers map[uint16]*deltatracker.DeltaTracker[string, uint64]
|
networkSentTrackers map[uint16]*deltatracker.DeltaTracker[string, uint64]
|
||||||
networkRecvTrackers 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
|
// 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),
|
lastCpuReadTime: make(map[uint16]map[string]time.Time),
|
||||||
networkSentTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]),
|
networkSentTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]),
|
||||||
networkRecvTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]),
|
networkRecvTrackers: make(map[uint16]*deltatracker.DeltaTracker[string, uint64]),
|
||||||
|
retrySleep: time.Sleep,
|
||||||
}
|
}
|
||||||
|
|
||||||
// If using podman, return client
|
// If using podman, return client
|
||||||
@@ -574,7 +576,7 @@ func newDockerManager() *dockerManager {
|
|||||||
return manager
|
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()
|
go manager.checkDockerVersion()
|
||||||
|
|
||||||
// give version check a chance to complete before returning
|
// give version check a chance to complete before returning
|
||||||
@@ -601,12 +603,8 @@ func (dm *dockerManager) checkDockerVersion() {
|
|||||||
resp.Body.Close()
|
resp.Body.Close()
|
||||||
}
|
}
|
||||||
if i < versionMaxTries {
|
if i < versionMaxTries {
|
||||||
if err != nil {
|
slog.Debug("Failed to get Docker version; retrying", "attempt", i, "err", err, "response", resp)
|
||||||
slog.Debug("Failed to get Docker version; retrying", "attempt", i, "error", err)
|
dm.retrySleep(5 * time.Second)
|
||||||
} else {
|
|
||||||
slog.Debug("Failed to get Docker version; retrying", "attempt", i, "status code", resp.StatusCode)
|
|
||||||
}
|
|
||||||
time.Sleep(5 * time.Second)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if err != nil || resp.StatusCode != http.StatusOK {
|
if err != nil || resp.StatusCode != http.StatusOK {
|
||||||
|
|||||||
@@ -465,6 +465,7 @@ func TestCheckDockerVersion(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
retrySleep: func(time.Duration) {},
|
||||||
}
|
}
|
||||||
|
|
||||||
dm.checkDockerVersion()
|
dm.checkDockerVersion()
|
||||||
@@ -485,6 +486,7 @@ func TestCheckDockerVersion(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
retrySleep: func(time.Duration) {},
|
||||||
}
|
}
|
||||||
|
|
||||||
dm.checkDockerVersion()
|
dm.checkDockerVersion()
|
||||||
|
|||||||
Reference in New Issue
Block a user