Expose EventSwitch on top of websocket client

This commit is contained in:
Ethan Frey
2017-02-24 19:15:22 +01:00
parent 9be3064904
commit 175bb329e4
3 changed files with 180 additions and 96 deletions

View File

@@ -4,6 +4,7 @@ import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
events "github.com/tendermint/go-events"
"github.com/tendermint/tendermint/types"
@@ -12,13 +13,10 @@ import (
func TestEvents(t *testing.T) {
require := require.New(t)
for i, c := range GetClients() {
// for i, c := range []client.Client{getLocalClient()} {
// test if this client implements event switch as well.
evsw, ok := c.(types.EventSwitch)
// TODO: assert this for all clients when it is suported
// if !assert.True(ok, "%d: %v", i, c) {
// continue
// }
if !ok {
if !assert.True(t, ok, "%d: %v", i, c) {
continue
}
@@ -28,12 +26,12 @@ func TestEvents(t *testing.T) {
st, err := evsw.Start()
require.Nil(err, "%d: %+v", i, err)
require.True(st, "%d", i)
// defer evsw.Stop()
defer evsw.Stop()
}
// let's wait for the next header...
listener := "fooz"
event, timeout := make(chan events.EventData, 1), make(chan bool, 1)
event, timeout := make(chan events.EventData, 10), make(chan bool, 1)
// start timeout count-down
go func() {
time.Sleep(1 * time.Second)
@@ -41,10 +39,13 @@ func TestEvents(t *testing.T) {
}()
// register for the next header event
evsw.AddListenerForEvent(listener, types.EventStringNewBlockHeader(), func(data events.EventData) {
evtTyp := types.EventStringNewBlockHeader()
evsw.AddListenerForEvent(listener, evtTyp, func(data events.EventData) {
event <- data
})
// make sure to unregister after the test is over
// TODO: don't require both!
defer evsw.RemoveListenerForEvent(listener, evtTyp)
defer evsw.RemoveListener(listener)
select {