aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/docstore
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2017-08-04 14:47:11 +0200
committerHenning Baldersheim <balder@yahoo-inc.com>2017-08-04 14:47:11 +0200
commit7ec911ecb9dac0966ed3c4f70d6545002f589c1a (patch)
treecf3de077b2efeb04ae21845ba52b5646dbb8c09c /searchlib/src/tests/docstore
parentbd032a4734d39a7d6b91a4455694d692eb0a11fe (diff)
Clean up incompletely compacted files at startup.
Diffstat (limited to 'searchlib/src/tests/docstore')
-rw-r--r--searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
index 57763b931f5..18b9886167c 100644
--- a/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
+++ b/searchlib/src/tests/docstore/logdatastore/logdatastore_test.cpp
@@ -953,6 +953,30 @@ TEST_F("require that lid space can be shrunk only after read guards are deleted"
EXPECT_EQUAL(8u, f.store.getEstimatedShrinkLidSpaceGain());
}
+LogDataStore::NameIdSet create(std::vector<size_t> list) {
+ LogDataStore::NameIdSet l;
+ for (size_t id : list) {
+ l.emplace(id);
+ }
+ return l;
+}
+
+TEST("require that findIncompleteCompactedFiles does expected filtering") {
+ EXPECT_TRUE(LogDataStore::findIncompleteCompactedFiles(create({1,3,100,200,202,204})).empty());
+ LogDataStore::NameIdSet toRemove = LogDataStore::findIncompleteCompactedFiles(create({1,3,100,200,201,204}));
+ EXPECT_EQUAL(1u, toRemove.size());
+ EXPECT_TRUE(toRemove.find(FileChunk::NameId(201)) != toRemove.end());
+ toRemove = LogDataStore::findIncompleteCompactedFiles(create({1,2,4,100,200,201,204,205}));
+ EXPECT_EQUAL(3u, toRemove.size());
+ EXPECT_TRUE(toRemove.find(FileChunk::NameId(2)) != toRemove.end());
+ EXPECT_TRUE(toRemove.find(FileChunk::NameId(201)) != toRemove.end());
+ EXPECT_TRUE(toRemove.find(FileChunk::NameId(205)) != toRemove.end());
+
+ EXPECT_EXCEPTION(LogDataStore::findIncompleteCompactedFiles(create({1,3,100,200,201,202,204})).empty(),
+ vespalib::IllegalStateException, "3 consecutive files {200, 201, 202}. Impossible");
+
+}
+
TEST_MAIN() {
DummyFileHeaderContext::setCreator("logdatastore_test");
TEST_RUN_ALL();