Changeset View
Changeset View
Standalone View
Standalone View
src/test/blockencodings_tests.cpp
Show First 20 Lines • Show All 183 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(NonCoinbasePreforwardRTTest) { | ||||
CBlock block(BuildBlockTestCase()); | CBlock block(BuildBlockTestCase()); | ||||
LOCK2(cs_main, pool.cs); | LOCK2(cs_main, pool.cs); | ||||
pool.addUnchecked(block.vtx[2]->GetId(), entry.FromTx(block.vtx[2])); | pool.addUnchecked(block.vtx[2]->GetId(), entry.FromTx(block.vtx[2])); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
pool.mapTx.find(block.vtx[2]->GetId())->GetSharedTx().use_count(), | pool.mapTx.find(block.vtx[2]->GetId())->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET + 0); | SHARED_TX_OFFSET + 0); | ||||
uint256 txhash; | TxId txid; | ||||
// Test with pre-forwarding tx 1, but not coinbase | // Test with pre-forwarding tx 1, but not coinbase | ||||
{ | { | ||||
TestHeaderAndShortIDs shortIDs(block); | TestHeaderAndShortIDs shortIDs(block); | ||||
shortIDs.prefilledtxn.resize(1); | shortIDs.prefilledtxn.resize(1); | ||||
shortIDs.prefilledtxn[0] = {1, block.vtx[1]}; | shortIDs.prefilledtxn[0] = {1, block.vtx[1]}; | ||||
shortIDs.shorttxids.resize(2); | shortIDs.shorttxids.resize(2); | ||||
shortIDs.shorttxids[0] = shortIDs.GetShortID(block.vtx[0]->GetId()); | shortIDs.shorttxids[0] = shortIDs.GetShortID(block.vtx[0]->GetId()); | ||||
▲ Show 20 Lines • Show All 52 Lines • ▼ Show 20 Lines | // Test with pre-forwarding tx 1, but not coinbase | ||||
BlockMerkleRoot(block3, &mutated).ToString()); | BlockMerkleRoot(block3, &mutated).ToString()); | ||||
BOOST_CHECK(!mutated); | BOOST_CHECK(!mutated); | ||||
// +3 because of partialBlock and block2 and block3 | // +3 because of partialBlock and block2 and block3 | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
pool.mapTx.find(block.vtx[2]->GetId())->GetSharedTx().use_count(), | pool.mapTx.find(block.vtx[2]->GetId())->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET + 3); | SHARED_TX_OFFSET + 3); | ||||
txhash = block.vtx[2]->GetId(); | txid = block.vtx[2]->GetId(); | ||||
block.vtx.clear(); | block.vtx.clear(); | ||||
block2.vtx.clear(); | block2.vtx.clear(); | ||||
block3.vtx.clear(); | block3.vtx.clear(); | ||||
// + 1 because of partialBlock; -1 because of block. | // + 1 because of partialBlock; -1 because of block. | ||||
BOOST_CHECK_EQUAL(pool.mapTx.find(txhash)->GetSharedTx().use_count(), | BOOST_CHECK_EQUAL(pool.mapTx.find(txid)->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET + 1 - 1); | SHARED_TX_OFFSET + 1 - 1); | ||||
} | } | ||||
// -1 because of block | // -1 because of block | ||||
BOOST_CHECK_EQUAL(pool.mapTx.find(txhash)->GetSharedTx().use_count(), | BOOST_CHECK_EQUAL(pool.mapTx.find(txid)->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET - 1); | SHARED_TX_OFFSET - 1); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(SufficientPreforwardRTTest) { | BOOST_AUTO_TEST_CASE(SufficientPreforwardRTTest) { | ||||
CTxMemPool pool; | CTxMemPool pool; | ||||
TestMemPoolEntryHelper entry; | TestMemPoolEntryHelper entry; | ||||
CBlock block(BuildBlockTestCase()); | CBlock block(BuildBlockTestCase()); | ||||
LOCK2(cs_main, pool.cs); | LOCK2(cs_main, pool.cs); | ||||
pool.addUnchecked(block.vtx[1]->GetId(), entry.FromTx(block.vtx[1])); | pool.addUnchecked(block.vtx[1]->GetId(), entry.FromTx(block.vtx[1])); | ||||
BOOST_CHECK_EQUAL( | BOOST_CHECK_EQUAL( | ||||
pool.mapTx.find(block.vtx[1]->GetId())->GetSharedTx().use_count(), | pool.mapTx.find(block.vtx[1]->GetId())->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET + 0); | SHARED_TX_OFFSET + 0); | ||||
uint256 txhash; | TxId txid; | ||||
// Test with pre-forwarding coinbase + tx 2 with tx 1 in mempool | // Test with pre-forwarding coinbase + tx 2 with tx 1 in mempool | ||||
{ | { | ||||
TestHeaderAndShortIDs shortIDs(block); | TestHeaderAndShortIDs shortIDs(block); | ||||
shortIDs.prefilledtxn.resize(2); | shortIDs.prefilledtxn.resize(2); | ||||
shortIDs.prefilledtxn[0] = {0, block.vtx[0]}; | shortIDs.prefilledtxn[0] = {0, block.vtx[0]}; | ||||
// id == 1 as it is 1 after index 1 | // id == 1 as it is 1 after index 1 | ||||
shortIDs.prefilledtxn[1] = {1, block.vtx[2]}; | shortIDs.prefilledtxn[1] = {1, block.vtx[2]}; | ||||
Show All 22 Lines | // Test with pre-forwarding coinbase + tx 2 with tx 1 in mempool | ||||
BOOST_CHECK(partialBlock.FillBlock(block2, {}) == READ_STATUS_OK); | BOOST_CHECK(partialBlock.FillBlock(block2, {}) == READ_STATUS_OK); | ||||
BOOST_CHECK_EQUAL(block.GetHash().ToString(), | BOOST_CHECK_EQUAL(block.GetHash().ToString(), | ||||
block2.GetHash().ToString()); | block2.GetHash().ToString()); | ||||
bool mutated; | bool mutated; | ||||
BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), | BOOST_CHECK_EQUAL(block.hashMerkleRoot.ToString(), | ||||
BlockMerkleRoot(block2, &mutated).ToString()); | BlockMerkleRoot(block2, &mutated).ToString()); | ||||
BOOST_CHECK(!mutated); | BOOST_CHECK(!mutated); | ||||
txhash = block.vtx[1]->GetId(); | txid = block.vtx[1]->GetId(); | ||||
block.vtx.clear(); | block.vtx.clear(); | ||||
block2.vtx.clear(); | block2.vtx.clear(); | ||||
// + 1 because of partialBlock; -1 because of block. | // + 1 because of partialBlock; -1 because of block. | ||||
BOOST_CHECK_EQUAL(pool.mapTx.find(txhash)->GetSharedTx().use_count(), | BOOST_CHECK_EQUAL(pool.mapTx.find(txid)->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET + 1 - 1); | SHARED_TX_OFFSET + 1 - 1); | ||||
} | } | ||||
// -1 because of block | // -1 because of block | ||||
BOOST_CHECK_EQUAL(pool.mapTx.find(txhash)->GetSharedTx().use_count(), | BOOST_CHECK_EQUAL(pool.mapTx.find(txid)->GetSharedTx().use_count(), | ||||
SHARED_TX_OFFSET - 1); | SHARED_TX_OFFSET - 1); | ||||
} | } | ||||
BOOST_AUTO_TEST_CASE(EmptyBlockRoundTripTest) { | BOOST_AUTO_TEST_CASE(EmptyBlockRoundTripTest) { | ||||
CTxMemPool pool; | CTxMemPool pool; | ||||
CMutableTransaction coinbase; | CMutableTransaction coinbase; | ||||
coinbase.vin.resize(1); | coinbase.vin.resize(1); | ||||
coinbase.vin[0].scriptSig.resize(10); | coinbase.vin[0].scriptSig.resize(10); | ||||
▲ Show 20 Lines • Show All 71 Lines • Show Last 20 Lines |