diff options
author | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-15 15:36:40 +0000 |
---|---|---|
committer | Tor Brede Vekterli <vekterli@yahooinc.com> | 2023-02-16 09:42:19 +0000 |
commit | e44680839cc42c25cf1670ba17090d116b59ae91 (patch) | |
tree | 20d97cc22b323792fce23737cc72dcbfd599995b /vespalib/src/tests | |
parent | 805f8fbc2feda6e56d33437b317163ce8a345287 (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.cpp | 114 |
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(); |