Skip to content

Commit

Permalink
p2p: Test for peer.rw.flags race conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
shazow committed Jun 21, 2018
1 parent dcca66b commit 193a402
Showing 1 changed file with 18 additions and 11 deletions.
29 changes: 18 additions & 11 deletions p2p/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,18 +177,25 @@ func TestServerDial(t *testing.T) {
if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
t.Errorf("peer is trusted prematurely: %v", peer)
}
srv.AddTrustedPeer(node)
if peer := srv.Peers()[0]; !peer.Info().Network.Trusted {
t.Errorf("peer is not trusted after AddTrustedPeer: %v", peer)
}
if peer := srv.Peers()[0]; peer.Inbound() {
t.Errorf("peer is marked inbound")
}
srv.RemoveTrustedPeer(node)
if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
t.Errorf("peer is trusted after RemoveTrustedPeer: %v", peer)
}
done := make(chan bool)
go func() {
srv.AddTrustedPeer(node)
if peer := srv.Peers()[0]; !peer.Info().Network.Trusted {
t.Errorf("peer is not trusted after AddTrustedPeer: %v", peer)
}
srv.RemoveTrustedPeer(node)
if peer := srv.Peers()[0]; peer.Info().Network.Trusted {
t.Errorf("peer is trusted after RemoveTrustedPeer: %v", peer)
}
done <- true
}()

// Trigger potential race conditions
peer = srv.Peers()[0]
_ = peer.Inbound()
_ = peer.Info()

<-done
case <-time.After(1 * time.Second):
t.Error("server did not launch peer within one second")
}
Expand Down

0 comments on commit 193a402

Please sign in to comment.