diff options
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.cpp | 56 |
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) |