From b39362295af401b45295ee4af385f2e2ad48bf76 Mon Sep 17 00:00:00 2001 From: Sebastiaan van Stijn Date: Wed, 12 Jul 2023 15:49:02 +0200 Subject: [PATCH] pkg/plugins: don't share plugin server between tests Refactor setupRemotePluginServer() to be a helper, and to spin up a test- server for each test instead of sharing the same instance between tests. This allows the tests to be run in parallel without stepping on each-other's toes (tearing down the server). Signed-off-by: Sebastiaan van Stijn --- pkg/plugins/client_test.go | 35 ++++++++++++----------------------- pkg/plugins/plugin_test.go | 3 +-- 2 files changed, 13 insertions(+), 25 deletions(-) diff --git a/pkg/plugins/client_test.go b/pkg/plugins/client_test.go index f60d0cdb6b..39d90e704a 100644 --- a/pkg/plugins/client_test.go +++ b/pkg/plugins/client_test.go @@ -18,21 +18,15 @@ import ( is "gotest.tools/v3/assert/cmp" ) -var ( - mux *http.ServeMux - server *httptest.Server -) - -func setupRemotePluginServer() string { +func setupRemotePluginServer(t *testing.T) (mux *http.ServeMux, addr string) { + t.Helper() mux = http.NewServeMux() - server = httptest.NewServer(mux) - return server.URL -} - -func teardownRemotePluginServer() { - if server != nil { + server := httptest.NewServer(mux) + t.Logf("started remote plugin server listening on: %s", server.URL) + t.Cleanup(func() { server.Close() - } + }) + return mux, server.URL } func TestFailedConnection(t *testing.T) { @@ -44,8 +38,7 @@ func TestFailedConnection(t *testing.T) { } func TestFailOnce(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) failed := false mux.HandleFunc("/Test.FailOnce", func(w http.ResponseWriter, r *http.Request) { @@ -64,8 +57,7 @@ func TestFailOnce(t *testing.T) { } func TestEchoInputOutput(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) m := Manifest{[]string{"VolumeDriver", "NetworkDriver"}} @@ -157,8 +149,7 @@ func TestClientScheme(t *testing.T) { } func TestNewClientWithTimeout(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) m := Manifest{[]string{"VolumeDriver", "NetworkDriver"}} @@ -178,8 +169,7 @@ func TestNewClientWithTimeout(t *testing.T) { } func TestClientStream(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) m := Manifest{[]string{"VolumeDriver", "NetworkDriver"}} var output Manifest @@ -208,8 +198,7 @@ func TestClientStream(t *testing.T) { } func TestClientSendFile(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) m := Manifest{[]string{"VolumeDriver", "NetworkDriver"}} var output Manifest diff --git a/pkg/plugins/plugin_test.go b/pkg/plugins/plugin_test.go index a59552d94f..2f9df3d99a 100644 --- a/pkg/plugins/plugin_test.go +++ b/pkg/plugins/plugin_test.go @@ -85,8 +85,7 @@ func TestGet(t *testing.T) { } func TestPluginWithNoManifest(t *testing.T) { - addr := setupRemotePluginServer() - defer teardownRemotePluginServer() + mux, addr := setupRemotePluginServer(t) m := Manifest{[]string{fruitImplements}} var buf bytes.Buffer