Skip to content

Commit fa87414

Browse files
fix(p2p): prevent race condition in unit tests
1 parent 26e563a commit fa87414

1 file changed

Lines changed: 18 additions & 6 deletions

File tree

pkg/p2p/libp2p/connections_test.go

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1613,18 +1613,30 @@ func TestAddressbookPersistence(t *testing.T) {
16131613
expectPeersEventually(t, s1, overlay2)
16141614

16151615
// Verify s1 (has underlays) is persisted in s2's addressbook
1616-
addr, err := ab2.Get(overlay1)
1616+
var addr *bzz.Address
1617+
err = spinlock.Wait(time.Second, func() bool {
1618+
var getErr error
1619+
addr, getErr = ab2.Get(overlay1)
1620+
return getErr == nil && containsAtLeastOne(addr.Underlays, s1Addrs)
1621+
})
16171622
if err != nil {
1618-
t.Fatal(err)
1619-
}
1620-
if !containsAtLeastOne(addr.Underlays, s1Addrs) {
1623+
addr, _ = ab2.Get(overlay1)
1624+
if addr == nil {
1625+
t.Fatal("s1 not found in s2's addressbook")
1626+
}
16211627
t.Fatalf("expected at least one of s1's addresses %v in addressbook, got %v", s1Addrs, addr.Underlays)
16221628
}
16231629

1630+
// Wait to ensure any incorrect persistence would have occurred
1631+
_ = spinlock.Wait(500*time.Millisecond, func() bool {
1632+
_, _ = ab1.Get(overlay2)
1633+
return false
1634+
})
1635+
16241636
// Verify s2 (empty underlays) is NOT persisted in s1's addressbook
1625-
_, err = ab1.Get(overlay2)
1637+
addr2, err := ab1.Get(overlay2)
16261638
if err == nil {
1627-
t.Fatal("expected s2 (inbound-only peer with empty underlays) not to be persisted in s1's addressbook")
1639+
t.Fatalf("expected s2 (inbound-only peer with empty underlays) not to be persisted in s1's addressbook, but got: %+v with %d underlays", addr2, len(addr2.Underlays))
16281640
}
16291641
})
16301642
}

0 commit comments

Comments
 (0)