MCPcopy
hub / github.com/panjf2000/ants / TestRetrieveExpiry

Function TestRetrieveExpiry

worker_loop_queue_test.go:157–209  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

155}
156
157func TestRetrieveExpiry(t *testing.T) {
158 size := 10
159 q := newWorkerLoopQueue(size)
160 expirew := make([]worker, 0)
161 u, _ := time.ParseDuration("1s")
162
163 // test [ time+1s, time+1s, time+1s, time+1s, time+1s, time, time, time, time, time]
164 for i := 0; i < size/2; i++ {
165 _ = q.insert(&goWorker{lastUsed: time.Now().UnixNano()})
166 }
167 expirew = append(expirew, q.items[:size/2]...)
168 time.Sleep(u)
169
170 for i := 0; i < size/2; i++ {
171 _ = q.insert(&goWorker{lastUsed: time.Now().UnixNano()})
172 }
173 workers := q.refresh(u)
174
175 require.EqualValues(t, expirew, workers, "expired workers aren't right")
176
177 // test [ time, time, time, time, time, time+1s, time+1s, time+1s, time+1s, time+1s]
178 time.Sleep(u)
179
180 for i := 0; i < size/2; i++ {
181 _ = q.insert(&goWorker{lastUsed: time.Now().UnixNano()})
182 }
183 expirew = expirew[:0]
184 expirew = append(expirew, q.items[size/2:]...)
185
186 workers2 := q.refresh(u)
187
188 require.EqualValues(t, expirew, workers2, "expired workers aren't right")
189
190 // test [ time+1s, time+1s, time+1s, nil, nil, time+1s, time+1s, time+1s, time+1s, time+1s]
191 for i := 0; i < size/2; i++ {
192 _ = q.insert(&goWorker{lastUsed: time.Now().UnixNano()})
193 }
194 for i := 0; i < size/2; i++ {
195 _ = q.detach()
196 }
197 for i := 0; i < 3; i++ {
198 _ = q.insert(&goWorker{lastUsed: time.Now().UnixNano()})
199 }
200 time.Sleep(u)
201
202 expirew = expirew[:0]
203 expirew = append(expirew, q.items[0:3]...)
204 expirew = append(expirew, q.items[size/2:]...)
205
206 workers3 := q.refresh(u)
207
208 require.EqualValues(t, expirew, workers3, "expired workers aren't right")
209}

Callers

nothing calls this directly

Calls 4

newWorkerLoopQueueFunction · 0.85
insertMethod · 0.65
refreshMethod · 0.65
detachMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…