aboutsummaryrefslogtreecommitdiffstats
path: root/configutil/src/tests/config_status/config_status_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'configutil/src/tests/config_status/config_status_test.cpp')
-rw-r--r--configutil/src/tests/config_status/config_status_test.cpp44
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(); }