summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp')
-rw-r--r--searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp122
1 files changed, 55 insertions, 67 deletions
diff --git a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
index 6eaa1bd373a..7e13f99d7b3 100644
--- a/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
+++ b/searchcore/src/tests/proton/documentdb/maintenancecontroller/maintenancecontroller_test.cpp
@@ -104,7 +104,7 @@ public:
Document::UP
getDocument(DocumentIdT lid) const
{
- DocMap::const_iterator it(_docs.find(lid));
+ auto it(_docs.find(lid));
if (it != _docs.end()) {
return Document::UP(it->second->clone());
} else {
@@ -133,7 +133,7 @@ MyDocumentSubDB::MyDocumentSubDB(uint32_t subDBId, SubDbType subDbType, const st
: _docs(),
_subDBId(subDBId),
_metaStoreSP(std::make_shared<DocumentMetaStore>(
- bucketDB, DocumentMetaStore::getFixedName(), search::GrowStrategy(),
+ std::move(bucketDB), DocumentMetaStore::getFixedName(), search::GrowStrategy(),
DocumentMetaStore::IGidCompare::SP(new DocumentMetaStore::DefaultGidCompare), subDbType)),
_metaStore(*_metaStoreSP),
_repo(repo),
@@ -141,42 +141,42 @@ MyDocumentSubDB::MyDocumentSubDB(uint32_t subDBId, SubDbType subDbType, const st
{
_metaStore.constructFreeList();
}
-MyDocumentSubDB::~MyDocumentSubDB() {}
+MyDocumentSubDB::~MyDocumentSubDB() = default;
struct MyDocumentRetriever : public DocumentRetrieverBaseForTest
{
MyDocumentSubDB &_subDB;
- MyDocumentRetriever(MyDocumentSubDB &subDB)
+ explicit MyDocumentRetriever(MyDocumentSubDB &subDB)
: _subDB(subDB)
{
}
- virtual const document::DocumentTypeRepo &
+ const document::DocumentTypeRepo &
getDocumentTypeRepo() const override
{
LOG_ABORT("should not be reached");
}
- virtual void
+ void
getBucketMetaData(const storage::spi::Bucket &,
DocumentMetaData::Vector &) const override
{
LOG_ABORT("should not be reached");
}
- virtual DocumentMetaData
+ DocumentMetaData
getDocumentMetaData(const DocumentId &) const override
{
return DocumentMetaData();
}
- virtual Document::UP
+ Document::UP
getDocument(DocumentIdT lid) const override
{
return _subDB.getDocument(lid);
}
- virtual CachedSelect::SP
+ CachedSelect::SP
parseSelect(const vespalib::string &) const override
{
return CachedSelect::SP();
@@ -187,7 +187,7 @@ struct MyDocumentRetriever : public DocumentRetrieverBaseForTest
struct MyBucketModifiedHandler : public IBucketModifiedHandler
{
BucketIdVector _modified;
- virtual void notifyBucketModified(const BucketId &bucket) override {
+ void notifyBucketModified(const BucketId &bucket) override {
BucketIdVector::const_iterator itr = std::find(_modified.begin(), _modified.end(), bucket);
if (itr == _modified.end()) {
_modified.push_back(bucket);
@@ -218,17 +218,14 @@ class MyFeedHandler : public IDocumentMoveHandler,
SerialNum _serialNum;
uint32_t _heartBeats;
public:
- MyFeedHandler(FastOS_ThreadId &executorThreadId);
-
- virtual~MyFeedHandler();
-
- bool isExecutorThread();
+ explicit MyFeedHandler(FastOS_ThreadId &executorThreadId);
- virtual void handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) override;
+ ~MyFeedHandler() override;
- virtual void performPruneRemovedDocuments(PruneRemovedDocumentsOperation &op) override;
-
- virtual void heartBeat() override;
+ bool isExecutorThread() const;
+ void handleMove(MoveOperation &op, IDestructorCallback::SP moveDoneCtx) override;
+ void performPruneRemovedDocuments(PruneRemovedDocumentsOperation &op) override;
+ void heartBeat() override;
void setSubDBs(const std::vector<MyDocumentSubDB *> &subDBs);
@@ -237,9 +234,9 @@ public:
}
// Implements IOperationStorer
- virtual void storeOperation(const FeedOperation &op, DoneCallback) override;
+ void storeOperation(const FeedOperation &op, DoneCallback) override;
- uint32_t getHeartBeats() {
+ uint32_t getHeartBeats() const {
return _heartBeats;
}
};
@@ -252,7 +249,7 @@ public:
MyExecutor();
- ~MyExecutor();
+ ~MyExecutor() override;
bool isIdle();
bool waitIdle(vespalib::duration timeout);
@@ -294,7 +291,7 @@ struct MySimpleJob : public BlockableMaintenanceJob
{
}
void block() { setBlocked(BlockedReason::FROZEN_BUCKET); }
- virtual bool run() override {
+ bool run() override {
LOG(info, "MySimpleJob::run()");
_latch.countDown();
++_runCnt;
@@ -310,7 +307,7 @@ struct MySplitJob : public MySimpleJob
: MySimpleJob(delay, interval, finishCount)
{
}
- virtual bool run() override {
+ bool run() override {
LOG(info, "MySplitJob::run()");
_latch.countDown();
++_runCnt;
@@ -329,7 +326,7 @@ struct MyLongRunningJob : public BlockableMaintenanceJob
{
}
void block() { setBlocked(BlockedReason::FROZEN_BUCKET); }
- virtual bool run() override {
+ bool run() override {
_firstRun.countDown();
usleep(10000);
return false;
@@ -342,15 +339,15 @@ struct MockLidSpaceCompactionHandler : public ILidSpaceCompactionHandler
{
vespalib::string name;
- MockLidSpaceCompactionHandler(const vespalib::string &name_) : name(name_) {}
- virtual vespalib::string getName() const override { return name; }
- virtual void set_operation_listener(documentmetastore::OperationListener::SP) override {}
- virtual uint32_t getSubDbId() const override { return 0; }
- virtual search::LidUsageStats getLidStatus() const override { return search::LidUsageStats(); }
- virtual IDocumentScanIterator::UP getIterator() const override { return IDocumentScanIterator::UP(); }
- virtual MoveOperation::UP createMoveOperation(const search::DocumentMetaData &, uint32_t) const override { return MoveOperation::UP(); }
- virtual void handleMove(const MoveOperation &, IDestructorCallback::SP) override {}
- virtual void handleCompactLidSpace(const CompactLidSpaceOperation &) override {}
+ explicit MockLidSpaceCompactionHandler(const vespalib::string &name_) : name(name_) {}
+ vespalib::string getName() const override { return name; }
+ void set_operation_listener(documentmetastore::OperationListener::SP) override {}
+ uint32_t getSubDbId() const override { return 0; }
+ search::LidUsageStats getLidStatus() const override { return search::LidUsageStats(); }
+ IDocumentScanIterator::UP getIterator() const override { return IDocumentScanIterator::UP(); }
+ MoveOperation::UP createMoveOperation(const search::DocumentMetaData &, uint32_t) const override { return MoveOperation::UP(); }
+ void handleMove(const MoveOperation &, IDestructorCallback::SP) override {}
+ void handleCompactLidSpace(const CompactLidSpaceOperation &) override {}
};
@@ -385,7 +382,7 @@ public:
MaintenanceControllerFixture();
- virtual ~MaintenanceControllerFixture();
+ ~MaintenanceControllerFixture() override;
void syncSubDBs();
void commit() override { }
@@ -507,8 +504,7 @@ MyDocumentSubDB::getSubDB()
void
-MyDocumentSubDB::handlePruneRemovedDocuments(
- const PruneRemovedDocumentsOperation &op)
+MyDocumentSubDB::handlePruneRemovedDocuments(const PruneRemovedDocumentsOperation &op)
{
assert(_subDBId == 1u);
typedef LidVectorContext::LidVector LidVector;
@@ -518,10 +514,7 @@ MyDocumentSubDB::handlePruneRemovedDocuments(
_metaStore.removeBatch(lidsToRemove, lidCtx.getDocIdLimit());
_metaStore.removeBatchComplete(lidsToRemove);
_metaStore.commit(serialNum);
- for (LidVector::const_iterator it = lidsToRemove.begin(),
- ite = lidsToRemove.end();
- it != ite; ++it) {
- search::DocumentIdT lid(*it);
+ for (auto lid : lidsToRemove) {
_docs.erase(lid);
}
}
@@ -689,13 +682,11 @@ MyFeedHandler::MyFeedHandler(FastOS_ThreadId &executorThreadId)
}
-MyFeedHandler::~MyFeedHandler()
-{
-}
+MyFeedHandler::~MyFeedHandler() = default;
bool
-MyFeedHandler::isExecutorThread()
+MyFeedHandler::isExecutorThread() const
{
FastOS_ThreadId threadId(FastOS_Thread::GetCurrentThreadId());
return FastOS_Thread::CompareThreadIds(_executorThreadId, threadId);
@@ -934,10 +925,9 @@ void
MaintenanceControllerFixture::insertDocs(const test::UserDocuments &docs, MyDocumentSubDB &subDb)
{
- for (auto itr = docs.begin(); itr != docs.end(); ++itr) {
- const test::BucketDocuments &bucketDocs = itr->second;
- for (size_t i = 0; i < bucketDocs.getDocs().size(); ++i) {
- const test::Document &testDoc = bucketDocs.getDocs()[i];
+ for (const auto & entry : docs) {
+ const test::BucketDocuments &bucketDocs = entry.second;
+ for (const test::Document &testDoc : bucketDocs.getDocs()) {
PutOperation op(testDoc.getBucket(), testDoc.getTimestamp(), testDoc.getDoc());
op.setDbDocumentId(DbDocumentId(subDb.getSubDBId(), testDoc.getLid()));
_fh.storeOperation(op, std::make_shared<search::IgnoreCallback>());
@@ -948,14 +938,12 @@ MaintenanceControllerFixture::insertDocs(const test::UserDocuments &docs, MyDocu
void
-MaintenanceControllerFixture::removeDocs(const test::UserDocuments &docs,
- Timestamp timestamp)
+MaintenanceControllerFixture::removeDocs(const test::UserDocuments &docs, Timestamp timestamp)
{
- for (auto itr = docs.begin(); itr != docs.end(); ++itr) {
- const test::BucketDocuments &bucketDocs = itr->second;
- for (size_t i = 0; i < bucketDocs.getDocs().size(); ++i) {
- const test::Document &testDoc = bucketDocs.getDocs()[i];
+ for (const auto & entry : docs) {
+ const test::BucketDocuments &bucketDocs = entry.second;
+ for (const test::Document &testDoc : bucketDocs.getDocs()) {
RemoveOperationWithDocId op(testDoc.getBucket(), timestamp, testDoc.getDoc()->getId());
op.setDbDocumentId(DbDocumentId(_removed.getSubDBId(), testDoc.getLid()));
_fh.storeOperation(op, std::make_shared<search::IgnoreCallback>());
@@ -1020,7 +1008,7 @@ TEST_F("require that document pruner is active",
MaintenanceControllerFixture)
{
uint64_t tshz = 1000000;
- uint64_t now = static_cast<uint64_t>(time(0)) * tshz;
+ uint64_t now = static_cast<uint64_t>(time(nullptr)) * tshz;
Timestamp remTime(static_cast<Timestamp::Type>(now - 3600 * tshz));
Timestamp keepTime(static_cast<Timestamp::Type>(now + 3600 * tshz));
f._builder.createDocs(1, 1, 4); // 3 docs
@@ -1162,8 +1150,8 @@ TEST_F("require that active bucket is not moved until de-activated", Maintenance
TEST_F("require that a simple maintenance job is executed", MaintenanceControllerFixture)
{
- IMaintenanceJob::UP job(new MySimpleJob(200ms, 200ms, 3));
- MySimpleJob &myJob = static_cast<MySimpleJob &>(*job);
+ auto job = std::make_unique<MySimpleJob>(200ms, 200ms, 3);
+ MySimpleJob &myJob = *job;
f._mc.registerJobInMasterThread(std::move(job));
f._injectDefaultJobs = false;
f.startMaintenance();
@@ -1174,8 +1162,8 @@ TEST_F("require that a simple maintenance job is executed", MaintenanceControlle
TEST_F("require that a split maintenance job is executed", MaintenanceControllerFixture)
{
- IMaintenanceJob::UP job(new MySplitJob(200ms, TIMEOUT_SEC * 2, 3));
- MySplitJob &myJob = static_cast<MySplitJob &>(*job);
+ auto job = std::make_unique<MySplitJob>(200ms, TIMEOUT_SEC * 2, 3);
+ MySplitJob &myJob = *job;
f._mc.registerJobInMasterThread(std::move(job));
f._injectDefaultJobs = false;
f.startMaintenance();
@@ -1187,10 +1175,10 @@ TEST_F("require that a split maintenance job is executed", MaintenanceController
TEST_F("require that a blocked job is unblocked and executed after thaw bucket",
MaintenanceControllerFixture)
{
- IMaintenanceJob::UP job1(new MySimpleJob(TIMEOUT_SEC * 2, TIMEOUT_SEC * 2, 1));
- MySimpleJob &myJob1 = static_cast<MySimpleJob &>(*job1);
- IMaintenanceJob::UP job2(new MySimpleJob(TIMEOUT_SEC * 2, TIMEOUT_SEC * 2, 0));
- MySimpleJob &myJob2 = static_cast<MySimpleJob &>(*job2);
+ auto job1 = std::make_unique<MySimpleJob>(TIMEOUT_SEC * 2, TIMEOUT_SEC * 2, 1);
+ MySimpleJob &myJob1 = *job1;
+ auto job2 = std::make_unique< MySimpleJob>(TIMEOUT_SEC * 2, TIMEOUT_SEC * 2, 0);
+ MySimpleJob &myJob2 = *job2;
f._mc.registerJobInMasterThread(std::move(job1));
f._mc.registerJobInMasterThread(std::move(job2));
f._injectDefaultJobs = false;
@@ -1219,8 +1207,8 @@ TEST_F("require that a blocked job is unblocked and executed after thaw bucket",
TEST_F("require that blocked jobs are not executed", MaintenanceControllerFixture)
{
- IMaintenanceJob::UP job(new MySimpleJob(200ms, 200ms, 0));
- MySimpleJob &myJob = static_cast<MySimpleJob &>(*job);
+ auto job = std::make_unique<MySimpleJob>(200ms, 200ms, 0);
+ MySimpleJob &myJob = *job;
myJob.block();
f._mc.registerJobInMasterThread(std::move(job));
f._injectDefaultJobs = false;
@@ -1234,7 +1222,7 @@ TEST_F("require that maintenance controller state list jobs", MaintenanceControl
{
IMaintenanceJob::UP job1(new MySimpleJob(TIMEOUT_SEC * 2, TIMEOUT_SEC * 2, 0));
IMaintenanceJob::UP job2(new MyLongRunningJob(200ms, 200ms));
- MyLongRunningJob &longRunningJob = static_cast<MyLongRunningJob &>(*job2);
+ auto &longRunningJob = dynamic_cast<MyLongRunningJob &>(*job2);
f._mc.registerJobInMasterThread(std::move(job1));
f._mc.registerJobInMasterThread(std::move(job2));
f._injectDefaultJobs = false;