Merge #7212: Adds unittests for CAddrMan and CAddrinfo, removes source of non-determinism.

40c87b6 Increase test coverage for addrman and addrinfo (Ethan Heilman)
This commit is contained in:
Wladimir J. van der Laan
2016-01-28 13:13:30 +01:00
3 changed files with 391 additions and 49 deletions

View File

@@ -176,9 +176,6 @@ private:
//! critical section to protect the inner data structures
mutable CCriticalSection cs;
//! secret key to randomize bucket select with
uint256 nKey;
//! last used nId
int nIdCount;
@@ -204,6 +201,8 @@ private:
int vvNew[ADDRMAN_NEW_BUCKET_COUNT][ADDRMAN_BUCKET_SIZE];
protected:
//! secret key to randomize bucket select with
uint256 nKey;
//! Find an entry.
CAddrInfo* Find(const CNetAddr& addr, int *pnId = NULL);
@@ -236,6 +235,9 @@ protected:
//! Select an address to connect to, if newOnly is set to true, only the new table is selected from.
CAddrInfo Select_(bool newOnly);
//! Wraps GetRandInt to allow tests to override RandomInt and make it determinismistic.
virtual int RandomInt(int nMax);
#ifdef DEBUG_ADDRMAN
//! Perform consistency check. Returns an error code or zero.
int Check_();
@@ -570,11 +572,6 @@ public:
Check();
}
}
//! Ensure that bucket placement is always the same for testing purposes.
void MakeDeterministic(){
nKey.SetNull(); //Do not use outside of tests.
}
};