浏览代码

Improve detach unit tests

Guillaume J. Charmes 11 年之前
父节点
当前提交
e97364ecd7
共有 2 个文件被更改,包括 15 次插入4 次删除
  1. 11 1
      commands_test.go
  2. 4 3
      container.go

+ 11 - 1
commands_test.go

@@ -404,7 +404,12 @@ func TestRunDetach(t *testing.T) {
 		<-ch
 		<-ch
 	})
 	})
 
 
-	setTimeout(t, "Waiting for container to die timedout", 5*time.Second, func() {
+	time.Sleep(500 * time.Millisecond)
+	if !container.State.Running {
+		t.Fatal("The detached container should be still running")
+	}
+
+	setTimeout(t, "Waiting for container to die timed out", 20*time.Second, func() {
 		container.Kill()
 		container.Kill()
 		container.Wait()
 		container.Wait()
 	})
 	})
@@ -457,6 +462,11 @@ func TestAttachDetach(t *testing.T) {
 		<-ch
 		<-ch
 	})
 	})
 
 
+	time.Sleep(500 * time.Millisecond)
+	if !container.State.Running {
+		t.Fatal("The detached container should be still running")
+	}
+
 	setTimeout(t, "Waiting for container to die timedout", 5*time.Second, func() {
 	setTimeout(t, "Waiting for container to die timedout", 5*time.Second, func() {
 		container.Kill()
 		container.Kill()
 		container.Wait()
 		container.Wait()

+ 4 - 3
container.go

@@ -957,9 +957,6 @@ func (container *Container) monitor() {
 	}
 	}
 	utils.Debugf("Process finished")
 	utils.Debugf("Process finished")
 
 
-	if container.runtime != nil && container.runtime.srv != nil {
-		container.runtime.srv.LogEvent("die", container.ShortID(), container.runtime.repositories.ImageName(container.Image))
-	}
 	exitCode := -1
 	exitCode := -1
 	if container.cmd != nil {
 	if container.cmd != nil {
 		exitCode = container.cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()
 		exitCode = container.cmd.ProcessState.Sys().(syscall.WaitStatus).ExitStatus()
@@ -968,6 +965,10 @@ func (container *Container) monitor() {
 	// Report status back
 	// Report status back
 	container.State.setStopped(exitCode)
 	container.State.setStopped(exitCode)
 
 
+	if container.runtime != nil && container.runtime.srv != nil {
+		container.runtime.srv.LogEvent("die", container.ShortID(), container.runtime.repositories.ImageName(container.Image))
+	}
+
 	// Cleanup
 	// Cleanup
 	container.releaseNetwork()
 	container.releaseNetwork()
 	if container.Config.OpenStdin {
 	if container.Config.OpenStdin {