mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Test for restarting count
This test is for #10058 Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
parent
5862422a49
commit
79d30364c9
2 changed files with 29 additions and 5 deletions
|
@ -2935,3 +2935,23 @@ func TestRunOOMExitCode(t *testing.T) {
|
|||
|
||||
logDone("run - exit code on oom")
|
||||
}
|
||||
|
||||
func TestRunRestartMaxRetries(t *testing.T) {
|
||||
defer deleteAllContainers()
|
||||
out, err := exec.Command(dockerBinary, "run", "-d", "--restart=on-failure:3", "busybox", "false").CombinedOutput()
|
||||
if err != nil {
|
||||
t.Fatal(string(out), err)
|
||||
}
|
||||
id := strings.TrimSpace(string(out))
|
||||
if err := waitInspect(id, "{{ .State.Restarting }} {{ .State.Running }}", "false false", 5); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
count, err := inspectField(id, "RestartCount")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if count != "3" {
|
||||
t.Fatalf("Container was restarted %s times, expected %d", count, 3)
|
||||
}
|
||||
logDone("run - test max-retries for --restart")
|
||||
}
|
||||
|
|
|
@ -135,28 +135,32 @@ func waitForContainer(contID string, args ...string) error {
|
|||
}
|
||||
|
||||
func waitRun(contID string) error {
|
||||
after := time.After(5 * time.Second)
|
||||
return waitInspect(contID, "{{.State.Running}}", "true", 5)
|
||||
}
|
||||
|
||||
func waitInspect(name, expr, expected string, timeout int) error {
|
||||
after := time.After(time.Duration(timeout) * time.Second)
|
||||
|
||||
for {
|
||||
cmd := exec.Command(dockerBinary, "inspect", "-f", "{{.State.Running}}", contID)
|
||||
cmd := exec.Command(dockerBinary, "inspect", "-f", expr, name)
|
||||
out, _, err := runCommandWithOutput(cmd)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error executing docker inspect: %v", err)
|
||||
}
|
||||
|
||||
if strings.Contains(out, "true") {
|
||||
out = strings.TrimSpace(out)
|
||||
if out == expected {
|
||||
break
|
||||
}
|
||||
|
||||
select {
|
||||
case <-after:
|
||||
return fmt.Errorf("container did not come up in time")
|
||||
return fmt.Errorf("condition \"%q == %q\" not true in time", out, expected)
|
||||
default:
|
||||
}
|
||||
|
||||
time.Sleep(100 * time.Millisecond)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue