2a8b358
Fix typo adddrman to addrman as requested in #8070 (Ethan Heilman)f4119c6
Remove non-determinism which is breaking net_tests #8069 (EthanHeilman)
This commit is contained in:
commit
7771aa57bd
1 changed files with 10 additions and 1 deletions
|
@ -17,6 +17,13 @@ class CAddrManSerializationMock : public CAddrMan
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void Serialize(CDataStream& s, int nType, int nVersionDummy) const = 0;
|
virtual void Serialize(CDataStream& s, int nType, int nVersionDummy) const = 0;
|
||||||
|
|
||||||
|
//! Ensure that bucket placement is always the same for testing purposes.
|
||||||
|
void MakeDeterministic()
|
||||||
|
{
|
||||||
|
nKey.SetNull();
|
||||||
|
seed_insecure_rand(true);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class CAddrManUncorrupted : public CAddrManSerializationMock
|
class CAddrManUncorrupted : public CAddrManSerializationMock
|
||||||
|
@ -65,6 +72,7 @@ BOOST_FIXTURE_TEST_SUITE(net_tests, BasicTestingSetup)
|
||||||
BOOST_AUTO_TEST_CASE(caddrdb_read)
|
BOOST_AUTO_TEST_CASE(caddrdb_read)
|
||||||
{
|
{
|
||||||
CAddrManUncorrupted addrmanUncorrupted;
|
CAddrManUncorrupted addrmanUncorrupted;
|
||||||
|
addrmanUncorrupted.MakeDeterministic();
|
||||||
|
|
||||||
CService addr1 = CService("250.7.1.1", 8333);
|
CService addr1 = CService("250.7.1.1", 8333);
|
||||||
CService addr2 = CService("250.7.2.2", 9999);
|
CService addr2 = CService("250.7.2.2", 9999);
|
||||||
|
@ -106,6 +114,7 @@ BOOST_AUTO_TEST_CASE(caddrdb_read)
|
||||||
BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
|
BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
|
||||||
{
|
{
|
||||||
CAddrManCorrupted addrmanCorrupted;
|
CAddrManCorrupted addrmanCorrupted;
|
||||||
|
addrmanCorrupted.MakeDeterministic();
|
||||||
|
|
||||||
// Test that the de-serialization of corrupted addrman throws an exception.
|
// Test that the de-serialization of corrupted addrman throws an exception.
|
||||||
CDataStream ssPeers1 = AddrmanToStream(addrmanCorrupted);
|
CDataStream ssPeers1 = AddrmanToStream(addrmanCorrupted);
|
||||||
|
@ -119,7 +128,7 @@ BOOST_AUTO_TEST_CASE(caddrdb_read_corrupted)
|
||||||
} catch (const std::exception& e) {
|
} catch (const std::exception& e) {
|
||||||
exceptionThrown = true;
|
exceptionThrown = true;
|
||||||
}
|
}
|
||||||
// Even through de-serialization failed adddrman is not left in a clean state.
|
// Even through de-serialization failed addrman is not left in a clean state.
|
||||||
BOOST_CHECK(addrman1.size() == 1);
|
BOOST_CHECK(addrman1.size() == 1);
|
||||||
BOOST_CHECK(exceptionThrown);
|
BOOST_CHECK(exceptionThrown);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue