diff options
Diffstat (limited to 'configutil/src/tests/config_status/config_status_test.cpp')
-rw-r--r-- | configutil/src/tests/config_status/config_status_test.cpp | 44 |
1 files changed, 34 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(); } |