From c4d337e202061d63ebe8c652be8681f4aaf80fa1 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Wed, 22 Jan 2025 08:47:09 -0800 Subject: [PATCH] Refactor entitlement IT test to allow dynamic policy (#120443) This commit combines the different entitlement test plugins used for integration tests into a single plugin. When installing the plugin in the integ test cluster, the entitlement policy and plugin properties are adjusted to test the desired combination of settings. This allows the plugin policy to be dynamically generated by each test, rather than rely on a static policy. --- libs/entitlement/qa/build.gradle | 7 +- .../build.gradle | 24 ------- .../EntitlementAllowedNonModularPlugin.java | 44 ------------ .../plugin-metadata/entitlement-policy.yaml | 10 --- .../qa/entitlement-allowed/build.gradle | 25 ------- .../src/main/java/module-info.java | 15 ---- .../qa/EntitlementAllowedPlugin.java | 44 ------------ .../plugin-metadata/entitlement-policy.yaml | 10 --- .../build.gradle | 24 ------- .../EntitlementDeniedNonModularPlugin.java | 44 ------------ .../plugin-metadata/entitlement-policy.yaml | 5 -- .../qa/entitlement-denied/build.gradle | 25 ------- .../src/main/java/module-info.java | 6 -- .../plugin-metadata/entitlement-policy.yaml | 5 -- .../entitlement/qa/EntitlementsAllowedIT.java | 21 ++---- .../qa/EntitlementsAllowedNonModularIT.java | 59 +++++++++++++++ .../entitlement/qa/EntitlementsDeniedIT.java | 18 ++--- .../qa/EntitlementsDeniedNonModularIT.java | 61 ++++++++++++++++ .../entitlement/qa/EntitlementsUtil.java | 72 +++++++++++++++++++ .../qa/{common => test-plugin}/build.gradle | 17 +++++ .../src/main/java/module-info.java | 4 +- .../qa/test}/DummyImplementations.java | 2 +- .../qa/test/EntitlementTestPlugin.java} | 7 +- .../LoadNativeLibrariesCheckActions.java | 2 +- .../qa/test}/NetworkAccessCheckActions.java | 2 +- .../qa/test}/RestEntitlementsCheckAction.java | 43 +++++------ .../test}/VersionSpecificNetworkChecks.java | 2 +- .../qa/test}/WritePropertiesCheckActions.java | 2 +- .../test}/VersionSpecificNetworkChecks.java | 2 +- .../test}/VersionSpecificNetworkChecks.java | 2 +- 30 files changed, 254 insertions(+), 350 deletions(-) delete mode 100644 libs/entitlement/qa/entitlement-allowed-nonmodular/build.gradle delete mode 100644 libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementAllowedNonModularPlugin.java delete mode 100644 libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml delete mode 100644 libs/entitlement/qa/entitlement-allowed/build.gradle delete mode 100644 libs/entitlement/qa/entitlement-allowed/src/main/java/module-info.java delete mode 100644 libs/entitlement/qa/entitlement-allowed/src/main/java/org/elasticsearch/entitlement/qa/EntitlementAllowedPlugin.java delete mode 100644 libs/entitlement/qa/entitlement-allowed/src/main/plugin-metadata/entitlement-policy.yaml delete mode 100644 libs/entitlement/qa/entitlement-denied-nonmodular/build.gradle delete mode 100644 libs/entitlement/qa/entitlement-denied-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementDeniedNonModularPlugin.java delete mode 100644 libs/entitlement/qa/entitlement-denied-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml delete mode 100644 libs/entitlement/qa/entitlement-denied/build.gradle delete mode 100644 libs/entitlement/qa/entitlement-denied/src/main/java/module-info.java delete mode 100644 libs/entitlement/qa/entitlement-denied/src/main/plugin-metadata/entitlement-policy.yaml create mode 100644 libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedNonModularIT.java create mode 100644 libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedNonModularIT.java create mode 100644 libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsUtil.java rename libs/entitlement/qa/{common => test-plugin}/build.gradle (57%) rename libs/entitlement/qa/{common => test-plugin}/src/main/java/module-info.java (87%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/DummyImplementations.java (99%) rename libs/entitlement/qa/{entitlement-denied/src/main/java/org/elasticsearch/entitlement/qa/EntitlementDeniedPlugin.java => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/EntitlementTestPlugin.java} (86%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/LoadNativeLibrariesCheckActions.java (96%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/NetworkAccessCheckActions.java (99%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/RestEntitlementsCheckAction.java (92%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/VersionSpecificNetworkChecks.java (96%) rename libs/entitlement/qa/{common/src/main/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test}/WritePropertiesCheckActions.java (96%) rename libs/entitlement/qa/{common/src/main18/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main18/java/org/elasticsearch/entitlement/qa/test}/VersionSpecificNetworkChecks.java (97%) rename libs/entitlement/qa/{common/src/main21/java/org/elasticsearch/entitlement/qa/common => test-plugin/src/main21/java/org/elasticsearch/entitlement/qa/test}/VersionSpecificNetworkChecks.java (98%) diff --git a/libs/entitlement/qa/build.gradle b/libs/entitlement/qa/build.gradle index 7f46b2fe20a8a..fea746eb3bfa3 100644 --- a/libs/entitlement/qa/build.gradle +++ b/libs/entitlement/qa/build.gradle @@ -12,9 +12,6 @@ apply plugin: 'elasticsearch.internal-java-rest-test' apply plugin: 'elasticsearch.internal-test-artifact' dependencies { - javaRestTestImplementation project(':libs:entitlement:qa:common') - clusterModules project(':libs:entitlement:qa:entitlement-allowed') - clusterModules project(':libs:entitlement:qa:entitlement-allowed-nonmodular') - clusterPlugins project(':libs:entitlement:qa:entitlement-denied') - clusterPlugins project(':libs:entitlement:qa:entitlement-denied-nonmodular') + javaRestTestImplementation project(':libs:entitlement:qa:test-plugin') + clusterModules project(':libs:entitlement:qa:test-plugin') } diff --git a/libs/entitlement/qa/entitlement-allowed-nonmodular/build.gradle b/libs/entitlement/qa/entitlement-allowed-nonmodular/build.gradle deleted file mode 100644 index 316b61e15707e..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed-nonmodular/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -apply plugin: 'elasticsearch.base-internal-es-plugin' - -esplugin { - name = 'entitlement-allowed-nonmodular' - description = 'A non-modular test module that invokes entitlement checks that are supposed to be granted' - classname = 'org.elasticsearch.entitlement.qa.nonmodular.EntitlementAllowedNonModularPlugin' -} - -dependencies { - implementation project(':libs:entitlement:qa:common') -} - -tasks.named("javadoc").configure { - enabled = false -} diff --git a/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementAllowedNonModularPlugin.java b/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementAllowedNonModularPlugin.java deleted file mode 100644 index 82146e6a87759..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementAllowedNonModularPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ -package org.elasticsearch.entitlement.qa.nonmodular; - -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.common.io.stream.NamedWriteableRegistry; -import org.elasticsearch.common.settings.ClusterSettings; -import org.elasticsearch.common.settings.IndexScopedSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.settings.SettingsFilter; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; -import org.elasticsearch.features.NodeFeature; -import org.elasticsearch.plugins.ActionPlugin; -import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestHandler; - -import java.util.List; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public class EntitlementAllowedNonModularPlugin extends Plugin implements ActionPlugin { - @Override - public List getRestHandlers( - final Settings settings, - NamedWriteableRegistry namedWriteableRegistry, - final RestController restController, - final ClusterSettings clusterSettings, - final IndexScopedSettings indexScopedSettings, - final SettingsFilter settingsFilter, - final IndexNameExpressionResolver indexNameExpressionResolver, - final Supplier nodesInCluster, - Predicate clusterSupportsFeature - ) { - return List.of(new RestEntitlementsCheckAction("allowed_nonmodular")); - } -} diff --git a/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml b/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml deleted file mode 100644 index 871dd24046127..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml +++ /dev/null @@ -1,10 +0,0 @@ -ALL-UNNAMED: - - create_class_loader - - set_https_connection_properties - - inbound_network - - outbound_network - - write_system_properties: - properties: - - es.entitlements.checkSetSystemProperty - - es.entitlements.checkClearSystemProperty - - load_native_libraries diff --git a/libs/entitlement/qa/entitlement-allowed/build.gradle b/libs/entitlement/qa/entitlement-allowed/build.gradle deleted file mode 100644 index b9518f8d65fb5..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -apply plugin: 'elasticsearch.base-internal-es-plugin' - -esplugin { - name = 'entitlement-allowed' - description = 'A test module that invokes entitlement checks that are supposed to be granted' - classname = 'org.elasticsearch.entitlement.qa.EntitlementAllowedPlugin' -} - -dependencies { - implementation project(':libs:entitlement:qa:common') -} - -tasks.named("javadoc").configure { - enabled = false -} - diff --git a/libs/entitlement/qa/entitlement-allowed/src/main/java/module-info.java b/libs/entitlement/qa/entitlement-allowed/src/main/java/module-info.java deleted file mode 100644 index a88611e6ac9a5..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed/src/main/java/module-info.java +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -module org.elasticsearch.entitlement.qa.allowed { - requires org.elasticsearch.server; - requires org.elasticsearch.base; - requires org.elasticsearch.logging; - requires org.elasticsearch.entitlement.qa.common; -} diff --git a/libs/entitlement/qa/entitlement-allowed/src/main/java/org/elasticsearch/entitlement/qa/EntitlementAllowedPlugin.java b/libs/entitlement/qa/entitlement-allowed/src/main/java/org/elasticsearch/entitlement/qa/EntitlementAllowedPlugin.java deleted file mode 100644 index 8649daf272e70..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed/src/main/java/org/elasticsearch/entitlement/qa/EntitlementAllowedPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ -package org.elasticsearch.entitlement.qa; - -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.common.io.stream.NamedWriteableRegistry; -import org.elasticsearch.common.settings.ClusterSettings; -import org.elasticsearch.common.settings.IndexScopedSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.settings.SettingsFilter; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; -import org.elasticsearch.features.NodeFeature; -import org.elasticsearch.plugins.ActionPlugin; -import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestHandler; - -import java.util.List; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public class EntitlementAllowedPlugin extends Plugin implements ActionPlugin { - @Override - public List getRestHandlers( - final Settings settings, - NamedWriteableRegistry namedWriteableRegistry, - final RestController restController, - final ClusterSettings clusterSettings, - final IndexScopedSettings indexScopedSettings, - final SettingsFilter settingsFilter, - final IndexNameExpressionResolver indexNameExpressionResolver, - final Supplier nodesInCluster, - Predicate clusterSupportsFeature - ) { - return List.of(new RestEntitlementsCheckAction("allowed")); - } -} diff --git a/libs/entitlement/qa/entitlement-allowed/src/main/plugin-metadata/entitlement-policy.yaml b/libs/entitlement/qa/entitlement-allowed/src/main/plugin-metadata/entitlement-policy.yaml deleted file mode 100644 index 507ba4861c274..0000000000000 --- a/libs/entitlement/qa/entitlement-allowed/src/main/plugin-metadata/entitlement-policy.yaml +++ /dev/null @@ -1,10 +0,0 @@ -org.elasticsearch.entitlement.qa.common: - - create_class_loader - - set_https_connection_properties - - inbound_network - - outbound_network - - write_system_properties: - properties: - - es.entitlements.checkSetSystemProperty - - es.entitlements.checkClearSystemProperty - - load_native_libraries diff --git a/libs/entitlement/qa/entitlement-denied-nonmodular/build.gradle b/libs/entitlement/qa/entitlement-denied-nonmodular/build.gradle deleted file mode 100644 index 6a88dd66eaf75..0000000000000 --- a/libs/entitlement/qa/entitlement-denied-nonmodular/build.gradle +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -apply plugin: 'elasticsearch.base-internal-es-plugin' - -esplugin { - name = 'entitlement-denied-nonmodular' - description = 'A non-modular test module that invokes non-granted entitlement and triggers exceptions' - classname = 'org.elasticsearch.entitlement.qa.nonmodular.EntitlementDeniedNonModularPlugin' -} - -dependencies { - implementation project(':libs:entitlement:qa:common') -} - -tasks.named("javadoc").configure { - enabled = false -} diff --git a/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementDeniedNonModularPlugin.java b/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementDeniedNonModularPlugin.java deleted file mode 100644 index 7ca89c735a602..0000000000000 --- a/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/java/org/elasticsearch/entitlement/qa/nonmodular/EntitlementDeniedNonModularPlugin.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ -package org.elasticsearch.entitlement.qa.nonmodular; - -import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; -import org.elasticsearch.cluster.node.DiscoveryNodes; -import org.elasticsearch.common.io.stream.NamedWriteableRegistry; -import org.elasticsearch.common.settings.ClusterSettings; -import org.elasticsearch.common.settings.IndexScopedSettings; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.settings.SettingsFilter; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; -import org.elasticsearch.features.NodeFeature; -import org.elasticsearch.plugins.ActionPlugin; -import org.elasticsearch.plugins.Plugin; -import org.elasticsearch.rest.RestController; -import org.elasticsearch.rest.RestHandler; - -import java.util.List; -import java.util.function.Predicate; -import java.util.function.Supplier; - -public class EntitlementDeniedNonModularPlugin extends Plugin implements ActionPlugin { - @Override - public List getRestHandlers( - final Settings settings, - NamedWriteableRegistry namedWriteableRegistry, - final RestController restController, - final ClusterSettings clusterSettings, - final IndexScopedSettings indexScopedSettings, - final SettingsFilter settingsFilter, - final IndexNameExpressionResolver indexNameExpressionResolver, - final Supplier nodesInCluster, - Predicate clusterSupportsFeature - ) { - return List.of(new RestEntitlementsCheckAction("denied_nonmodular")); - } -} diff --git a/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml b/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml deleted file mode 100644 index d3a32baf3636f..0000000000000 --- a/libs/entitlement/qa/entitlement-denied-nonmodular/src/main/plugin-metadata/entitlement-policy.yaml +++ /dev/null @@ -1,5 +0,0 @@ -ALL-UNNAMED: - - write_system_properties: - properties: - # entitlement itself not sufficient, also no wildcard support - - "*" diff --git a/libs/entitlement/qa/entitlement-denied/build.gradle b/libs/entitlement/qa/entitlement-denied/build.gradle deleted file mode 100644 index 9d1872563b8c5..0000000000000 --- a/libs/entitlement/qa/entitlement-denied/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one - * or more contributor license agreements. Licensed under the "Elastic License - * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side - * Public License v 1"; you may not use this file except in compliance with, at - * your election, the "Elastic License 2.0", the "GNU Affero General Public - * License v3.0 only", or the "Server Side Public License, v 1". - */ - -apply plugin: 'elasticsearch.base-internal-es-plugin' - -esplugin { - name = 'entitlement-denied' - description = 'A test module that invokes non-granted entitlement and triggers exceptions' - classname = 'org.elasticsearch.entitlement.qa.EntitlementDeniedPlugin' -} - -dependencies { - implementation project(':libs:entitlement:qa:common') -} - -tasks.named("javadoc").configure { - enabled = false -} - diff --git a/libs/entitlement/qa/entitlement-denied/src/main/java/module-info.java b/libs/entitlement/qa/entitlement-denied/src/main/java/module-info.java deleted file mode 100644 index 3def472be7a45..0000000000000 --- a/libs/entitlement/qa/entitlement-denied/src/main/java/module-info.java +++ /dev/null @@ -1,6 +0,0 @@ -module org.elasticsearch.entitlement.qa.denied { - requires org.elasticsearch.server; - requires org.elasticsearch.base; - requires org.apache.logging.log4j; - requires org.elasticsearch.entitlement.qa.common; -} diff --git a/libs/entitlement/qa/entitlement-denied/src/main/plugin-metadata/entitlement-policy.yaml b/libs/entitlement/qa/entitlement-denied/src/main/plugin-metadata/entitlement-policy.yaml deleted file mode 100644 index 7b2253fd2e08a..0000000000000 --- a/libs/entitlement/qa/entitlement-denied/src/main/plugin-metadata/entitlement-policy.yaml +++ /dev/null @@ -1,5 +0,0 @@ -org.elasticsearch.entitlement.qa.common: - - write_system_properties: - properties: - # entitlement itself not sufficient, also no wildcard support - - "*" diff --git a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedIT.java b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedIT.java index c38e8b3f35efb..c9eb4ea665aa1 100644 --- a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedIT.java +++ b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedIT.java @@ -14,41 +14,34 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.Response; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; +import org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.ClassRule; import java.io.IOException; -import java.util.stream.Stream; +import static org.elasticsearch.entitlement.qa.EntitlementsUtil.ALLOWED_ENTITLEMENTS; import static org.hamcrest.Matchers.equalTo; public class EntitlementsAllowedIT extends ESRestTestCase { @ClassRule public static ElasticsearchCluster cluster = ElasticsearchCluster.local() - .module("entitlement-allowed") - .module("entitlement-allowed-nonmodular") + .module("test-plugin", spec -> EntitlementsUtil.setupEntitlements(spec, true, ALLOWED_ENTITLEMENTS)) .systemProperty("es.entitlements.enabled", "true") .setting("xpack.security.enabled", "false") .build(); - private final String pathPrefix; private final String actionName; - public EntitlementsAllowedIT(@Name("pathPrefix") String pathPrefix, @Name("actionName") String actionName) { - this.pathPrefix = pathPrefix; + public EntitlementsAllowedIT(@Name("actionName") String actionName) { this.actionName = actionName; } @ParametersFactory public static Iterable data() { - return Stream.of("allowed", "allowed_nonmodular") - .flatMap( - path -> RestEntitlementsCheckAction.getCheckActionsAllowedInPlugins().stream().map(action -> new Object[] { path, action }) - ) - .toList(); + return RestEntitlementsCheckAction.getCheckActionsAllowedInPlugins().stream().map(action -> new Object[] { action }).toList(); } @Override @@ -57,8 +50,8 @@ protected String getTestRestCluster() { } public void testCheckActionWithPolicyPass() throws IOException { - logger.info("Executing Entitlement test [{}] for [{}]", pathPrefix, actionName); - var request = new Request("GET", "/_entitlement/" + pathPrefix + "/_check"); + logger.info("Executing Entitlement test for [{}]", actionName); + var request = new Request("GET", "/_entitlement_check"); request.addParameter("action", actionName); Response result = client().performRequest(request); assertThat(result.getStatusLine().getStatusCode(), equalTo(200)); diff --git a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedNonModularIT.java b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedNonModularIT.java new file mode 100644 index 0000000000000..5c56774ca9067 --- /dev/null +++ b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsAllowedNonModularIT.java @@ -0,0 +1,59 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.entitlement.qa; + +import com.carrotsearch.randomizedtesting.annotations.Name; +import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; + +import org.elasticsearch.client.Request; +import org.elasticsearch.client.Response; +import org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction; +import org.elasticsearch.test.cluster.ElasticsearchCluster; +import org.elasticsearch.test.rest.ESRestTestCase; +import org.junit.ClassRule; + +import java.io.IOException; + +import static org.elasticsearch.entitlement.qa.EntitlementsUtil.ALLOWED_ENTITLEMENTS; +import static org.hamcrest.Matchers.equalTo; + +public class EntitlementsAllowedNonModularIT extends ESRestTestCase { + + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .module("test-plugin", spec -> EntitlementsUtil.setupEntitlements(spec, false, ALLOWED_ENTITLEMENTS)) + .systemProperty("es.entitlements.enabled", "true") + .setting("xpack.security.enabled", "false") + .build(); + + private final String actionName; + + public EntitlementsAllowedNonModularIT(@Name("actionName") String actionName) { + this.actionName = actionName; + } + + @ParametersFactory + public static Iterable data() { + return RestEntitlementsCheckAction.getCheckActionsAllowedInPlugins().stream().map(action -> new Object[] { action }).toList(); + } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } + + public void testCheckActionWithPolicyPass() throws IOException { + logger.info("Executing Entitlement test for [{}]", actionName); + var request = new Request("GET", "/_entitlement_check"); + request.addParameter("action", actionName); + Response result = client().performRequest(request); + assertThat(result.getStatusLine().getStatusCode(), equalTo(200)); + } +} diff --git a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedIT.java b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedIT.java index e2e5a3c4c61e6..fac70e3167f43 100644 --- a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedIT.java +++ b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedIT.java @@ -13,13 +13,12 @@ import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; import org.elasticsearch.client.Request; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; +import org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.ClassRule; import java.io.IOException; -import java.util.stream.Stream; import static org.hamcrest.Matchers.containsString; @@ -27,8 +26,7 @@ public class EntitlementsDeniedIT extends ESRestTestCase { @ClassRule public static ElasticsearchCluster cluster = ElasticsearchCluster.local() - .plugin("entitlement-denied") - .plugin("entitlement-denied-nonmodular") + .module("test-plugin", spec -> EntitlementsUtil.setupEntitlements(spec, true, null)) .systemProperty("es.entitlements.enabled", "true") .setting("xpack.security.enabled", "false") // Logs in libs/entitlement/qa/build/test-results/javaRestTest/TEST-org.elasticsearch.entitlement.qa.EntitlementsDeniedIT.xml @@ -40,25 +38,21 @@ protected String getTestRestCluster() { return cluster.getHttpAddresses(); } - private final String pathPrefix; private final String actionName; - public EntitlementsDeniedIT(@Name("pathPrefix") String pathPrefix, @Name("actionName") String actionName) { - this.pathPrefix = pathPrefix; + public EntitlementsDeniedIT(@Name("actionName") String actionName) { this.actionName = actionName; } @ParametersFactory public static Iterable data() { - return Stream.of("denied", "denied_nonmodular") - .flatMap(path -> RestEntitlementsCheckAction.getAllCheckActions().stream().map(action -> new Object[] { path, action })) - .toList(); + return RestEntitlementsCheckAction.getAllCheckActions().stream().map(action -> new Object[] { action }).toList(); } public void testCheckThrows() { - logger.info("Executing Entitlement test [{}] for [{}]", pathPrefix, actionName); + logger.info("Executing Entitlement test for [{}]", actionName); var exception = expectThrows(IOException.class, () -> { - var request = new Request("GET", "/_entitlement/" + pathPrefix + "/_check"); + var request = new Request("GET", "/_entitlement_check"); request.addParameter("action", actionName); client().performRequest(request); }); diff --git a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedNonModularIT.java b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedNonModularIT.java new file mode 100644 index 0000000000000..d48e23e6332ed --- /dev/null +++ b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsDeniedNonModularIT.java @@ -0,0 +1,61 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.entitlement.qa; + +import com.carrotsearch.randomizedtesting.annotations.Name; +import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; + +import org.elasticsearch.client.Request; +import org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction; +import org.elasticsearch.test.cluster.ElasticsearchCluster; +import org.elasticsearch.test.rest.ESRestTestCase; +import org.junit.ClassRule; + +import java.io.IOException; + +import static org.hamcrest.Matchers.containsString; + +public class EntitlementsDeniedNonModularIT extends ESRestTestCase { + + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .module("test-plugin", spec -> EntitlementsUtil.setupEntitlements(spec, false, null)) + .systemProperty("es.entitlements.enabled", "true") + .setting("xpack.security.enabled", "false") + // Logs in libs/entitlement/qa/build/test-results/javaRestTest/TEST-org.elasticsearch.entitlement.qa.EntitlementsDeniedIT.xml + // .setting("logger.org.elasticsearch.entitlement", "DEBUG") + .build(); + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } + + private final String actionName; + + public EntitlementsDeniedNonModularIT(@Name("actionName") String actionName) { + this.actionName = actionName; + } + + @ParametersFactory + public static Iterable data() { + return RestEntitlementsCheckAction.getAllCheckActions().stream().map(action -> new Object[] { action }).toList(); + } + + public void testCheckThrows() { + logger.info("Executing Entitlement test for [{}]", actionName); + var exception = expectThrows(IOException.class, () -> { + var request = new Request("GET", "/_entitlement_check"); + request.addParameter("action", actionName); + client().performRequest(request); + }); + assertThat(exception.getMessage(), containsString("not_entitled_exception")); + } +} diff --git a/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsUtil.java b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsUtil.java new file mode 100644 index 0000000000000..46d411baf1aa0 --- /dev/null +++ b/libs/entitlement/qa/src/javaRestTest/java/org/elasticsearch/entitlement/qa/EntitlementsUtil.java @@ -0,0 +1,72 @@ +/* + * Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one + * or more contributor license agreements. Licensed under the "Elastic License + * 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side + * Public License v 1"; you may not use this file except in compliance with, at + * your election, the "Elastic License 2.0", the "GNU Affero General Public + * License v3.0 only", or the "Server Side Public License, v 1". + */ + +package org.elasticsearch.entitlement.qa; + +import org.elasticsearch.common.Strings; +import org.elasticsearch.core.CheckedConsumer; +import org.elasticsearch.test.cluster.local.PluginInstallSpec; +import org.elasticsearch.test.cluster.util.resource.Resource; +import org.elasticsearch.xcontent.XContentBuilder; +import org.elasticsearch.xcontent.yaml.YamlXContent; + +import java.io.IOException; +import java.io.UncheckedIOException; +import java.util.List; +import java.util.Map; + +class EntitlementsUtil { + + static final CheckedConsumer ALLOWED_ENTITLEMENTS = builder -> { + builder.value("create_class_loader"); + builder.value("set_https_connection_properties"); + builder.value("inbound_network"); + builder.value("outbound_network"); + builder.value("load_native_libraries"); + builder.value( + Map.of( + "write_system_properties", + Map.of("properties", List.of("es.entitlements.checkSetSystemProperty", "es.entitlements.checkClearSystemProperty")) + ) + ); + }; + + static void setupEntitlements(PluginInstallSpec spec, boolean modular, CheckedConsumer policyBuilder) { + String moduleName = modular ? "org.elasticsearch.entitlement.qa.test" : "ALL-UNNAMED"; + if (policyBuilder != null) { + try { + try (var builder = YamlXContent.contentBuilder()) { + builder.startObject(); + builder.field(moduleName); + builder.startArray(); + policyBuilder.accept(builder); + builder.endArray(); + builder.endObject(); + + String policy = Strings.toString(builder); + System.out.println("Using entitlement policy:\n" + policy); + spec.withEntitlementsOverride(old -> Resource.fromString(policy)); + } + + } catch (IOException e) { + throw new UncheckedIOException(e); + } + } + + if (modular == false) { + spec.withPropertiesOverride(old -> { + String props = old.replace("modulename=org.elasticsearch.entitlement.qa.test", ""); + System.out.println("Using plugin properties:\n" + props); + return Resource.fromString(props); + }); + } + } + + private EntitlementsUtil() {} +} diff --git a/libs/entitlement/qa/common/build.gradle b/libs/entitlement/qa/test-plugin/build.gradle similarity index 57% rename from libs/entitlement/qa/common/build.gradle rename to libs/entitlement/qa/test-plugin/build.gradle index 1fd5178e4aee7..4a1531b3e96d8 100644 --- a/libs/entitlement/qa/common/build.gradle +++ b/libs/entitlement/qa/test-plugin/build.gradle @@ -7,10 +7,27 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ +import org.elasticsearch.gradle.internal.precommit.CheckForbiddenApisTask + +apply plugin: 'elasticsearch.base-internal-es-plugin' apply plugin: 'elasticsearch.build' apply plugin: 'elasticsearch.mrjar' +esplugin { + name = 'test-plugin' + description = 'A test plugin that invokes methods checked by entitlements' + classname = 'org.elasticsearch.entitlement.qa.test.EntitlementTestPlugin' +} + dependencies { implementation project(':server') implementation project(':libs:logging') } + +tasks.named("javadoc").configure { + enabled = false +} + +tasks.withType(CheckForbiddenApisTask).configureEach { + replaceSignatureFiles 'jdk-signatures' +} diff --git a/libs/entitlement/qa/common/src/main/java/module-info.java b/libs/entitlement/qa/test-plugin/src/main/java/module-info.java similarity index 87% rename from libs/entitlement/qa/common/src/main/java/module-info.java rename to libs/entitlement/qa/test-plugin/src/main/java/module-info.java index c40240f3dc1d5..a1df03ad5c974 100644 --- a/libs/entitlement/qa/common/src/main/java/module-info.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/module-info.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -module org.elasticsearch.entitlement.qa.common { +module org.elasticsearch.entitlement.qa.test { requires org.elasticsearch.server; requires org.elasticsearch.base; requires org.elasticsearch.logging; @@ -15,6 +15,4 @@ // Modules we'll attempt to use in order to exercise entitlements requires java.logging; requires java.net.http; - - exports org.elasticsearch.entitlement.qa.common; } diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/DummyImplementations.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/DummyImplementations.java similarity index 99% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/DummyImplementations.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/DummyImplementations.java index 304aead1e2bf6..6564e0eed41e1 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/DummyImplementations.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/DummyImplementations.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import java.io.IOException; import java.io.InputStream; diff --git a/libs/entitlement/qa/entitlement-denied/src/main/java/org/elasticsearch/entitlement/qa/EntitlementDeniedPlugin.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/EntitlementTestPlugin.java similarity index 86% rename from libs/entitlement/qa/entitlement-denied/src/main/java/org/elasticsearch/entitlement/qa/EntitlementDeniedPlugin.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/EntitlementTestPlugin.java index 2a2fd35d47cf3..36283cce3c81d 100644 --- a/libs/entitlement/qa/entitlement-denied/src/main/java/org/elasticsearch/entitlement/qa/EntitlementDeniedPlugin.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/EntitlementTestPlugin.java @@ -6,7 +6,7 @@ * your election, the "Elastic License 2.0", the "GNU Affero General Public * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa; +package org.elasticsearch.entitlement.qa.test; import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver; import org.elasticsearch.cluster.node.DiscoveryNodes; @@ -15,7 +15,6 @@ import org.elasticsearch.common.settings.IndexScopedSettings; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.settings.SettingsFilter; -import org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction; import org.elasticsearch.features.NodeFeature; import org.elasticsearch.plugins.ActionPlugin; import org.elasticsearch.plugins.Plugin; @@ -26,7 +25,7 @@ import java.util.function.Predicate; import java.util.function.Supplier; -public class EntitlementDeniedPlugin extends Plugin implements ActionPlugin { +public class EntitlementTestPlugin extends Plugin implements ActionPlugin { @Override public List getRestHandlers( final Settings settings, @@ -39,6 +38,6 @@ public List getRestHandlers( final Supplier nodesInCluster, Predicate clusterSupportsFeature ) { - return List.of(new RestEntitlementsCheckAction("denied")); + return List.of(new RestEntitlementsCheckAction()); } } diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/LoadNativeLibrariesCheckActions.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/LoadNativeLibrariesCheckActions.java similarity index 96% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/LoadNativeLibrariesCheckActions.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/LoadNativeLibrariesCheckActions.java index e7c12ccbaa5e8..50980bc230f55 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/LoadNativeLibrariesCheckActions.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/LoadNativeLibrariesCheckActions.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; class LoadNativeLibrariesCheckActions { static void runtimeLoad() { diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/NetworkAccessCheckActions.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/NetworkAccessCheckActions.java similarity index 99% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/NetworkAccessCheckActions.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/NetworkAccessCheckActions.java index 49cf586ea1285..f778c4be0b779 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/NetworkAccessCheckActions.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/NetworkAccessCheckActions.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import org.elasticsearch.core.SuppressForbidden; diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/RestEntitlementsCheckAction.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/RestEntitlementsCheckAction.java similarity index 92% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/RestEntitlementsCheckAction.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/RestEntitlementsCheckAction.java index 0e506d829ac36..712502b38fe90 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/RestEntitlementsCheckAction.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/RestEntitlementsCheckAction.java @@ -7,24 +7,24 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import org.elasticsearch.client.internal.node.NodeClient; import org.elasticsearch.common.Strings; import org.elasticsearch.core.CheckedRunnable; import org.elasticsearch.core.SuppressForbidden; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyBreakIteratorProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyCalendarDataProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyCalendarNameProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyCollatorProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyCurrencyNameProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyDateFormatProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyDateFormatSymbolsProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyDecimalFormatSymbolsProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyLocaleNameProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyLocaleServiceProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyNumberFormatProvider; -import org.elasticsearch.entitlement.qa.common.DummyImplementations.DummyTimeZoneNameProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyBreakIteratorProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyCalendarDataProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyCalendarNameProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyCollatorProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyCurrencyNameProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyDateFormatProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyDateFormatSymbolsProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyDecimalFormatSymbolsProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyLocaleNameProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyLocaleServiceProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyNumberFormatProvider; +import org.elasticsearch.entitlement.qa.test.DummyImplementations.DummyTimeZoneNameProvider; import org.elasticsearch.logging.LogManager; import org.elasticsearch.logging.Logger; import org.elasticsearch.rest.BaseRestHandler; @@ -61,16 +61,15 @@ import javax.net.ssl.SSLContext; import static java.util.Map.entry; -import static org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction.CheckAction.alwaysDenied; -import static org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction.CheckAction.deniedToPlugins; -import static org.elasticsearch.entitlement.qa.common.RestEntitlementsCheckAction.CheckAction.forPlugins; +import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.alwaysDenied; +import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.deniedToPlugins; +import static org.elasticsearch.entitlement.qa.test.RestEntitlementsCheckAction.CheckAction.forPlugins; import static org.elasticsearch.rest.RestRequest.Method.GET; @SuppressWarnings("unused") public class RestEntitlementsCheckAction extends BaseRestHandler { private static final Logger logger = LogManager.getLogger(RestEntitlementsCheckAction.class); public static final Thread NO_OP_SHUTDOWN_HOOK = new Thread(() -> {}, "Shutdown hook for testing"); - private final String prefix; record CheckAction(CheckedRunnable action, boolean isAlwaysDeniedToPlugins, Integer fromJavaVersion) { /** @@ -442,10 +441,6 @@ private static void receiveDatagramSocket() throws IOException { } } - public RestEntitlementsCheckAction(String prefix) { - this.prefix = prefix; - } - public static Set getCheckActionsAllowedInPlugins() { return checkActions.entrySet() .stream() @@ -460,17 +455,17 @@ public static Set getAllCheckActions() { @Override public List routes() { - return List.of(new Route(GET, "/_entitlement/" + prefix + "/_check")); + return List.of(new Route(GET, "/_entitlement_check")); } @Override public String getName() { - return "check_" + prefix + "_action"; + return "check_entitlement_action"; } @Override protected RestChannelConsumer prepareRequest(RestRequest request, NodeClient client) { - logger.info("RestEntitlementsCheckAction rest handler [{}]", request.path()); + logger.debug("RestEntitlementsCheckAction rest handler [{}]", request.path()); var actionName = request.param("action"); if (Strings.isNullOrEmpty(actionName)) { throw new IllegalArgumentException("Missing action parameter"); diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java similarity index 96% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java index df7777b6614aa..548bce8e2f766 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import java.io.IOException; import java.net.URI; diff --git a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/WritePropertiesCheckActions.java b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/WritePropertiesCheckActions.java similarity index 96% rename from libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/WritePropertiesCheckActions.java rename to libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/WritePropertiesCheckActions.java index 8e5173796458d..6ddb3e54a62cf 100644 --- a/libs/entitlement/qa/common/src/main/java/org/elasticsearch/entitlement/qa/common/WritePropertiesCheckActions.java +++ b/libs/entitlement/qa/test-plugin/src/main/java/org/elasticsearch/entitlement/qa/test/WritePropertiesCheckActions.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import org.elasticsearch.core.SuppressForbidden; diff --git a/libs/entitlement/qa/common/src/main18/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java b/libs/entitlement/qa/test-plugin/src/main18/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java similarity index 97% rename from libs/entitlement/qa/common/src/main18/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java rename to libs/entitlement/qa/test-plugin/src/main18/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java index 6229b7f8e6cfc..5a456c65d8206 100644 --- a/libs/entitlement/qa/common/src/main18/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java +++ b/libs/entitlement/qa/test-plugin/src/main18/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import java.io.IOException; import java.net.URI; diff --git a/libs/entitlement/qa/common/src/main21/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java b/libs/entitlement/qa/test-plugin/src/main21/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java similarity index 98% rename from libs/entitlement/qa/common/src/main21/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java rename to libs/entitlement/qa/test-plugin/src/main21/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java index 8dcee7e7603de..d94597c2d9dd0 100644 --- a/libs/entitlement/qa/common/src/main21/java/org/elasticsearch/entitlement/qa/common/VersionSpecificNetworkChecks.java +++ b/libs/entitlement/qa/test-plugin/src/main21/java/org/elasticsearch/entitlement/qa/test/VersionSpecificNetworkChecks.java @@ -7,7 +7,7 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -package org.elasticsearch.entitlement.qa.common; +package org.elasticsearch.entitlement.qa.test; import java.io.IOException; import java.net.URI;