spark-server/internal/transport/tcp/taskpool_test.go
2026-09-16 19:08:06 +08:00

44 lines
862 B
Go

package tcp
import (
"context"
"testing"
"time"
"spark-server/internal/pkg/errs"
)
func TestTaskPoolRunsJob(t *testing.T) {
p := NewTaskPool(1, 4)
defer p.Close()
done := make(chan struct{})
err := p.Submit(context.Background(), func() { close(done) })
if err != nil {
t.Fatal(err)
}
select {
case <-done:
case <-time.After(time.Second):
t.Fatal("timeout")
}
}
func TestTaskPoolBusy(t *testing.T) {
p := NewTaskPool(1, 1)
defer p.Close()
started := make(chan struct{})
block := make(chan struct{})
if err := p.Submit(context.Background(), func() { close(started); <-block }); err != nil {
t.Fatal(err)
}
<-started
if err := p.Submit(context.Background(), func() {}); err != nil {
t.Fatal(err)
}
err := p.Submit(context.Background(), func() {})
close(block)
if err != errs.ErrBusy {
t.Fatalf("want busy, got %v", err)
}
}