//VerifyImagesDifferent will that the two supplied image tags and see if they reference different hexadecimal image IDs; strategy is for ginkgo debug, also leverage ginkgo error checking func VerifyImagesDifferent(comp1, comp2, strategy string) { tag1 := comp1 + ":latest" tag2 := comp2 + ":latest" comps := []string{tag1, tag2} retIDs, gerr := GetImageIDForTags(comps) o.Expect(gerr).NotTo(o.HaveOccurred()) g.By(fmt.Sprintf("%s compare image - %s, %s, %s, %s", strategy, tag1, tag2, retIDs[0], retIDs[1])) o.Ω(len(retIDs[0])).Should(o.BeNumerically(">", 0)) o.Ω(len(retIDs[1])).Should(o.BeNumerically(">", 0)) o.Ω(retIDs[0] != retIDs[1]).Should(o.BeTrue()) }
//VerifyImagesSame will take the two supplied image tags and see if they reference the same hexadecimal image ID; strategy is for debug func VerifyImagesSame(comp1, comp2, strategy string) { tag1 := comp1 + ":latest" tag2 := comp2 + ":latest" comps := []string{tag1, tag2} retIDs, gerr := GetImageIDForTags(comps) o.Expect(gerr).NotTo(o.HaveOccurred()) fmt.Fprintf(g.GinkgoWriter, "%s compare image - %s, %s, %s, %s", strategy, tag1, tag2, retIDs[0], retIDs[1]) o.Ω(len(retIDs[0])).Should(o.BeNumerically(">", 0)) o.Ω(len(retIDs[1])).Should(o.BeNumerically(">", 0)) o.Ω(retIDs[0]).Should(o.Equal(retIDs[1])) }
//VerifyImagesSame will take the two supplied image tags and see if they reference the same hexadecimal image ID; strategy is for debug func VerifyImagesSame(comp1, comp2, strategy string) { tag1 := comp1 + ":latest" tag2 := comp2 + ":latest" comps := []string{tag1, tag2} retIDs, gerr := GetImageIDForTags(comps) o.Expect(gerr).NotTo(o.HaveOccurred()) g.By(fmt.Sprintf("\n%s %s compare image - %s, %s, %s, %s", time.Now().Format(time.RFC850), strategy, tag1, tag2, retIDs[0], retIDs[1])) o.Ω(len(retIDs[0])).Should(o.BeNumerically(">", 0)) o.Ω(len(retIDs[1])).Should(o.BeNumerically(">", 0)) o.Ω(retIDs[0]).Should(o.Equal(retIDs[1])) }
// MakeRequestList makes a request for a list of JSON objects, checks the http response code, and // returns the object list as []map[string]interface{} func MakeRequestList(method, url string, expectedCode int) ([]map[string]interface{}, *http.Response) { // make the request respBody, resp := MakeRequest(method, url, "", expectedCode) if respBody == "" { return nil, resp } // here we assume that errors return a text/plain body if resp.StatusCode >= 400 { gomega.Ω(resp.Header.Get("Content-Type")).Should(gomega.HavePrefix("text/plain")) return nil, resp } // parse json into an array of maps gomega.Ω(resp.Header.Get("Content-Type")).Should(gomega.HavePrefix("application/json")) var res []map[string]interface{} err := json.Unmarshal([]byte(respBody), &res) gomega.Ω(err).ShouldNot(gomega.HaveOccurred()) return res, resp }
// MakeRequest makes a get request, checksthe http status code, and returns the body as string func MakeRequest(method, url, body string, expectedCode int) (string, *http.Response) { log15.Debug("MakeRequest", "verb", method, "url", url) // prepare the request body var bodyReader io.Reader if body != "" { bodyReader = strings.NewReader(body) } // make the request req, _ := http.NewRequest(method, url, bodyReader) resp, err := http.DefaultClient.Do(req) // check the response for basic validity gomega.Ω(err).ShouldNot(gomega.HaveOccurred()) gomega.Ω(resp.StatusCode).Should(gomega.Equal(expectedCode)) gomega.Ω(resp.Header.Get("Content-Type")).ShouldNot(gomega.BeNil()) // read the response body respBody, err := ioutil.ReadAll(resp.Body) gomega.Ω(err).ShouldNot(gomega.HaveOccurred()) return string(respBody), resp }