package container import ( "fmt" "path/filepath" "syscall" "testing" "github.com/moby/moby/api/types/container" "github.com/moby/moby/api/types/swarm" "github.com/moby/moby/v2/daemon/logger/jsonfilelog" "gotest.tools/v3/assert" ) func TestContainerStopSignal(t *testing.T) { c := &Container{ Config: &container.Config{}, } s := c.StopSignal() assert.Equal(t, s, defaultStopSignal) c = &Container{ Config: &container.Config{StopSignal: "SIGKILL"}, } s = c.StopSignal() expected := syscall.SIGKILL assert.Equal(t, s, expected) c = &Container{ Config: &container.Config{StopSignal: "NOSUCHSIGNAL"}, } s = c.StopSignal() assert.Equal(t, s, defaultStopSignal) } func TestContainerStopTimeout(t *testing.T) { c := &Container{ Config: &container.Config{}, } s := c.StopTimeout() assert.Equal(t, s, defaultStopTimeout) stopTimeout := 15 c = &Container{ Config: &container.Config{StopTimeout: &stopTimeout}, } s = c.StopTimeout() assert.Equal(t, s, stopTimeout) } func TestContainerSecretReferenceDestTarget(t *testing.T) { ref := &swarm.SecretReference{ File: &swarm.SecretReferenceFileTarget{ Name: "app", }, } d := getSecretTargetPath(ref) expected := filepath.Join(containerSecretMountPath, "app") assert.Equal(t, d, expected) } func TestContainerLogPathSetForJSONFileLogger(t *testing.T) { containerRoot := t.TempDir() c := &Container{ Config: &container.Config{}, HostConfig: &container.HostConfig{ LogConfig: container.LogConfig{ Type: jsonfilelog.Name, }, }, ID: t.Name(), Root: containerRoot, } logger, err := c.StartLogger() assert.NilError(t, err) defer func() { assert.NilError(t, logger.Close()) }() expectedLogPath, err := filepath.Abs(filepath.Join(containerRoot, fmt.Sprintf("%s-json.log", c.ID))) assert.NilError(t, err) assert.Equal(t, c.LogPath, expectedLogPath) } func TestContainerLogPathSetForRingLogger(t *testing.T) { containerRoot := t.TempDir() c := &Container{ Config: &container.Config{}, HostConfig: &container.HostConfig{ LogConfig: container.LogConfig{ Type: jsonfilelog.Name, Config: map[string]string{ "mode": string(container.LogModeNonBlock), }, }, }, ID: t.Name(), Root: containerRoot, } logger, err := c.StartLogger() assert.NilError(t, err) defer func() { assert.NilError(t, logger.Close()) }() expectedLogPath, err := filepath.Abs(filepath.Join(containerRoot, fmt.Sprintf("%s-json.log", c.ID))) assert.NilError(t, err) assert.Equal(t, c.LogPath, expectedLogPath) }