aboutsummaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'searchlib/src/tests/diskindex/fusion/fusion_test.cpp')
-rw-r--r--searchlib/src/tests/diskindex/fusion/fusion_test.cpp28
1 files changed, 19 insertions, 9 deletions
diff --git a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
index ccc5e8cbade..72867edf474 100644
--- a/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
+++ b/searchlib/src/tests/diskindex/fusion/fusion_test.cpp
@@ -24,7 +24,7 @@
#include <vespa/vespalib/util/destructor_callbacks.h>
#include <vespa/vespalib/util/threadstackexecutor.h>
#include <vespa/vespalib/util/sequencedtaskexecutor.h>
-#include <gtest/gtest.h>
+#include <vespa/vespalib/gtest/gtest.h>
#include <vespa/log/log.h>
LOG_SETUP("fusion_test");
@@ -65,7 +65,7 @@ protected:
Schema _schema;
const Schema & getSchema() const { return _schema; }
- void requireThatFusionIsWorking(const vespalib::string &prefix, bool directio, bool readmmap);
+ void requireThatFusionIsWorking(const vespalib::string &prefix, bool directio, bool readmmap, bool force_short_merge_chunk);
void make_simple_index(const vespalib::string &dump_dir, const IFieldLengthInspector &field_length_inspector);
bool try_merge_simple_indexes(const vespalib::string &dump_dir, const std::vector<vespalib::string> &sources, std::shared_ptr<IFlushToken> flush_token);
void merge_simple_indexes(const vespalib::string &dump_dir, const std::vector<vespalib::string> &sources);
@@ -292,7 +292,7 @@ VESPA_THREAD_STACK_TAG(invert_executor)
VESPA_THREAD_STACK_TAG(push_executor)
void
-FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool directio, bool readmmap)
+FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool directio, bool readmmap, bool force_small_merge_chunk)
{
Schema schema;
Schema schema2;
@@ -393,6 +393,7 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
sources.push_back(prefix + "dump2");
Fusion fusion(schema, prefix + "dump3", sources, selector,
tuneFileIndexing,fileHeaderContext);
+ fusion.set_force_small_merge_chunk(force_small_merge_chunk);
ASSERT_TRUE(fusion.merge(executor, std::make_shared<FlushToken>()));
} while (0);
do {
@@ -406,6 +407,7 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
sources.push_back(prefix + "dump3");
Fusion fusion(schema2, prefix + "dump4", sources, selector,
tuneFileIndexing, fileHeaderContext);
+ fusion.set_force_small_merge_chunk(force_small_merge_chunk);
ASSERT_TRUE(fusion.merge(executor, std::make_shared<FlushToken>()));
} while (0);
do {
@@ -419,6 +421,7 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
sources.push_back(prefix + "dump3");
Fusion fusion(schema3, prefix + "dump5", sources, selector,
tuneFileIndexing, fileHeaderContext);
+ fusion.set_force_small_merge_chunk(force_small_merge_chunk);
ASSERT_TRUE(fusion.merge(executor, std::make_shared<FlushToken>()));
} while (0);
do {
@@ -433,6 +436,7 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
Fusion fusion(schema, prefix + "dump6", sources, selector,
tuneFileIndexing, fileHeaderContext);
fusion.set_dynamic_k_pos_index_format(true);
+ fusion.set_force_small_merge_chunk(force_small_merge_chunk);
ASSERT_TRUE(fusion.merge(executor, std::make_shared<FlushToken>()));
} while (0);
do {
@@ -446,6 +450,7 @@ FusionTest::requireThatFusionIsWorking(const vespalib::string &prefix, bool dire
sources.push_back(prefix + "dump2");
Fusion fusion(schema, prefix + "dump3", sources, selector,
tuneFileIndexing, fileHeaderContext);
+ fusion.set_force_small_merge_chunk(force_small_merge_chunk);
ASSERT_TRUE(fusion.merge(executor, std::make_shared<FlushToken>()));
} while (0);
do {
@@ -506,22 +511,27 @@ FusionTest::FusionTest()
TEST_F(FusionTest, require_that_normal_fusion_is_working)
{
- requireThatFusionIsWorking("", false, false);
+ requireThatFusionIsWorking("", false, false, false);
}
TEST_F(FusionTest, require_that_directio_fusion_is_working)
{
- requireThatFusionIsWorking("d", true, false);
+ requireThatFusionIsWorking("d", true, false, false);
}
TEST_F(FusionTest, require_that_mmap_fusion_is_working)
{
- requireThatFusionIsWorking("m", false, true);
+ requireThatFusionIsWorking("m", false, true, false);
}
TEST_F(FusionTest, require_that_directiommap_fusion_is_working)
{
- requireThatFusionIsWorking("dm", true, true);
+ requireThatFusionIsWorking("dm", true, true, false);
+}
+
+TEST_F(FusionTest, require_that_small_merge_chunk_fusion_is_working)
+{
+ requireThatFusionIsWorking("s", false, false, true);
}
namespace {
@@ -608,11 +618,11 @@ TEST_F(FusionTest, require_that_fusion_can_be_stopped)
vespalib::rmdir("stopdump3", true);
flush_token = std::make_shared<MyFlushToken>(1);
ASSERT_FALSE(try_merge_simple_indexes("stopdump3", {"stopdump2"}, flush_token));
- EXPECT_EQ(12, flush_token->get_checks());
+ EXPECT_EQ(8, flush_token->get_checks());
vespalib::rmdir("stopdump3", true);
flush_token = std::make_shared<MyFlushToken>(47);
ASSERT_FALSE(try_merge_simple_indexes("stopdump3", {"stopdump2"}, flush_token));
- EXPECT_LT(48, flush_token->get_checks());
+ EXPECT_LE(48, flush_token->get_checks());
clean_stopped_fusion_testdirs();
}