summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/persistence/mergehandlertest.cpp
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2020-10-19 21:00:48 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2020-10-19 21:06:59 +0000
commit6d2863fd9c341d3f576336d87198568933e8c364 (patch)
treebbba9f2485fc4051e7e4434c851a3f84a8775334 /storage/src/tests/persistence/mergehandlertest.cpp
parent39f3f74d601087495a58628cce89587aae698adb (diff)
Further reduce the semi global tentacles.
Diffstat (limited to 'storage/src/tests/persistence/mergehandlertest.cpp')
-rw-r--r--storage/src/tests/persistence/mergehandlertest.cpp46
1 files changed, 28 insertions, 18 deletions
diff --git a/storage/src/tests/persistence/mergehandlertest.cpp b/storage/src/tests/persistence/mergehandlertest.cpp
index 40b0d8eb2ba..8cf9a7ac661 100644
--- a/storage/src/tests/persistence/mergehandlertest.cpp
+++ b/storage/src/tests/persistence/mergehandlertest.cpp
@@ -154,6 +154,15 @@ struct MergeHandlerTest : SingleDiskPersistenceTestUtils {
PersistenceProviderWrapper& providerWrapper,
HandlerInvoker& invoker,
const ExpectedExceptionSpec& spec);
+
+ MergeHandler createHandler(size_t maxChunkSize = 0x400000) {
+ return MergeHandler(getEnv(), getPersistenceProvider(),
+ getEnv()._component.getClusterName(), getEnv()._component.getClock(), maxChunkSize);
+ }
+ MergeHandler createHandler(spi::PersistenceProvider & spi) {
+ return MergeHandler(getEnv(), spi,
+ getEnv()._component.getClusterName(), getEnv()._component.getClock());
+ }
};
MergeHandlerTest::HandleGetBucketDiffReplyInvoker::HandleGetBucketDiffReplyInvoker() = default;
@@ -199,7 +208,8 @@ MergeHandlerTest::setUpChain(ChainPos pos) {
// Test a regular merge bucket command fetching data, including
// puts, removes, unrevertable removes & duplicates.
TEST_F(MergeHandlerTest, merge_bucket_command) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler(getEnv(), getPersistenceProvider(),
+ getEnv()._component.getClusterName(), getEnv()._component.getClock());
LOG(debug, "Handle a merge bucket command");
auto cmd = std::make_shared<api::MergeBucketCommand>(_bucket, _nodes, _maxTimestamp);
@@ -224,7 +234,7 @@ void
MergeHandlerTest::testGetBucketDiffChain(bool midChain)
{
setUpChain(midChain ? MIDDLE : BACK);
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
LOG(debug, "Verifying that get bucket diff is sent on");
auto cmd = std::make_shared<api::GetBucketDiffCommand>(_bucket, _nodes, _maxTimestamp);
@@ -273,7 +283,7 @@ void
MergeHandlerTest::testApplyBucketDiffChain(bool midChain)
{
setUpChain(midChain ? MIDDLE : BACK);
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
LOG(debug, "Verifying that apply bucket diff is sent on");
auto cmd = std::make_shared<api::ApplyBucketDiffCommand>(_bucket, _nodes, _maxTimestamp);
@@ -320,7 +330,7 @@ TEST_F(MergeHandlerTest, apply_bucket_diff_end_of_chain) {
// Test that a simplistic merge with one thing to actually merge,
// sends correct commands and finish.
TEST_F(MergeHandlerTest, master_message_flow) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
LOG(debug, "Handle a merge bucket command");
auto cmd = std::make_shared<api::MergeBucketCommand>(_bucket, _nodes, _maxTimestamp);
@@ -421,7 +431,7 @@ TEST_F(MergeHandlerTest, chunked_apply_bucket_diff) {
doPut(1234, spi::Timestamp(4000 + i), docSize, docSize);
}
- MergeHandler handler(getEnv(), getPersistenceProvider(), maxChunkSize);
+ MergeHandler handler = createHandler(maxChunkSize);
LOG(debug, "Handle a merge bucket command");
auto cmd = std::make_shared<api::MergeBucketCommand>(_bucket, _nodes, _maxTimestamp);
@@ -504,7 +514,7 @@ TEST_F(MergeHandlerTest, chunk_limit_partially_filled_diff) {
auto applyBucketDiffCmd = std::make_shared<api::ApplyBucketDiffCommand>(_bucket, _nodes, maxChunkSize);
applyBucketDiffCmd->getDiff() = applyDiff;
- MergeHandler handler(getEnv(), getPersistenceProvider(), maxChunkSize);
+ MergeHandler handler = createHandler(maxChunkSize);
handler.handleApplyBucketDiff(*applyBucketDiffCmd, createTracker(applyBucketDiffCmd, _bucket));
auto fwdDiffCmd = fetchSingleMessage<api::ApplyBucketDiffCommand>();
@@ -516,7 +526,7 @@ TEST_F(MergeHandlerTest, chunk_limit_partially_filled_diff) {
TEST_F(MergeHandlerTest, max_timestamp) {
doPut(1234, spi::Timestamp(_maxTimestamp + 10), 1024, 1024);
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
auto cmd = std::make_shared<api::MergeBucketCommand>(_bucket, _nodes, _maxTimestamp);
handler.handleMergeBucket(*cmd, createTracker(cmd, _bucket));
@@ -624,7 +634,7 @@ MergeHandlerTest::createDummyGetBucketDiff(int timestampOffset,
TEST_F(MergeHandlerTest, spi_flush_guard) {
PersistenceProviderWrapper providerWrapper(getPersistenceProvider());
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(
spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
@@ -644,7 +654,7 @@ TEST_F(MergeHandlerTest, spi_flush_guard) {
}
TEST_F(MergeHandlerTest, bucket_not_found_in_db) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
// Send merge for unknown bucket
auto cmd = std::make_shared<api::MergeBucketCommand>(makeDocumentBucket(document::BucketId(16, 6789)), _nodes, _maxTimestamp);
MessageTracker::UP tracker = handler.handleMergeBucket(*cmd, createTracker(cmd, _bucket));
@@ -652,7 +662,7 @@ TEST_F(MergeHandlerTest, bucket_not_found_in_db) {
}
TEST_F(MergeHandlerTest, merge_progress_safe_guard) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
auto cmd = std::make_shared<api::MergeBucketCommand>(_bucket, _nodes, _maxTimestamp);
handler.handleMergeBucket(*cmd, createTracker(cmd, _bucket));
@@ -675,7 +685,7 @@ TEST_F(MergeHandlerTest, merge_progress_safe_guard) {
}
TEST_F(MergeHandlerTest, safe_guard_not_invoked_when_has_mask_changes) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
_nodes.clear();
_nodes.emplace_back(0, false);
_nodes.emplace_back(1, false);
@@ -707,7 +717,7 @@ TEST_F(MergeHandlerTest, safe_guard_not_invoked_when_has_mask_changes) {
}
TEST_F(MergeHandlerTest, entry_removed_after_get_bucket_diff) {
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
std::vector<api::ApplyBucketDiffCommand::Entry> applyDiff;
{
api::ApplyBucketDiffCommand::Entry e;
@@ -815,7 +825,7 @@ MergeHandlerTest::HandleMergeBucketInvoker::invoke(
TEST_F(MergeHandlerTest, merge_bucket_spi_failures) {
PersistenceProviderWrapper providerWrapper(getPersistenceProvider());
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(
spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
setUpChain(MIDDLE);
@@ -847,7 +857,7 @@ MergeHandlerTest::HandleGetBucketDiffInvoker::invoke(
TEST_F(MergeHandlerTest, get_bucket_diff_spi_failures) {
PersistenceProviderWrapper providerWrapper(getPersistenceProvider());
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
setUpChain(MIDDLE);
@@ -880,7 +890,7 @@ MergeHandlerTest::HandleApplyBucketDiffInvoker::invoke(
TEST_F(MergeHandlerTest, apply_bucket_diff_spi_failures) {
PersistenceProviderWrapper providerWrapper(getPersistenceProvider());
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(
spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
setUpChain(MIDDLE);
@@ -945,7 +955,7 @@ MergeHandlerTest::HandleGetBucketDiffReplyInvoker::afterInvoke(
TEST_F(MergeHandlerTest, get_bucket_diff_reply_spi_failures) {
PersistenceProviderWrapper providerWrapper(getPersistenceProvider());
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(
spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
HandleGetBucketDiffReplyInvoker invoker;
@@ -1036,7 +1046,7 @@ TEST_F(MergeHandlerTest, apply_bucket_diff_reply_spi_failures) {
ChainPos pos(i == 0 ? FRONT : MIDDLE);
setUpChain(pos);
invoker.setChainPos(pos);
- MergeHandler handler(getEnv(), providerWrapper);
+ MergeHandler handler = createHandler(providerWrapper);
providerWrapper.setResult(
spi::Result(spi::Result::ErrorType::PERMANENT_ERROR, "who you gonna call?"));
@@ -1128,7 +1138,7 @@ TEST_F(MergeHandlerTest, remove_put_on_existing_timestamp) {
spi::Timestamp ts(10111);
doPut(doc, ts);
- MergeHandler handler(getEnv(), getPersistenceProvider());
+ MergeHandler handler = createHandler();
std::vector<api::ApplyBucketDiffCommand::Entry> applyDiff;
{
api::ApplyBucketDiffCommand::Entry e;