Client embeds EventSwitch, client.HTTP properly un/subscribes events over websocket

This commit is contained in:
Ethan Frey
2017-02-24 21:26:17 +01:00
parent 6282fad518
commit 4fead237f0
5 changed files with 93 additions and 37 deletions

View File

@ -4,7 +4,6 @@ import (
"testing"
"time"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
merktest "github.com/tendermint/merkleeyes/testutil"
"github.com/tendermint/tendermint/rpc/client"
@ -14,25 +13,19 @@ import (
func TestHeaderEvents(t *testing.T) {
require := require.New(t)
for i, c := range GetClients() {
// test if this client implements event switch as well.
evsw, ok := c.(types.EventSwitch)
if !assert.True(t, ok, "%d: %v", i, c) {
continue
}
// start for this test it if it wasn't already running
if !evsw.IsRunning() {
if !c.IsRunning() {
// if so, then we start it, listen, and stop it.
st, err := evsw.Start()
st, err := c.Start()
require.Nil(err, "%d: %+v", i, err)
require.True(st, "%d", i)
defer evsw.Stop()
defer c.Stop()
}
evtTyp := types.EventStringNewBlockHeader()
evt, err := client.WaitForOneEvent(evsw, evtTyp, 1*time.Second)
evt, err := client.WaitForOneEvent(c, evtTyp, 1*time.Second)
require.Nil(err, "%d: %+v", i, err)
_, ok = evt.(types.EventDataNewBlockHeader)
_, ok := evt.(types.EventDataNewBlockHeader)
require.True(ok, "%d: %#v", i, evt)
// TODO: more checks...
}
@ -41,19 +34,13 @@ func TestHeaderEvents(t *testing.T) {
func TestTxEvents(t *testing.T) {
require := require.New(t)
for i, c := range GetClients() {
// test if this client implements event switch as well.
evsw, ok := c.(types.EventSwitch)
if !assert.True(t, ok, "%d: %v", i, c) {
continue
}
// start for this test it if it wasn't already running
if !evsw.IsRunning() {
if !c.IsRunning() {
// if so, then we start it, listen, and stop it.
st, err := evsw.Start()
st, err := c.Start()
require.Nil(err, "%d: %+v", i, err)
require.True(st, "%d", i)
defer evsw.Stop()
defer c.Stop()
}
// make the tx
@ -66,7 +53,7 @@ func TestTxEvents(t *testing.T) {
require.True(txres.Code.IsOK())
// and wait for confirmation
evt, err := client.WaitForOneEvent(evsw, evtTyp, 1*time.Second)
evt, err := client.WaitForOneEvent(c, evtTyp, 1*time.Second)
require.Nil(err, "%d: %+v", i, err)
// and make sure it has the proper info
txe, ok := evt.(types.EventDataTx)