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

Function TestQueuesWithQueriers

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

Source from the content-addressed store, hash-verified

71}
72
73func TestQueuesWithQueriers(t *testing.T) {
74 uq := newUserQueues(0, MockLimits{}, nil)
75 assert.NotNil(t, uq)
76 assert.NoError(t, isConsistent(uq))
77
78 queriers := 30
79 users := 1000
80 maxQueriersPerUser := 5
81
82 // Add some queriers.
83 for ix := range queriers {
84 qid := fmt.Sprintf("querier-%d", ix)
85 uq.addQuerierConnection(qid)
86
87 // No querier has any queues yet.
88 q, u, _ := uq.getNextQueueForQuerier(-1, qid)
89 assert.Nil(t, q)
90 assert.Equal(t, "", u)
91 }
92
93 assert.NoError(t, isConsistent(uq))
94
95 // Add user queues.
96 for u := range users {
97 uid := fmt.Sprintf("user-%d", u)
98 getOrAdd(t, uq, uid, maxQueriersPerUser)
99
100 // Verify it has maxQueriersPerUser queriers assigned now.
101 qs := uq.userQueues[uid].queriers
102 assert.Equal(t, maxQueriersPerUser, len(qs))
103 }
104
105 // After adding all users, verify results. For each querier, find out how many different users it handles,
106 // and compute mean and stdDev.
107 queriersMap := make(map[string]int)
108
109 for q := range queriers {
110 qid := fmt.Sprintf("querier-%d", q)
111
112 lastUserIndex := -1
113 for {
114 _, _, newIx := uq.getNextQueueForQuerier(lastUserIndex, qid)
115 if newIx < lastUserIndex {
116 break
117 }
118 lastUserIndex = newIx
119 queriersMap[qid]++
120 }
121 }
122
123 mean := float64(0)
124 for _, c := range queriersMap {
125 mean += float64(c)
126 }
127 mean = mean / float64(len(queriersMap))
128
129 stdDev := float64(0)
130 for _, c := range queriersMap {

Callers

nothing calls this directly

Calls 7

newUserQueuesFunction · 0.85
isConsistentFunction · 0.85
getOrAddFunction · 0.85
addQuerierConnectionMethod · 0.80
EqualMethod · 0.65
LogMethod · 0.45

Tested by

no test coverage detected