summaryrefslogtreecommitdiffstats
path: root/searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp
diff options
context:
space:
mode:
authorGeir Storli <geirst@yahooinc.com>2021-11-29 12:56:46 +0000
committerGeir Storli <geirst@yahooinc.com>2021-11-29 12:56:46 +0000
commit18ba82682f0a9588f92f911ea4774d44d484f589 (patch)
tree5b86852de461dc3fecfec0ab378d8db6e1152c8d /searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp
parent3c4983f0109da80fefc643e43d12798ccf38fb80 (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/executor_threading_service_test.cpp')
-rw-r--r--searchcore/src/tests/proton/documentdb/executor_threading_service/executor_threading_service_test.cpp16
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);