@@ -3,6 +3,7 @@ package e2e
33import (
44 "encoding/json"
55 "fmt"
6+ "io/ioutil"
67 "math/rand"
78 "net"
89 "net/http"
@@ -28,6 +29,7 @@ type dindSwarmAndRegistryInfo struct {
2829 registryAddress string
2930 configuredCmd icmd.Cmd
3031 stopRegistry func ()
32+ registryLogs func () string
3133}
3234
3335func runWithDindSwarmAndRegistry (t * testing.T , todo func (dindSwarmAndRegistryInfo )) {
@@ -88,6 +90,7 @@ func runWithDindSwarmAndRegistry(t *testing.T, todo func(dindSwarmAndRegistryInf
8890 registryAddress : registry .GetAddress (t ),
8991 swarmAddress : swarm .GetAddress (t ),
9092 stopRegistry : registry .StopNoFail ,
93+ registryLogs : registry .Logs (t ),
9194 }
9295 todo (info )
9396
@@ -165,11 +168,16 @@ func TestPushArchs(t *testing.T) {
165168 icmd .RunCmd (cmd ).Assert (t , icmd .Success )
166169
167170 var index v1.Index
168- httpGet (t , "http://" + info .registryAddress + "/v2/test/push-pull/manifests/1" , & index )
171+ headers := map [string ]string {
172+ "Accept" : "application/vnd.docker.distribution.manifest.list.v2+json" ,
173+ }
174+ err := httpGet ("http://" + info .registryAddress + "/v2/test/push-pull/manifests/1" , headers , & index )
175+ assert .NilError (t , err , info .registryLogs ())
169176 digest , err := getManifestListDigest (index )
170- assert .NilError (t , err )
177+ assert .NilError (t , err , info . registryLogs () )
171178 var manifestList manifestlist.ManifestList
172- httpGet (t , "http://" + info .registryAddress + "/v2/test/push-pull/manifests/" + digest .String (), & manifestList )
179+ err = httpGet ("http://" + info .registryAddress + "/v2/test/push-pull/manifests/" + digest .String (), headers , & manifestList )
180+ assert .NilError (t , err )
173181 assert .Equal (t , len (manifestList .Manifests ), len (testCase .expectedPlatforms ), "Unexpected number of platforms" )
174182 for _ , m := range manifestList .Manifests {
175183 assert .Assert (t , cmp .Contains (testCase .expectedPlatforms , m .Platform ), "Platform expected but not found: %s" , m .Platform )
@@ -312,13 +320,31 @@ func isPortAvailable(port int) bool {
312320 return true
313321}
314322
315- func httpGet (t * testing.T , url string , obj interface {}) {
316- r , err := http .Get (url )
317- assert .NilError (t , err )
323+ func httpGet (url string , headers map [string ]string , obj interface {}) error {
324+ client := & http.Client {}
325+ req , err := http .NewRequest ("GET" , url , nil )
326+ if err != nil {
327+ return err
328+ }
329+ for k , v := range headers {
330+ req .Header .Set (k , v )
331+ }
332+ r , err := client .Do (req )
333+ if err != nil {
334+ return err
335+ }
318336 defer r .Body .Close ()
319- assert .Equal (t , r .StatusCode , 200 )
320- err = json .NewDecoder (r .Body ).Decode (obj )
321- assert .NilError (t , err )
337+ if r .StatusCode != http .StatusOK {
338+ body , err := ioutil .ReadAll (r .Body )
339+ if err != nil {
340+ return err
341+ }
342+ return fmt .Errorf ("unexpected http error code %d with message %s" , r .StatusCode , string (body ))
343+ }
344+ if err := json .NewDecoder (r .Body ).Decode (obj ); err != nil {
345+ return err
346+ }
347+ return nil
322348}
323349
324350func getManifestListDigest (index v1.Index ) (digest.Digest , error ) {
0 commit comments