MCPcopy Index your code
hub / github.com/cortexproject/cortex / TestNotifierSendExternalLabels

Function TestNotifierSendExternalLabels

pkg/ruler/ruler_test.go:433–525  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

431}
432
433func TestNotifierSendExternalLabels(t *testing.T) {
434 ctx, cancel := context.WithCancel(context.Background())
435 t.Cleanup(cancel)
436 receivedLabelsCh := make(chan models.LabelSet, 1)
437 ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
438 alerts := models.PostableAlerts{}
439 err := json.NewDecoder(r.Body).Decode(&alerts)
440 if err != nil {
441 http.Error(w, err.Error(), http.StatusBadRequest)
442 return
443 }
444 if len(alerts) == 1 {
445 select {
446 case <-ctx.Done():
447 case receivedLabelsCh <- alerts[0].Labels:
448 }
449 }
450 }))
451 t.Cleanup(ts.Close)
452
453 cfg := defaultRulerConfig(t)
454 cfg.AlertmanagerURL = ts.URL
455 cfg.AlertmanagerDiscovery = false
456 cfg.ExternalLabels = labels.FromStrings("region", "us-east-1")
457 limits := &ruleLimits{}
458 engine, queryable, pusher, logger, _, reg := testSetup(t, nil)
459 metrics := NewRuleEvalMetrics(cfg, nil)
460 managerFactory := DefaultTenantManagerFactory(cfg, pusher, queryable, engine, limits, metrics, nil)
461 manager, err := NewDefaultMultiTenantManager(cfg, limits, managerFactory, metrics, reg, logger)
462 require.NoError(t, err)
463 t.Cleanup(manager.Stop)
464
465 const userID = "n1"
466 manager.SyncRuleGroups(context.Background(), map[string]rulespb.RuleGroupList{
467 userID: {&rulespb.RuleGroupDesc{Name: "group", Namespace: "ns", Interval: time.Minute, User: userID}},
468 })
469
470 manager.notifiersMtx.Lock()
471 n, ok := manager.notifiers[userID]
472 manager.notifiersMtx.Unlock()
473 require.True(t, ok)
474
475 tests := []struct {
476 name string
477 userExternalLabels []labels.Label
478 expectedExternalLabels []labels.Label
479 }{
480 {
481 name: "global labels only",
482 userExternalLabels: nil,
483 expectedExternalLabels: []labels.Label{{Name: "region", Value: "us-east-1"}},
484 },
485 {
486 name: "local labels without overriding",
487 userExternalLabels: []labels.Label{{Name: "mylabel", Value: "local"}},
488 expectedExternalLabels: []labels.Label{{Name: "region", Value: "us-east-1"}, {Name: "mylabel", Value: "local"}},
489 },
490 {

Callers

nothing calls this directly

Calls 15

SyncRuleGroupsMethod · 0.95
defaultRulerConfigFunction · 0.85
testSetupFunction · 0.85
NewRuleEvalMetricsFunction · 0.85
DoneMethod · 0.80
AlertmanagersMethod · 0.80
AfterMethod · 0.80
DecodeMethod · 0.65
RunMethod · 0.65

Tested by

no test coverage detected