@@ -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 {
0 commit comments