mirror of
https://github.com/btcsuite/btcd.git
synced 2025-02-22 22:25:45 +01:00
Merge pull request #2131 from kcalvinalvin/2024-03-05-fix-intermittent-addrmgr-bug
addrmgr: fix intermittent addrmanager_internal_test bug
This commit is contained in:
commit
a4f447006e
1 changed files with 22 additions and 5 deletions
|
@ -12,7 +12,7 @@ import (
|
|||
)
|
||||
|
||||
// randAddr generates a *wire.NetAddressV2 backed by a random IPv4/IPv6
|
||||
// address.
|
||||
// address. Some of the returned addresses may not be routable.
|
||||
func randAddr(t *testing.T) *wire.NetAddressV2 {
|
||||
t.Helper()
|
||||
|
||||
|
@ -40,6 +40,23 @@ func randAddr(t *testing.T) *wire.NetAddressV2 {
|
|||
)
|
||||
}
|
||||
|
||||
// routableRandAddr generates a *wire.NetAddressV2 backed by a random IPv4/IPv6
|
||||
// address that is always routable.
|
||||
func routableRandAddr(t *testing.T) *wire.NetAddressV2 {
|
||||
t.Helper()
|
||||
|
||||
var addr *wire.NetAddressV2
|
||||
|
||||
// If the address is not routable, try again.
|
||||
routable := false
|
||||
for !routable {
|
||||
addr = randAddr(t)
|
||||
routable = IsRoutable(addr)
|
||||
}
|
||||
|
||||
return addr
|
||||
}
|
||||
|
||||
// assertAddr ensures that the two addresses match. The timestamp is not
|
||||
// checked as it does not affect uniquely identifying a specific address.
|
||||
func assertAddr(t *testing.T, got, expected *wire.NetAddressV2) {
|
||||
|
@ -104,9 +121,9 @@ func TestAddrManagerSerialization(t *testing.T) {
|
|||
|
||||
expectedAddrs := make(map[string]*wire.NetAddressV2, numAddrs)
|
||||
for i := 0; i < numAddrs; i++ {
|
||||
addr := randAddr(t)
|
||||
addr := routableRandAddr(t)
|
||||
expectedAddrs[NetAddressKey(addr)] = addr
|
||||
addrMgr.AddAddress(addr, randAddr(t))
|
||||
addrMgr.AddAddress(addr, routableRandAddr(t))
|
||||
}
|
||||
|
||||
// Now that the addresses have been added, we should be able to retrieve
|
||||
|
@ -149,9 +166,9 @@ func TestAddrManagerV1ToV2(t *testing.T) {
|
|||
|
||||
expectedAddrs := make(map[string]*wire.NetAddressV2, numAddrs)
|
||||
for i := 0; i < numAddrs; i++ {
|
||||
addr := randAddr(t)
|
||||
addr := routableRandAddr(t)
|
||||
expectedAddrs[NetAddressKey(addr)] = addr
|
||||
addrMgr.AddAddress(addr, randAddr(t))
|
||||
addrMgr.AddAddress(addr, routableRandAddr(t))
|
||||
}
|
||||
|
||||
// Then, we'll persist these addresses to disk and restart the address
|
||||
|
|
Loading…
Add table
Reference in a new issue