fix bot lifecycle and docs
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
package tgapi
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestWorkerPoolSubmitAfterStop(t *testing.T) {
|
||||
pool := newWorkerPool(1, 1)
|
||||
pool.start()
|
||||
pool.stop()
|
||||
|
||||
if _, err := pool.submit(context.Background(), func(context.Context) (any, error) {
|
||||
return nil, nil
|
||||
}); !errors.Is(err, ErrPoolStopped) {
|
||||
t.Fatalf("expected ErrPoolStopped, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestWorkerPoolQueueFull(t *testing.T) {
|
||||
pool := newWorkerPool(1, 1)
|
||||
pool.start()
|
||||
defer pool.stop()
|
||||
|
||||
started := make(chan struct{})
|
||||
release := make(chan struct{})
|
||||
|
||||
firstResult, err := pool.submit(context.Background(), func(context.Context) (any, error) {
|
||||
close(started)
|
||||
<-release
|
||||
return "first", nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("first submit returned error: %v", err)
|
||||
}
|
||||
<-started
|
||||
|
||||
secondResult, err := pool.submit(context.Background(), func(context.Context) (any, error) {
|
||||
return "second", nil
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatalf("second submit returned error: %v", err)
|
||||
}
|
||||
|
||||
if _, err := pool.submit(context.Background(), func(context.Context) (any, error) {
|
||||
return "third", nil
|
||||
}); !errors.Is(err, ErrPoolQueueFull) {
|
||||
t.Fatalf("expected ErrPoolQueueFull, got %v", err)
|
||||
}
|
||||
|
||||
close(release)
|
||||
|
||||
first := <-firstResult
|
||||
if first.err != nil || first.value != "first" {
|
||||
t.Fatalf("unexpected first result: %+v", first)
|
||||
}
|
||||
second := <-secondResult
|
||||
if second.err != nil || second.value != "second" {
|
||||
t.Fatalf("unexpected second result: %+v", second)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user