Philipp Heckel 3 лет назад
Родитель
Сommit
e147a41f92
1 измененных файлов с 13 добавлено и 7 удалено
  1. 13 7
      util/batching_queue_test.go

+ 13 - 7
util/batching_queue_test.go

@@ -1,40 +1,46 @@
 package util_test
 
 import (
-	"fmt"
 	"github.com/stretchr/testify/require"
 	"heckel.io/ntfy/util"
 	"math/rand"
+	"sync"
 	"testing"
 	"time"
 )
 
 func TestBatchingQueue_InfTimeout(t *testing.T) {
 	q := util.NewBatchingQueue[int](25, 1*time.Hour)
-	batches := make([][]int, 0)
-	total := 0
+	batches, total := make([][]int, 0), 0
+	var mu sync.Mutex
 	go func() {
 		for batch := range q.Dequeue() {
+			mu.Lock()
 			batches = append(batches, batch)
 			total += len(batch)
+			mu.Unlock()
 		}
 	}()
 	for i := 0; i < 101; i++ {
 		go q.Enqueue(i)
 	}
 	time.Sleep(500 * time.Millisecond)
+	mu.Lock()
 	require.Equal(t, 100, total) // One is missing, stuck in the last batch!
 	require.Equal(t, 4, len(batches))
+	mu.Unlock()
 }
 
 func TestBatchingQueue_WithTimeout(t *testing.T) {
 	q := util.NewBatchingQueue[int](25, 100*time.Millisecond)
-	batches := make([][]int, 0)
-	total := 0
+	batches, total := make([][]int, 0), 0
+	var mu sync.Mutex
 	go func() {
 		for batch := range q.Dequeue() {
+			mu.Lock()
 			batches = append(batches, batch)
 			total += len(batch)
+			mu.Unlock()
 		}
 	}()
 	for i := 0; i < 101; i++ {
@@ -44,9 +50,9 @@ func TestBatchingQueue_WithTimeout(t *testing.T) {
 		}(i)
 	}
 	time.Sleep(time.Second)
-	fmt.Println(len(batches))
-	fmt.Println(batches)
+	mu.Lock()
 	require.Equal(t, 101, total)
 	require.True(t, len(batches) > 4) // 101/25
 	require.True(t, len(batches) < 21)
+	mu.Unlock()
 }