From bb9fb19cc20ae1e9a0099420dc0c6b52fbe4bae1 Mon Sep 17 00:00:00 2001 From: Anastasis Andronidis Date: Thu, 28 May 2015 14:39:32 +0200 Subject: [PATCH] TestGetEtcdVersion_NotListening is looking for a closed port first --- pkg/tools/etcd_helper_test.go | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/pkg/tools/etcd_helper_test.go b/pkg/tools/etcd_helper_test.go index 89400d4061..3948b76825 100644 --- a/pkg/tools/etcd_helper_test.go +++ b/pkg/tools/etcd_helper_test.go @@ -19,12 +19,16 @@ package tools import ( "errors" "fmt" + "math/rand" + "net" "net/http" "net/http/httptest" "path" "reflect" + "strconv" "sync" "testing" + "time" "github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/testapi" @@ -711,7 +715,24 @@ func TestGetEtcdVersion_ErrorStatus(t *testing.T) { } func TestGetEtcdVersion_NotListening(t *testing.T) { - _, err := GetEtcdVersion("http://127.0.0.1:4001") + portIsOpen := func(port int) bool { + conn, err := net.DialTimeout("tcp", "127.0.0.1:"+strconv.Itoa(port), 1*time.Second) + if err == nil { + conn.Close() + return true + } + return false + } + + port := rand.Intn((1 << 16) - 1) + for tried := 0; portIsOpen(port); tried++ { + if tried >= 10 { + t.Fatal("Couldn't find a closed TCP port to continue testing") + } + port++ + } + + _, err := GetEtcdVersion("http://127.0.0.1:" + strconv.Itoa(port)) assert.NotNil(t, err) }