worker_test
API
worker_test
packageAPI reference for the worker_test
package.
Imports
(6)
F
function
TestPoolExecutesSubmittedTasks
Parameters
t
pkg/worker/worker_test.go:13-35
func TestPoolExecutesSubmittedTasks(t *testing.T)
{
pool := worker.NewPool(3)
defer pool.Shutdown()
var count int32
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
ok := pool.Submit(func(ctx context.Context) error {
defer wg.Done()
atomic.AddInt32(&count, 1)
return nil
})
if !ok {
t.Fatalf("Submit() = false, want true")
}
}
wg.Wait()
if count != 10 {
t.Fatalf("executed tasks = %d, want %d", count, 10)
}
}
F
function
TestPoolRejectsTasksAfterShutdown
Parameters
t
pkg/worker/worker_test.go:37-44
func TestPoolRejectsTasksAfterShutdown(t *testing.T)
{
pool := worker.NewPool(1)
pool.Shutdown()
if ok := pool.Submit(func(ctx context.Context) error { return nil }); ok {
t.Fatalf("Submit() after Shutdown() = true, want false")
}
}
F
function
TestPoolDefaultsToOneWorker
Parameters
t
pkg/worker/worker_test.go:46-62
func TestPoolDefaultsToOneWorker(t *testing.T)
{
pool := worker.NewPool(0)
var count int32
ok := pool.Submit(func(ctx context.Context) error {
atomic.AddInt32(&count, 1)
return nil
})
if !ok {
t.Fatalf("Submit() = false, want true")
}
pool.Shutdown()
if count != 1 {
t.Fatalf("executed tasks = %d, want %d", count, 1)
}
}
F
function
TestSubmitConcurrentShutdown
Parameters
t
pkg/worker/worker_test.go:64-82
func TestSubmitConcurrentShutdown(t *testing.T)
{
// Run many goroutines submitting while Shutdown fires — should never panic
for iter := 0; iter < 100; iter++ {
pool := worker.NewPool(2)
var wg sync.WaitGroup
for i := 0; i < 10; i++ {
wg.Add(1)
go func() {
defer wg.Done()
pool.Submit(func(ctx context.Context) error {
time.Sleep(time.Millisecond)
return nil
})
}()
}
pool.Shutdown()
wg.Wait()
}
}