fixes from Bucky's review

This commit is contained in:
Anton Kaliaev
2017-11-07 18:08:45 -05:00
parent 2d4ad02356
commit e0daca5693
4 changed files with 56 additions and 51 deletions

View File

@ -141,10 +141,12 @@ func TestRmBadTx(t *testing.T) {
} }
// check for the tx // check for the tx
for {
txs := cs.mempool.Reap(1) txs := cs.mempool.Reap(1)
if len(txs) == 0 { if len(txs) == 0 {
emptyMempoolCh <- struct{}{} emptyMempoolCh <- struct{}{}
return }
time.Sleep(10 * time.Millisecond)
} }
}() }()

View File

@ -9,27 +9,30 @@ import (
"github.com/tendermint/tmlibs/log" "github.com/tendermint/tmlibs/log"
cfg "github.com/tendermint/tendermint/config" cfg "github.com/tendermint/tendermint/config"
"github.com/tendermint/tendermint/types"
) )
func TestNodeStartStop(t *testing.T) { func TestNodeStartStop(t *testing.T) {
config := cfg.ResetTestRoot("node_node_test") config := cfg.ResetTestRoot("node_node_test")
// Create & start node // create & start node
n, err := DefaultNewNode(config, log.TestingLogger()) n, err := DefaultNewNode(config, log.TestingLogger())
assert.NoError(t, err, "expected no err on DefaultNewNode") assert.NoError(t, err, "expected no err on DefaultNewNode")
n.Start() n.Start()
t.Logf("Started node %v", n.sw.NodeInfo()) t.Logf("Started node %v", n.sw.NodeInfo())
ticker := time.NewTicker(10 * time.Millisecond) // wait for the node to produce a block
blockCh := make(chan struct{})
types.AddListenerForEvent(n.EventSwitch(), "node_test", types.EventStringNewBlock(), func(types.TMEventData) {
blockCh <- struct{}{}
})
select { select {
case <-ticker.C: case <-blockCh:
if n.IsRunning() {
return
}
case <-time.After(5 * time.Second): case <-time.After(5 * time.Second):
t.Fatal("timed out waiting for start") t.Fatal("timed out waiting for the node to produce a block")
} }
// stop the node
go func() { go func() {
n.Stop() n.Stop()
}() }()

View File

@ -109,6 +109,7 @@ func TestPEXReactorRunning(t *testing.T) {
func assertSomePeersWithTimeout(t *testing.T, switches []*Switch, checkPeriod, timeout time.Duration) { func assertSomePeersWithTimeout(t *testing.T, switches []*Switch, checkPeriod, timeout time.Duration) {
ticker := time.NewTicker(checkPeriod) ticker := time.NewTicker(checkPeriod)
for {
select { select {
case <-ticker.C: case <-ticker.C:
// check peers are connected // check peers are connected
@ -130,6 +131,7 @@ func assertSomePeersWithTimeout(t *testing.T, switches []*Switch, checkPeriod, t
} }
t.Errorf("expected all switches to be connected to at least one peer (switches: %s)", numPeersStr) t.Errorf("expected all switches to be connected to at least one peer (switches: %s)", numPeersStr)
} }
}
} }
func TestPEXReactorReceive(t *testing.T) { func TestPEXReactorReceive(t *testing.T) {

View File

@ -138,6 +138,7 @@ func TestSwitches(t *testing.T) {
func assertMsgReceivedWithTimeout(t *testing.T, msg string, channel byte, reactor *TestReactor, checkPeriod, timeout time.Duration) { func assertMsgReceivedWithTimeout(t *testing.T, msg string, channel byte, reactor *TestReactor, checkPeriod, timeout time.Duration) {
ticker := time.NewTicker(checkPeriod) ticker := time.NewTicker(checkPeriod)
for {
select { select {
case <-ticker.C: case <-ticker.C:
msgs := reactor.getMsgs(channel) msgs := reactor.getMsgs(channel)
@ -145,10 +146,12 @@ func assertMsgReceivedWithTimeout(t *testing.T, msg string, channel byte, reacto
if !bytes.Equal(msgs[0].Bytes, wire.BinaryBytes(msg)) { if !bytes.Equal(msgs[0].Bytes, wire.BinaryBytes(msg)) {
t.Fatalf("Unexpected message bytes. Wanted: %X, Got: %X", wire.BinaryBytes(msg), msgs[0].Bytes) t.Fatalf("Unexpected message bytes. Wanted: %X, Got: %X", wire.BinaryBytes(msg), msgs[0].Bytes)
} }
return
} }
case <-time.After(timeout): case <-time.After(timeout):
t.Fatalf("Expected to have received 1 message in channel #%v, got zero", channel) t.Fatalf("Expected to have received 1 message in channel #%v, got zero", channel)
} }
}
} }
func TestConnAddrFilter(t *testing.T) { func TestConnAddrFilter(t *testing.T) {
@ -174,20 +177,15 @@ func TestConnAddrFilter(t *testing.T) {
s2.addPeerWithConnection(c2) s2.addPeerWithConnection(c2)
}() }()
assertNoPeersWithTimeout(t, s1, 100*time.Millisecond, 400*time.Millisecond) assertNoPeersAfterTimeout(t, s1, 400*time.Millisecond)
assertNoPeersWithTimeout(t, s2, 100*time.Millisecond, 400*time.Millisecond) assertNoPeersAfterTimeout(t, s2, 400*time.Millisecond)
} }
func assertNoPeersWithTimeout(t *testing.T, sw *Switch, checkPeriod, timeout time.Duration) { func assertNoPeersAfterTimeout(t *testing.T, sw *Switch, timeout time.Duration) {
ticker := time.NewTicker(checkPeriod) time.Sleep(timeout)
select {
case <-ticker.C:
if sw.Peers().Size() != 0 { if sw.Peers().Size() != 0 {
t.Fatalf("Expected %v to not connect to some peers, got %d", sw, sw.Peers().Size()) t.Fatalf("Expected %v to not connect to some peers, got %d", sw, sw.Peers().Size())
} }
case <-time.After(timeout):
return
}
} }
func TestConnPubKeyFilter(t *testing.T) { func TestConnPubKeyFilter(t *testing.T) {
@ -214,8 +212,8 @@ func TestConnPubKeyFilter(t *testing.T) {
s2.addPeerWithConnection(c2) s2.addPeerWithConnection(c2)
}() }()
assertNoPeersWithTimeout(t, s1, 100*time.Millisecond, 400*time.Millisecond) assertNoPeersAfterTimeout(t, s1, 400*time.Millisecond)
assertNoPeersWithTimeout(t, s2, 100*time.Millisecond, 400*time.Millisecond) assertNoPeersAfterTimeout(t, s2, 400*time.Millisecond)
} }
func TestSwitchStopsNonPersistentPeerOnError(t *testing.T) { func TestSwitchStopsNonPersistentPeerOnError(t *testing.T) {
@ -238,7 +236,7 @@ func TestSwitchStopsNonPersistentPeerOnError(t *testing.T) {
// simulate failure by closing connection // simulate failure by closing connection
peer.CloseConn() peer.CloseConn()
assertNoPeersWithTimeout(t, sw, 100*time.Millisecond, 100*time.Millisecond) assertNoPeersAfterTimeout(t, sw, 100*time.Millisecond)
assert.False(peer.IsRunning()) assert.False(peer.IsRunning())
} }