44 lines
862 B
Go
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)
|
|
}
|
|
}
|