From fe27e00a378bc8f7621a3fe3ee475142823008b2 Mon Sep 17 00:00:00 2001 From: Malte Bauch <malte.bauch@stud.h-da.de> Date: Thu, 3 Mar 2022 16:49:40 +0100 Subject: [PATCH] Fix: HTTP API test did not wait for server to start properly --- http_test.go | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/http_test.go b/http_test.go index 786c75dca..87ffbd676 100644 --- a/http_test.go +++ b/http_test.go @@ -1,8 +1,11 @@ package gosdn import ( + "errors" + "net" "net/http" "testing" + "time" ) func Test_httpApi(t *testing.T) { @@ -34,6 +37,13 @@ func Test_httpApi(t *testing.T) { coreLock.Lock() startHttpServer() coreLock.Unlock() + + err := waitForHTTPServer() + if err != nil { + t.Errorf("httpApi() error = %v", err) + return + } + for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got, err := http.Get(tt.request) @@ -47,3 +57,20 @@ func Test_httpApi(t *testing.T) { }) } } + +// see: https://stackoverflow.com/a/56865986 +func waitForHTTPServer() error { + for i := 0; i < 10; i++ { + conn, err := net.DialTimeout("tcp", ":8080", 1*time.Second) + if err != nil { + time.Sleep(50 * time.Millisecond) + continue + } + err = conn.Close() + if err != nil { + return err + } + return nil + } + return errors.New("HTTP server could not be reached.") +} -- GitLab