From 80d73c838a279a3354713b56687e0c3f90c1efff Mon Sep 17 00:00:00 2001 From: Rajdeep Dua Date: Sat, 25 Apr 2015 01:53:38 -0700 Subject: [PATCH] Test Cases for API - Container create with Hostname, DomainName and NetworkMode Signed-off-by: Rajdeep Dua Signed-off-by: Antonio Murdaca --- integration-cli/docker_api_containers_test.go | 107 +++++++++++++----- 1 file changed, 81 insertions(+), 26 deletions(-) diff --git a/integration-cli/docker_api_containers_test.go b/integration-cli/docker_api_containers_test.go index 9b2ed6b6d1..e8f9b0a968 100644 --- a/integration-cli/docker_api_containers_test.go +++ b/integration-cli/docker_api_containers_test.go @@ -14,6 +14,7 @@ import ( "github.com/docker/docker/api/types" "github.com/docker/docker/pkg/stringid" + "github.com/docker/docker/runconfig" "github.com/go-check/check" ) @@ -676,43 +677,97 @@ func (s *DockerSuite) TestContainerApiCreate(c *check.C) { } func (s *DockerSuite) TestContainerApiCreateWithHostName(c *check.C) { - var hostName = "test-host" + hostName := "test-host" config := map[string]interface{}{ "Image": "busybox", "Hostname": hostName, } - _, b, err := sockRequest("POST", "/containers/create", config) - if err != nil && !strings.Contains(err.Error(), "200 OK: 201") { - c.Fatal(err) - } - type createResp struct { - Id string - } - var container createResp - if err := json.Unmarshal(b, &container); err != nil { + status, body, err := sockRequest("POST", "/containers/create", config) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusCreated) + + var container types.ContainerCreateResponse + if err := json.Unmarshal(body, &container); err != nil { c.Fatal(err) } - var id = container.Id + status, body, err = sockRequest("GET", "/containers/"+container.ID+"/json", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusOK) - _, bodyGet, err := sockRequest("GET", "/containers/"+id+"/json", nil) - - type configLocal struct { - Hostname string - } - type getResponse struct { - Id string - Config configLocal - } - - var containerInfo getResponse - if err := json.Unmarshal(bodyGet, &containerInfo); err != nil { + var containerJSON types.ContainerJSON + if err := json.Unmarshal(body, &containerJSON); err != nil { c.Fatal(err) } - var hostNameActual = containerInfo.Config.Hostname - if hostNameActual != "test-host" { - c.Fatalf("Mismatched Hostname, Expected %v, Actual: %v ", hostName, hostNameActual) + + if containerJSON.Config.Hostname != hostName { + c.Fatalf("Mismatched Hostname, Expected %s, Actual: %s ", hostName, containerJSON.Config.Hostname) + } +} + +func (s *DockerSuite) TestContainerApiCreateWithDomainName(c *check.C) { + domainName := "test-domain" + config := map[string]interface{}{ + "Image": "busybox", + "Domainname": domainName, + } + + status, body, err := sockRequest("POST", "/containers/create", config) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusCreated) + + var container types.ContainerCreateResponse + if err := json.Unmarshal(body, &container); err != nil { + c.Fatal(err) + } + + status, body, err = sockRequest("GET", "/containers/"+container.ID+"/json", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusOK) + + var containerJSON types.ContainerJSON + if err := json.Unmarshal(body, &containerJSON); err != nil { + c.Fatal(err) + } + + if containerJSON.Config.Domainname != domainName { + c.Fatalf("Mismatched Domainname, Expected %s, Actual: %s ", domainName, containerJSON.Config.Domainname) + } +} + +func (s *DockerSuite) TestContainerApiCreateNetworkMode(c *check.C) { + UtilCreateNetworkMode(c, "host") + UtilCreateNetworkMode(c, "bridge") + UtilCreateNetworkMode(c, "container:web1") +} + +func UtilCreateNetworkMode(c *check.C, networkMode string) { + config := map[string]interface{}{ + "Image": "busybox", + "HostConfig": map[string]interface{}{"NetworkMode": networkMode}, + } + + status, body, err := sockRequest("POST", "/containers/create", config) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusCreated) + + var container types.ContainerCreateResponse + if err := json.Unmarshal(body, &container); err != nil { + c.Fatal(err) + } + + status, body, err = sockRequest("GET", "/containers/"+container.ID+"/json", nil) + c.Assert(err, check.IsNil) + c.Assert(status, check.Equals, http.StatusOK) + + var containerJSON types.ContainerJSON + if err := json.Unmarshal(body, &containerJSON); err != nil { + c.Fatal(err) + } + + if containerJSON.HostConfig.NetworkMode != runconfig.NetworkMode(networkMode) { + c.Fatalf("Mismatched NetworkMode, Expected %s, Actual: %s ", networkMode, containerJSON.HostConfig.NetworkMode) } }