func()

in clusterloader2/pkg/measurement/common/service_creation_latency.go [476:525]


func (p *pingChecker) run() {
	var key string
	var err error
	var svcType corev1.ServiceType
	if p.svc != nil {
		key, err = cache.DeletionHandlingMetaNamespaceKeyFunc(p.svc)
		svcType = p.svc.Spec.Type
	} else {
		key, err = cache.DeletionHandlingMetaNamespaceKeyFunc(p.ingress)
		svcType = ingressType
	}
	if err != nil {
		klog.Errorf("%s: meta key created error: %v", p.callerName, err)
		return
	}
	success := 0
	for {
		select {
		case <-p.stopCh:
			return
		default:
			// TODO(#685): Make ping checks less communication heavy.
			pod, err := execservice.GetPod()
			if err != nil {
				klog.Warningf("call to execservice.GetPod() ended with error: %v", err)
				success = 0
				time.Sleep(pingBackoff)
				continue
			}
			addresses := p.collectAddresses(pod)
			for _, address := range addresses {
				command := fmt.Sprintf("curl %s", address)
				_, err = execservice.RunCommand(context.TODO(), pod, command)
				if err != nil {
					break
				}
			}
			if err != nil {
				success = 0
				time.Sleep(pingBackoff)
				continue
			}
			success++
			if success == pingChecks {
				p.creationTimes.Set(key, phaseName(reachabilityPhase, svcType), time.Now())
				return
			}
		}
	}
}