diff --git a/discovery/discovery_client_test.go b/discovery/discovery_client_test.go index 15e0a9e8..9148bfb4 100644 --- a/discovery/discovery_client_test.go +++ b/discovery/discovery_client_test.go @@ -136,20 +136,26 @@ func TestGetServerGroupsWithTimeout(t *testing.T) { server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) { // first we need to write headers, otherwise http client will complain about // exceeding timeout awaiting headers, only after we can block the call - w.WriteHeader(http.StatusOK) + w.Header().Set("Connection", "keep-alive") + if wf, ok := w.(http.Flusher); ok { + wf.Flush() + } <-done })) defer server.Close() defer close(done) - tmp := defaultTimeout - defaultTimeout = 2 * time.Second - client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL}) + client := NewDiscoveryClientForConfigOrDie(&restclient.Config{Host: server.URL, Timeout: 2 * time.Second}) _, err := client.ServerGroups() - if err == nil || !strings.Contains(err.Error(), "deadline") { + // the error we're getting here is wrapped in errors.errorString which makes + // it impossible to unwrap and check it's attributes, so instead we're checking + // the textual output which is presenting http.httpError with timeout set to true + if err == nil { + t.Fatal("missing error") + } + if !strings.Contains(err.Error(), "timeout:true") && + !strings.Contains(err.Error(), "context.deadlineExceededError") { t.Fatalf("unexpected error: %v", err) } - done <- true - defaultTimeout = tmp } func TestGetServerResourcesWithV1Server(t *testing.T) {