|
|
- package main_test
-
- import (
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
-
- em "github.com/tendermint/go-event-meter"
- monitor "github.com/tendermint/netmon/tm-monitor"
- mock "github.com/tendermint/netmon/tm-monitor/mock"
- tmtypes "github.com/tendermint/tendermint/types"
- )
-
- func TestNodeStartStop(t *testing.T) {
- assert := assert.New(t)
-
- n, _ := setupNode(t)
- assert.Equal(true, n.Online)
-
- n.Stop()
- }
-
- func TestNodeNewBlockReceived(t *testing.T) {
- assert := assert.New(t)
-
- blockCh := make(chan tmtypes.Header, 100)
- n, emMock := setupNode(t)
- n.SendBlocksTo(blockCh)
-
- blockHeader := &tmtypes.Header{Height: 5}
- emMock.Call("eventCallback", &em.EventMetric{}, tmtypes.EventDataNewBlockHeader{blockHeader})
-
- assert.Equal(uint64(5), n.Height)
- assert.Equal(*blockHeader, <-blockCh)
- }
-
- func TestNodeNewBlockLatencyReceived(t *testing.T) {
- assert := assert.New(t)
-
- blockLatencyCh := make(chan float64, 100)
- n, emMock := setupNode(t)
- n.SendBlockLatenciesTo(blockLatencyCh)
-
- emMock.Call("latencyCallback", 1000000.0)
-
- assert.Equal(1.0, n.BlockLatency)
- assert.Equal(1000000.0, <-blockLatencyCh)
- }
-
- func TestNodeConnectionLost(t *testing.T) {
- assert := assert.New(t)
-
- disconnectCh := make(chan bool, 100)
- n, emMock := setupNode(t)
- n.NotifyAboutDisconnects(disconnectCh)
-
- emMock.Call("disconnectCallback")
-
- assert.Equal(true, <-disconnectCh)
- assert.Equal(false, <-disconnectCh)
-
- // we're back in a race
- assert.Equal(true, n.Online)
- }
-
- func setupNode(t *testing.T) (n *monitor.Node, emMock *mock.EventMeter) {
- emMock = &mock.EventMeter{}
- n = monitor.NewNodeWithEventMeter("tcp://127.0.0.1:46657", emMock)
-
- err := n.Start()
- require.Nil(t, err)
- return
- }
|