func (j *testJig) waitForIngress() { // Wait for the loadbalancer IP. address, err := framework.WaitForIngressAddress(j.client, j.ing.Namespace, j.ing.Name, lbPollTimeout) if err != nil { framework.Failf("Ingress failed to acquire an IP address within %v", lbPollTimeout) } j.address = address framework.Logf("Found address %v for ingress %v", j.address, j.ing.Name) timeoutClient := &http.Client{Timeout: reqTimeout} // Check that all rules respond to a simple GET. for _, rules := range j.ing.Spec.Rules { proto := "http" if len(j.ing.Spec.TLS) > 0 { knownHosts := sets.NewString(j.ing.Spec.TLS[0].Hosts...) if knownHosts.Has(rules.Host) { timeoutClient.Transport, err = buildTransport(rules.Host, j.getRootCA(j.ing.Spec.TLS[0].SecretName)) framework.ExpectNoError(err) proto = "https" } } for _, p := range rules.IngressRuleValue.HTTP.Paths { j.curlServiceNodePort(j.ing.Namespace, p.Backend.ServiceName, int(p.Backend.ServicePort.IntVal)) route := fmt.Sprintf("%v://%v%v", proto, address, p.Path) framework.Logf("Testing route %v host %v with simple GET", route, rules.Host) framework.ExpectNoError(pollURL(route, rules.Host, lbPollTimeout, j.pollInterval, timeoutClient, false)) } } }
By(fmt.Sprintf("Creating secret for ingress %v/%v", ing.Namespace, ing.Name)) _, rootCA, _, err := createSecret(client, ing) Expect(err).NotTo(HaveOccurred()) ingCAs[ing.Name] = rootCA By(fmt.Sprintf("Creating ingress %v/%v", ing.Namespace, ing.Name)) ing, err = client.Extensions().Ingress(ing.Namespace).Create(ing) Expect(err).NotTo(HaveOccurred()) } ings, err := client.Extensions().Ingress(ns).List(api.ListOptions{}) Expect(err).NotTo(HaveOccurred()) for _, ing := range ings.Items { // Wait for the loadbalancer IP. start := time.Now() address, err := framework.WaitForIngressAddress(client, ing.Namespace, ing.Name, lbPollTimeout) if err != nil { framework.Failf("Ingress failed to acquire an IP address within %v", lbPollTimeout) } Expect(err).NotTo(HaveOccurred()) By(fmt.Sprintf("Found address %v for ingress %v, took %v to come online", address, ing.Name, time.Since(start))) creationTimes = append(creationTimes, time.Since(start)) if !verifyHTTPGET { continue } // Check that all rules respond to a simple GET. for _, rules := range ing.Spec.Rules { // As of Kubernetes 1.1 we only support HTTP Ingress.