Skip to content

Commit e440831

Browse files
AntaresSTibor Vass
andcommitted
fix and skip some tests based on API version
Signed-off-by: Anda Xu <[email protected]> Co-authored-by: Anda Xu <[email protected]> Co-authored-by: Tibor Vass <[email protected]>
1 parent 85a8252 commit e440831

31 files changed

Lines changed: 265 additions & 70 deletions

integration-cli/docker_api_build_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -406,7 +406,8 @@ func (s *DockerSuite) TestBuildAddRemoteNoDecompress(c *check.C) {
406406
}
407407

408408
func (s *DockerSuite) TestBuildChownOnCopy(c *check.C) {
409-
testRequires(c, DaemonIsLinux)
409+
// new feature added in 1.31 - https://github.com/moby/moby/pull/34263
410+
testRequires(c, DaemonIsLinux, MinimumAPIVersion("1.31"))
410411
dockerfile := `FROM busybox
411412
RUN echo 'test1:x:1001:1001::/bin:/bin/false' >> /etc/passwd
412413
RUN echo 'test1:x:1001:' >> /etc/group

integration-cli/docker_api_containers_test.go

Lines changed: 60 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
containertypes "github.com/docker/docker/api/types/container"
2222
mounttypes "github.com/docker/docker/api/types/mount"
2323
networktypes "github.com/docker/docker/api/types/network"
24+
"github.com/docker/docker/api/types/versions"
2425
"github.com/docker/docker/client"
2526
"github.com/docker/docker/integration-cli/checker"
2627
"github.com/docker/docker/integration-cli/cli"
@@ -724,13 +725,23 @@ func (s *DockerSuite) TestContainerAPIVerifyHeader(c *check.C) {
724725
// Try with no content-type
725726
res, body, err := create("")
726727
c.Assert(err, checker.IsNil)
727-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
728+
// todo: we need to figure out a better way to compare between dockerd versions
729+
// comparing between daemon API version is not precise.
730+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
731+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
732+
} else {
733+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
734+
}
728735
body.Close()
729736

730737
// Try with wrong content-type
731738
res, body, err = create("application/xml")
732739
c.Assert(err, checker.IsNil)
733-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
740+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
741+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
742+
} else {
743+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
744+
}
734745
body.Close()
735746

736747
// now application/json
@@ -756,7 +767,11 @@ func (s *DockerSuite) TestContainerAPIInvalidPortSyntax(c *check.C) {
756767

757768
res, body, err := request.Post("/containers/create", request.RawString(config), request.JSON)
758769
c.Assert(err, checker.IsNil)
759-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
770+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
771+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
772+
} else {
773+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
774+
}
760775

761776
b, err := request.ReadBody(body)
762777
c.Assert(err, checker.IsNil)
@@ -776,7 +791,11 @@ func (s *DockerSuite) TestContainerAPIRestartPolicyInvalidPolicyName(c *check.C)
776791

777792
res, body, err := request.Post("/containers/create", request.RawString(config), request.JSON)
778793
c.Assert(err, checker.IsNil)
779-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
794+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
795+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
796+
} else {
797+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
798+
}
780799

781800
b, err := request.ReadBody(body)
782801
c.Assert(err, checker.IsNil)
@@ -796,7 +815,11 @@ func (s *DockerSuite) TestContainerAPIRestartPolicyRetryMismatch(c *check.C) {
796815

797816
res, body, err := request.Post("/containers/create", request.RawString(config), request.JSON)
798817
c.Assert(err, checker.IsNil)
799-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
818+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
819+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
820+
} else {
821+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
822+
}
800823

801824
b, err := request.ReadBody(body)
802825
c.Assert(err, checker.IsNil)
@@ -816,7 +839,11 @@ func (s *DockerSuite) TestContainerAPIRestartPolicyNegativeRetryCount(c *check.C
816839

817840
res, body, err := request.Post("/containers/create", request.RawString(config), request.JSON)
818841
c.Assert(err, checker.IsNil)
819-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
842+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
843+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
844+
} else {
845+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
846+
}
820847

821848
b, err := request.ReadBody(body)
822849
c.Assert(err, checker.IsNil)
@@ -901,7 +928,11 @@ func (s *DockerSuite) TestCreateWithTooLowMemoryLimit(c *check.C) {
901928
b, err2 := request.ReadBody(body)
902929
c.Assert(err2, checker.IsNil)
903930

904-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
931+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
932+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
933+
} else {
934+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
935+
}
905936
c.Assert(string(b), checker.Contains, "Minimum memory limit allowed is 4MB")
906937
}
907938

@@ -1089,7 +1120,11 @@ func (s *DockerSuite) TestContainerAPICopyResourcePathEmptyPre124(c *check.C) {
10891120

10901121
res, body, err := request.Post("/v1.23/containers/"+name+"/copy", request.JSONBody(postData))
10911122
c.Assert(err, checker.IsNil)
1092-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
1123+
if versions.GreaterThanOrEqualTo(testEnv.DaemonAPIVersion(), "1.32") {
1124+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
1125+
} else {
1126+
c.Assert(res.StatusCode, checker.Not(checker.Equals), http.StatusOK)
1127+
}
10931128
b, err := request.ReadBody(body)
10941129
c.Assert(err, checker.IsNil)
10951130
c.Assert(string(b), checker.Matches, "Path cannot be empty\n")
@@ -1106,8 +1141,11 @@ func (s *DockerSuite) TestContainerAPICopyResourcePathNotFoundPre124(c *check.C)
11061141

11071142
res, body, err := request.Post("/v1.23/containers/"+name+"/copy", request.JSONBody(postData))
11081143
c.Assert(err, checker.IsNil)
1109-
c.Assert(res.StatusCode, checker.Equals, http.StatusNotFound)
1110-
1144+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
1145+
c.Assert(res.StatusCode, checker.Equals, http.StatusInternalServerError)
1146+
} else {
1147+
c.Assert(res.StatusCode, checker.Equals, http.StatusNotFound)
1148+
}
11111149
b, err := request.ReadBody(body)
11121150
c.Assert(err, checker.IsNil)
11131151
c.Assert(string(b), checker.Matches, "Could not find the file /notexist in container "+name+"\n")
@@ -1563,7 +1601,11 @@ func (s *DockerSuite) TestPostContainersCreateMemorySwappinessHostConfigOmitted(
15631601
containerJSON, err := cli.ContainerInspect(context.Background(), container.ID)
15641602
c.Assert(err, check.IsNil)
15651603

1566-
c.Assert(containerJSON.HostConfig.MemorySwappiness, check.IsNil)
1604+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.31") {
1605+
c.Assert(*containerJSON.HostConfig.MemorySwappiness, check.Equals, int64(-1))
1606+
} else {
1607+
c.Assert(containerJSON.HostConfig.MemorySwappiness, check.IsNil)
1608+
}
15671609
}
15681610

15691611
// check validation is done daemon side and not only in cli
@@ -1910,8 +1952,13 @@ func (s *DockerSuite) TestContainersAPICreateMountsCreate(c *check.C) {
19101952
}
19111953

19121954
var selinuxSharedLabel string
1913-
if runtime.GOOS == "linux" {
1914-
selinuxSharedLabel = "z"
1955+
// this test label was added after a bug fix in 1.32, thus add requirements min API >= 1.32
1956+
// for the sake of making test pass in earlier versions
1957+
// bug fixed in https://github.com/moby/moby/pull/34684
1958+
if !versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
1959+
if runtime.GOOS == "linux" {
1960+
selinuxSharedLabel = "z"
1961+
}
19151962
}
19161963

19171964
cases := []testCase{

integration-cli/docker_api_create_test.go

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"time"
77

88
"github.com/docker/docker/api/types/container"
9+
"github.com/docker/docker/api/types/versions"
910
"github.com/docker/docker/integration-cli/checker"
1011
"github.com/docker/docker/internal/test/request"
1112
"github.com/go-check/check"
@@ -25,7 +26,11 @@ func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) {
2526

2627
res, body, err := request.Post("/containers/create?name="+name, request.JSONBody(config))
2728
c.Assert(err, check.IsNil)
28-
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
29+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
30+
c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
31+
} else {
32+
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
33+
}
2934

3035
buf, err := request.ReadBody(body)
3136
c.Assert(err, checker.IsNil)
@@ -49,7 +54,11 @@ func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) {
4954
buf, err = request.ReadBody(body)
5055
c.Assert(err, checker.IsNil)
5156

52-
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
57+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
58+
c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
59+
} else {
60+
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
61+
}
5362
c.Assert(getErrorMessage(c, buf), checker.Contains, expected)
5463

5564
// test invalid Timeout in Healthcheck: less than 1ms
@@ -64,7 +73,11 @@ func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) {
6473
}
6574
res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config))
6675
c.Assert(err, check.IsNil)
67-
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
76+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
77+
c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
78+
} else {
79+
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
80+
}
6881

6982
buf, err = request.ReadBody(body)
7083
c.Assert(err, checker.IsNil)
@@ -84,7 +97,11 @@ func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) {
8497
}
8598
res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config))
8699
c.Assert(err, check.IsNil)
87-
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
100+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
101+
c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
102+
} else {
103+
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
104+
}
88105

89106
buf, err = request.ReadBody(body)
90107
c.Assert(err, checker.IsNil)
@@ -105,7 +122,11 @@ func (s *DockerSuite) TestAPICreateWithInvalidHealthcheckParams(c *check.C) {
105122
}
106123
res, body, err = request.Post("/containers/create?name="+name, request.JSONBody(config))
107124
c.Assert(err, check.IsNil)
108-
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
125+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
126+
c.Assert(res.StatusCode, check.Equals, http.StatusInternalServerError)
127+
} else {
128+
c.Assert(res.StatusCode, check.Equals, http.StatusBadRequest)
129+
}
109130

110131
buf, err = request.ReadBody(body)
111132
c.Assert(err, checker.IsNil)

integration-cli/docker_api_exec_resize_test.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"strings"
1010
"sync"
1111

12+
"github.com/docker/docker/api/types/versions"
1213
"github.com/docker/docker/integration-cli/checker"
1314
"github.com/docker/docker/internal/test/request"
1415
"github.com/go-check/check"
@@ -22,7 +23,11 @@ func (s *DockerSuite) TestExecResizeAPIHeightWidthNoInt(c *check.C) {
2223
endpoint := "/exec/" + cleanedContainerID + "/resize?h=foo&w=bar"
2324
res, _, err := request.Post(endpoint)
2425
c.Assert(err, checker.IsNil)
25-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
26+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
27+
c.Assert(res.StatusCode, checker.Equals, http.StatusInternalServerError)
28+
} else {
29+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
30+
}
2631
}
2732

2833
// Part of #14845

integration-cli/docker_api_exec_test.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"time"
1515

1616
"github.com/docker/docker/api/types"
17+
"github.com/docker/docker/api/types/versions"
1718
"github.com/docker/docker/client"
1819
"github.com/docker/docker/integration-cli/checker"
1920
"github.com/docker/docker/internal/test/request"
@@ -27,8 +28,11 @@ func (s *DockerSuite) TestExecAPICreateNoCmd(c *check.C) {
2728

2829
res, body, err := request.Post(fmt.Sprintf("/containers/%s/exec", name), request.JSONBody(map[string]interface{}{"Cmd": nil}))
2930
c.Assert(err, checker.IsNil)
30-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
31-
31+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
32+
c.Assert(res.StatusCode, checker.Equals, http.StatusInternalServerError)
33+
} else {
34+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
35+
}
3236
b, err := request.ReadBody(body)
3337
c.Assert(err, checker.IsNil)
3438

@@ -47,8 +51,11 @@ func (s *DockerSuite) TestExecAPICreateNoValidContentType(c *check.C) {
4751

4852
res, body, err := request.Post(fmt.Sprintf("/containers/%s/exec", name), request.RawContent(ioutil.NopCloser(jsonData)), request.ContentType("test/plain"))
4953
c.Assert(err, checker.IsNil)
50-
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
51-
54+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
55+
c.Assert(res.StatusCode, checker.Equals, http.StatusInternalServerError)
56+
} else {
57+
c.Assert(res.StatusCode, checker.Equals, http.StatusBadRequest)
58+
}
5259
b, err := request.ReadBody(body)
5360
c.Assert(err, checker.IsNil)
5461

@@ -191,7 +198,11 @@ func (s *DockerSuite) TestExecAPIStartInvalidCommand(c *check.C) {
191198
dockerCmd(c, "run", "-d", "-t", "--name", name, "busybox", "/bin/sh")
192199

193200
id := createExecCmd(c, name, "invalid")
194-
startExec(c, id, http.StatusBadRequest)
201+
if versions.LessThan(testEnv.DaemonAPIVersion(), "1.32") {
202+
startExec(c, id, http.StatusNotFound)
203+
} else {
204+
startExec(c, id, http.StatusBadRequest)
205+
}
195206
waitForExec(c, id)
196207

197208
var inspectJSON struct{ ExecIDs []string }

integration-cli/docker_api_ipcmode_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func testIpcNonePrivateShareable(c *check.C, mode string, mustBeMounted bool, mu
8888
* /dev/shm mount inside the container.
8989
*/
9090
func (s *DockerSuite) TestAPIIpcModeNone(c *check.C) {
91-
testRequires(c, DaemonIsLinux)
91+
testRequires(c, DaemonIsLinux, MinimumAPIVersion("1.32"))
9292
testIpcNonePrivateShareable(c, "none", false, false)
9393
}
9494

@@ -173,7 +173,7 @@ func (s *DockerSuite) TestAPIIpcModeShareableAndContainer(c *check.C) {
173173
* --ipc container:ID can NOT use IPC of another private container.
174174
*/
175175
func (s *DockerSuite) TestAPIIpcModePrivateAndContainer(c *check.C) {
176-
testRequires(c, DaemonIsLinux)
176+
testRequires(c, DaemonIsLinux, MinimumAPIVersion("1.32"))
177177
testIpcContainer(s, c, "private", false)
178178
}
179179

integration-cli/docker_api_logs_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,7 @@ func (s *DockerSuite) TestLogsAPIUntilFutureFollow(c *check.C) {
149149
}
150150

151151
func (s *DockerSuite) TestLogsAPIUntil(c *check.C) {
152+
testRequires(c, MinimumAPIVersion("1.34"))
152153
name := "logsuntil"
153154
dockerCmd(c, "run", "--name", name, "busybox", "/bin/sh", "-c", "for i in $(seq 1 3); do echo log$i; sleep 1; done")
154155

0 commit comments

Comments
 (0)