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

Function TestQueuesConsistency

pkg/scheduler/queue/user_queues_test.go:141–190  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

139}
140
141func TestQueuesConsistency(t *testing.T) {
142 tests := map[string]struct {
143 forgetDelay time.Duration
144 }{
145 "without forget delay": {},
146 "with forget delay": {forgetDelay: time.Minute},
147 }
148
149 for testName, testData := range tests {
150 t.Run(testName, func(t *testing.T) {
151 uq := newUserQueues(testData.forgetDelay, MockLimits{}, nil)
152 assert.NotNil(t, uq)
153 assert.NoError(t, isConsistent(uq))
154
155 r := rand.New(rand.NewSource(time.Now().Unix()))
156
157 lastUserIndexes := map[string]int{}
158
159 conns := map[string]int{}
160
161 for i := range 10000 {
162 switch r.Int() % 6 {
163 case 0:
164 assert.NotNil(t, uq.getOrAddQueue(generateTenant(r), 3))
165 case 1:
166 qid := generateQuerier(r)
167 _, _, luid := uq.getNextQueueForQuerier(lastUserIndexes[qid], qid)
168 lastUserIndexes[qid] = luid
169 case 2:
170 uq.deleteQueue(generateTenant(r))
171 case 3:
172 q := generateQuerier(r)
173 uq.addQuerierConnection(q)
174 conns[q]++
175 case 4:
176 q := generateQuerier(r)
177 if conns[q] > 0 {
178 uq.removeQuerierConnection(q, time.Now())
179 conns[q]--
180 }
181 case 5:
182 q := generateQuerier(r)
183 uq.notifyQuerierShutdown(q)
184 }
185
186 assert.NoErrorf(t, isConsistent(uq), "last action %d", i)
187 }
188 })
189 }
190}
191
192func TestQueues_ForgetDelay(t *testing.T) {
193 const (

Callers

nothing calls this directly

Calls 11

newUserQueuesFunction · 0.85
isConsistentFunction · 0.85
generateTenantFunction · 0.85
generateQuerierFunction · 0.85
getOrAddQueueMethod · 0.80
deleteQueueMethod · 0.80
addQuerierConnectionMethod · 0.80
notifyQuerierShutdownMethod · 0.80
RunMethod · 0.65

Tested by

no test coverage detected