github.com/muhammadn/cortex@v1.9.1-0.20220510110439-46bb7000d03d/pkg/cortex/server_service_test.go (about) 1 package cortex 2 3 import ( 4 "context" 5 "testing" 6 "time" 7 8 "github.com/grafana/dskit/services" 9 "github.com/prometheus/client_golang/prometheus" 10 "github.com/stretchr/testify/require" 11 "github.com/weaveworks/common/server" 12 ) 13 14 func TestServerStopViaContext(t *testing.T) { 15 // server registers some metrics to default registry 16 savedRegistry := prometheus.DefaultRegisterer 17 prometheus.DefaultRegisterer = prometheus.NewRegistry() 18 defer func() { 19 prometheus.DefaultRegisterer = savedRegistry 20 }() 21 22 serv, err := server.New(server.Config{HTTPListenNetwork: server.DefaultNetwork}) 23 require.NoError(t, err) 24 25 ctx, cancel := context.WithTimeout(context.Background(), 500*time.Millisecond) 26 defer cancel() 27 28 s := NewServerService(serv, func() []services.Service { return nil }) 29 require.NoError(t, s.StartAsync(ctx)) 30 31 // should terminate soon, since context has short timeout 32 require.NoError(t, s.AwaitTerminated(context.Background())) 33 } 34 35 func TestServerStopViaShutdown(t *testing.T) { 36 // server registers some metrics to default registry 37 savedRegistry := prometheus.DefaultRegisterer 38 prometheus.DefaultRegisterer = prometheus.NewRegistry() 39 defer func() { 40 prometheus.DefaultRegisterer = savedRegistry 41 }() 42 43 serv, err := server.New(server.Config{HTTPListenNetwork: server.DefaultNetwork}) 44 require.NoError(t, err) 45 46 s := NewServerService(serv, func() []services.Service { return nil }) 47 require.NoError(t, services.StartAndAwaitRunning(context.Background(), s)) 48 49 // Shutting down HTTP/gRPC servers makes Server stop, but ServerService doesn't expect that to happen. 50 serv.Shutdown() 51 52 require.Error(t, s.AwaitTerminated(context.Background())) 53 require.Equal(t, services.Failed, s.State()) 54 } 55 56 func TestServerStopViaStop(t *testing.T) { 57 // server registers some metrics to default registry 58 savedRegistry := prometheus.DefaultRegisterer 59 prometheus.DefaultRegisterer = prometheus.NewRegistry() 60 defer func() { 61 prometheus.DefaultRegisterer = savedRegistry 62 }() 63 64 serv, err := server.New(server.Config{HTTPListenNetwork: server.DefaultNetwork}) 65 require.NoError(t, err) 66 67 s := NewServerService(serv, func() []services.Service { return nil }) 68 require.NoError(t, services.StartAndAwaitRunning(context.Background(), s)) 69 70 serv.Stop() 71 72 // Stop makes Server stop, but ServerService doesn't expect that to happen. 73 require.Error(t, s.AwaitTerminated(context.Background())) 74 require.Equal(t, services.Failed, s.State()) 75 }