@@ -20,6 +20,7 @@ import (
2020 "sync"
2121 "sync/atomic"
2222 "testing"
23+ "time"
2324
2425 "github.com/stretchr/testify/assert"
2526)
@@ -81,6 +82,44 @@ func TestGet(t *testing.T) {
8182 assert .Equal (t , `2` , result [0 ])
8283}
8384
85+ func TestPoll (t * testing.T ) {
86+ q := New (10 )
87+
88+ q .Put (`test` )
89+ result , err := q .Poll (2 , 0 )
90+ if ! assert .Nil (t , err ) {
91+ return
92+ }
93+
94+ assert .Len (t , result , 1 )
95+ assert .Equal (t , `test` , result [0 ])
96+ assert .Equal (t , int64 (0 ), q .Len ())
97+
98+ q .Put (`1` )
99+ q .Put (`2` )
100+
101+ result , err = q .Poll (1 , time .Millisecond )
102+ if ! assert .Nil (t , err ) {
103+ return
104+ }
105+
106+ assert .Len (t , result , 1 )
107+ assert .Equal (t , `1` , result [0 ])
108+ assert .Equal (t , int64 (1 ), q .Len ())
109+
110+ result , err = q .Poll (2 , time .Millisecond )
111+ if ! assert .Nil (t , err ) {
112+ return
113+ }
114+
115+ assert .Equal (t , `2` , result [0 ])
116+
117+ before := time .Now ()
118+ _ , err = q .Poll (1 , 5 * time .Millisecond )
119+ assert .InDelta (t , 5 , time .Since (before ).Seconds ()* 1000 , 2 )
120+ assert .Equal (t , ErrTimeout , err )
121+ }
122+
84123func TestAddEmptyPut (t * testing.T ) {
85124 q := New (10 )
86125
@@ -189,7 +228,7 @@ func TestEmptyGetWithDispose(t *testing.T) {
189228
190229 wg .Wait ()
191230
192- assert .IsType (t , disposedError , err )
231+ assert .IsType (t , ErrDisposed , err )
193232}
194233
195234func TestGetPutDisposed (t * testing.T ) {
@@ -198,10 +237,10 @@ func TestGetPutDisposed(t *testing.T) {
198237 q .Dispose ()
199238
200239 _ , err := q .Get (1 )
201- assert .IsType (t , disposedError , err )
240+ assert .IsType (t , ErrDisposed , err )
202241
203242 err = q .Put (`a` )
204- assert .IsType (t , disposedError , err )
243+ assert .IsType (t , ErrDisposed , err )
205244}
206245
207246func BenchmarkQueue (b * testing.B ) {
@@ -289,7 +328,7 @@ func TestTakeUntilOnDisposedQueue(t *testing.T) {
289328 })
290329
291330 assert .Nil (t , result )
292- assert .IsType (t , disposedError , err )
331+ assert .IsType (t , ErrDisposed , err )
293332}
294333
295334func TestExecuteInParallel (t * testing.T ) {
@@ -360,6 +399,28 @@ func BenchmarkQueueGet(b *testing.B) {
360399 }
361400}
362401
402+ func BenchmarkQueuePoll (b * testing.B ) {
403+ numItems := int64 (1000 )
404+
405+ qs := make ([]* Queue , 0 , b .N )
406+
407+ for i := 0 ; i < b .N ; i ++ {
408+ q := New (numItems )
409+ for j := int64 (0 ); j < numItems ; j ++ {
410+ q .Put (j )
411+ }
412+ qs = append (qs , q )
413+ }
414+
415+ b .ResetTimer ()
416+
417+ for _ , q := range qs {
418+ for j := int64 (0 ); j < numItems ; j ++ {
419+ q .Poll (1 , time .Millisecond )
420+ }
421+ }
422+ }
423+
363424func BenchmarkExecuteInParallel (b * testing.B ) {
364425 numItems := int64 (1000 )
365426
0 commit comments