mirror of
				https://github.com/moby/moby.git
				synced 2022-11-09 12:21:53 -05:00 
			
		
		
		
	Windows: First part of CI tests (docker run)
Signed-off-by: John Howard <jhoward@microsoft.com>
This commit is contained in:
		
							parent
							
								
									7d5603e7cb
								
							
						
					
					
						commit
						8a5ab83df8
					
				
					 6 changed files with 381 additions and 107 deletions
				
			
		| 
						 | 
				
			
			@ -1028,7 +1028,7 @@ func (s *DockerSuite) TestContainerApiRestart(c *check.C) {
 | 
			
		|||
	c.Assert(err, check.IsNil)
 | 
			
		||||
	c.Assert(status, check.Equals, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Restarting  }} {{ .State.Running  }}", "false true", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Restarting  }} {{ .State.Running  }}", "false true", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1044,7 +1044,7 @@ func (s *DockerSuite) TestContainerApiRestartNotimeoutParam(c *check.C) {
 | 
			
		|||
	c.Assert(err, check.IsNil)
 | 
			
		||||
	c.Assert(status, check.Equals, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Restarting  }} {{ .State.Running  }}", "false true", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Restarting  }} {{ .State.Running  }}", "false true", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1082,7 +1082,7 @@ func (s *DockerSuite) TestContainerApiStop(c *check.C) {
 | 
			
		|||
	c.Assert(err, check.IsNil)
 | 
			
		||||
	c.Assert(status, check.Equals, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Running  }}", "false", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Running  }}", "false", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1101,7 +1101,7 @@ func (s *DockerSuite) TestContainerApiWait(c *check.C) {
 | 
			
		|||
	c.Assert(err, check.IsNil)
 | 
			
		||||
	c.Assert(status, check.Equals, http.StatusOK)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Running  }}", "false", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(name, "{{ .State.Running  }}", "false", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -1347,7 +1347,7 @@ func (s *DockerSuite) TestPostContainerStop(c *check.C) {
 | 
			
		|||
	// 204 No Content is expected, not 200
 | 
			
		||||
	c.Assert(statusCode, check.Equals, http.StatusNoContent)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(containerID, "{{ .State.Running  }}", "false", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(containerID, "{{ .State.Running  }}", "false", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,6 +2,7 @@ package main
 | 
			
		|||
 | 
			
		||||
import (
 | 
			
		||||
	"strings"
 | 
			
		||||
	"time"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-check/check"
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			@ -132,7 +133,7 @@ func (s *DockerSuite) TestContainerRestartwithGoodContainer(c *check.C) {
 | 
			
		|||
	out, _ := dockerCmd(c, "run", "-d", "--restart=on-failure:3", "busybox", "true")
 | 
			
		||||
 | 
			
		||||
	id := strings.TrimSpace(string(out))
 | 
			
		||||
	if err := waitInspect(id, "{{ .State.Restarting }} {{ .State.Running }}", "false false", 5); err != nil {
 | 
			
		||||
	if err := waitInspect(id, "{{ .State.Restarting }} {{ .State.Running }}", "false false", 5*time.Second); err != nil {
 | 
			
		||||
		c.Fatal(err)
 | 
			
		||||
	}
 | 
			
		||||
	count, err := inspectField(id, "RestartCount")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							| 
						 | 
				
			
			@ -15,7 +15,7 @@ func (s *DockerSuite) TestWaitNonBlockedExitZero(c *check.C) {
 | 
			
		|||
	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "true")
 | 
			
		||||
	containerID := strings.TrimSpace(out)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(containerID, "{{.State.Running}}", "false", 1); err != nil {
 | 
			
		||||
	if err := waitInspect(containerID, "{{.State.Running}}", "false", 1*time.Second); err != nil {
 | 
			
		||||
		c.Fatal("Container should have stopped by now")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -60,7 +60,7 @@ func (s *DockerSuite) TestWaitNonBlockedExitRandom(c *check.C) {
 | 
			
		|||
	out, _ := dockerCmd(c, "run", "-d", "busybox", "sh", "-c", "exit 99")
 | 
			
		||||
	containerID := strings.TrimSpace(out)
 | 
			
		||||
 | 
			
		||||
	if err := waitInspect(containerID, "{{.State.Running}}", "false", 1); err != nil {
 | 
			
		||||
	if err := waitInspect(containerID, "{{.State.Running}}", "false", 1*time.Second); err != nil {
 | 
			
		||||
		c.Fatal("Container should have stopped by now")
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -34,6 +34,19 @@ var (
 | 
			
		|||
	// of the daemon. This is initialised in docker_utils by sending
 | 
			
		||||
	// a version call to the daemon and examining the response header.
 | 
			
		||||
	daemonPlatform string
 | 
			
		||||
 | 
			
		||||
	// daemonDefaultImage is the name of the default image to use when running
 | 
			
		||||
	// tests. This is platform dependent.
 | 
			
		||||
	daemonDefaultImage string
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	// WindowsBaseImage is the name of the base image for Windows testing
 | 
			
		||||
	WindowsBaseImage = "windowsservercore"
 | 
			
		||||
 | 
			
		||||
	// DefaultImage is the name of the base image for the majority of tests that
 | 
			
		||||
	// are run across suites
 | 
			
		||||
	DefaultImage = "busybox"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func init() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1402,14 +1402,20 @@ func waitForContainer(contID string, args ...string) error {
 | 
			
		|||
 | 
			
		||||
// waitRun will wait for the specified container to be running, maximum 5 seconds.
 | 
			
		||||
func waitRun(contID string) error {
 | 
			
		||||
	return waitInspect(contID, "{{.State.Running}}", "true", 5)
 | 
			
		||||
	return waitInspect(contID, "{{.State.Running}}", "true", 5*time.Second)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// waitExited will wait for the specified container to state exit, subject
 | 
			
		||||
// to a maximum time limit in seconds supplied by the caller
 | 
			
		||||
func waitExited(contID string, duration time.Duration) error {
 | 
			
		||||
	return waitInspect(contID, "{{.State.Status}}", "exited", duration)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// waitInspect will wait for the specified container to have the specified string
 | 
			
		||||
// in the inspect output. It will wait until the specified timeout (in seconds)
 | 
			
		||||
// is reached.
 | 
			
		||||
func waitInspect(name, expr, expected string, timeout int) error {
 | 
			
		||||
	after := time.After(time.Duration(timeout) * time.Second)
 | 
			
		||||
func waitInspect(name, expr, expected string, timeout time.Duration) error {
 | 
			
		||||
	after := time.After(timeout)
 | 
			
		||||
 | 
			
		||||
	for {
 | 
			
		||||
		cmd := exec.Command(dockerBinary, "inspect", "-f", expr, name)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue