package dockeragent import ( "context" "crypto/rand" "encoding/json" "io" "os" "os/exec" "runtime" "syscall" "time" "github.com/moby/moby/client" "github.com/rcourtman/pulse-go-rewrite/internal/hostmetrics" ) var ( connectRuntimeFn = connectRuntime hostmetricsCollect = hostmetrics.Collect newTickerFn = time.NewTicker newTimerFn = time.NewTimer randomDurationFn = randomDuration nowFn = time.Now sleepFn = time.Sleep jsonMarshalFn = json.Marshal normalizeTargetsFn = normalizeTargets buildRuntimeCandidatesFn = buildRuntimeCandidates tryRuntimeCandidateFn = tryRuntimeCandidate randIntFn = rand.Int osExecutableFn = os.Executable osCreateTempFn = os.CreateTemp closeFileFn = func(f *os.File) error { return f.Close() } osRenameFn = os.Rename osChmodFn = os.Chmod osRemoveFn = os.Remove osReadFileFn = os.ReadFile osWriteFileFn = os.WriteFile osStatFn = os.Stat syscallExecFn = syscall.Exec goArch = runtime.GOARCH unameMachine = func() (string, error) { out, err := exec.Command("uname", "-m").Output() if err != nil { return "", err } return string(out), nil } machineIDPaths = []string{ "/etc/machine-id", "/var/lib/dbus/machine-id", } unraidVersionPath = "/etc/unraid-version" unraidPersistPath = "/boot/config/plugins/pulse-agent/pulse-agent" unraidStartupScriptPath = "/boot/config/plugins/pulse-agent/start-pulse-agent.sh" agentLogPath = "/var/log/pulse-agent.log" openProcUptime = func() (io.ReadCloser, error) { return os.Open("/proc/uptime") } newDockerClientFn = func(opts ...client.Opt) (dockerClient, error) { return newMobyDockerClient(opts...) } selfUpdateFunc = func(a *Agent, ctx context.Context) error { return a.selfUpdate(ctx) } execCommandContextFn = func(ctx context.Context, name string, arg ...string) *exec.Cmd { return exec.CommandContext(ctx, name, arg...) } )