diff --git a/http_test.go b/http_test.go index 786c75dca55a9e0b25f1ffe51978ca370ebd91d4..87ffbd676430cae684ab459da06ae7fbfef7d1d0 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.") +}