62 lines
1.6 KiB
Go
62 lines
1.6 KiB
Go
package api
|
|
|
|
import (
|
|
"bytes"
|
|
"context"
|
|
"fmt"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestStream_Timeout(t *testing.T) {
|
|
s := Streamer{
|
|
Refresh: 10 * time.Millisecond,
|
|
TimeOut: 100 * time.Millisecond,
|
|
MaxActive: 10,
|
|
}
|
|
|
|
eventFn := func() steamEventFn {
|
|
n := 0
|
|
return func() (event string, data []byte, upd bool, err error) {
|
|
n++
|
|
if n%2 == 0 || n > 10 {
|
|
return "test", nil, false, nil
|
|
}
|
|
return "test", []byte(fmt.Sprintf("some data %d\n", n)), true, nil
|
|
}
|
|
}
|
|
|
|
buf := bytes.Buffer{}
|
|
err := s.Activate(context.Background(), eventFn, &buf)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "event: test\ndata: some data 1\n\nevent: test\ndata: some data 3\n\nevent: test\ndata: some data 5\n\nevent: test\ndata: some data 7\n\nevent: test\ndata: some data 9\n\n", buf.String())
|
|
}
|
|
|
|
func TestStream_Cancel(t *testing.T) {
|
|
s := Streamer{
|
|
Refresh: 10 * time.Millisecond,
|
|
TimeOut: 100 * time.Millisecond,
|
|
MaxActive: 10,
|
|
}
|
|
|
|
eventFn := func() steamEventFn {
|
|
n := 0
|
|
return func() (event string, data []byte, upd bool, err error) {
|
|
n++
|
|
if n%2 == 0 {
|
|
return "test", nil, false, nil
|
|
}
|
|
return "test", []byte(fmt.Sprintf("some data %d\n", n)), true, nil
|
|
}
|
|
}
|
|
|
|
buf := bytes.Buffer{}
|
|
ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
|
|
defer cancel()
|
|
err := s.Activate(ctx, eventFn, &buf)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, "event: test\ndata: some data 1\n\nevent: test\ndata: some data 3\n\nevent: test\ndata: some data 5\n\nevent: test\ndata: some data 7\n\nevent: test\ndata: some data 9\n\n", buf.String())
|
|
}
|