startMicroservices starts all Tempo microservices and waits for them to be ready
(t *testing.T, config TestHarnessConfig)
| 506 | |
| 507 | // startMicroservices starts all Tempo microservices and waits for them to be ready |
| 508 | func (h *TempoHarness) startMicroservices(t *testing.T, config TestHarnessConfig) error { |
| 509 | t.Helper() |
| 510 | |
| 511 | s := h.TestScenario |
| 512 | readinessProbe := e2e.ReadinessProbe(e2e.NewHTTPReadinessProbe(3200, "/ready", 200, 299)) |
| 513 | if h.readinessProbe != nil { |
| 514 | readinessProbe = h.readinessProbe |
| 515 | } |
| 516 | |
| 517 | if config.Components&componentsLiveStore != 0 { |
| 518 | liveStoreZoneA := NewTempoService("live-store-zone-a-0", "live-store", readinessProbe, nil, "-live-store.instance-availability-zone=zone-a") |
| 519 | h.Services[ServiceLiveStoreZoneA] = liveStoreZoneA |
| 520 | if err := s.StartAndWaitReady(liveStoreZoneA); err != nil { |
| 521 | return fmt.Errorf("failed to start live store zone a: %w", err) |
| 522 | } |
| 523 | |
| 524 | liveStoreZoneB := NewTempoService("live-store-zone-b-0", "live-store", readinessProbe, nil, "-live-store.instance-availability-zone=zone-b") |
| 525 | h.Services[ServiceLiveStoreZoneB] = liveStoreZoneB |
| 526 | if err := s.StartAndWaitReady(liveStoreZoneB); err != nil { |
| 527 | return fmt.Errorf("failed to start live store zone b: %w", err) |
| 528 | } |
| 529 | } |
| 530 | |
| 531 | if config.Components&componentsDistributor != 0 { |
| 532 | h.Services[ServiceDistributor] = NewTempoService("distributor", "distributor", |
| 533 | readinessProbe, |
| 534 | []int{14250, 4317, 4318, 9411}, // jaeger grpc ingest, otlp grpc, otlp http, zipkin ingest |
| 535 | ) |
| 536 | if err := s.StartAndWaitReady(h.Services[ServiceDistributor]); err != nil { |
| 537 | return fmt.Errorf("failed to start distributor: %w", err) |
| 538 | } |
| 539 | } |
| 540 | |
| 541 | if config.Components&componentsQueryFrontendQuerier != 0 { |
| 542 | h.Services[ServiceQueryFrontend] = NewTempoService("query-frontend", "query-frontend", readinessProbe, nil) |
| 543 | h.Services[ServiceQuerier] = NewTempoService("querier", "querier", readinessProbe, nil) |
| 544 | if err := s.StartAndWaitReady(h.Services[ServiceQueryFrontend], h.Services[ServiceQuerier]); err != nil { |
| 545 | return fmt.Errorf("failed to start query frontend and querier: %w", err) |
| 546 | } |
| 547 | } |
| 548 | |
| 549 | if config.Components&componentsBlockBuilder != 0 { |
| 550 | blockBuilder := NewTempoService("block-builder-0", "block-builder", readinessProbe, nil) |
| 551 | h.Services[ServiceBlockBuilder] = blockBuilder |
| 552 | if err := s.StartAndWaitReady(blockBuilder); err != nil { |
| 553 | return fmt.Errorf("failed to start block builder: %w", err) |
| 554 | } |
| 555 | } |
| 556 | |
| 557 | if config.Components&componentsMetricsGenerator != 0 { |
| 558 | h.Services[ServiceMetricsGenerator] = NewTempoService("metrics-generator", "metrics-generator", readinessProbe, nil) |
| 559 | if err := s.StartAndWaitReady(h.Services[ServiceMetricsGenerator]); err != nil { |
| 560 | return fmt.Errorf("failed to start metrics generator: %w", err) |
| 561 | } |
| 562 | } |
| 563 | |
| 564 | if config.Components&componentsBackendSchedulerWorker != 0 { |
| 565 | scheduler := NewTempoService("backend-scheduler", "backend-scheduler", readinessProbe, []int{9095}) |
no test coverage detected