github.com/argoproj/argo-events@v1.9.1/eventbus/kafka/base/utils_test.go (about) 1 package base 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestBatchDurationReached(t *testing.T) { 11 in := make(chan int) 12 defer close(in) 13 14 out := Batch(5, 1*time.Second, in) 15 16 t0 := time.Now() 17 in <- 0 18 assert.Equal(t, []int{0}, <-out) 19 assert.Equal(t, time.Second, time.Since(t0).Truncate(time.Second)) 20 21 t1 := time.Now() 22 in <- 1 23 in <- 2 24 assert.Equal(t, []int{1, 2}, <-out) 25 assert.Equal(t, time.Second, time.Since(t1).Truncate(time.Second)) 26 27 t2 := time.Now() 28 in <- 3 29 in <- 4 30 in <- 5 31 assert.Equal(t, []int{3, 4, 5}, <-out) 32 assert.Equal(t, time.Second, time.Since(t2).Truncate(time.Second)) 33 } 34 35 func TestBatchSizeReached(t *testing.T) { 36 in := make(chan int) 37 defer close(in) 38 39 out := Batch(2, 1*time.Second, in) 40 41 t0 := time.Now() 42 in <- 0 43 in <- 1 44 assert.Equal(t, <-out, []int{0, 1}) 45 assert.Equal(t, time.Duration(0), time.Since(t0).Truncate(time.Second)) 46 47 t1 := time.Now() 48 in <- 2 49 in <- 3 50 in <- 4 51 in <- 5 52 assert.Equal(t, []int{2, 3}, <-out) 53 assert.Equal(t, []int{4, 5}, <-out) 54 assert.Equal(t, time.Duration(0), time.Since(t1).Truncate(time.Second)) 55 } 56 57 func TestBatchMaintainsOrder(t *testing.T) { 58 in := make(chan string) 59 defer close(in) 60 61 out := Batch(10, 1*time.Second, in) 62 63 in <- "a" 64 in <- "b" 65 in <- "c" 66 in <- "d" 67 in <- "e" 68 in <- "f" 69 in <- "g" 70 in <- "h" 71 in <- "i" 72 in <- "j" 73 assert.Equal(t, []string{"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"}, <-out) 74 } 75 76 func TestBatchChannelCleanedUp(t *testing.T) { 77 in := make(chan string) 78 out := Batch(10, 1*time.Second, in) 79 80 close(in) 81 assert.Equal(t, []string(nil), <-out) 82 }