diff options
author | Tor Brede Vekterli <vekterli@yahoo-inc.com> | 2016-07-12 21:16:06 +0200 |
---|---|---|
committer | Vegard Sjonfjell <vegardsjo@gmail.com> | 2016-07-12 21:16:06 +0200 |
commit | fc7a2cdb64ca870cf00fa2d7dc723d91f56e5561 (patch) | |
tree | 3924b7e47689cf9c7936d0f3e84b20ca4517955a /configutil/src/tests/config_status/config_status_test.cpp | |
parent | 99de121a82da5b20ef5b8324706f272973879b9b (diff) |
Add host filtering option to config status util (#350)
* Let vespa-config-status take in an optional host filter set
If the argument is not specified, services on all hosts in the model
will be queried as before. Iff the filter argument is specified, only
services on the hosts explicitly given will be queried.
* Make variable name easier on the eyes
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(); } |