MCPcopy Create free account
hub / github.com/cortexproject/cortex / TestLabelSetTracker_UpdateMetrics

Function TestLabelSetTracker_UpdateMetrics

pkg/util/labelset/tracker_test.go:75–141  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

73func noopDeleteMetrics(user, labelSetStr string, removeUser bool) {}
74
75func TestLabelSetTracker_UpdateMetrics(t *testing.T) {
76 tracker := NewLabelSetTracker()
77 userID := "1"
78 userID2 := "2"
79 userID3 := "3"
80 lbls := labels.FromStrings("foo", "bar")
81 lbls2 := labels.FromStrings("foo", "baz")
82 tracker.Track(userID, 0, lbls)
83 tracker.Track(userID, 1, lbls2)
84 tracker.Track(userID2, 0, lbls)
85 tracker.Track(userID2, 1, lbls2)
86 tracker.Track(userID3, 0, lbls)
87 tracker.Track(userID3, 1, lbls2)
88
89 deleteCalls := make(map[string]struct{})
90 mockDeleteMetrics := func(user, labelSetStr string, removeUser bool) {
91 deleteCalls[formatDeleteCallString(user, labelSetStr, removeUser)] = struct{}{}
92 }
93
94 userSet := map[string]map[uint64]struct {
95 }{
96 userID: {0: struct{}{}, 1: struct{}{}},
97 userID2: {0: struct{}{}, 1: struct{}{}},
98 userID3: {0: struct{}{}, 1: struct{}{}},
99 }
100 // No user or label set removed, no change.
101 tracker.UpdateMetrics(userSet, mockDeleteMetrics)
102 require.Equal(t, 0, len(deleteCalls))
103
104 userSet = map[string]map[uint64]struct {
105 }{
106 userID: {0: struct{}{}, 1: struct{}{}},
107 userID2: {1: struct{}{}},
108 userID3: {0: struct{}{}},
109 }
110 // LabelSet removed from user 2 and 3
111 tracker.UpdateMetrics(userSet, mockDeleteMetrics)
112 require.Equal(t, 2, len(deleteCalls))
113 _, ok := deleteCalls[formatDeleteCallString(userID2, lbls.String(), false)]
114 require.True(t, ok)
115 _, ok = deleteCalls[formatDeleteCallString(userID3, lbls2.String(), false)]
116 require.True(t, ok)
117
118 userSet = map[string]map[uint64]struct {
119 }{
120 userID: {0: struct{}{}, 1: struct{}{}},
121 userID2: {1: struct{}{}},
122 userID3: {},
123 }
124 // User 3 doesn't have limits anymore. Remove user.
125 tracker.UpdateMetrics(userSet, mockDeleteMetrics)
126 require.Equal(t, 3, len(deleteCalls))
127 _, ok = deleteCalls[formatDeleteCallString(userID3, "", true)]
128 require.True(t, ok)
129
130 userSet = map[string]map[uint64]struct {
131 }{
132 userID3: {},

Callers

nothing calls this directly

Calls 6

TrackMethod · 0.95
UpdateMetricsMethod · 0.95
NewLabelSetTrackerFunction · 0.85
formatDeleteCallStringFunction · 0.85
EqualMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected