89 lines
2.2 KiB
Go
89 lines
2.2 KiB
Go
package managed
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"os/exec"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestNormalizeContainerStatus(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
cases := map[string]string{
|
|
"running": "running",
|
|
"created": "stopped",
|
|
" exited \n": "stopped",
|
|
"paused": "stopped",
|
|
"dead": "failed",
|
|
"removing": "failed",
|
|
"restarting": "failed",
|
|
"unknown": "unknown",
|
|
"": "unknown",
|
|
}
|
|
|
|
for input, want := range cases {
|
|
if got := NormalizeContainerStatus(input); got != want {
|
|
t.Fatalf("NormalizeContainerStatus(%q) = %q, want %q", input, got, want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestDockerControllerGetContainerStatus(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
controller := NewDockerControllerWithRunner(func(ctx context.Context, name string, args ...string) ([]byte, error) {
|
|
if name != "docker" {
|
|
t.Fatalf("name = %q", name)
|
|
}
|
|
return []byte("running\n"), nil
|
|
})
|
|
|
|
status, err := controller.GetContainerStatus("store-dwell-alert")
|
|
if err != nil {
|
|
t.Fatalf("GetContainerStatus() error = %v", err)
|
|
}
|
|
if status != "running" {
|
|
t.Fatalf("status = %q", status)
|
|
}
|
|
}
|
|
|
|
func TestDockerControllerRestartContainer(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
called := false
|
|
controller := NewDockerControllerWithRunner(func(ctx context.Context, name string, args ...string) ([]byte, error) {
|
|
called = true
|
|
return []byte("store-dwell-alert"), nil
|
|
})
|
|
|
|
if err := controller.RestartContainer("store-dwell-alert"); err != nil {
|
|
t.Fatalf("RestartContainer() error = %v", err)
|
|
}
|
|
if !called {
|
|
t.Fatal("runner was not called")
|
|
}
|
|
}
|
|
|
|
func TestDockerControllerRestartContainerIncludesOutputOnError(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
controller := NewDockerControllerWithRunner(func(ctx context.Context, name string, args ...string) ([]byte, error) {
|
|
return []byte("permission denied"), errors.New("exit status 1")
|
|
})
|
|
|
|
err := controller.RestartContainer("store-dwell-alert")
|
|
if err == nil || !strings.Contains(err.Error(), "permission denied") {
|
|
t.Fatalf("RestartContainer() error = %v, want output included", err)
|
|
}
|
|
}
|
|
|
|
func TestIsDockerUnavailable(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
if !IsDockerUnavailable(&exec.Error{Name: "docker", Err: exec.ErrNotFound}) {
|
|
t.Fatal("IsDockerUnavailable() = false, want true")
|
|
}
|
|
}
|