Define BaseContext before starting the server in tests

If the http.Server BaseContext is not define before the start of the
server, it might not be properly set depending on the goroutine
scheduler. This was causing random errors on CI.
pull/1511/head
Mariano Cano 10 months ago
parent d8eeebfd51
commit d739aab345
No known key found for this signature in database

@ -59,9 +59,13 @@ func generateOTT(subject string) string {
return raw return raw
} }
func startTestServer(tlsConfig *tls.Config, handler http.Handler) *httptest.Server { func startTestServer(baseContext context.Context, tlsConfig *tls.Config, handler http.Handler) *httptest.Server {
srv := httptest.NewUnstartedServer(handler) srv := httptest.NewUnstartedServer(handler)
srv.TLS = tlsConfig srv.TLS = tlsConfig
// Base context MUST be set before the start of the server
srv.Config.BaseContext = func(l net.Listener) context.Context {
return baseContext
}
srv.StartTLS() srv.StartTLS()
// Force the use of GetCertificate on IPs // Force the use of GetCertificate on IPs
srv.TLS.Certificates = nil srv.TLS.Certificates = nil
@ -78,11 +82,8 @@ func startCATestServer() *httptest.Server {
panic(err) panic(err)
} }
// Use a httptest.Server instead // Use a httptest.Server instead
srv := startTestServer(ca.srv.TLSConfig, ca.srv.Handler)
baseContext := buildContext(ca.auth, nil, nil, nil) baseContext := buildContext(ca.auth, nil, nil, nil)
srv.Config.BaseContext = func(net.Listener) context.Context { srv := startTestServer(baseContext, ca.srv.TLSConfig, ca.srv.Handler)
return baseContext
}
return srv return srv
} }
@ -153,7 +154,7 @@ func TestClient_GetServerTLSConfig_http(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Client.GetServerTLSConfig() error = %v", err) t.Fatalf("Client.GetServerTLSConfig() error = %v", err)
} }
srvMTLS := startTestServer(tlsConfig, serverHandler(t, clientDomain)) srvMTLS := startTestServer(context.Background(), tlsConfig, serverHandler(t, clientDomain))
defer srvMTLS.Close() defer srvMTLS.Close()
// Create TLS server // Create TLS server
@ -163,7 +164,7 @@ func TestClient_GetServerTLSConfig_http(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Client.GetServerTLSConfig() error = %v", err) t.Fatalf("Client.GetServerTLSConfig() error = %v", err)
} }
srvTLS := startTestServer(tlsConfig, serverHandler(t, clientDomain)) srvTLS := startTestServer(context.Background(), tlsConfig, serverHandler(t, clientDomain))
defer srvTLS.Close() defer srvTLS.Close()
tests := []struct { tests := []struct {
@ -258,7 +259,7 @@ func TestClient_GetServerTLSConfig_renew(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Client.GetServerTLSConfig() error = %v", err) t.Fatalf("Client.GetServerTLSConfig() error = %v", err)
} }
srvMTLS := startTestServer(tlsConfig, serverHandler(t, clientDomain)) srvMTLS := startTestServer(context.Background(), tlsConfig, serverHandler(t, clientDomain))
defer srvMTLS.Close() defer srvMTLS.Close()
// Start TLS server // Start TLS server
@ -268,7 +269,7 @@ func TestClient_GetServerTLSConfig_renew(t *testing.T) {
if err != nil { if err != nil {
t.Fatalf("Client.GetServerTLSConfig() error = %v", err) t.Fatalf("Client.GetServerTLSConfig() error = %v", err)
} }
srvTLS := startTestServer(tlsConfig, serverHandler(t, clientDomain)) srvTLS := startTestServer(context.Background(), tlsConfig, serverHandler(t, clientDomain))
defer srvTLS.Close() defer srvTLS.Close()
// Transport // Transport

Loading…
Cancel
Save