From a140c222c284b0717e0a30d1009273b4247c5d95 Mon Sep 17 00:00:00 2001 From: Deluan Date: Fri, 19 Feb 2021 19:36:55 -0500 Subject: [PATCH] Fix race condition in test --- utils/pool/pool_test.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/utils/pool/pool_test.go b/utils/pool/pool_test.go index 345f484c..73932ef1 100644 --- a/utils/pool/pool_test.go +++ b/utils/pool/pool_test.go @@ -1,6 +1,7 @@ package pool import ( + "sync" "testing" "github.com/navidrome/navidrome/log" @@ -20,7 +21,10 @@ type testItem struct { ID int } -var processed []int +var ( + processed []int + mutex sync.RWMutex +) var _ = Describe("Pool", func() { var pool *Pool @@ -34,12 +38,19 @@ var _ = Describe("Pool", func() { for i := 0; i < 5; i++ { pool.Submit(&testItem{ID: i}) } - Eventually(func() []int { return processed }, "10s").Should(HaveLen(5)) + Eventually(func() []int { + mutex.RLock() + defer mutex.RUnlock() + return processed + }, "10s").Should(HaveLen(5)) + Expect(processed).To(ContainElements(0, 1, 2, 3, 4)) }) }) func execute(workload interface{}) { + mutex.Lock() + defer mutex.Unlock() item := workload.(*testItem) processed = append(processed, item.ID) }