diff options
author | Geir Storli <geirst@yahooinc.com> | 2021-11-29 12:56:46 +0000 |
---|---|---|
committer | Geir Storli <geirst@yahooinc.com> | 2021-11-29 12:56:46 +0000 |
commit | 18ba82682f0a9588f92f911ea4774d44d484f589 (patch) | |
tree | 5b86852de461dc3fecfec0ab378d8db6e1152c8d /searchcore/src/tests/proton/documentdb/executor_threading_service | |
parent | 3c4983f0109da80fefc643e43d12798ccf38fb80 (diff) |
Add support for using a shared field writer executor among all document dbs.
This is currently controlled with a feature flag setting a proton config to turn it on.
Diffstat (limited to 'searchcore/src/tests/proton/documentdb/executor_threading_service')
-rw-r--r-- | searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp b/searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp index 32707f8a69f..4629ebec854 100644 --- a/searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp +++ b/searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp @@ -10,6 +10,7 @@ using vespalib::ISequencedTaskExecutor; using vespalib::SequencedTaskExecutor; using SharedFieldWriterExecutor = ThreadingServiceConfig::SharedFieldWriterExecutor; +VESPA_THREAD_STACK_TAG(my_field_writer_executor) SequencedTaskExecutor* to_concrete_type(ISequencedTaskExecutor& exec) @@ -20,14 +21,17 @@ to_concrete_type(ISequencedTaskExecutor& exec) class ExecutorThreadingServiceTest : public ::testing::Test { public: vespalib::ThreadStackExecutor shared_executor; + std::unique_ptr<ISequencedTaskExecutor> field_writer_executor; std::unique_ptr<ExecutorThreadingService> service; ExecutorThreadingServiceTest() : shared_executor(1, 1000), + field_writer_executor(SequencedTaskExecutor::create(my_field_writer_executor, 3, 200)), service() { } void setup(uint32_t indexing_threads, SharedFieldWriterExecutor shared_field_writer) { service = std::make_unique<ExecutorThreadingService>(shared_executor, + field_writer_executor.get(), ThreadingServiceConfig::make(indexing_threads, shared_field_writer)); } SequencedTaskExecutor* index_inverter() { @@ -39,6 +43,9 @@ public: SequencedTaskExecutor* attribute_writer() { return to_concrete_type(service->attributeFieldWriter()); } + SequencedTaskExecutor* field_writer() { + return to_concrete_type(*field_writer_executor); + } }; void @@ -75,6 +82,15 @@ TEST_F(ExecutorThreadingServiceTest, shared_executor_for_index_and_attribute_fie assert_executor(index_inverter(), 12, 100); } +TEST_F(ExecutorThreadingServiceTest, shared_field_writer_specified_from_the_outside) +{ + setup(4, SharedFieldWriterExecutor::DOCUMENT_DB); + EXPECT_EQ(field_writer(), index_inverter()); + EXPECT_EQ(field_writer(), index_writer()); + EXPECT_EQ(field_writer(), attribute_writer()); + assert_executor(field_writer(), 3, 200); +} + TEST_F(ExecutorThreadingServiceTest, tasks_limits_can_be_updated) { setup(4, SharedFieldWriterExecutor::NONE); |