Merge pull request #5578 from claudiubelu/integration/failed-container

test integration: Adds a test that restarts a failed container
This commit is contained in:
Maksym Pavlenko 2021-07-09 12:08:20 -07:00 committed by GitHub
commit d38c186d9d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -55,3 +55,44 @@ func TestContainerRestart(t *testing.T) {
require.NoError(t, err) require.NoError(t, err)
require.NoError(t, runtimeService.StartContainer(cn)) require.NoError(t, runtimeService.StartContainer(cn))
} }
// Test to verify that, after a container fails to start due to a bad command, it can be removed
// and a proper container can be created and started in its stead.
func TestFailedContainerRestart(t *testing.T) {
t.Logf("Create a pod config and run sandbox container")
sb, sbConfig := PodSandboxConfigWithCleanup(t, "sandbox1", "restart")
EnsureImageExists(t, pauseImage)
t.Logf("Create a container config in a pod with a command that fails")
containerConfig := ContainerConfig(
"container1",
pauseImage,
WithCommand("something-that-doesnt-exist"),
WithTestLabels(),
WithTestAnnotations(),
)
cn, err := runtimeService.CreateContainer(sb, containerConfig, sbConfig)
require.NoError(t, err)
defer func() {
assert.NoError(t, runtimeService.RemoveContainer(cn))
}()
require.Error(t, runtimeService.StartContainer(cn))
defer func() {
assert.NoError(t, runtimeService.StopContainer(cn, 10))
}()
t.Logf("Create the container with a proper command")
require.NoError(t, runtimeService.StopContainer(cn, 10))
require.NoError(t, runtimeService.RemoveContainer(cn))
containerConfig = ContainerConfig(
"container1",
pauseImage,
WithTestLabels(),
WithTestAnnotations(),
)
cn, err = runtimeService.CreateContainer(sb, containerConfig, sbConfig)
require.NoError(t, err)
require.NoError(t, runtimeService.StartContainer(cn))
}