From 02091d564bd5c2227154ec54853ec916c1331282 Mon Sep 17 00:00:00 2001 From: Anthony Fieroni Date: Tue, 26 Nov 2019 19:02:09 +0200 Subject: [PATCH] Fix claimtriecache test Signed-off-by: Anthony Fieroni --- src/claimtrie/trie.cpp | 6 +++--- src/claimtrie/trie.h | 1 + src/test/claimtriecache_tests.cpp | 34 +++++++++++++++---------------- 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/claimtrie/trie.cpp b/src/claimtrie/trie.cpp index d719393b6..483d381d1 100644 --- a/src/claimtrie/trie.cpp +++ b/src/claimtrie/trie.cpp @@ -38,7 +38,7 @@ CUint256 getValueHash(const CTxOutPoint& outPoint, int nHeightOfLastTakeover) } static const sqlite::sqlite_config sharedConfig { - sqlite::OpenFlags::READWRITE | sqlite::OpenFlags::CREATE, // TODO: test with this: | sqlite::OpenFlags::SHAREDCACHE, + sqlite::OpenFlags::READWRITE | sqlite::OpenFlags::CREATE, nullptr, sqlite::Encoding::UTF8 }; @@ -51,7 +51,7 @@ CClaimTrie::CClaimTrie(bool fWipe, int height, int64_t nAllClaimsInMerkleForkHeight, int proportionalDelayFactor) : nNextHeight(height), - db(dataDir + "/claims.sqlite", sharedConfig), + dbFile(dataDir + "/claims.sqlite"), db(dbFile, sharedConfig), nProportionalDelayFactor(proportionalDelayFactor), nNormalizedNameForkHeight(nNormalizedNameForkHeight), nOriginalClaimExpirationTime(nOriginalClaimExpirationTime), @@ -493,7 +493,7 @@ bool CClaimTrieCacheBase::flush() } CClaimTrieCacheBase::CClaimTrieCacheBase(CClaimTrie* base) - : base(base), db(base->db), transacting(false), + : base(base), db(base->dbFile, sharedConfig), transacting(false), childHashQuery(db << "SELECT name, hash, IFNULL(takeoverHeight, 0) FROM nodes WHERE parent = ? ORDER BY name"), claimHashQuery(db << "SELECT c.txID, c.txN, c.claimID, c.blockHeight, c.validHeight, c.amount, " "(SELECT IFNULL(SUM(s.amount),0)+c.amount FROM supports s WHERE s.supportedClaimID = c.claimID " diff --git a/src/claimtrie/trie.h b/src/claimtrie/trie.h index 07dc86678..a41d9574f 100644 --- a/src/claimtrie/trie.h +++ b/src/claimtrie/trie.h @@ -45,6 +45,7 @@ public: protected: int nNextHeight; + const std::string dbFile; sqlite::database db; const int nProportionalDelayFactor; diff --git a/src/test/claimtriecache_tests.cpp b/src/test/claimtriecache_tests.cpp index 1632b1734..d389cb370 100644 --- a/src/test/claimtriecache_tests.cpp +++ b/src/test/claimtriecache_tests.cpp @@ -16,6 +16,7 @@ class CClaimTrieCacheTest : public CClaimTrieCacheBase public: explicit CClaimTrieCacheTest(CClaimTrie* base): CClaimTrieCacheBase(base) { + nNextHeight = 2; } bool insertClaimIntoTrie(const std::string& key, const CClaimValue& value) @@ -108,13 +109,12 @@ BOOST_AUTO_TEST_CASE(merkle_hash_multiple_test) CUint256 hash4; hash4.SetHex("c73232a755bf015f22eaa611b283ff38100f2a23fb6222e86eca363452ba0c51"); - CClaimTrie master(false, 2, 1); { - CClaimTrieCacheTest ntState(&master); + CClaimTrieCacheTest ntState(pclaimTrie); ntState.insertClaimIntoTrie(std::string("test"), CClaimValue(tx1OutPoint, {}, 50, 0, 0)); ntState.insertClaimIntoTrie(std::string("test2"), CClaimValue(tx2OutPoint, {}, 50, 0, 0)); - BOOST_CHECK(master.empty()); + BOOST_CHECK(pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState.getTotalClaimsInTrie(), 2U); BOOST_CHECK_EQUAL(ntState.getMerkleHash(), hash1); @@ -128,12 +128,12 @@ BOOST_AUTO_TEST_CASE(merkle_hash_multiple_test) BOOST_CHECK_EQUAL(ntState.getMerkleHash(), hash2); ntState.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState.getMerkleHash(), hash2); BOOST_CHECK(ntState.checkConsistency()); } { - CClaimTrieCacheTest ntState1(&master); + CClaimTrieCacheTest ntState1(pclaimTrie); ntState1.removeClaimFromTrie(std::string("test"), tx1OutPoint); ntState1.removeClaimFromTrie(std::string("test2"), tx2OutPoint); ntState1.removeClaimFromTrie(std::string("test"), tx3OutPoint); @@ -142,7 +142,7 @@ BOOST_AUTO_TEST_CASE(merkle_hash_multiple_test) BOOST_CHECK_EQUAL(ntState1.getMerkleHash(), hash0); } { - CClaimTrieCacheTest ntState2(&master); + CClaimTrieCacheTest ntState2(pclaimTrie); ntState2.insertClaimIntoTrie(std::string("abab"), CClaimValue(tx6OutPoint, {}, 50, 0, 200)); ntState2.removeClaimFromTrie(std::string("test"), tx1OutPoint); @@ -150,50 +150,50 @@ BOOST_AUTO_TEST_CASE(merkle_hash_multiple_test) ntState2.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState2.getMerkleHash(), hash3); BOOST_CHECK(ntState2.checkConsistency()); } { - CClaimTrieCacheTest ntState3(&master); + CClaimTrieCacheTest ntState3(pclaimTrie); ntState3.insertClaimIntoTrie(std::string("test"), CClaimValue(tx1OutPoint, {}, 50, 0, 0)); BOOST_CHECK_EQUAL(ntState3.getMerkleHash(), hash4); ntState3.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState3.getMerkleHash(), hash4); BOOST_CHECK(ntState3.checkConsistency()); } { - CClaimTrieCacheTest ntState4(&master); + CClaimTrieCacheTest ntState4(pclaimTrie); ntState4.removeClaimFromTrie(std::string("abab"), tx6OutPoint); BOOST_CHECK_EQUAL(ntState4.getMerkleHash(), hash2); ntState4.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState4.getMerkleHash(), hash2); BOOST_CHECK(ntState4.checkConsistency()); } { - CClaimTrieCacheTest ntState5(&master); + CClaimTrieCacheTest ntState5(pclaimTrie); ntState5.removeClaimFromTrie(std::string("test"), tx3OutPoint); BOOST_CHECK_EQUAL(ntState5.getMerkleHash(), hash2); ntState5.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState5.getMerkleHash(), hash2); BOOST_CHECK(ntState5.checkConsistency()); } { - CClaimTrieCacheTest ntState6(&master); + CClaimTrieCacheTest ntState6(pclaimTrie); ntState6.insertClaimIntoTrie(std::string("test"), CClaimValue(tx3OutPoint, {}, 50, 1, 1)); BOOST_CHECK_EQUAL(ntState6.getMerkleHash(), hash2); ntState6.flush(); - BOOST_CHECK(!master.empty()); + BOOST_CHECK(!pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState6.getMerkleHash(), hash2); BOOST_CHECK(ntState6.checkConsistency()); } { - CClaimTrieCacheTest ntState7(&master); + CClaimTrieCacheTest ntState7(pclaimTrie); ntState7.removeClaimFromTrie(std::string("test"), tx3OutPoint); ntState7.removeClaimFromTrie(std::string("test"), tx1OutPoint); ntState7.removeClaimFromTrie(std::string("tes"), tx4OutPoint); @@ -201,7 +201,7 @@ BOOST_AUTO_TEST_CASE(merkle_hash_multiple_test) BOOST_CHECK_EQUAL(ntState7.getMerkleHash(), hash0); ntState7.flush(); - BOOST_CHECK(master.empty()); + BOOST_CHECK(pclaimTrie->empty()); BOOST_CHECK_EQUAL(ntState7.getMerkleHash(), hash0); BOOST_CHECK(ntState7.checkConsistency()); }