Skip to content

Commit 11f2180

Browse files
easyCZroboquat
authored andcommitted
[baseserver] Helper for starting server in tests
1 parent a0d5559 commit 11f2180

File tree

3 files changed

+20
-30
lines changed

3 files changed

+20
-30
lines changed

components/common-go/baseserver/server_test.go

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,32 +11,22 @@ import (
1111
"github.com/stretchr/testify/require"
1212
"net/http"
1313
"testing"
14-
"time"
1514
)
1615

1716
func TestServer_StartStop(t *testing.T) {
1817
// We don't use the helper NewForTests, because we want to control stopping ourselves.
1918
srv, err := baseserver.New("server_test", baseserver.WithHTTPPort(8765), baseserver.WithGRPCPort(8766))
2019
require.NoError(t, err)
20+
baseserver.StartServerForTests(t, srv)
2121

22-
go func() {
23-
require.NoError(t, srv.ListenAndServe())
24-
}()
25-
26-
baseserver.WaitForServerToBeReachable(t, srv, 3*time.Second)
2722
require.Equal(t, "http://localhost:8765", srv.HTTPAddress())
2823
require.Equal(t, "localhost:8766", srv.GRPCAddress())
2924
require.NoError(t, srv.Close())
3025
}
3126

3227
func TestServer_ServesReady(t *testing.T) {
3328
srv := baseserver.NewForTests(t)
34-
35-
go func(t *testing.T) {
36-
require.NoError(t, srv.ListenAndServe())
37-
}(t)
38-
39-
baseserver.WaitForServerToBeReachable(t, srv, 3*time.Second)
29+
baseserver.StartServerForTests(t, srv)
4030

4131
readyURL := fmt.Sprintf("%s/ready", srv.HTTPAddress())
4232
resp, err := http.Get(readyURL)
@@ -47,11 +37,7 @@ func TestServer_ServesReady(t *testing.T) {
4737
func TestServer_ServesMetricsEndpointWithDefaultConfig(t *testing.T) {
4838
srv := baseserver.NewForTests(t)
4939

50-
go func(t *testing.T) {
51-
require.NoError(t, srv.ListenAndServe())
52-
}(t)
53-
54-
baseserver.WaitForServerToBeReachable(t, srv, 3*time.Second)
40+
baseserver.StartServerForTests(t, srv)
5541

5642
readyUR := fmt.Sprintf("%s/metrics", srv.HTTPAddress())
5743
resp, err := http.Get(readyUR)
@@ -65,11 +51,7 @@ func TestServer_ServesMetricsEndpointWithCustomMetricsConfig(t *testing.T) {
6551
baseserver.WithMetricsRegistry(registry),
6652
)
6753

68-
go func(t *testing.T) {
69-
require.NoError(t, srv.ListenAndServe())
70-
}(t)
71-
72-
baseserver.WaitForServerToBeReachable(t, srv, 3*time.Second)
54+
baseserver.StartServerForTests(t, srv)
7355

7456
readyUR := fmt.Sprintf("%s/metrics", srv.HTTPAddress())
7557
resp, err := http.Get(readyUR)

components/common-go/baseserver/testing.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,20 @@ func NewForTests(t *testing.T, opts ...Option) *Server {
3434
return srv
3535
}
3636

37-
func WaitForServerToBeReachable(t *testing.T, srv *Server, timeout time.Duration) {
37+
// StartServerForTests starts the server for test purposes.
38+
// This is a helper which also ensures the server is reachable before returning.
39+
func StartServerForTests(t *testing.T, srv *Server) {
40+
t.Helper()
41+
42+
go func() {
43+
err := srv.ListenAndServe()
44+
require.NoError(t, err)
45+
}()
46+
47+
waitForServerToBeReachable(t, srv, 3*time.Second)
48+
}
49+
50+
func waitForServerToBeReachable(t *testing.T, srv *Server, timeout time.Duration) {
3851
ctx, cancel := context.WithTimeout(context.Background(), timeout)
3952
defer cancel()
4053

components/public-api-server/integration_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,14 @@ import (
1414
"google.golang.org/grpc/credentials/insecure"
1515
"google.golang.org/grpc/status"
1616
"testing"
17-
"time"
1817
)
1918

2019
func TestPublicAPIServer_v1_WorkspaceService(t *testing.T) {
2120
ctx := context.Background()
2221
srv := baseserver.NewForTests(t)
23-
require.NoError(t, register(srv))
2422

25-
go func() {
26-
require.NoError(t, srv.ListenAndServe())
27-
}()
28-
29-
baseserver.WaitForServerToBeReachable(t, srv, 1*time.Second)
23+
require.NoError(t, register(srv))
24+
baseserver.StartServerForTests(t, srv)
3025

3126
conn, err := grpc.Dial(srv.GRPCAddress(), grpc.WithTransportCredentials(insecure.NewCredentials()))
3227
require.NoError(t, err)

0 commit comments

Comments
 (0)