diff options
Diffstat (limited to 'searchlib/src/tests/diskindex/fusion/fusion_test.cpp')
-rw-r--r-- | searchlib/src/tests/diskindex/fusion/fusion_test.cpp | 28 |
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(); } |