github.com/shishir-a412ed/docker@v1.3.2-0.20180103180333-fda904911d87/integration-cli/docker_api_create_test.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net/http" 6 "time" 7 8 "github.com/docker/docker/api/types/container" 9 "github.com/docker/docker/integration-cli/checker" 10 "github.com/docker/docker/integration-cli/request" 11 "github.com/go-check/check" 12 ) 13 14 func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) { 15 // test invalid Interval in Healthcheck: less than 0s 16 name := "test1" 17 config := map[string]interface{}{ 18 "Image": "busybox", 19 "Healthcheck": map[string]interface{}{ 20 "Interval": -10 * time.Millisecond, 21 "Timeout": time.Second, 22 "Retries": int(1000), 23 }, 24 } 25 26 res, body, err := request.Post("/containers/create?name="+name, request.JSONBody(config)) 27 c.Assert(err, check.IsNil) 28 c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest) 29 30 buf, err := request.ReadBody(body) 31 c.Assert(err, checker.IsNil) 32 33 expected := fmt.Sprintf("Interval in Healthcheck cannot be less than %s", container.MinimumDuration) 34 c.Assert(getErrorMessage(c, buf), checker.Contains, expected) 35 36 // test invalid Interval in Healthcheck: larger than 0s but less than 1ms 37 name = "test2" 38 config = map[string]interface{}{ 39 "Image": "busybox", 40 "Healthcheck": map[string]interface{}{ 41 "Interval": 500 * time.Microsecond, 42 "Timeout": time.Second, 43 "Retries": int(1000), 44 }, 45 } 46 res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config)) 47 c.Assert(err, check.IsNil) 48 49 buf, err = request.ReadBody(body) 50 c.Assert(err, checker.IsNil) 51 52 c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest) 53 c.Assert(getErrorMessage(c, buf), checker.Contains, expected) 54 55 // test invalid Timeout in Healthcheck: less than 1ms 56 name = "test3" 57 config = map[string]interface{}{ 58 "Image": "busybox", 59 "Healthcheck": map[string]interface{}{ 60 "Interval": time.Second, 61 "Timeout": -100 * time.Millisecond, 62 "Retries": int(1000), 63 }, 64 } 65 res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config)) 66 c.Assert(err, check.IsNil) 67 c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest) 68 69 buf, err = request.ReadBody(body) 70 c.Assert(err, checker.IsNil) 71 72 expected = fmt.Sprintf("Timeout in Healthcheck cannot be less than %s", container.MinimumDuration) 73 c.Assert(getErrorMessage(c, buf), checker.Contains, expected) 74 75 // test invalid Retries in Healthcheck: less than 0 76 name = "test4" 77 config = map[string]interface{}{ 78 "Image": "busybox", 79 "Healthcheck": map[string]interface{}{ 80 "Interval": time.Second, 81 "Timeout": time.Second, 82 "Retries": int(-10), 83 }, 84 } 85 res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config)) 86 c.Assert(err, check.IsNil) 87 c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest) 88 89 buf, err = request.ReadBody(body) 90 c.Assert(err, checker.IsNil) 91 92 expected = "Retries in Healthcheck cannot be negative" 93 c.Assert(getErrorMessage(c, buf), checker.Contains, expected) 94 95 // test invalid StartPeriod in Healthcheck: not 0 and less than 1ms 96 name = "test3" 97 config = map[string]interface{}{ 98 "Image": "busybox", 99 "Healthcheck": map[string]interface{}{ 100 "Interval": time.Second, 101 "Timeout": time.Second, 102 "Retries": int(1000), 103 "StartPeriod": 100 * time.Microsecond, 104 }, 105 } 106 res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config)) 107 c.Assert(err, check.IsNil) 108 c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest) 109 110 buf, err = request.ReadBody(body) 111 c.Assert(err, checker.IsNil) 112 113 expected = fmt.Sprintf("StartPeriod in Healthcheck cannot be less than %s", container.MinimumDuration) 114 c.Assert(getErrorMessage(c, buf), checker.Contains, expected) 115 }