func()

in cmd/sidecar-e2e/main.go [408:448]


func (t *test) waitForMetrics() {
	log.Printf("Waiting for hits to be reported to be greater than 100")
	waitForPredicate(
		func() (bool, error) {
			response, err := http.Get(
				fmt.Sprintf("http://127.0.0.1:%v/metrics", sidecarPort))
			if err != nil {
				log.Fatal(err)
			}

			defer response.Body.Close()
			buf, err := ioutil.ReadAll(response.Body)
			if err != nil {
				log.Fatal(err)
			}

			lines := strings.Split(string(buf), "\n")
			for _, line := range lines {
				if !strings.HasPrefix(line, "kubedns_dnsmasq_hits ") {
					continue
				}

				parts := strings.Split(line, " ")
				if len(parts) < 2 {
					return false, fmt.Errorf("invalid output for kubedns_dnsmasq_hits metric")
				}

				value, err := strconv.Atoi(parts[1])
				if err != nil {
					return false, fmt.Errorf("invalid output for kubedns_dnsmasq_hits metric")
				}

				if value >= 100 {
					return true, nil
				}
			}
			return false, nil
		},
		10*time.Second,
		1*time.Second)
}