summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp')
-rw-r--r--searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp56
1 files changed, 55 insertions, 1 deletions
diff --git a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
index 60d5f57ac8c..5e42231d866 100644
--- a/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/document_subdbs/document_subdbs_test.cpp
@@ -305,7 +305,7 @@ struct FixtureBase
_bucketDBHandler(*_bucketDB),
_ctx(_writeService, _bucketDB, _bucketDBHandler),
_baseSchema(),
- _snapshot(new MyConfigSnapshot(_baseSchema, Traits::ConfigDir::dir())),
+ _snapshot(std::make_unique<MyConfigSnapshot>(_baseSchema, Traits::ConfigDir::dir())),
_baseDir(BASE_DIR + "/" + SUB_NAME, BASE_DIR),
_subDb(_cfg._cfg, _ctx._ctx),
_tmpFeedView()
@@ -557,6 +557,60 @@ TEST_F("require that attribute manager can be reconfigured", SearchableFixture)
requireThatAttributeManagerCanBeReconfigured(f);
}
+TEST_F("require that subdb reflect retirement", FastAccessFixture)
+{
+ search::CompactionStrategy cfg(0.1, 0.3);
+
+ EXPECT_FALSE(f._subDb.isNodeRetired());
+ auto unretired_cfg = f._subDb.computeCompactionStrategy(cfg);
+ EXPECT_TRUE(cfg == unretired_cfg);
+
+ auto calc = std::make_shared<proton::test::BucketStateCalculator>();
+ calc->setNodeRetired(true);
+ f._subDb.setBucketStateCalculator(calc);
+ EXPECT_TRUE(f._subDb.isNodeRetired());
+ auto retired_cfg = f._subDb.computeCompactionStrategy(cfg);
+ EXPECT_TRUE(cfg != retired_cfg);
+ EXPECT_TRUE(search::CompactionStrategy(0.5, 0.5) == retired_cfg);
+
+ calc->setNodeRetired(false);
+ f._subDb.setBucketStateCalculator(calc);
+ EXPECT_FALSE(f._subDb.isNodeRetired());
+ unretired_cfg = f._subDb.computeCompactionStrategy(cfg);
+ EXPECT_TRUE(cfg == unretired_cfg);
+}
+
+TEST_F("require that attribute compaction config reflect retirement", FastAccessFixture) {
+ search::CompactionStrategy default_cfg(0.05, 0.2);
+ search::CompactionStrategy retired_cfg(0.5, 0.5);
+
+ auto guard = f._subDb.getAttributeManager()->getAttribute("attr1");
+ EXPECT_EQUAL(default_cfg, (*guard)->getConfig().getCompactionStrategy());
+ EXPECT_EQUAL(default_cfg, dynamic_cast<const proton::DocumentMetaStore &>(f._subDb.getDocumentMetaStoreContext().get()).getConfig().getCompactionStrategy());
+
+ auto calc = std::make_shared<proton::test::BucketStateCalculator>();
+ calc->setNodeRetired(true);
+ f._subDb.setBucketStateCalculator(calc);
+ f._writeService.sync();
+ guard = f._subDb.getAttributeManager()->getAttribute("attr1");
+ EXPECT_EQUAL(retired_cfg, (*guard)->getConfig().getCompactionStrategy());
+ EXPECT_EQUAL(retired_cfg, dynamic_cast<const proton::DocumentMetaStore &>(f._subDb.getDocumentMetaStoreContext().get()).getConfig().getCompactionStrategy());
+
+ f.basicReconfig(10);
+ f._writeService.sync();
+ guard = f._subDb.getAttributeManager()->getAttribute("attr1");
+ EXPECT_EQUAL(retired_cfg, (*guard)->getConfig().getCompactionStrategy());
+ EXPECT_EQUAL(retired_cfg, dynamic_cast<const proton::DocumentMetaStore &>(f._subDb.getDocumentMetaStoreContext().get()).getConfig().getCompactionStrategy());
+
+ calc->setNodeRetired(false);
+ f._subDb.setBucketStateCalculator(calc);
+ f._writeService.sync();
+ guard = f._subDb.getAttributeManager()->getAttribute("attr1");
+ EXPECT_EQUAL(default_cfg, (*guard)->getConfig().getCompactionStrategy());
+ EXPECT_EQUAL(default_cfg, dynamic_cast<const proton::DocumentMetaStore &>(f._subDb.getDocumentMetaStoreContext().get()).getConfig().getCompactionStrategy());
+
+}
+
template <typename Fixture>
void
requireThatReconfiguredAttributesAreAccessibleViaFeedView(Fixture &f)