@@ -133,8 +133,7 @@ func TestV2Handler_TaskMetadata(t *testing.T) {
133133 actualMetadata := & v2.TaskResponse {}
134134 err = json .Unmarshal (response , actualMetadata )
135135 assert .NoError (t , err , "Unexpected error unmarshalling response" )
136-
137- assert .ElementsMatch (t , expectedMetadata .Containers , actualMetadata .Containers , "Expected container responses to match" )
136+ assertContainersEqual (t , expectedMetadata .Containers , actualMetadata .Containers )
138137 assert .Equal (t , expectedMetadata .TaskTags , actualMetadata .TaskTags , "Expected Task Tags to match" )
139138 assert .Equal (t , expectedMetadata .ContainerInstanceTags , actualMetadata .ContainerInstanceTags , "Expected Container Instance Tags to match" )
140139 assert .Equal (t , expectedMetadata .Cluster , actualMetadata .Cluster , "Expected Cluster to match" )
@@ -222,7 +221,7 @@ func TestV2Handler_TaskMetadata_TrailingSlash(t *testing.T) {
222221 err = json .Unmarshal (response , actualMetadata )
223222 assert .NoError (t , err , "Unexpected error unmarshalling response" )
224223
225- assert .ElementsMatch (t , expectedMetadata .Containers , actualMetadata .Containers , "Expected container responses to match" )
224+ assert .Equal (t , len ( expectedMetadata .Containers ), len ( actualMetadata .Containers ) , "Expected container responses to match" )
226225 assert .Equal (t , expectedMetadata .TaskTags , actualMetadata .TaskTags , "Expected Task Tags to match" )
227226 assert .Equal (t , expectedMetadata .ContainerInstanceTags , actualMetadata .ContainerInstanceTags , "Expected Container Instance Tags to match" )
228227 assert .Equal (t , expectedMetadata .Cluster , actualMetadata .Cluster , "Expected Cluster to match" )
@@ -301,7 +300,7 @@ func TestV2Handler_ContainerMetadata(t *testing.T) {
301300 err = json .Unmarshal (response , actualMetadata )
302301 assert .NoError (t , err , "Unexpected error unmarshalling response" )
303302
304- assert . Equal (t , & expectedMetadata , actualMetadata , "Expected container metadata response to match" )
303+ assertContainerResponseEqual (t , & expectedMetadata , actualMetadata )
305304}
306305
307306func TestV2Handler_TaskMetadata_InvalidURL (t * testing.T ) {
@@ -372,7 +371,7 @@ func TestV2Handler_ContainerMetadata_TrailingSlash(t *testing.T) {
372371 err = json .Unmarshal (response , actualMetadata )
373372 assert .NoError (t , err , "Unexpected error unmarshalling response" )
374373
375- assert . Equal (t , & expectedMetadata , actualMetadata , "Expected container metadata response to match" )
374+ assertContainerResponseEqual (t , & expectedMetadata , actualMetadata )
376375}
377376
378377// Tests Path: /v2/stats/<container ID>
@@ -631,3 +630,54 @@ func TestV2Handler_TaskStats_DockerAPIError(t *testing.T) {
631630 assert .NoError (t , err , "Unexpected error making HTTP Request" )
632631 assert .True (t , strings .Contains (response .Status , strconv .Itoa (http .StatusInternalServerError )), "Expected http response status to be internal server error" )
633632}
633+
634+ func assertContainerResponseEqual (t * testing.T , expected , actual * v2.ContainerResponse ) {
635+ assert .Equal (t , expected .ID , actual .ID )
636+ assert .Equal (t , expected .Name , actual .Name )
637+ assert .Equal (t , expected .DockerName , actual .DockerName )
638+ assert .Equal (t , expected .Image , actual .Image )
639+ assert .Equal (t , expected .ImageID , actual .ImageID )
640+ assert .Equal (t , expected .Ports , actual .Ports )
641+ assert .Equal (t , expected .Labels , actual .Labels )
642+ assert .Equal (t , expected .DesiredStatus , actual .DesiredStatus )
643+ assert .Equal (t , expected .KnownStatus , actual .KnownStatus )
644+ assert .Equal (t , expected .ExitCode , actual .ExitCode )
645+ assert .Equal (t , expected .Limits , actual .Limits )
646+ assert .Equal (t , expected .Type , actual .Type )
647+ assert .Equal (t , expected .Networks , actual .Networks )
648+ assert .Equal (t , expected .Health , actual .Health )
649+ assert .Equal (t , expected .Volumes , actual .Volumes )
650+
651+ if expected .CreatedAt == nil {
652+ assert .Nil (t , actual .CreatedAt )
653+ } else {
654+ assert .True (t , expected .CreatedAt .Equal (* actual .CreatedAt ))
655+ }
656+ if expected .StartedAt == nil {
657+ assert .Nil (t , actual .StartedAt )
658+ } else {
659+ assert .True (t , expected .StartedAt .Equal (* actual .StartedAt ))
660+ }
661+ if expected .FinishedAt == nil {
662+ assert .Nil (t , actual .FinishedAt )
663+ } else {
664+ assert .True (t , expected .FinishedAt .Equal (* actual .FinishedAt ))
665+ }
666+ }
667+
668+ func assertContainersEqual (t * testing.T , expected , actual []v2.ContainerResponse ) {
669+ assert .Equal (t , len (expected ), len (actual ))
670+ expectedMap := make (map [string ]v2.ContainerResponse , len (expected ))
671+ actualMap := make (map [string ]v2.ContainerResponse , len (actual ))
672+ for _ , cr := range expected {
673+ expectedMap [cr .ID ] = cr
674+ }
675+ for _ , cr := range actual {
676+ actualMap [cr .ID ] = cr
677+ }
678+ for k , expectedContainerResponse := range expectedMap {
679+ actualContainerResponse , ok := actualMap [k ]
680+ assert .True (t , ok )
681+ assertContainerResponseEqual (t , & expectedContainerResponse , & actualContainerResponse )
682+ }
683+ }
0 commit comments