diff options
Diffstat (limited to 'configutil/src/tests')
-rw-r--r-- | configutil/src/tests/config_status/config_status_test.cpp | 44 | ||||
-rw-r--r-- | configutil/src/tests/host_filter/CMakeLists.txt | 8 | ||||
-rw-r--r-- | configutil/src/tests/host_filter/host_filter_test.cpp | 18 |
3 files changed, 60 insertions, 10 deletions
diff --git a/configutil/src/tests/config_status/config_status_test.cpp b/configutil/src/tests/config_status/config_status_test.cpp index af3f343a0b7..ac672b3a367 100644 --- a/configutil/src/tests/config_status/config_status_test.cpp +++ b/configutil/src/tests/config_status/config_status_test.cpp @@ -7,7 +7,8 @@ #include <vespa/config-model.h> #include <vespa/config/config.h> #include <vespa/config/subscription/sourcespec.h> -#include <vespa/vespalib/stllike/string.h> +#include <vector> +#include <string> using namespace config; @@ -56,14 +57,18 @@ public: ConfigStatus::Flags flags; std::unique_ptr<ConfigStatus> status; - Status(int httpport) : flags() { + Status(int http_port, + const ConfigStatus::Flags& cfg_flags, + const std::vector<std::string>& model_hosts) + : flags(cfg_flags) + { flags.verbose = true; ConfigSet set; ConfigContext::SP ctx(new ConfigContext(set)); cloud::config::ModelConfigBuilder builder; cloud::config::ModelConfigBuilder::Hosts::Services::Ports port; - port.number = httpport; + port.number = http_port; port.tags = "http state"; cloud::config::ModelConfigBuilder::Hosts::Services service; @@ -74,23 +79,33 @@ public: service.clustername = "default"; service.ports.push_back(port); - cloud::config::ModelConfigBuilder::Hosts host; - host.services.push_back(service); - host.name = "localhost"; + for (auto& mhost : model_hosts) { + cloud::config::ModelConfigBuilder::Hosts host; + host.services.push_back(service); + host.name = mhost; - builder.hosts.push_back(host); + builder.hosts.push_back(host); + } set.addBuilder("admin/model", &builder); config::ConfigUri uri("admin/model", ctx); std::unique_ptr<ConfigStatus> s(new ConfigStatus(flags, uri)); status = std::move(s); - }; + } + + Status(int http_port) + : Status(http_port, ConfigStatus::Flags(), {{"localhost"}}) + {} ~Status() { - }; + } }; -TEST_FF("all ok", HTTPStatus(std::string("{\"config\": { \"all\": { \"generation\": 1 } }}")), Status(f1.getListenPort())) { +std::string ok_json_at_gen_1() { + return "{\"config\": { \"all\": { \"generation\": 1 } }}"; +} + +TEST_FF("all ok", HTTPStatus(ok_json_at_gen_1()), Status(f1.getListenPort())) { ASSERT_EQUAL(0, f2.status->action()); } @@ -106,4 +121,13 @@ TEST_FF("http failure", HTTPStatus(true), Status(f1.getListenPort())) { ASSERT_EQUAL(1, f2.status->action()); } +TEST_F("queried host set can be constrained", HTTPStatus(ok_json_at_gen_1())) { + HostFilter filter({"localhost"}); + std::vector<std::string> hosts( + {"localhost", "no-such-host.foo.yahoo.com"}); + Status status(f1.getListenPort(), ConfigStatus::Flags(filter), hosts); + // Non-existing host should never be contacted. + ASSERT_EQUAL(0, status.status->action()); +} + TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/configutil/src/tests/host_filter/CMakeLists.txt b/configutil/src/tests/host_filter/CMakeLists.txt new file mode 100644 index 00000000000..964e036ce1d --- /dev/null +++ b/configutil/src/tests/host_filter/CMakeLists.txt @@ -0,0 +1,8 @@ +# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(configutil_host_filter_test_app TEST + SOURCES + host_filter_test.cpp + DEPENDS + configutil_util +) +vespa_add_test(NAME configutil_host_filter_test_app COMMAND configutil_host_filter_test_app) diff --git a/configutil/src/tests/host_filter/host_filter_test.cpp b/configutil/src/tests/host_filter/host_filter_test.cpp new file mode 100644 index 00000000000..66c0418bb46 --- /dev/null +++ b/configutil/src/tests/host_filter/host_filter_test.cpp @@ -0,0 +1,18 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +#include <vespa/vespalib/testkit/testapp.h> +#include <lib/hostfilter.h> + +TEST("empty hostfilter includes any and all hosts") { + HostFilter filter; + EXPECT_TRUE(filter.includes("foo.yahoo.com")); +} + +TEST("explicit host set limits to provided hosts only") { + HostFilter::HostSet hosts({"bar.yahoo.com", "zoidberg.yahoo.com"}); + HostFilter filter(std::move(hosts)); + EXPECT_TRUE(filter.includes("bar.yahoo.com")); + EXPECT_TRUE(filter.includes("zoidberg.yahoo.com")); + EXPECT_FALSE(filter.includes("foo.yahoo.com")); +} + +TEST_MAIN() { TEST_RUN_ALL(); } |