Files
scroll/common/utils/workerpool/workerpool_test.go
Nazarii Denha c2445176ec feat(verifier): add worker pool for verifying proofs (#357)
Co-authored-by: maskpp <maskpp266@gmail.com>
Co-authored-by: HAOYUatHZ <37070449+HAOYUatHZ@users.noreply.github.com>
Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
Co-authored-by: colinlyguo <651734127@qq.com>
2023-03-18 21:39:14 +08:00

58 lines
976 B
Go

package workerpool_test
import (
"sync/atomic"
"testing"
"time"
"github.com/stretchr/testify/assert"
"scroll-tech/common/utils/workerpool"
)
func TestWorkerPool(t *testing.T) {
as := assert.New(t)
vwp := workerpool.NewWorkerPool(2)
vwp.Run()
var cnt int32 = 3
task := func() {
time.Sleep(500 * time.Millisecond)
atomic.AddInt32(&cnt, -1)
}
go vwp.AddTask(task)
go vwp.AddTask(task)
go vwp.AddTask(task)
time.Sleep(600 * time.Millisecond)
as.Equal(int32(1), atomic.LoadInt32(&cnt))
vwp.Stop()
as.Equal(int32(0), atomic.LoadInt32(&cnt))
}
func TestWorkerPoolStopAndStart(t *testing.T) {
as := assert.New(t)
vwp := workerpool.NewWorkerPool(1)
var cnt int32 = 3
task := func() {
time.Sleep(500 * time.Millisecond)
atomic.AddInt32(&cnt, -1)
}
vwp.Run()
vwp.AddTask(task)
vwp.AddTask(task)
vwp.Stop()
as.Equal(int32(1), atomic.LoadInt32(&cnt))
vwp.Run()
vwp.AddTask(task)
vwp.Stop()
as.Equal(int32(0), atomic.LoadInt32(&cnt))
}