45 lines
926 B
Go
45 lines
926 B
Go
package event_test
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"git.netflux.io/rob/octoplex/internal/event"
|
|
"git.netflux.io/rob/octoplex/internal/testhelpers"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestBus(t *testing.T) {
|
|
bus := event.NewBus(testhelpers.NewTestLogger(t))
|
|
|
|
ch1 := bus.Register()
|
|
ch2 := bus.Register()
|
|
|
|
evt := event.MediaServerStartedEvent{
|
|
RTMPURL: "rtmp://rtmp.example.com/live",
|
|
RTMPSURL: "rtmps://rtmp.example.com/live",
|
|
}
|
|
|
|
go func() {
|
|
bus.Send(evt)
|
|
bus.Send(evt)
|
|
}()
|
|
|
|
assert.Equal(t, evt, (<-ch1).(event.MediaServerStartedEvent))
|
|
assert.Equal(t, evt, (<-ch1).(event.MediaServerStartedEvent))
|
|
|
|
assert.Equal(t, evt, (<-ch2).(event.MediaServerStartedEvent))
|
|
assert.Equal(t, evt, (<-ch2).(event.MediaServerStartedEvent))
|
|
|
|
bus.Deregister(ch1)
|
|
|
|
_, ok := <-ch1
|
|
assert.False(t, ok)
|
|
|
|
select {
|
|
case <-ch2:
|
|
require.Fail(t, "ch2 should be blocking")
|
|
default:
|
|
}
|
|
}
|