Skip to content

Commit 2ba1e74

Browse files
amitiuttarwarmzumsande
authored andcommitted
test: Update addrman_serialization unit test to use AddrMan's interface
By updating the test to use FindEntry, it no longer needs to reach into AddrMan's internals (via GetBucketAndEntry) to assert expected behaviors.
1 parent dad5f76 commit 2ba1e74

File tree

1 file changed

+28
-31
lines changed

1 file changed

+28
-31
lines changed

src/test/addrman_tests.cpp

Lines changed: 28 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -700,65 +700,62 @@ BOOST_AUTO_TEST_CASE(addrman_serialization)
700700
{
701701
std::vector<bool> asmap1 = FromBytes(asmap_raw, sizeof(asmap_raw) * 8);
702702

703-
auto addrman_asmap1 = std::make_unique<AddrManTest>(asmap1);
704-
auto addrman_asmap1_dup = std::make_unique<AddrManTest>(asmap1);
705-
auto addrman_noasmap = std::make_unique<AddrManTest>();
703+
auto addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
704+
auto addrman_asmap1_dup = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
705+
auto addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
706706
CDataStream stream(SER_NETWORK, PROTOCOL_VERSION);
707707

708708
CAddress addr = CAddress(ResolveService("250.1.1.1"), NODE_NONE);
709709
CNetAddr default_source;
710710

711-
712711
addrman_asmap1->Add({addr}, default_source);
713712

714713
stream << *addrman_asmap1;
715714
// serizalizing/deserializing addrman with the same asmap
716715
stream >> *addrman_asmap1_dup;
717716

718-
std::pair<int, int> bucketAndEntry_asmap1 = addrman_asmap1->GetBucketAndEntry(addr);
719-
std::pair<int, int> bucketAndEntry_asmap1_dup = addrman_asmap1_dup->GetBucketAndEntry(addr);
720-
BOOST_CHECK(bucketAndEntry_asmap1.second != -1);
721-
BOOST_CHECK(bucketAndEntry_asmap1_dup.second != -1);
717+
AddressPosition addr_pos1 = addrman_asmap1->FindAddressEntry(addr).value();
718+
AddressPosition addr_pos2 = addrman_asmap1_dup->FindAddressEntry(addr).value();
719+
BOOST_CHECK(addr_pos1.multiplicity != 0);
720+
BOOST_CHECK(addr_pos2.multiplicity != 0);
722721

723-
BOOST_CHECK(bucketAndEntry_asmap1.first == bucketAndEntry_asmap1_dup.first);
724-
BOOST_CHECK(bucketAndEntry_asmap1.second == bucketAndEntry_asmap1_dup.second);
722+
BOOST_CHECK(addr_pos1 == addr_pos2);
725723

726724
// deserializing asmaped peers.dat to non-asmaped addrman
727725
stream << *addrman_asmap1;
728726
stream >> *addrman_noasmap;
729-
std::pair<int, int> bucketAndEntry_noasmap = addrman_noasmap->GetBucketAndEntry(addr);
730-
BOOST_CHECK(bucketAndEntry_noasmap.second != -1);
731-
BOOST_CHECK(bucketAndEntry_asmap1.first != bucketAndEntry_noasmap.first);
732-
BOOST_CHECK(bucketAndEntry_asmap1.second != bucketAndEntry_noasmap.second);
727+
AddressPosition addr_pos3 = addrman_noasmap->FindAddressEntry(addr).value();
728+
BOOST_CHECK(addr_pos3.multiplicity != 0);
729+
BOOST_CHECK(addr_pos1.bucket != addr_pos3.bucket);
730+
BOOST_CHECK(addr_pos1.position != addr_pos3.position);
733731

734732
// deserializing non-asmaped peers.dat to asmaped addrman
735-
addrman_asmap1 = std::make_unique<AddrManTest>(asmap1);
736-
addrman_noasmap = std::make_unique<AddrManTest>();
733+
addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
734+
addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
737735
addrman_noasmap->Add({addr}, default_source);
738736
stream << *addrman_noasmap;
739737
stream >> *addrman_asmap1;
740-
std::pair<int, int> bucketAndEntry_asmap1_deser = addrman_asmap1->GetBucketAndEntry(addr);
741-
BOOST_CHECK(bucketAndEntry_asmap1_deser.second != -1);
742-
BOOST_CHECK(bucketAndEntry_asmap1_deser.first != bucketAndEntry_noasmap.first);
743-
BOOST_CHECK(bucketAndEntry_asmap1_deser.first == bucketAndEntry_asmap1_dup.first);
744-
BOOST_CHECK(bucketAndEntry_asmap1_deser.second == bucketAndEntry_asmap1_dup.second);
738+
739+
AddressPosition addr_pos4 = addrman_asmap1->FindAddressEntry(addr).value();
740+
BOOST_CHECK(addr_pos4.multiplicity != 0);
741+
BOOST_CHECK(addr_pos4.bucket != addr_pos3.bucket);
742+
BOOST_CHECK(addr_pos4 == addr_pos2);
745743

746744
// used to map to different buckets, now maps to the same bucket.
747-
addrman_asmap1 = std::make_unique<AddrManTest>(asmap1);
748-
addrman_noasmap = std::make_unique<AddrManTest>();
745+
addrman_asmap1 = std::make_unique<AddrMan>(asmap1, /*deterministic=*/true, /*consistency_check_ratio=*/100);
746+
addrman_noasmap = std::make_unique<AddrMan>(std::vector<bool>(), /*deterministic=*/true, /*consistency_check_ratio=*/100);
749747
CAddress addr1 = CAddress(ResolveService("250.1.1.1"), NODE_NONE);
750748
CAddress addr2 = CAddress(ResolveService("250.2.1.1"), NODE_NONE);
751749
addrman_noasmap->Add({addr, addr2}, default_source);
752-
std::pair<int, int> bucketAndEntry_noasmap_addr1 = addrman_noasmap->GetBucketAndEntry(addr1);
753-
std::pair<int, int> bucketAndEntry_noasmap_addr2 = addrman_noasmap->GetBucketAndEntry(addr2);
754-
BOOST_CHECK(bucketAndEntry_noasmap_addr1.first != bucketAndEntry_noasmap_addr2.first);
755-
BOOST_CHECK(bucketAndEntry_noasmap_addr1.second != bucketAndEntry_noasmap_addr2.second);
750+
AddressPosition addr_pos5 = addrman_noasmap->FindAddressEntry(addr1).value();
751+
AddressPosition addr_pos6 = addrman_noasmap->FindAddressEntry(addr2).value();
752+
BOOST_CHECK(addr_pos5.bucket != addr_pos6.bucket);
756753
stream << *addrman_noasmap;
757754
stream >> *addrman_asmap1;
758-
std::pair<int, int> bucketAndEntry_asmap1_deser_addr1 = addrman_asmap1->GetBucketAndEntry(addr1);
759-
std::pair<int, int> bucketAndEntry_asmap1_deser_addr2 = addrman_asmap1->GetBucketAndEntry(addr2);
760-
BOOST_CHECK(bucketAndEntry_asmap1_deser_addr1.first == bucketAndEntry_asmap1_deser_addr2.first);
761-
BOOST_CHECK(bucketAndEntry_asmap1_deser_addr1.second != bucketAndEntry_asmap1_deser_addr2.second);
755+
AddressPosition addr_pos7 = addrman_asmap1->FindAddressEntry(addr1).value();
756+
AddressPosition addr_pos8 = addrman_asmap1->FindAddressEntry(addr2).value();
757+
BOOST_CHECK(addr_pos7.bucket == addr_pos8.bucket);
758+
BOOST_CHECK(addr_pos7.position != addr_pos8.position);
762759
}
763760

764761
BOOST_AUTO_TEST_CASE(remove_invalid)

0 commit comments

Comments
 (0)