diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2017-10-11 19:28:20 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-11 19:28:20 +0200 |
commit | e3dea9daba5b89fab618921a94f9394f8ae9144c (patch) | |
tree | 4afba0fa93e2ca5894dff7deede43fb50428630d /searchcore/src/tests/proton | |
parent | 8ba8fa4e896d8c9775a868e524d9ef37072aeaa6 (diff) | |
parent | 0d30571f227704ae5ffee683f0402c7852f85fb4 (diff) |
Merge pull request #3716 from vespa-engine/geirst/add-feeding-concurrency-setting-to-proton
Geirst/add feeding concurrency setting to proton
Diffstat (limited to 'searchcore/src/tests/proton')
-rw-r--r-- | searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt | 8 | ||||
-rw-r--r-- | searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp | 66 |
2 files changed, 74 insertions, 0 deletions
diff --git a/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt b/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt new file mode 100644 index 00000000000..214b5c9b86d --- /dev/null +++ b/searchcore/src/tests/proton/documentdb/threading_service_config/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(searchcore_threading_service_config_test_app TEST + SOURCES + threading_service_config_test.cpp + DEPENDS + searchcore_server +) +vespa_add_test(NAME searchcore_threading_service_config_test_app COMMAND searchcore_threading_service_config_test_app) diff --git a/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp b/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp new file mode 100644 index 00000000000..658ebe818eb --- /dev/null +++ b/searchcore/src/tests/proton/documentdb/threading_service_config/threading_service_config_test.cpp @@ -0,0 +1,66 @@ +// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/log/log.h> +LOG_SETUP("threading_service_config_test"); + +#include <vespa/searchcore/config/config-proton.h> +#include <vespa/searchcore/proton/common/hw_info.h> +#include <vespa/searchcore/proton/server/threading_service_config.h> +#include <vespa/vespalib/testkit/testapp.h> + +using namespace proton; +using ProtonConfig = vespa::config::search::core::ProtonConfig; +using ProtonConfigBuilder = vespa::config::search::core::ProtonConfigBuilder; + +struct Fixture { + ProtonConfig cfg; + Fixture(uint32_t baseLineIndexingThreads = 2) + : cfg(makeConfig(baseLineIndexingThreads)) + { + } + ProtonConfig makeConfig(uint32_t baseLineIndexingThreads) { + ProtonConfigBuilder builder; + builder.indexing.threads = baseLineIndexingThreads; + builder.indexing.tasklimit = 500; + builder.indexing.semiunboundtasklimit = 50000; + builder.feeding.concurrency = 0.5; + return builder; + } + ThreadingServiceConfig make(uint32_t cpuCores) { + return ThreadingServiceConfig::make(cfg, HwInfo::Cpu(cpuCores)); + } + void assertIndexingThreads(uint32_t expIndexingThreads, uint32_t cpuCores) { + EXPECT_EQUAL(expIndexingThreads, make(cpuCores).indexingThreads()); + } +}; + +TEST_F("require that indexing threads are set based on cpu cores and feeding concurrency", Fixture) +{ + TEST_DO(f.assertIndexingThreads(2, 1)); + TEST_DO(f.assertIndexingThreads(2, 4)); + TEST_DO(f.assertIndexingThreads(2, 8)); + TEST_DO(f.assertIndexingThreads(2, 12)); + TEST_DO(f.assertIndexingThreads(3, 13)); + TEST_DO(f.assertIndexingThreads(3, 18)); + TEST_DO(f.assertIndexingThreads(4, 19)); + TEST_DO(f.assertIndexingThreads(4, 24)); +} + +TEST_F("require that indexing threads is always >= 1", Fixture(0)) +{ + TEST_DO(f.assertIndexingThreads(1, 0)); +} + +TEST_F("require that default task limit is set", Fixture) +{ + EXPECT_EQUAL(500u, f.make(24).defaultTaskLimit()); +} + +TEST_F("require that semiunbound task limit is scaled based on indexing threads", Fixture) +{ + EXPECT_EQUAL(12500u, f.make(24).semiUnboundTaskLimit()); +} + +TEST_MAIN() +{ + TEST_RUN_ALL(); +} |