aboutsummaryrefslogtreecommitdiffstats
path: root/vespalib/src/tests
diff options
context:
space:
mode:
authorTor Brede Vekterli <vekterli@yahooinc.com>2023-02-15 15:36:40 +0000
committerTor Brede Vekterli <vekterli@yahooinc.com>2023-02-16 09:42:19 +0000
commite44680839cc42c25cf1670ba17090d116b59ae91 (patch)
tree20d97cc22b323792fce23737cc72dcbfd599995b /vespalib/src/tests
parent805f8fbc2feda6e56d33437b317163ce8a345287 (diff)
Add remaining capabilities and capability sets to C++
Diffstat (limited to 'vespalib/src/tests')
-rw-r--r--vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp114
1 files changed, 83 insertions, 31 deletions
diff --git a/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp b/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
index 1180867ba92..0bf04289a65 100644
--- a/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
+++ b/vespalib/src/tests/net/tls/capabilities/capabilities_test.cpp
@@ -59,36 +59,40 @@ void check_capability_set_mapping(const std::string& name, CapabilitySet expecte
}
TEST("All known capabilities can be looked up by name, and resolve back to same name") {
- check_capability_mapping("vespa.none", Capability::none());
- check_capability_mapping("vespa.http.unclassified", Capability::http_unclassified());
- check_capability_mapping("vespa.restapi.unclassified", Capability::restapi_unclassified());
- check_capability_mapping("vespa.rpc.unclassified", Capability::rpc_unclassified());
- check_capability_mapping("vespa.client.filereceiver_api", Capability::client_filereceiver_api());
- check_capability_mapping("vespa.client.slobrok_api", Capability::client_slobrok_api());
- check_capability_mapping("vespa.configproxy.config_api", Capability::configproxy_config_api());
- check_capability_mapping("vespa.configproxy.management_api",
- Capability::configproxy_management_api());
+ check_capability_mapping("vespa.none", Capability::none());
+ check_capability_mapping("vespa.http.unclassified", Capability::http_unclassified());
+ check_capability_mapping("vespa.restapi.unclassified", Capability::restapi_unclassified());
+ check_capability_mapping("vespa.rpc.unclassified", Capability::rpc_unclassified());
+ check_capability_mapping("vespa.client.filereceiver_api", Capability::client_filereceiver_api());
+ check_capability_mapping("vespa.client.slobrok_api", Capability::client_slobrok_api());
+ check_capability_mapping("vespa.cluster_controller.reindexing", Capability::cluster_controller_reindexing());
+ check_capability_mapping("vespa.cluster_controller.state", Capability::cluster_controller_state());
+ check_capability_mapping("vespa.cluster_controller.status", Capability::cluster_controller_status());
+ check_capability_mapping("vespa.configproxy.config_api", Capability::configproxy_config_api());
+ check_capability_mapping("vespa.configproxy.management_api", Capability::configproxy_management_api());
check_capability_mapping("vespa.configproxy.filedistribution_api",
Capability::configproxy_filedistribution_api());
- check_capability_mapping("vespa.configserver.config_api", Capability::configserver_config_api());
+ check_capability_mapping("vespa.configserver.config_api", Capability::configserver_config_api());
check_capability_mapping("vespa.configserver.filedistribution_api",
Capability::configserver_filedistribution_api());
- check_capability_mapping("vespa.container.document_api", Capability::container_document_api());
- check_capability_mapping("vespa.container.management_api", Capability::container_management_api());
- check_capability_mapping("vespa.content.storage_api", Capability::content_storage_api());
- check_capability_mapping("vespa.content.document_api", Capability::content_document_api());
- check_capability_mapping("vespa.content.search_api", Capability::content_search_api());
- check_capability_mapping("vespa.content.proton_admin_api", Capability::content_proton_admin_api());
- check_capability_mapping("vespa.slobrok.api", Capability::slobrok_api());
- check_capability_mapping("vespa.config.sentinel_api", Capability::config_sentinel_api());
- check_capability_mapping("vespa.content.status_pages", Capability::content_status_pages());
- check_capability_mapping("vespa.content.metrics_api", Capability::content_metrics_api());
+ check_capability_mapping("vespa.container.document_api", Capability::container_document_api());
+ check_capability_mapping("vespa.container.management_api", Capability::container_management_api());
+ check_capability_mapping("vespa.container.state_api", Capability::container_state_api());
check_capability_mapping("vespa.content.cluster_controller.internal_state_api",
Capability::content_cluster_controller_internal_state_api());
- check_capability_mapping("vespa.logserver.api", Capability::logserver_api());
- check_capability_mapping("vespa.metricsproxy.management_api",
- Capability::metricsproxy_management_api());
- check_capability_mapping("vespa.metricsproxy.metrics_api", Capability::metricsproxy_metrics_api());
+ check_capability_mapping("vespa.content.document_api", Capability::content_document_api());
+ check_capability_mapping("vespa.content.metrics_api", Capability::content_metrics_api());
+ check_capability_mapping("vespa.content.proton_admin_api", Capability::content_proton_admin_api());
+ check_capability_mapping("vespa.content.search_api", Capability::content_search_api());
+ check_capability_mapping("vespa.content.status_pages", Capability::content_status_pages());
+ check_capability_mapping("vespa.content.storage_api", Capability::content_storage_api());
+ check_capability_mapping("vespa.logserver.api", Capability::logserver_api());
+ check_capability_mapping("vespa.metricsproxy.management_api", Capability::metricsproxy_management_api());
+ check_capability_mapping("vespa.metricsproxy.metrics_api", Capability::metricsproxy_metrics_api());
+ check_capability_mapping("vespa.sentinel.connectivity_check", Capability::sentinel_connectivity_check());
+ check_capability_mapping("vespa.sentinel.inspect_services", Capability::sentinel_inspect_services());
+ check_capability_mapping("vespa.sentinel.management_api", Capability::sentinel_management_api());
+ check_capability_mapping("vespa.slobrok.api", Capability::slobrok_api());
}
TEST("Unknown capability name returns nullopt") {
@@ -97,14 +101,29 @@ TEST("Unknown capability name returns nullopt") {
TEST("CapabilitySet instances can be stringified") {
EXPECT_EQUAL(CapabilitySet::content_node().to_string(),
- "CapabilitySet({vespa.content.storage_api, vespa.content.document_api, vespa.slobrok.api})");
+ "CapabilitySet({vespa.configproxy.config_api, "
+ "vespa.configproxy.filedistribution_api, "
+ "vespa.configserver.config_api, "
+ "vespa.configserver.filedistribution_api, "
+ "vespa.container.document_api, "
+ "vespa.container.state_api, "
+ "vespa.content.document_api, "
+ "vespa.content.metrics_api, "
+ "vespa.content.status_pages, "
+ "vespa.content.storage_api, "
+ "vespa.logserver.api, "
+ "vespa.metricsproxy.metrics_api, "
+ "vespa.sentinel.connectivity_check, "
+ "vespa.slobrok.api})");
}
TEST("All known capability sets can be looked up by name") {
+ check_capability_set_mapping("vespa.all", CapabilitySet::all());
check_capability_set_mapping("vespa.content_node", CapabilitySet::content_node());
check_capability_set_mapping("vespa.container_node", CapabilitySet::container_node());
check_capability_set_mapping("vespa.telemetry", CapabilitySet::telemetry());
check_capability_set_mapping("vespa.cluster_controller_node", CapabilitySet::cluster_controller_node());
+ check_capability_set_mapping("vespa.logserver_node", CapabilitySet::logserver_node());
check_capability_set_mapping("vespa.config_server", CapabilitySet::config_server());
}
@@ -116,11 +135,25 @@ TEST("Resolving a capability set adds all its underlying capabilities") {
CapabilitySet caps;
EXPECT_TRUE(caps.resolve_and_add("vespa.content_node"));
// Slightly suboptimal; this test will fail if the default set of capabilities for vespa.content_node changes.
- EXPECT_EQUAL(caps.count(), 3u);
+ EXPECT_EQUAL(caps.count(), 14u);
EXPECT_FALSE(caps.empty());
EXPECT_TRUE(caps.contains(Capability::content_storage_api()));
EXPECT_TRUE(caps.contains(Capability::content_document_api()));
+ EXPECT_TRUE(caps.contains(Capability::container_document_api()));
+ // vespa.content_node -> shared node caps:
+ EXPECT_TRUE(caps.contains(Capability::logserver_api()));
+ EXPECT_TRUE(caps.contains(Capability::configserver_config_api()));
+ EXPECT_TRUE(caps.contains(Capability::configserver_filedistribution_api()));
+ EXPECT_TRUE(caps.contains(Capability::configproxy_config_api()));
+ EXPECT_TRUE(caps.contains(Capability::configproxy_filedistribution_api()));
+ // vespa.content_node -> shared node caps -> vespa.telemetry
+ EXPECT_TRUE(caps.contains(Capability::content_status_pages()));
+ EXPECT_TRUE(caps.contains(Capability::content_metrics_api()));
+ EXPECT_TRUE(caps.contains(Capability::container_state_api()));
+ EXPECT_TRUE(caps.contains(Capability::metricsproxy_metrics_api()));
+ EXPECT_TRUE(caps.contains(Capability::sentinel_connectivity_check()));
EXPECT_TRUE(caps.contains(Capability::slobrok_api()));
+ // Not included:
EXPECT_FALSE(caps.contains(Capability::content_search_api()));
}
@@ -144,12 +177,20 @@ TEST("Resolving multiple capabilities/sets adds union of capabilities") {
CapabilitySet caps;
EXPECT_TRUE(caps.resolve_and_add("vespa.content_node")); // CapabilitySet
EXPECT_TRUE(caps.resolve_and_add("vespa.container_node")); // ditto
- EXPECT_EQUAL(caps, CapabilitySet::of({Capability::content_storage_api(), Capability::content_document_api(),
- Capability::slobrok_api(), Capability::content_search_api()}));
+ EXPECT_EQUAL(caps, CapabilitySet::of({Capability::content_storage_api(),
+ Capability::content_document_api(),
+ Capability::container_document_api(),
+ Capability::slobrok_api(),
+ Capability::content_search_api()})
+ .union_of(CapabilitySet::shared_app_node_capabilities()));
EXPECT_TRUE(caps.resolve_and_add("vespa.content.metrics_api")); // Capability (single)
- EXPECT_EQUAL(caps, CapabilitySet::of({Capability::content_storage_api(), Capability::content_document_api(),
- Capability::slobrok_api(), Capability::content_search_api(),
- Capability::content_metrics_api()}));
+ EXPECT_EQUAL(caps, CapabilitySet::of({Capability::content_storage_api(),
+ Capability::content_document_api(),
+ Capability::container_document_api(),
+ Capability::slobrok_api(),
+ Capability::content_search_api(),
+ Capability::content_metrics_api()})
+ .union_of(CapabilitySet::shared_app_node_capabilities()));
}
TEST("Default-constructed CapabilitySet has no capabilities") {
@@ -164,12 +205,23 @@ TEST("Default-constructed CapabilitySet has no capabilities") {
TEST("CapabilitySet can be created with all capabilities") {
auto caps = CapabilitySet::make_with_all_capabilities();
EXPECT_EQUAL(caps.count(), CapabilitySet::max_count());
+ EXPECT_EQUAL(caps, CapabilitySet::all()); // alias
EXPECT_TRUE(caps.contains(Capability::none()));
EXPECT_TRUE(caps.contains(Capability::content_storage_api()));
EXPECT_TRUE(caps.contains(Capability::content_metrics_api()));
// ... we just assume the rest are present as well.
}
+TEST("CapabilitySet can be explicitly unioned") {
+ const auto a = CapabilitySet::of({Capability::content_document_api()});
+ const auto b = CapabilitySet::of({Capability::content_search_api()});
+ auto c = a.union_of(b);
+
+ EXPECT_EQUAL(c.count(), 2u);
+ EXPECT_TRUE(c.contains(Capability::content_document_api()));
+ EXPECT_TRUE(c.contains(Capability::content_search_api()));
+}
+
TEST("CapabilitySet::contains_all() requires an intersection of capabilities") {
auto cap1 = Capability::content_document_api();
auto cap2 = Capability::content_search_api();