Merge pull request #76826 from bclau/tests/nettest-recheck
tests: Adds retry to netexec connectivity check
This commit is contained in:
		| @@ -13,6 +13,7 @@ go_library( | |||||||
|     deps = [ |     deps = [ | ||||||
|         "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", |         "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", | ||||||
|         "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", |         "//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library", | ||||||
|  |         "//staging/src/k8s.io/apimachinery/pkg/version:go_default_library", | ||||||
|         "//staging/src/k8s.io/client-go/kubernetes:go_default_library", |         "//staging/src/k8s.io/client-go/kubernetes:go_default_library", | ||||||
|         "//staging/src/k8s.io/client-go/rest:go_default_library", |         "//staging/src/k8s.io/client-go/rest:go_default_library", | ||||||
|     ], |     ], | ||||||
|   | |||||||
| @@ -46,6 +46,7 @@ import ( | |||||||
|  |  | ||||||
| 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	v1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/util/sets" | 	"k8s.io/apimachinery/pkg/util/sets" | ||||||
|  | 	"k8s.io/apimachinery/pkg/version" | ||||||
| 	clientset "k8s.io/client-go/kubernetes" | 	clientset "k8s.io/client-go/kubernetes" | ||||||
| 	restclient "k8s.io/client-go/rest" | 	restclient "k8s.io/client-go/rest" | ||||||
| ) | ) | ||||||
| @@ -217,6 +218,10 @@ func main() { | |||||||
|  |  | ||||||
| // Find all sibling pods in the service and post to their /write handler. | // Find all sibling pods in the service and post to their /write handler. | ||||||
| func contactOthers(state *State) { | func contactOthers(state *State) { | ||||||
|  | 	var ( | ||||||
|  | 		versionInfo *version.Info | ||||||
|  | 		err         error | ||||||
|  | 	) | ||||||
| 	sleepTime := 5 * time.Second | 	sleepTime := 5 * time.Second | ||||||
| 	// In large cluster getting all endpoints is pretty expensive. | 	// In large cluster getting all endpoints is pretty expensive. | ||||||
| 	// Thus, we will limit ourselves to send on average at most 10 such | 	// Thus, we will limit ourselves to send on average at most 10 such | ||||||
| @@ -241,11 +246,22 @@ func contactOthers(state *State) { | |||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		log.Fatalf("Unable to create client; error: %v\n", err) | 		log.Fatalf("Unable to create client; error: %v\n", err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// Try to get the server version until <timeout>; we use a timeout because | ||||||
|  | 	// the pod might not have immediate network connectivity. | ||||||
|  | 	for start := time.Now(); time.Since(start) < timeout; time.Sleep(sleepTime) { | ||||||
| 		// Double check that worked by getting the server version. | 		// Double check that worked by getting the server version. | ||||||
| 	if v, err := client.Discovery().ServerVersion(); err != nil { | 		if versionInfo, err = client.Discovery().ServerVersion(); err != nil { | ||||||
| 		log.Fatalf("Unable to get server version: %v\n", err) | 			log.Printf("Unable to get server version: %v; retrying.\n", err) | ||||||
| 		} else { | 		} else { | ||||||
| 		log.Printf("Server version: %#v\n", v) | 			log.Printf("Server version: %#v\n", versionInfo) | ||||||
|  | 			break | ||||||
|  | 		} | ||||||
|  | 		time.Sleep(1 * time.Second) | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	if err != nil { | ||||||
|  | 		log.Fatalf("Unable to contact Kubernetes: %v\n", err) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for start := time.Now(); time.Since(start) < timeout; time.Sleep(sleepTime) { | 	for start := time.Now(); time.Since(start) < timeout; time.Sleep(sleepTime) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot