Skip to content

Commit

Permalink
Use sync/atomic package, now that we are at Go 1.19
Browse files Browse the repository at this point in the history
  • Loading branch information
deluan committed Feb 16, 2023
1 parent 6dce4b2 commit a134b1b
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 15 deletions.
9 changes: 4 additions & 5 deletions tests/mock_ffmpeg.go
Expand Up @@ -5,8 +5,7 @@ import (
"io"
"strings"
"sync"

"github.com/navidrome/navidrome/utils"
"sync/atomic"
)

func NewMockFFmpeg(data string) *MockFFmpeg {
Expand All @@ -16,7 +15,7 @@ func NewMockFFmpeg(data string) *MockFFmpeg {
type MockFFmpeg struct {
io.Reader
lock sync.Mutex
closed utils.AtomicBool
closed atomic.Bool
Error error
}

Expand Down Expand Up @@ -54,10 +53,10 @@ func (ff *MockFFmpeg) Read(p []byte) (n int, err error) {
}

func (ff *MockFFmpeg) Close() error {
ff.closed.Set(true)
ff.closed.Store(true)
return nil
}

func (ff *MockFFmpeg) IsClosed() bool {
return ff.closed.Get()
return ff.closed.Load()
}
2 changes: 1 addition & 1 deletion utils/cache/file_caches_test.go
Expand Up @@ -17,7 +17,7 @@ import (
// Call NewFileCache and wait for it to be ready
func callNewFileCache(name, cacheSize, cacheFolder string, maxItems int, getReader ReadFunc) *fileCache {
fc := NewFileCache(name, cacheSize, cacheFolder, maxItems, getReader).(*fileCache)
Eventually(func() bool { return fc.ready.Get() }).Should(BeTrue())
Eventually(func() bool { return fc.ready.Load() }).Should(BeTrue())
return fc
}

Expand Down
20 changes: 11 additions & 9 deletions utils/pl/pipelines_test.go
Expand Up @@ -53,13 +53,15 @@ var _ = Describe("Pipeline", func() {
}
close(inC)

var current, count, max int32
current := atomic.Int32{}
count := atomic.Int32{}
max := atomic.Int32{}
outC, _ := pl.Stage(context.Background(), maxWorkers, inC, func(ctx context.Context, in int) (int, error) {
defer atomic.AddInt32(&current, -1)
c := atomic.AddInt32(&current, 1)
atomic.AddInt32(&count, 1)
if c > atomic.LoadInt32(&max) {
atomic.StoreInt32(&max, c)
defer current.Add(-1)
c := current.Add(1)
count.Add(1)
if c > max.Load() {
max.Store(c)
}
time.Sleep(10 * time.Millisecond) // Slow process
return 0, nil
Expand All @@ -68,9 +70,9 @@ var _ = Describe("Pipeline", func() {
for range outC {
}

Expect(count).To(Equal(int32(numJobs)))
Expect(current).To(Equal(int32(0)))
Expect(max).To(Equal(int32(maxWorkers)))
Expect(count.Load()).To(Equal(int32(numJobs)))
Expect(current.Load()).To(Equal(int32(0)))
Expect(max.Load()).To(Equal(int32(maxWorkers)))
})
})
When("the context is canceled", func() {
Expand Down

0 comments on commit a134b1b

Please sign in to comment.