From 8c36e6920a9e17171dc67a79ab20d39886404e73 Mon Sep 17 00:00:00 2001 From: "Guillaume J. Charmes" Date: Sun, 31 Mar 2013 20:14:54 -0700 Subject: [PATCH] Working in progress: add unit tests for the running state check --- runtime_test.go | 41 +++++++++++++++++++++++++++++++++++++---- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/runtime_test.go b/runtime_test.go index b8a6c429c9..604f4aac38 100644 --- a/runtime_test.go +++ b/runtime_test.go @@ -279,8 +279,32 @@ func TestRestore(t *testing.T) { t.Fatal(err) } defer runtime1.Destroy(container1) - if len(runtime1.List()) != 1 { - t.Errorf("Expected 1 container, %v found", len(runtime1.List())) + + // Create a second container meant to be killed + container1_1, err := runtime1.Create(&Config{ + Image: GetTestImage(runtime1).Id, + Cmd: []string{"/bin/cat"}, + OpenStdin: true, + }, + ) + if err != nil { + t.Fatal(err) + } + defer runtime1.Destroy(container1_1) + + // Start the container non blocking + if err := container1_1.Start(); err != nil { + t.Fatal(err) + } + + // Simulate a crash/manual quit of dockerd: process dies, states stays 'Running' + if err := exec.Command("lxc-kill", "-n", container1_1.Id, "9").Run(); err == nil { + t.Fatalf("container supposed to be killed (return error 255). Success received.") + } + container1_1.State.Running = true + + if len(runtime1.List()) != 2 { + t.Errorf("Expected 2 container, %v found", len(runtime1.List())) } if err := container1.Run(); err != nil { t.Fatal(err) @@ -293,8 +317,17 @@ func TestRestore(t *testing.T) { t.Fatal(err) } defer nuke(runtime2) - if len(runtime2.List()) != 1 { - t.Errorf("Expected 1 container, %v found", len(runtime2.List())) + if len(runtime2.List()) != 2 { + t.Errorf("Expected 2 container, %v found", len(runtime2.List())) + } + runningCount := 0 + for _, c := range runtime2.List() { + if c.State.Running { + runningCount++ + } + } + if runningCount != 0 { + t.Fatalf("Expected 0 container alive, %d found", runningCount) } container2 := runtime2.Get(container1.Id) if container2 == nil {