(t *testing.T, config CombinedFrontendConfig, handler http.Handler, test func(addr string), matchMaxConcurrency bool, l log.Logger)
| 236 | } |
| 237 | |
| 238 | func testFrontend(t *testing.T, config CombinedFrontendConfig, handler http.Handler, test func(addr string), matchMaxConcurrency bool, l log.Logger) { |
| 239 | logger := log.NewNopLogger() |
| 240 | if l != nil { |
| 241 | logger = l |
| 242 | } |
| 243 | |
| 244 | var workerConfig querier_worker.Config |
| 245 | flagext.DefaultValues(&workerConfig) |
| 246 | workerConfig.Parallelism = 1 |
| 247 | workerConfig.MatchMaxConcurrency = matchMaxConcurrency |
| 248 | workerConfig.MaxConcurrentRequests = 1 |
| 249 | |
| 250 | // localhost:0 prevents firewall warnings on Mac OS X. |
| 251 | grpcListen, err := net.Listen("tcp", "localhost:0") |
| 252 | require.NoError(t, err) |
| 253 | workerConfig.FrontendAddress = grpcListen.Addr().String() |
| 254 | |
| 255 | httpListen, err := net.Listen("tcp", "localhost:0") |
| 256 | require.NoError(t, err) |
| 257 | |
| 258 | rt, v1, v2, err := InitFrontend(config, frontendv1.MockLimits{}, 0, logger, nil, transport.NewRetry(0, nil)) |
| 259 | require.NoError(t, err) |
| 260 | require.NotNil(t, rt) |
| 261 | // v1 will be nil if DownstreamURL is defined. |
| 262 | require.Nil(t, v2) |
| 263 | if v1 != nil { |
| 264 | require.NoError(t, services.StartAndAwaitRunning(context.Background(), v1)) |
| 265 | t.Cleanup(func() { |
| 266 | require.NoError(t, services.StopAndAwaitTerminated(context.Background(), v1)) |
| 267 | }) |
| 268 | } |
| 269 | |
| 270 | grpcServer := grpc.NewServer( |
| 271 | grpc.StreamInterceptor(otgrpc.OpenTracingStreamServerInterceptor(opentracing.GlobalTracer())), |
| 272 | ) |
| 273 | defer grpcServer.GracefulStop() |
| 274 | |
| 275 | if v1 != nil { |
| 276 | frontendv1pb.RegisterFrontendServer(grpcServer, v1) |
| 277 | } |
| 278 | |
| 279 | r := mux.NewRouter() |
| 280 | r.PathPrefix("/").Handler(middleware.Merge( |
| 281 | middleware.AuthenticateUser, |
| 282 | middleware.Tracer{}, |
| 283 | ).Wrap(transport.NewHandler(config.Handler, tenantfederation.Config{}, rt, logger, nil))) |
| 284 | |
| 285 | httpServer := http.Server{ |
| 286 | Handler: r, |
| 287 | } |
| 288 | defer httpServer.Shutdown(context.Background()) //nolint:errcheck |
| 289 | |
| 290 | go httpServer.Serve(httpListen) //nolint:errcheck |
| 291 | go grpcServer.Serve(grpcListen) //nolint:errcheck |
| 292 | |
| 293 | var worker services.Service |
| 294 | worker, err = querier_worker.NewQuerierWorker(workerConfig, httpgrpc_server.NewServer(handler), logger, nil) |
| 295 | require.NoError(t, err) |
no test coverage detected