From e853338ce8395982e25ac64b1946eb6f63e59d21 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Wed, 26 Mar 2025 10:05:56 -0700 Subject: [PATCH 1/8] Migrate legacy QA projects to new test clusters framework (#125545) --- .../internal/RestrictedBuildApiService.java | 5 --- qa/smoke-test-http/build.gradle | 15 +++---- .../tasks/RestListTasksCancellationIT.java | 0 ...ockedSearcherRestCancellationTestCase.java | 0 .../org/elasticsearch/http/BulkRestIT.java | 0 .../http/ClusterHealthRestCancellationIT.java | 0 .../http/ClusterInfoRestCancellationIT.java | 0 .../http/ClusterStateRestCancellationIT.java | 0 .../http/ClusterStatsRestCancellationIT.java | 0 .../org/elasticsearch/http/CorsNotSetIT.java | 0 .../org/elasticsearch/http/CorsRegexIT.java | 0 .../http/DanglingIndicesRestIT.java | 0 .../http/DetailedErrorsDisabledIT.java | 0 .../http/DetailedErrorsEnabledIT.java | 0 .../http/HealthRestCancellationIT.java | 0 .../elasticsearch/http/HttpSmokeTestCase.java | 0 .../org/elasticsearch/http/HttpStatsIT.java | 0 .../http/IndexingPressureRestIT.java | 0 .../IndicesSegmentsRestCancellationIT.java | 0 .../http/IndicesStatsRestCancellationIT.java | 0 .../org/elasticsearch/http/NoHandlerIT.java | 0 .../http/NodeStatsRestCancellationIT.java | 0 .../org/elasticsearch/http/PointInTimeIT.java | 0 .../http/PrevalidateNodeRemovalRestIT.java | 0 .../http/ResponseHeaderPluginIT.java | 0 .../http/RestActionCancellationIT.java | 0 .../RestClusterInfoActionCancellationIT.java | 0 .../http/RolloverRestCancellationIT.java | 0 .../http/SearchErrorTraceIT.java | 0 .../http/SearchRestCancellationIT.java | 0 .../elasticsearch/http/SystemIndexRestIT.java | 0 .../http/TestResponseHeaderPlugin.java | 0 .../http/TestResponseHeaderRestAction.java | 0 .../AbstractSnapshotRestTestCase.java | 0 .../http/snapshots/RestCatSnapshotsIT.java | 0 .../RestGetSnapshotsCancellationIT.java | 0 .../http/snapshots/RestGetSnapshotsIT.java | 0 .../RestSnapshotsStatusCancellationIT.java | 0 .../http/AbstractHttpSmokeTestIT.java | 25 +++++++++++ .../elasticsearch/http/AutoCreateIndexIT.java | 3 +- .../elasticsearch/http/HttpCompressionIT.java | 3 +- .../http/RestHttpResponseHeadersIT.java | 3 +- qa/smoke-test-ingest-disabled/build.gradle | 9 +--- ...stIngestDisabledClientYamlTestSuiteIT.java | 13 ++++++ .../build.gradle | 26 +++++------- .../ingest/AbstractScriptTestCase.java | 0 .../ingest/IngestDocumentMustacheIT.java | 0 .../ingest/ValueSourceMustacheIT.java | 0 .../resources/scripts/master.painless | 0 ...ngestWithAllDepsClientYamlTestSuiteIT.java | 18 ++++++++ ...ation_warnings_on_invalid_names_ingest.yml | 3 +- qa/smoke-test-plugins/build.gradle | 16 ++++--- ...SmokeTestPluginsClientYamlTestSuiteIT.java | 14 +++++++ qa/system-indices/build.gradle | 9 +--- .../indices/AbstractSystemIndicesIT.java | 42 +++++++++++++++++++ .../system/indices/FeatureUpgradeApiIT.java | 13 +----- .../system/indices/NetNewSystemIndicesIT.java | 13 +----- .../system/indices/SystemAliasIT.java | 12 +----- .../elasticsearch/ingest/IngestService.java | 3 -- .../local/AbstractLocalClusterFactory.java | 4 +- 60 files changed, 151 insertions(+), 98 deletions(-) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/action/support/tasks/RestListTasksCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/BlockedSearcherRestCancellationTestCase.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/BulkRestIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/ClusterHealthRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/ClusterStateRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/ClusterStatsRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/CorsNotSetIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/CorsRegexIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/DanglingIndicesRestIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/DetailedErrorsEnabledIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/HealthRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/HttpSmokeTestCase.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/HttpStatsIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/IndexingPressureRestIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/IndicesSegmentsRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/IndicesStatsRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/NoHandlerIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/NodeStatsRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/PointInTimeIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/PrevalidateNodeRemovalRestIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/ResponseHeaderPluginIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/RestActionCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/RestClusterInfoActionCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/RolloverRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/SearchErrorTraceIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/SearchRestCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/SystemIndexRestIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/TestResponseHeaderPlugin.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/TestResponseHeaderRestAction.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/snapshots/AbstractSnapshotRestTestCase.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/snapshots/RestCatSnapshotsIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/snapshots/RestGetSnapshotsCancellationIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/snapshots/RestGetSnapshotsIT.java (100%) rename qa/smoke-test-http/src/{javaRestTest => internalClusterTest}/java/org/elasticsearch/http/snapshots/RestSnapshotsStatusCancellationIT.java (100%) create mode 100644 qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AbstractHttpSmokeTestIT.java rename qa/smoke-test-ingest-with-all-dependencies/src/{yamlRestTest => internalClusterTest}/java/org/elasticsearch/ingest/AbstractScriptTestCase.java (100%) rename qa/smoke-test-ingest-with-all-dependencies/src/{yamlRestTest => internalClusterTest}/java/org/elasticsearch/ingest/IngestDocumentMustacheIT.java (100%) rename qa/smoke-test-ingest-with-all-dependencies/src/{yamlRestTest => internalClusterTest}/java/org/elasticsearch/ingest/ValueSourceMustacheIT.java (100%) rename qa/smoke-test-ingest-with-all-dependencies/src/{yamlRestTest => internalClusterTest}/resources/scripts/master.painless (100%) create mode 100644 qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java index 2ee424094fa31..b2392110c8097 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java @@ -56,11 +56,6 @@ private static ListMultimap, String> createLegacyRestTestBasePluginUsag map.put(LegacyRestTestBasePlugin.class, ":qa:remote-clusters"); map.put(LegacyRestTestBasePlugin.class, ":qa:repository-multi-version"); map.put(LegacyRestTestBasePlugin.class, ":qa:rolling-upgrade-legacy"); - map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-http"); - map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-disabled"); - map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-ingest-with-all-dependencies"); - map.put(LegacyRestTestBasePlugin.class, ":qa:smoke-test-plugins"); - map.put(LegacyRestTestBasePlugin.class, ":qa:system-indices"); map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration"); map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs"); map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity"); diff --git a/qa/smoke-test-http/build.gradle b/qa/smoke-test-http/build.gradle index 8331cb7c8b1e8..50755e1c16432 100644 --- a/qa/smoke-test-http/build.gradle +++ b/qa/smoke-test-http/build.gradle @@ -7,15 +7,12 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -apply plugin: 'elasticsearch.legacy-java-rest-test' -//apply plugin: 'elasticsearch.test-with-dependencies' +apply plugin: 'elasticsearch.internal-cluster-test' +apply plugin: 'elasticsearch.internal-java-rest-test' dependencies { - javaRestTestImplementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}" - javaRestTestImplementation project(':modules:rest-root') -} - -testClusters.configureEach { - module ':modules:rest-root' - setting 'xpack.security.enabled', 'false' + internalClusterTestImplementation project(":test:framework") + internalClusterTestImplementation "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}" + internalClusterTestImplementation project(':modules:rest-root') + clusterModules project(":modules:rest-root") } diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/action/support/tasks/RestListTasksCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/action/support/tasks/RestListTasksCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/action/support/tasks/RestListTasksCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/action/support/tasks/RestListTasksCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/BlockedSearcherRestCancellationTestCase.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/BlockedSearcherRestCancellationTestCase.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/BlockedSearcherRestCancellationTestCase.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/BlockedSearcherRestCancellationTestCase.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/BulkRestIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/BulkRestIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/BulkRestIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/BulkRestIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterHealthRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterHealthRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterHealthRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterHealthRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterInfoRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterStateRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterStateRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterStateRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterStateRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterStatsRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterStatsRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ClusterStatsRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ClusterStatsRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/CorsNotSetIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/CorsNotSetIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/CorsNotSetIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/CorsNotSetIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/CorsRegexIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/CorsRegexIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/CorsRegexIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/CorsRegexIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DanglingIndicesRestIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DanglingIndicesRestIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DanglingIndicesRestIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DanglingIndicesRestIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DetailedErrorsDisabledIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DetailedErrorsEnabledIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DetailedErrorsEnabledIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/DetailedErrorsEnabledIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/DetailedErrorsEnabledIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HealthRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HealthRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HealthRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HealthRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpSmokeTestCase.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HttpSmokeTestCase.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpSmokeTestCase.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HttpSmokeTestCase.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpStatsIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HttpStatsIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpStatsIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/HttpStatsIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndexingPressureRestIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndexingPressureRestIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndexingPressureRestIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndexingPressureRestIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndicesSegmentsRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndicesSegmentsRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndicesSegmentsRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndicesSegmentsRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndicesStatsRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndicesStatsRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/IndicesStatsRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/IndicesStatsRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/NoHandlerIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/NoHandlerIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/NoHandlerIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/NoHandlerIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/NodeStatsRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/NodeStatsRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/NodeStatsRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/NodeStatsRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/PointInTimeIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/PointInTimeIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/PointInTimeIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/PointInTimeIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/PrevalidateNodeRemovalRestIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/PrevalidateNodeRemovalRestIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/PrevalidateNodeRemovalRestIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/PrevalidateNodeRemovalRestIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ResponseHeaderPluginIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ResponseHeaderPluginIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/ResponseHeaderPluginIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/ResponseHeaderPluginIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestActionCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RestActionCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestActionCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RestActionCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestClusterInfoActionCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RestClusterInfoActionCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestClusterInfoActionCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RestClusterInfoActionCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RolloverRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RolloverRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RolloverRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/RolloverRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SearchErrorTraceIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SearchErrorTraceIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SearchErrorTraceIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SearchErrorTraceIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SearchRestCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SearchRestCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SearchRestCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SearchRestCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SystemIndexRestIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SystemIndexRestIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/SystemIndexRestIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/SystemIndexRestIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/TestResponseHeaderPlugin.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/TestResponseHeaderPlugin.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/TestResponseHeaderPlugin.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/TestResponseHeaderPlugin.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/TestResponseHeaderRestAction.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/TestResponseHeaderRestAction.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/TestResponseHeaderRestAction.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/TestResponseHeaderRestAction.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/AbstractSnapshotRestTestCase.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/AbstractSnapshotRestTestCase.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/AbstractSnapshotRestTestCase.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/AbstractSnapshotRestTestCase.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestCatSnapshotsIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestCatSnapshotsIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestCatSnapshotsIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestCatSnapshotsIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestGetSnapshotsIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestSnapshotsStatusCancellationIT.java b/qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestSnapshotsStatusCancellationIT.java similarity index 100% rename from qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/snapshots/RestSnapshotsStatusCancellationIT.java rename to qa/smoke-test-http/src/internalClusterTest/java/org/elasticsearch/http/snapshots/RestSnapshotsStatusCancellationIT.java diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AbstractHttpSmokeTestIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AbstractHttpSmokeTestIT.java new file mode 100644 index 0000000000000..495fb0a6b5e33 --- /dev/null +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AbstractHttpSmokeTestIT.java @@ -0,0 +1,25 @@ +/* + * 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.http; + +import org.elasticsearch.test.cluster.ElasticsearchCluster; +import org.elasticsearch.test.rest.ESRestTestCase; +import org.junit.ClassRule; + +public abstract class AbstractHttpSmokeTestIT extends ESRestTestCase { + + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().module("rest-root").build(); + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } +} diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AutoCreateIndexIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AutoCreateIndexIT.java index ce897664bd8fc..9d7d2dd9d3c92 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AutoCreateIndexIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/AutoCreateIndexIT.java @@ -17,7 +17,6 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.xcontent.XContentHelper; -import org.elasticsearch.test.rest.ESRestTestCase; import org.elasticsearch.xcontent.ObjectPath; import org.elasticsearch.xcontent.XContentBuilder; import org.elasticsearch.xcontent.json.JsonXContent; @@ -29,7 +28,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static org.hamcrest.Matchers.containsString; -public class AutoCreateIndexIT extends ESRestTestCase { +public class AutoCreateIndexIT extends AbstractHttpSmokeTestIT { /** * Check that setting {@link AutoCreateIndex#AUTO_CREATE_INDEX_SETTING} to false diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpCompressionIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpCompressionIT.java index 981190f22ce28..d3e526e4192f0 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpCompressionIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/HttpCompressionIT.java @@ -14,7 +14,6 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; -import org.elasticsearch.test.rest.ESRestTestCase; import java.io.IOException; @@ -23,7 +22,7 @@ import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; -public class HttpCompressionIT extends ESRestTestCase { +public class HttpCompressionIT extends AbstractHttpSmokeTestIT { private static final String GZIP_ENCODING = "gzip"; private static final String SAMPLE_DOCUMENT = """ diff --git a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestHttpResponseHeadersIT.java b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestHttpResponseHeadersIT.java index 2ac07a3851ee5..19cb9f8e6fca6 100644 --- a/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestHttpResponseHeadersIT.java +++ b/qa/smoke-test-http/src/javaRestTest/java/org/elasticsearch/http/RestHttpResponseHeadersIT.java @@ -13,7 +13,6 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.Response; import org.elasticsearch.client.ResponseException; -import org.elasticsearch.test.rest.ESRestTestCase; import java.util.Arrays; import java.util.List; @@ -29,7 +28,7 @@ * methods on REST endpoints should respond with status code 405 for more * information. */ -public class RestHttpResponseHeadersIT extends ESRestTestCase { +public class RestHttpResponseHeadersIT extends AbstractHttpSmokeTestIT { /** * For an OPTIONS request to a valid REST endpoint, verify that a 200 HTTP diff --git a/qa/smoke-test-ingest-disabled/build.gradle b/qa/smoke-test-ingest-disabled/build.gradle index fe8904da7c1c1..cc3b5c19ab4a9 100644 --- a/qa/smoke-test-ingest-disabled/build.gradle +++ b/qa/smoke-test-ingest-disabled/build.gradle @@ -6,13 +6,8 @@ * 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.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' dependencies { - testImplementation project(':modules:ingest-common') -} - -testClusters.matching { it.name == "yamlRestTest" }.configureEach { - setting 'xpack.security.enabled', 'false' - setting 'node.roles', '[data,master,remote_cluster_client]' + clusterModules project(':modules:ingest-common') } diff --git a/qa/smoke-test-ingest-disabled/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestDisabledClientYamlTestSuiteIT.java b/qa/smoke-test-ingest-disabled/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestDisabledClientYamlTestSuiteIT.java index 4c050b776a16a..254e8bd8e24e6 100644 --- a/qa/smoke-test-ingest-disabled/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestDisabledClientYamlTestSuiteIT.java +++ b/qa/smoke-test-ingest-disabled/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestDisabledClientYamlTestSuiteIT.java @@ -12,11 +12,20 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class SmokeTestIngestDisabledClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .module("ingest-common") + .setting("xpack.security.enabled", "false") + .setting("node.roles", "[data,master,remote_cluster_client]") + .build(); + public SmokeTestIngestDisabledClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -26,4 +35,8 @@ public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/qa/smoke-test-ingest-with-all-dependencies/build.gradle b/qa/smoke-test-ingest-with-all-dependencies/build.gradle index 5482fa4f4df85..ca5bbebd6b3d4 100644 --- a/qa/smoke-test-ingest-with-all-dependencies/build.gradle +++ b/qa/smoke-test-ingest-with-all-dependencies/build.gradle @@ -7,22 +7,16 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -apply plugin: 'elasticsearch.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-cluster-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' dependencies { - yamlRestTestImplementation project(':modules:lang-mustache') -} - -testClusters.configureEach { - setting 'xpack.security.enabled', 'false' - extraConfigFile 'ingest-geoip/GeoLite2-City.mmdb', file("src/yamlRestTest/resources/GeoLite2-City.mmdb") -} - -tasks.named("yamlRestTestTestingConventions").configure { - baseClass 'org.elasticsearch.ingest.AbstractScriptTestCase' - baseClass 'org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase' -} - -tasks.named("forbiddenPatterns").configure { - exclude '**/*.mmdb' + internalClusterTestImplementation project(':test:framework') + internalClusterTestImplementation project(':modules:lang-mustache') + clusterModules project(":modules:ingest-common") + clusterModules project(":modules:lang-mustache") + clusterModules project(":modules:reindex") + clusterModules project(":modules:data-streams") + clusterModules project(":modules:ingest-geoip") + clusterModules project(":modules:mapper-extras") } diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/AbstractScriptTestCase.java b/qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/AbstractScriptTestCase.java similarity index 100% rename from qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/AbstractScriptTestCase.java rename to qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/AbstractScriptTestCase.java diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/IngestDocumentMustacheIT.java b/qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/IngestDocumentMustacheIT.java similarity index 100% rename from qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/IngestDocumentMustacheIT.java rename to qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/IngestDocumentMustacheIT.java diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/ValueSourceMustacheIT.java b/qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/ValueSourceMustacheIT.java similarity index 100% rename from qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/ingest/ValueSourceMustacheIT.java rename to qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/java/org/elasticsearch/ingest/ValueSourceMustacheIT.java diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/scripts/master.painless b/qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/resources/scripts/master.painless similarity index 100% rename from qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/scripts/master.painless rename to qa/smoke-test-ingest-with-all-dependencies/src/internalClusterTest/resources/scripts/master.painless diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestWithAllDepsClientYamlTestSuiteIT.java b/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestWithAllDepsClientYamlTestSuiteIT.java index 9618381440d9d..5dc8640693790 100644 --- a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestWithAllDepsClientYamlTestSuiteIT.java +++ b/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestIngestWithAllDepsClientYamlTestSuiteIT.java @@ -12,11 +12,25 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; +import org.elasticsearch.test.cluster.util.resource.Resource; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class SmokeTestIngestWithAllDepsClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .module("ingest-common") + .module("lang-mustache") + .module("reindex") + .module("data-streams") + .module("ingest-geoip") + .module("mapper-extras") + .configFile("ingest-geoip/GeoLite2-City.mmdb", Resource.fromClasspath("GeoLite2-City.mmdb")) + .build(); + public SmokeTestIngestWithAllDepsClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -26,4 +40,8 @@ public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/rest-api-spec/test/ingest/90_deprecation_warnings_on_invalid_names_ingest.yml b/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/rest-api-spec/test/ingest/90_deprecation_warnings_on_invalid_names_ingest.yml index 64f5ccc4609ac..80d0ca00c7632 100644 --- a/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/rest-api-spec/test/ingest/90_deprecation_warnings_on_invalid_names_ingest.yml +++ b/qa/smoke-test-ingest-with-all-dependencies/src/yamlRestTest/resources/rest-api-spec/test/ingest/90_deprecation_warnings_on_invalid_names_ingest.yml @@ -1,7 +1,6 @@ --- "Test invalid name warnings": - requires: - cluster_features: [ "ingest.pipeline_name_special_chars_warning" ] test_runner_features: [ "warnings" ] reason: verifying deprecation warnings from 9.0 onwards for invalid pipeline names @@ -24,5 +23,5 @@ }] } warnings: - - "Invalid pipeline id: Invalid*-pipeline:id" + - "Pipeline name [Invalid*-pipeline:id] will be disallowed in a future version for the following reason: must not contain the following characters [' ','\"','*',',','/','<','>','?','\\','|']" - match: { acknowledged: true } diff --git a/qa/smoke-test-plugins/build.gradle b/qa/smoke-test-plugins/build.gradle index c707c2b5e8c80..42151668922fe 100644 --- a/qa/smoke-test-plugins/build.gradle +++ b/qa/smoke-test-plugins/build.gradle @@ -9,26 +9,32 @@ import org.apache.tools.ant.filters.ReplaceTokens -apply plugin: 'elasticsearch.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' ext.pluginPaths = [] +ext.pluginNames = [] project(':plugins').getChildProjects().each { pluginName, pluginProject -> pluginPaths << pluginProject.path + pluginNames << pluginName } -testClusters.matching { it.name == "yamlRestTest" }.configureEach { +dependencies { + clusterModules project(":modules:lang-painless") pluginPaths.each { pluginPath -> - plugin pluginPath + clusterPlugins(project(pluginPath)) } - setting 'xpack.security.enabled', 'false' } ext.expansions = [ 'expected.plugins.count': pluginPaths.size() ] -tasks.named("processYamlRestTestResources").configure { +tasks.named("processYamlRestTestResources") { assert pluginPaths.size() > 0 inputs.properties(expansions) filter("tokens" : expansions.collectEntries {k, v -> [k, v.toString()]} /* must be a map of strings */, ReplaceTokens.class) } + +tasks.named("yamlRestTest") { + systemProperty('tests.plugin.names', pluginNames.join(',')) +} diff --git a/qa/smoke-test-plugins/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestPluginsClientYamlTestSuiteIT.java b/qa/smoke-test-plugins/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestPluginsClientYamlTestSuiteIT.java index 586f0bfcbc712..fa2972a49ac02 100644 --- a/qa/smoke-test-plugins/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestPluginsClientYamlTestSuiteIT.java +++ b/qa/smoke-test-plugins/src/yamlRestTest/java/org/elasticsearch/smoketest/SmokeTestPluginsClientYamlTestSuiteIT.java @@ -12,11 +12,20 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class SmokeTestPluginsClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().apply(c -> { + for (String plugin : System.getProperty("tests.plugin.names").split(",")) { + c.plugin(plugin); + } + }).module("lang-painless").setting("xpack.security.enabled", "false").build(); + public SmokeTestPluginsClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +34,9 @@ public SmokeTestPluginsClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandida public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/qa/system-indices/build.gradle b/qa/system-indices/build.gradle index cbd7da37b49f3..e856bde590f38 100644 --- a/qa/system-indices/build.gradle +++ b/qa/system-indices/build.gradle @@ -8,7 +8,7 @@ */ apply plugin: 'elasticsearch.base-internal-es-plugin' -apply plugin: 'elasticsearch.legacy-java-rest-test' +apply plugin: 'elasticsearch.internal-java-rest-test' esplugin { name = 'system-indices-qa' @@ -17,10 +17,3 @@ esplugin { licenseFile = layout.settingsDirectory.file('licenses/AGPL-3.0+SSPL-1.0+ELASTIC-LICENSE-2.0.txt').asFile noticeFile = layout.settingsDirectory.file('NOTICE.txt').asFile } - -testClusters.configureEach { - testDistribution = 'DEFAULT' - setting 'xpack.security.enabled', 'true' - setting 'xpack.security.autoconfiguration.enabled', 'false' - user username: 'rest_user', password: 'rest-user-password' -} diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java new file mode 100644 index 0000000000000..eaa21fe57a7c3 --- /dev/null +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java @@ -0,0 +1,42 @@ +/* + * 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.system.indices; + +import org.elasticsearch.common.settings.SecureString; +import org.elasticsearch.common.settings.Settings; +import org.elasticsearch.common.util.concurrent.ThreadContext; +import org.elasticsearch.test.cluster.ElasticsearchCluster; +import org.elasticsearch.test.rest.ESRestTestCase; +import org.junit.ClassRule; + +public abstract class AbstractSystemIndicesIT extends ESRestTestCase { + protected static final String BASIC_AUTH_VALUE = basicAuthHeaderValue( + "rest_user", + new SecureString("rest-user-password".toCharArray()) + ); + + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .plugin("system-indices-qa") + .setting("xpack.security.enabled", "true") + .setting("xpack.security.autoconfiguration.enabled", "false") + .user("rest_user", "rest-user-password") + .build(); + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } + + @Override + protected Settings restClientSettings() { + return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", BASIC_AUTH_VALUE).build(); + } +} diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/FeatureUpgradeApiIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/FeatureUpgradeApiIT.java index 25cfbd7949611..62bc23ee4ad87 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/FeatureUpgradeApiIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/FeatureUpgradeApiIT.java @@ -12,12 +12,8 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.index.IndexVersion; import org.elasticsearch.test.XContentTestUtils; -import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.After; import java.util.Collections; @@ -29,20 +25,13 @@ import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; -public class FeatureUpgradeApiIT extends ESRestTestCase { - - static final String BASIC_AUTH_VALUE = basicAuthHeaderValue("rest_user", new SecureString("rest-user-password".toCharArray())); +public class FeatureUpgradeApiIT extends AbstractSystemIndicesIT { @After public void resetFeatures() throws Exception { client().performRequest(new Request("POST", "/_features/_reset")); } - @Override - protected Settings restClientSettings() { - return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", BASIC_AUTH_VALUE).build(); - } - public void testCreatingSystemIndex() throws Exception { var request = new Request("PUT", "/_net_new_sys_index/_create"); request.setOptions(RequestOptions.DEFAULT.toBuilder().addHeader("X-elastic-product-origin", "elastic")); diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/NetNewSystemIndicesIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/NetNewSystemIndicesIT.java index d2c48d1e9b609..1f497322647d4 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/NetNewSystemIndicesIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/NetNewSystemIndicesIT.java @@ -15,24 +15,13 @@ import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; import org.elasticsearch.client.ResponseException; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.After; import static org.hamcrest.Matchers.containsString; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; -public class NetNewSystemIndicesIT extends ESRestTestCase { - - static final String BASIC_AUTH_VALUE = basicAuthHeaderValue("rest_user", new SecureString("rest-user-password".toCharArray())); - - @Override - protected Settings restClientSettings() { - return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", BASIC_AUTH_VALUE).build(); - } +public class NetNewSystemIndicesIT extends AbstractSystemIndicesIT { public void testCreatingSystemIndex() throws Exception { ResponseException e = expectThrows( diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/SystemAliasIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/SystemAliasIT.java index 6109a1cf9dc31..1a724fcab2b07 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/SystemAliasIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/SystemAliasIT.java @@ -12,10 +12,6 @@ import org.elasticsearch.client.Request; import org.elasticsearch.client.RequestOptions; import org.elasticsearch.client.Response; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; -import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.After; import java.io.IOException; @@ -26,19 +22,13 @@ import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; -public class SystemAliasIT extends ESRestTestCase { - static final String BASIC_AUTH_VALUE = basicAuthHeaderValue("rest_user", new SecureString("rest-user-password".toCharArray())); +public class SystemAliasIT extends AbstractSystemIndicesIT { @After public void resetFeatures() throws Exception { client().performRequest(new Request("POST", "/_features/_reset")); } - @Override - protected Settings restClientSettings() { - return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", BASIC_AUTH_VALUE).build(); - } - public void testCreatingSystemIndexWithAlias() throws Exception { { Request request = new Request("PUT", "/.internal-unmanaged-index-8"); diff --git a/server/src/main/java/org/elasticsearch/ingest/IngestService.java b/server/src/main/java/org/elasticsearch/ingest/IngestService.java index 6ef5da8ee1fb7..7fd5052468599 100644 --- a/server/src/main/java/org/elasticsearch/ingest/IngestService.java +++ b/server/src/main/java/org/elasticsearch/ingest/IngestService.java @@ -60,7 +60,6 @@ import org.elasticsearch.core.Tuple; import org.elasticsearch.core.UpdateForV10; import org.elasticsearch.env.Environment; -import org.elasticsearch.features.NodeFeature; import org.elasticsearch.gateway.GatewayService; import org.elasticsearch.grok.MatcherWatchdog; import org.elasticsearch.index.IndexSettings; @@ -111,8 +110,6 @@ public class IngestService implements ClusterStateApplier, ReportingService pluginPaths = Arrays.stream(System.getProperty(TESTS_CLUSTER_PLUGINS_PATH_SYSPROP).split(File.pathSeparator)) .map(Path::of) .toList(); @@ -762,7 +762,7 @@ private void installPlugins() { private void installModules() { if (spec.getModules().isEmpty() == false) { - LOGGER.info("Installing modules {} into node '{}", spec.getModules(), name); + LOGGER.info("Installing modules {} into node '{}", spec.getModules().keySet(), name); List modulePaths = Arrays.stream(System.getProperty(TESTS_CLUSTER_MODULES_PATH_SYSPROP).split(File.pathSeparator)) .map(Path::of) .toList(); From 7c4f80e21e46c0fda7015e3c587b1034f3538fed Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Wed, 26 Mar 2025 13:42:44 -0700 Subject: [PATCH 2/8] Fix test --- qa/system-indices/build.gradle | 5 +++++ .../system/indices/AbstractSystemIndicesIT.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/qa/system-indices/build.gradle b/qa/system-indices/build.gradle index e856bde590f38..d59368f735e9c 100644 --- a/qa/system-indices/build.gradle +++ b/qa/system-indices/build.gradle @@ -17,3 +17,8 @@ esplugin { licenseFile = layout.settingsDirectory.file('licenses/AGPL-3.0+SSPL-1.0+ELASTIC-LICENSE-2.0.txt').asFile noticeFile = layout.settingsDirectory.file('NOTICE.txt').asFile } + +dependencies { + clusterModules project(':modules:analysis-common') + clusterModules project(':x-pack:plugin:migrate') +} diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java index eaa21fe57a7c3..2e1d727cf8543 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java @@ -25,6 +25,8 @@ public abstract class AbstractSystemIndicesIT extends ESRestTestCase { @ClassRule public static ElasticsearchCluster cluster = ElasticsearchCluster.local() .plugin("system-indices-qa") + .module("analysis-common") + .module("x-pack-migrate") .setting("xpack.security.enabled", "true") .setting("xpack.security.autoconfiguration.enabled", "false") .user("rest_user", "rest-user-password") From 0b42375da824ce5395908af844215863500be62b Mon Sep 17 00:00:00 2001 From: Fang Xing <155562079+fang-xing-esql@users.noreply.github.com> Date: Wed, 26 Mar 2025 17:34:11 -0400 Subject: [PATCH 3/8] [ES|QL] Make numberOfChannels consistent with layout map by removing duplicated ChannelSet (#125636) (#125720) * make numberOfChannels consistent with layout (cherry picked from commit 80125a4bac31f54cc86fdee26ef0ac5dfa61eee3) # Conflicts: # x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java # x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java --- docs/changelog/125636.yaml | 6 ++ .../xpack/esql/qa/rest/RestEsqlTestCase.java | 53 ++++++++++- .../src/main/resources/lookup-join.csv-spec | 87 +++++++++++++++++++ .../xpack/esql/action/EsqlCapabilities.java | 7 +- .../xpack/esql/planner/Layout.java | 14 ++- 5 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 docs/changelog/125636.yaml diff --git a/docs/changelog/125636.yaml b/docs/changelog/125636.yaml new file mode 100644 index 0000000000000..3ceaade9f01c2 --- /dev/null +++ b/docs/changelog/125636.yaml @@ -0,0 +1,6 @@ +pr: 125636 +summary: Make `numberOfChannels` consistent with layout map by removing duplicated + `ChannelSet` +area: ES|QL +type: bug +issues: [] diff --git a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java index accfd2f69ee64..e13c20e2e7cc5 100644 --- a/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java +++ b/x-pack/plugin/esql/qa/server/src/main/java/org/elasticsearch/xpack/esql/qa/rest/RestEsqlTestCase.java @@ -33,6 +33,7 @@ import org.elasticsearch.xcontent.XContentType; import org.elasticsearch.xpack.esql.AssertWarnings; import org.elasticsearch.xpack.esql.EsqlTestUtils; +import org.elasticsearch.xpack.esql.action.EsqlCapabilities; import org.junit.After; import org.junit.Assert; import org.junit.Before; @@ -83,9 +84,13 @@ public abstract class RestEsqlTestCase extends ESRestTestCase { private static final String MAPPING_ALL_TYPES; + private static final String MAPPING_ALL_TYPES_LOOKUP; + static { String properties = EsqlTestUtils.loadUtf8TextFile("/mapping-all-types.json"); MAPPING_ALL_TYPES = "{\"mappings\": " + properties + "}"; + String settings = "{\"settings\" : {\"mode\" : \"lookup\"}"; + MAPPING_ALL_TYPES_LOOKUP = settings + ", " + "\"mappings\": " + properties + "}"; } private static final String DOCUMENT_TEMPLATE = """ @@ -796,6 +801,32 @@ public void testErrorMessageForMissingParams() throws IOException { ); } + public void testMultipleBatchesWithLookupJoin() throws IOException { + assumeTrue( + "Makes numberOfChannels consistent with layout map for join with multiple batches", + EsqlCapabilities.Cap.MAKE_NUMBER_OF_CHANNELS_CONSISTENT_WITH_LAYOUT.isEnabled() + ); + // Create more than 10 indices to trigger multiple batches of data node execution. + // The sort field should be missing on some indices to reproduce NullPointerException caused by duplicated items in layout + for (int i = 1; i <= 20; i++) { + createIndex("idx" + i, randomBoolean(), "\"mappings\": {\"properties\" : {\"a\" : {\"type\" : \"keyword\"}}}"); + } + bulkLoadTestDataLookupMode(10); + // lookup join with and without sort + for (String sort : List.of("", "| sort integer")) { + var query = requestObjectBuilder().query(format(null, "from * | lookup join {} on integer {}", testIndexName(), sort)); + Map result = runEsql(query); + var columns = as(result.get("columns"), List.class); + assertEquals(21, columns.size()); + var values = as(result.get("values"), List.class); + assertEquals(10, values.size()); + } + // clean up + for (int i = 1; i <= 20; i++) { + assertThat(deleteIndex("idx" + i).isAcknowledged(), is(true)); + } + } + public void testErrorMessageForLiteralDateMathOverflow() throws IOException { List dateMathOverflowExpressions = List.of( "2147483647 day + 1 day", @@ -1377,13 +1408,22 @@ private static void bulkLoadTestData(int count) throws IOException { bulkLoadTestData(count, 0, true, RestEsqlTestCase::createDocument); } + private static void bulkLoadTestDataLookupMode(int count) throws IOException { + createIndex(testIndexName(), true); + bulkLoadTestData(count, 0, false, RestEsqlTestCase::createDocument); + } + + private static void createIndex(String indexName, boolean lookupMode) throws IOException { + Request request = new Request("PUT", "/" + indexName); + request.setJsonEntity(lookupMode ? MAPPING_ALL_TYPES_LOOKUP : MAPPING_ALL_TYPES); + assertEquals(200, client().performRequest(request).getStatusLine().getStatusCode()); + } + private static void bulkLoadTestData(int count, int firstIndex, boolean createIndex, IntFunction createDocument) throws IOException { Request request; if (createIndex) { - request = new Request("PUT", "/" + testIndexName()); - request.setJsonEntity(MAPPING_ALL_TYPES); - assertEquals(200, client().performRequest(request).getStatusLine().getStatusCode()); + createIndex(testIndexName(), false); } if (count > 0) { @@ -1458,6 +1498,13 @@ private static String repeatValueAsMV(Object value) { return "[" + value + ", " + value + "]"; } + private static void createIndex(String indexName, boolean lookupMode, String mapping) throws IOException { + Request request = new Request("PUT", "/" + indexName); + String settings = "\"settings\" : {\"mode\" : \"lookup\"}, "; + request.setJsonEntity("{" + (lookupMode ? settings : "") + mapping + "}"); + assertEquals(200, client().performRequest(request).getStatusLine().getStatusCode()); + } + public static RequestObjectBuilder requestObjectBuilder() throws IOException { return new RequestObjectBuilder(); } diff --git a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/lookup-join.csv-spec b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/lookup-join.csv-spec index 8ca4292f97faa..fc43c5fb5b278 100644 --- a/x-pack/plugin/esql/qa/testFixtures/src/main/resources/lookup-join.csv-spec +++ b/x-pack/plugin/esql/qa/testFixtures/src/main/resources/lookup-join.csv-spec @@ -1393,3 +1393,90 @@ emp_no:integer | language_code:integer | language_name:keyword 10092 | 1 | English 10093 | 3 | Spanish ; + +multipleBatchesWithSort +required_capability: join_lookup_v12 +required_capability: remove_redundant_sort +required_capability: make_number_of_channels_consistent_with_layout + +from * +| rename city.country.continent.planet.name as message +| lookup join message_types_lookup on message +| sort language_code, birth_date +| keep language_code +| limit 1 +; + +language_code:integer +1 +; + +multipleBatchesWithMvExpand +required_capability: join_lookup_v12 +required_capability: remove_redundant_sort +required_capability: make_number_of_channels_consistent_with_layout + +from * +| rename city.country.continent.planet.name as message +| lookup join message_types_lookup on message +| keep birth_date, language_code +| mv_expand birth_date +| sort birth_date, language_code +| limit 1 +; + +birth_date:datetime |language_code:integer +1952-02-27T00:00:00.000Z |null +; + +multipleBatchesWithAggregate1 +required_capability: join_lookup_v12 +required_capability: remove_redundant_sort +required_capability: make_number_of_channels_consistent_with_layout + +from * +| rename city.country.continent.planet.name as message +| lookup join message_types_lookup on message +| keep birth_date, language_code +| stats x=max(birth_date), y=min(language_code) +; + +x:datetime |y:integer +1965-01-03T00:00:00.000Z |1 +; + +multipleBatchesWithAggregate2 +required_capability: join_lookup_v12 +required_capability: remove_redundant_sort +required_capability: make_number_of_channels_consistent_with_layout + +from * +| rename city.country.continent.planet.name as message +| lookup join message_types_lookup on message +| keep birth_date, language_code +| stats m=min(birth_date) by language_code +| sort language_code +| limit 1 +; + +m:datetime |language_code:integer +null |1 +; + +multipleBatchesWithAggregate3 +required_capability: join_lookup_v12 +required_capability: remove_redundant_sort +required_capability: make_number_of_channels_consistent_with_layout + +from * +| rename city.country.continent.planet.name as message +| lookup join message_types_lookup on message +| keep birth_date, language_code +| stats m=min(language_code) by birth_date +| sort birth_date +| limit 1 +; + +m:integer |birth_date:datetime +null |1952-02-27T00:00:00.000Z +; diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java index ed3f419d26a1c..baf1e81594f83 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/action/EsqlCapabilities.java @@ -860,7 +860,12 @@ public enum Cap { /** * Non full text functions do not contribute to score */ - NON_FULL_TEXT_FUNCTIONS_SCORING; + NON_FULL_TEXT_FUNCTIONS_SCORING, + + /** + * Make numberOfChannels consistent with layout in DefaultLayout by removing duplicated ChannelSet. + */ + MAKE_NUMBER_OF_CHANNELS_CONSISTENT_WITH_LAYOUT; private final boolean enabled; diff --git a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/Layout.java b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/Layout.java index dafba5e92322c..a707bb1c6c000 100644 --- a/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/Layout.java +++ b/x-pack/plugin/esql/src/main/java/org/elasticsearch/xpack/esql/planner/Layout.java @@ -107,8 +107,20 @@ public Layout build() { Map layout = new HashMap<>(); int numberOfChannels = 0; for (ChannelSet set : channels) { - int channel = numberOfChannels++; + boolean createNewChannel = true; + int channel = 0; for (NameId id : set.nameIds) { + if (layout.containsKey(id)) { + // If a NameId already exists in the map, do not increase the numberOfChannels, it can cause inverse() to create + // a null in the list of channels, and NullPointerException when build() is called. + // TODO avoid adding duplicated attributes with the same id in the plan, ReplaceMissingFieldWithNull may add nulls + // with the same ids as the missing field ids. + continue; + } + if (createNewChannel) { + channel = numberOfChannels++; + createNewChannel = false; + } ChannelAndType next = new ChannelAndType(channel, set.type); ChannelAndType prev = layout.put(id, next); // Do allow multiple name to point to the same channel - see https://github.com/elastic/elasticsearch/pull/100238 From ea6ca8e831197ccff084493a7d1ce3e596d80b58 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Wed, 26 Mar 2025 14:57:22 -0700 Subject: [PATCH 4/8] Convert remaining plugin projects to new test clusters framework (#125626) (#125722) --- .../internal/RestrictedBuildApiService.java | 12 --- .../gradle/plugin/BasePluginBuildPlugin.java | 2 + plugins/analysis-icu/build.gradle | 4 +- .../analysis/IcuClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-kuromoji/build.gradle | 4 +- .../KuromojiClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-nori/build.gradle | 4 +- .../analysis/NoriClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-phonetic/build.gradle | 4 +- .../PhoneticClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-smartcn/build.gradle | 4 +- .../SmartCNClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-stempel/build.gradle | 4 +- .../StempelClientYamlTestSuiteIT.java | 10 ++ plugins/analysis-ukrainian/build.gradle | 4 +- .../UkrainianClientYamlTestSuiteIT.java | 10 ++ plugins/build.gradle | 4 - plugins/discovery-azure-classic/build.gradle | 19 ++-- ...veryAzureClassicClientYamlTestSuiteIT.java | 10 ++ plugins/discovery-gce/build.gradle | 7 +- plugins/discovery-gce/qa/build.gradle | 1 - plugins/discovery-gce/qa/gce/build.gradle | 64 ------------- .../GCEDiscoveryClientYamlTestSuiteIT.java | 28 ------ .../test/discovery_gce/10_basic.yml | 15 --- .../DiscoveryGceClientYamlTestSuiteIT.java | 29 ++++++ .../discovery}/gce/GCEFixture.java | 91 ++++++++++--------- .../test/discovery_gce/10_basic.yml | 16 +++- plugins/store-smb/build.gradle | 2 +- .../smb/StoreSmbClientYamlTestSuiteIT.java | 10 ++ .../test/fixture/AbstractHttpFixture.java | 4 + 30 files changed, 212 insertions(+), 200 deletions(-) delete mode 100644 plugins/discovery-gce/qa/build.gradle delete mode 100644 plugins/discovery-gce/qa/gce/build.gradle delete mode 100644 plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEDiscoveryClientYamlTestSuiteIT.java delete mode 100644 plugins/discovery-gce/qa/gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml rename plugins/discovery-gce/{qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud => src/yamlRestTest/java/org/elasticsearch/discovery}/gce/GCEFixture.java (79%) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java index 44cc56d38808e..f0aff29d42aa7 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java @@ -30,18 +30,6 @@ private static ListMultimap, String> createLegacyRestTestBasePluginUsag map.put(LegacyRestTestBasePlugin.class, ":docs"); map.put(LegacyRestTestBasePlugin.class, ":distribution:docker"); map.put(LegacyRestTestBasePlugin.class, ":modules:reindex"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-icu"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-kuromoji"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-nori"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-phonetic"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-smartcn"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-stempel"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:analysis-ukrainian"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-azure-classic"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-ec2"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:discovery-gce"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:mapper-annotated-text"); - map.put(LegacyRestTestBasePlugin.class, ":plugins:store-smb"); map.put(LegacyRestTestBasePlugin.class, ":qa:ccs-rolling-upgrade-remote-cluster"); map.put(LegacyRestTestBasePlugin.class, ":qa:mixed-cluster"); map.put(LegacyRestTestBasePlugin.class, ":qa:multi-cluster-search"); diff --git a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java index 42e576012c0c9..a1c003c4c315d 100644 --- a/build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java +++ b/build-tools/src/main/java/org/elasticsearch/gradle/plugin/BasePluginBuildPlugin.java @@ -56,6 +56,7 @@ public class BasePluginBuildPlugin implements Plugin { public static final String BUNDLE_PLUGIN_TASK_NAME = "bundlePlugin"; public static final String EXPLODED_BUNDLE_PLUGIN_TASK_NAME = "explodedBundlePlugin"; public static final String EXPLODED_BUNDLE_CONFIG = "explodedBundleZip"; + public static final Attribute EXPLODED_PLUGIN_BUNDLE_ATTRIBUTE = Attribute.of("exploded-plugin-bundle", Boolean.class); protected final ProviderFactory providerFactory; @@ -170,6 +171,7 @@ private TaskProvider createBundleTasks(final Project project, PluginPropert explodedBundleZip.setCanBeResolved(false); explodedBundleZip.setCanBeConsumed(true); explodedBundleZip.getAttributes().attribute(ArtifactTypeDefinition.ARTIFACT_TYPE_ATTRIBUTE, ArtifactTypeDefinition.DIRECTORY_TYPE); + explodedBundleZip.getAttributes().attribute(EXPLODED_PLUGIN_BUNDLE_ATTRIBUTE, true); project.getArtifacts().add(EXPLODED_BUNDLE_CONFIG, explodedBundle); return bundle; } diff --git a/plugins/analysis-icu/build.gradle b/plugins/analysis-icu/build.gradle index c96c86976ac57..de67e768f50a0 100644 --- a/plugins/analysis-icu/build.gradle +++ b/plugins/analysis-icu/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' apply plugin: 'elasticsearch.internal-cluster-test' esplugin { diff --git a/plugins/analysis-icu/src/yamlRestTest/java/org/elasticsearch/index/analysis/IcuClientYamlTestSuiteIT.java b/plugins/analysis-icu/src/yamlRestTest/java/org/elasticsearch/index/analysis/IcuClientYamlTestSuiteIT.java index db2e70ab624ae..bf4078f1a4920 100644 --- a/plugins/analysis-icu/src/yamlRestTest/java/org/elasticsearch/index/analysis/IcuClientYamlTestSuiteIT.java +++ b/plugins/analysis-icu/src/yamlRestTest/java/org/elasticsearch/index/analysis/IcuClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class IcuClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-icu").build(); + public IcuClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public IcuClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandid public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-kuromoji/build.gradle b/plugins/analysis-kuromoji/build.gradle index 82fa59e5773c3..b1bf38e6959ca 100644 --- a/plugins/analysis-kuromoji/build.gradle +++ b/plugins/analysis-kuromoji/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'The Japanese (kuromoji) Analysis plugin integrates Lucene kuromoji analysis module into elasticsearch.' diff --git a/plugins/analysis-kuromoji/src/yamlRestTest/java/org/elasticsearch/index/analysis/KuromojiClientYamlTestSuiteIT.java b/plugins/analysis-kuromoji/src/yamlRestTest/java/org/elasticsearch/index/analysis/KuromojiClientYamlTestSuiteIT.java index 75ae8a744c8fb..9de92bc30d70a 100644 --- a/plugins/analysis-kuromoji/src/yamlRestTest/java/org/elasticsearch/index/analysis/KuromojiClientYamlTestSuiteIT.java +++ b/plugins/analysis-kuromoji/src/yamlRestTest/java/org/elasticsearch/index/analysis/KuromojiClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class KuromojiClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-kuromoji").build(); + public KuromojiClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public KuromojiClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testC public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-nori/build.gradle b/plugins/analysis-nori/build.gradle index 6254a56f0657f..08dc1142e165e 100644 --- a/plugins/analysis-nori/build.gradle +++ b/plugins/analysis-nori/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'The Korean (nori) Analysis plugin integrates Lucene nori analysis module into elasticsearch.' diff --git a/plugins/analysis-nori/src/yamlRestTest/java/org/elasticsearch/index/analysis/NoriClientYamlTestSuiteIT.java b/plugins/analysis-nori/src/yamlRestTest/java/org/elasticsearch/index/analysis/NoriClientYamlTestSuiteIT.java index 52f3fa5944277..cf34b1ed2097a 100644 --- a/plugins/analysis-nori/src/yamlRestTest/java/org/elasticsearch/index/analysis/NoriClientYamlTestSuiteIT.java +++ b/plugins/analysis-nori/src/yamlRestTest/java/org/elasticsearch/index/analysis/NoriClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class NoriClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-nori").build(); + public NoriClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public NoriClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandi public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-phonetic/build.gradle b/plugins/analysis-phonetic/build.gradle index 018e2c0e52b8d..cc9038cd5b16c 100644 --- a/plugins/analysis-phonetic/build.gradle +++ b/plugins/analysis-phonetic/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'The Phonetic Analysis plugin integrates phonetic token filter analysis with elasticsearch.' diff --git a/plugins/analysis-phonetic/src/yamlRestTest/java/org/elasticsearch/index/analysis/PhoneticClientYamlTestSuiteIT.java b/plugins/analysis-phonetic/src/yamlRestTest/java/org/elasticsearch/index/analysis/PhoneticClientYamlTestSuiteIT.java index 66589ee523972..13b5ac92cb97d 100644 --- a/plugins/analysis-phonetic/src/yamlRestTest/java/org/elasticsearch/index/analysis/PhoneticClientYamlTestSuiteIT.java +++ b/plugins/analysis-phonetic/src/yamlRestTest/java/org/elasticsearch/index/analysis/PhoneticClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class PhoneticClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-phonetic").build(); + public PhoneticClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public PhoneticClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testC public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-smartcn/build.gradle b/plugins/analysis-smartcn/build.gradle index b4ac03935aab5..e7b568905350a 100644 --- a/plugins/analysis-smartcn/build.gradle +++ b/plugins/analysis-smartcn/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'Smart Chinese Analysis plugin integrates Lucene Smart Chinese analysis module into elasticsearch.' diff --git a/plugins/analysis-smartcn/src/yamlRestTest/java/org/elasticsearch/index/analysis/SmartCNClientYamlTestSuiteIT.java b/plugins/analysis-smartcn/src/yamlRestTest/java/org/elasticsearch/index/analysis/SmartCNClientYamlTestSuiteIT.java index e0eff356f8bb7..21760390256ef 100644 --- a/plugins/analysis-smartcn/src/yamlRestTest/java/org/elasticsearch/index/analysis/SmartCNClientYamlTestSuiteIT.java +++ b/plugins/analysis-smartcn/src/yamlRestTest/java/org/elasticsearch/index/analysis/SmartCNClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class SmartCNClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-smartcn").build(); + public SmartCNClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public SmartCNClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCa public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-stempel/build.gradle b/plugins/analysis-stempel/build.gradle index 0fb15ec7d36d1..c752cb422d611 100644 --- a/plugins/analysis-stempel/build.gradle +++ b/plugins/analysis-stempel/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'The Stempel (Polish) Analysis plugin integrates Lucene stempel (polish) analysis module into elasticsearch.' diff --git a/plugins/analysis-stempel/src/yamlRestTest/java/org/elasticsearch/index/analysis/StempelClientYamlTestSuiteIT.java b/plugins/analysis-stempel/src/yamlRestTest/java/org/elasticsearch/index/analysis/StempelClientYamlTestSuiteIT.java index 6ef5d037577dd..716e9c824dbdb 100644 --- a/plugins/analysis-stempel/src/yamlRestTest/java/org/elasticsearch/index/analysis/StempelClientYamlTestSuiteIT.java +++ b/plugins/analysis-stempel/src/yamlRestTest/java/org/elasticsearch/index/analysis/StempelClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class StempelClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-stempel").build(); + public StempelClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public StempelClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCa public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/analysis-ukrainian/build.gradle b/plugins/analysis-ukrainian/build.gradle index 2be48240a8875..a6414ae673e2c 100644 --- a/plugins/analysis-ukrainian/build.gradle +++ b/plugins/analysis-ukrainian/build.gradle @@ -6,8 +6,8 @@ * 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.legacy-yaml-rest-test' -apply plugin: 'elasticsearch.legacy-yaml-rest-compat-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' +apply plugin: 'elasticsearch.yaml-rest-compat-test' esplugin { description = 'The Ukrainian Analysis plugin integrates the Lucene UkrainianMorfologikAnalyzer into elasticsearch.' diff --git a/plugins/analysis-ukrainian/src/yamlRestTest/java/org/elasticsearch/index/analysis/UkrainianClientYamlTestSuiteIT.java b/plugins/analysis-ukrainian/src/yamlRestTest/java/org/elasticsearch/index/analysis/UkrainianClientYamlTestSuiteIT.java index 9a1d14a6ceee2..8f9ab6759e590 100644 --- a/plugins/analysis-ukrainian/src/yamlRestTest/java/org/elasticsearch/index/analysis/UkrainianClientYamlTestSuiteIT.java +++ b/plugins/analysis-ukrainian/src/yamlRestTest/java/org/elasticsearch/index/analysis/UkrainianClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class UkrainianClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("analysis-ukrainian").build(); + public UkrainianClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public UkrainianClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate test public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/build.gradle b/plugins/build.gradle index ba9d7851d9d9a..90fc924d7f9d6 100644 --- a/plugins/build.gradle +++ b/plugins/build.gradle @@ -7,10 +7,6 @@ * License v3.0 only", or the "Server Side Public License, v 1". */ -subprojects { - apply plugin: 'elasticsearch.internal-testclusters' -} - configurations { allPlugins } diff --git a/plugins/discovery-azure-classic/build.gradle b/plugins/discovery-azure-classic/build.gradle index 4455e798e3a22..de00cf5153983 100644 --- a/plugins/discovery-azure-classic/build.gradle +++ b/plugins/discovery-azure-classic/build.gradle @@ -9,7 +9,7 @@ import org.elasticsearch.gradle.LoggedExec -apply plugin: 'elasticsearch.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' apply plugin: 'elasticsearch.internal-cluster-test' esplugin { @@ -50,14 +50,14 @@ restResources { } } -// needed to be consistent with ssl host checking -String host = InetAddress.getLoopbackAddress().getHostAddress() - -// location of keystore and files to generate it -File keystore = new File(project.buildDir, 'keystore/test-node.jks') - // generate the keystore TaskProvider createKey = tasks.register("createKey", LoggedExec) { + // needed to be consistent with ssl host checking + String host = InetAddress.getLoopbackAddress().getHostAddress() + + // location of keystore and files to generate it + File keystore = project.layout.buildDirectory.file('keystore/test-node.jks').get().asFile + doFirst { delete(keystore.parentFile) keystore.parentFile.mkdirs() @@ -76,10 +76,9 @@ TaskProvider createKey = tasks.register("createKey", LoggedExec) { '-keypass', 'keypass', '-storepass', 'keypass' } -//no unit tests -tasks.named("test").configure { enabled = false } + // add keystore to test classpath: it expects it there -tasks.named("processInternalClusterTestResources").configure { +tasks.named("processInternalClusterTestResources") { from createKey } diff --git a/plugins/discovery-azure-classic/src/yamlRestTest/java/org/elasticsearch/discovery/azure/classic/DiscoveryAzureClassicClientYamlTestSuiteIT.java b/plugins/discovery-azure-classic/src/yamlRestTest/java/org/elasticsearch/discovery/azure/classic/DiscoveryAzureClassicClientYamlTestSuiteIT.java index 711d033ecfca2..09de0cfe04be3 100644 --- a/plugins/discovery-azure-classic/src/yamlRestTest/java/org/elasticsearch/discovery/azure/classic/DiscoveryAzureClassicClientYamlTestSuiteIT.java +++ b/plugins/discovery-azure-classic/src/yamlRestTest/java/org/elasticsearch/discovery/azure/classic/DiscoveryAzureClassicClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class DiscoveryAzureClassicClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("discovery-azure-classic").build(); + public DiscoveryAzureClassicClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public DiscoveryAzureClassicClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCa public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/discovery-gce/build.gradle b/plugins/discovery-gce/build.gradle index 4c37831b0beec..4ac96920895db 100644 --- a/plugins/discovery-gce/build.gradle +++ b/plugins/discovery-gce/build.gradle @@ -1,4 +1,4 @@ -apply plugin: 'elasticsearch.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' apply plugin: 'elasticsearch.internal-cluster-test' esplugin { @@ -48,11 +48,6 @@ esplugin.bundleSpec.from('config/discovery-gce') { into 'config' } -tasks.named("check").configure { - // also execute the QA tests when testing the plugin - dependsOn 'qa:gce:check' -} - tasks.named("test").configure { // this is needed for insecure plugins, remove if possible! systemProperty 'tests.artifact', project.name diff --git a/plugins/discovery-gce/qa/build.gradle b/plugins/discovery-gce/qa/build.gradle deleted file mode 100644 index f6a418ae4bd3c..0000000000000 --- a/plugins/discovery-gce/qa/build.gradle +++ /dev/null @@ -1 +0,0 @@ -group = "${group}.plugins.discovery-gce.qa" diff --git a/plugins/discovery-gce/qa/gce/build.gradle b/plugins/discovery-gce/qa/gce/build.gradle deleted file mode 100644 index c9d87cd6beb1e..0000000000000 --- a/plugins/discovery-gce/qa/gce/build.gradle +++ /dev/null @@ -1,64 +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". - */ - -import org.apache.tools.ant.filters.ReplaceTokens -import org.elasticsearch.gradle.internal.test.AntFixture - -import static org.elasticsearch.gradle.PropertyNormalization.IGNORE_VALUE - -apply plugin: 'elasticsearch.legacy-yaml-rest-test' - -final int gceNumberOfNodes = 3 - -dependencies { - yamlRestTestImplementation project(':plugins:discovery-gce') -} - -restResources { - restApi { - include '_common', 'cluster', 'nodes' - } -} - -/** A task to start the GCEFixture which emulates a GCE service **/ -def gceFixtureProvider = tasks.register("gceFixture", AntFixture) { - def runtimeClasspath = project.sourceSets.yamlRestTest.runtimeClasspath - dependsOn runtimeClasspath - env 'CLASSPATH', "${-> runtimeClasspath.asPath}" - executable = "${buildParams.runtimeJavaHome.get()}/bin/java" - args 'org.elasticsearch.cloud.gce.GCEFixture', baseDir, "${buildDir}/testclusters/yamlRestTest-1/config/unicast_hosts.txt" -} - -Map expansions = [ - 'expected_nodes': gceNumberOfNodes -] - -tasks.named("processYamlRestTestResources").configure { - inputs.properties(expansions) - filter("tokens" : expansions.collectEntries {k, v -> [k, v.toString()]} /* must be a map of strings */, ReplaceTokens.class) -} - -tasks.named("yamlRestTest").configure { - dependsOn gceFixtureProvider -} - -testClusters.matching { it.name == "yamlRestTest" }.configureEach { - numberOfNodes = gceNumberOfNodes - plugin ':plugins:discovery-gce' - // use gce fixture for Auth calls instead of http://metadata.google.internal - environment 'GCE_METADATA_HOST', { "http://${gceFixtureProvider.get().addressAndPort}" }, IGNORE_VALUE - // allows to configure hidden settings (`cloud.gce.host` and `cloud.gce.root_url`) - systemProperty 'es.allow_reroute_gce_settings', 'true' - - setting 'discovery.seed_providers', 'gce' - // use gce fixture for metadata server calls instead of http://metadata.google.internal - setting 'cloud.gce.host', { "http://${gceFixtureProvider.get().addressAndPort}" }, IGNORE_VALUE - // use gce fixture for API calls instead of https://www.googleapis.com - setting 'cloud.gce.root_url', { "http://${gceFixtureProvider.get().addressAndPort}" }, IGNORE_VALUE -} diff --git a/plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEDiscoveryClientYamlTestSuiteIT.java b/plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEDiscoveryClientYamlTestSuiteIT.java deleted file mode 100644 index c645d0114331a..0000000000000 --- a/plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEDiscoveryClientYamlTestSuiteIT.java +++ /dev/null @@ -1,28 +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.cloud.gce; - -import com.carrotsearch.randomizedtesting.annotations.Name; -import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; - -import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; -import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; - -public class GCEDiscoveryClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { - - public GCEDiscoveryClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { - super(testCandidate); - } - - @ParametersFactory - public static Iterable parameters() throws Exception { - return ESClientYamlSuiteTestCase.createParameters(); - } -} diff --git a/plugins/discovery-gce/qa/gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml b/plugins/discovery-gce/qa/gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml deleted file mode 100644 index 62939470d686b..0000000000000 --- a/plugins/discovery-gce/qa/gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml +++ /dev/null @@ -1,15 +0,0 @@ -# Integration tests for discovery-gce -setup: - - do: - cluster.health: - wait_for_status: green - wait_for_nodes: @expected_nodes@ - ---- -"All nodes are correctly discovered": - - - do: - nodes.info: - metric: [ transport ] - - - match: { _nodes.total: @expected_nodes@ } diff --git a/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/DiscoveryGceClientYamlTestSuiteIT.java b/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/DiscoveryGceClientYamlTestSuiteIT.java index 718e8f511bdf7..8814e518f3062 100644 --- a/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/DiscoveryGceClientYamlTestSuiteIT.java +++ b/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/DiscoveryGceClientYamlTestSuiteIT.java @@ -12,11 +12,35 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.core.SuppressForbidden; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; +import org.junit.rules.RuleChain; +import org.junit.rules.TemporaryFolder; +@SuppressForbidden(reason = "fixtures use java.io.File based APIs") public class DiscoveryGceClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + public static TemporaryFolder temporaryFolder = new TemporaryFolder(); + + public static GCEFixture gceFixture = new GCEFixture(() -> temporaryFolder.getRoot().toPath().resolve("unicast_hosts.txt")); + + public static ElasticsearchCluster cluster = ElasticsearchCluster.local() + .plugin("discovery-gce") + .nodes(3) + .node(0, n -> n.withConfigDir(() -> temporaryFolder.getRoot().toPath())) + .systemProperty("es.allow_reroute_gce_settings", "true") + .environment("GCE_METADATA_HOST", () -> gceFixture.getHostAndPort()) + .setting("discovery.seed_providers", "gce") + .setting("cloud.gce.host", () -> gceFixture.getAddress()) + .setting("cloud.gce.root_url", () -> gceFixture.getAddress()) + .build(); + + @ClassRule + public static RuleChain ruleChain = RuleChain.outerRule(temporaryFolder).around(gceFixture).around(cluster); + public DiscoveryGceClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +49,9 @@ public DiscoveryGceClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate t public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEFixture.java b/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/GCEFixture.java similarity index 79% rename from plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEFixture.java rename to plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/GCEFixture.java index 7a5764e1fbd87..88851a98a1718 100644 --- a/plugins/discovery-gce/qa/gce/src/yamlRestTest/java/org/elasticsearch/cloud/gce/GCEFixture.java +++ b/plugins/discovery-gce/src/yamlRestTest/java/org/elasticsearch/discovery/gce/GCEFixture.java @@ -6,30 +6,31 @@ * 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.cloud.gce; +package org.elasticsearch.discovery.gce; import org.apache.http.client.methods.HttpGet; import org.elasticsearch.common.Strings; import org.elasticsearch.common.path.PathTrie; -import org.elasticsearch.core.SuppressForbidden; import org.elasticsearch.rest.RestStatus; import org.elasticsearch.rest.RestUtils; import org.elasticsearch.test.fixture.AbstractHttpFixture; import java.io.IOException; +import java.net.InetAddress; +import java.net.InetSocketAddress; +import java.net.UnknownHostException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.Objects; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; import java.util.function.Function; +import java.util.function.Supplier; import static java.nio.charset.StandardCharsets.UTF_8; import static org.elasticsearch.xcontent.XContentFactory.jsonBuilder; @@ -43,24 +44,23 @@ public class GCEFixture extends AbstractHttpFixture { public static final String ZONE = "test-zone"; public static final String TOKEN = "1/fFAGRNJru1FTz70BzhT3Zg"; public static final String TOKEN_TYPE = "Bearer"; - + private final Supplier nodes; private final PathTrie handlers; - private final Path nodes; - - private GCEFixture(final String workingDir, final String nodesUriPath) { - super(workingDir); - this.nodes = toPath(Objects.requireNonNull(nodesUriPath)); + public GCEFixture(Supplier nodesUriPath) { this.handlers = defaultHandlers(); + this.nodes = nodesUriPath; } - public static void main(String[] args) throws Exception { - if (args == null || args.length != 2) { - throw new IllegalArgumentException("GCEFixture "); - } + @Override + protected void before() throws Throwable { + InetSocketAddress inetSocketAddress = resolveAddress("0.0.0.0", 0); + listen(inetSocketAddress, false); + } - final GCEFixture fixture = new GCEFixture(args[0], args[1]); - fixture.listen(); + @Override + protected void after() { + stop(); } private static String nonAuthPath(Request request) { @@ -128,30 +128,32 @@ private PathTrie defaultHandlers() { handlers.insert(authPath(HttpGet.METHOD_NAME, "/compute/v1/projects/{project}/zones/{zone}/instances"), request -> { final var items = new ArrayList>(); int count = 0; - for (String address : Files.readAllLines(nodes)) { - count++; - items.add( - Map.of( - "id", - Long.toString(9309873766405L + count), - "description", - "ES node" + count, - "name", - "test" + count, - "kind", - "compute#instance", - "machineType", - "n1-standard-1", - "networkInterfaces", - List.of( - Map.of("accessConfigs", Collections.emptyList(), "name", "nic0", "network", "default", "networkIP", address) - ), - "status", - "RUNNING", - "zone", - ZONE - ) - ); + if (Files.exists(nodes.get())) { + for (String address : Files.readAllLines(nodes.get())) { + count++; + items.add( + Map.of( + "id", + Long.toString(9309873766405L + count), + "description", + "ES node" + count, + "name", + "test" + count, + "kind", + "compute#instance", + "machineType", + "n1-standard-1", + "networkInterfaces", + List.of( + Map.of("accessConfigs", Collections.emptyList(), "name", "nic0", "network", "default", "networkIP", address) + ), + "status", + "RUNNING", + "zone", + ZONE + ) + ); + } } final String json = Strings.toString( @@ -215,8 +217,11 @@ private static Response newError(final RestStatus status, final String code, fin return new Response(status.getStatus(), JSON_CONTENT_TYPE, response.getBytes(UTF_8)); } - @SuppressForbidden(reason = "Paths#get is fine - we don't have environment here") - private static Path toPath(final String dir) { - return Paths.get(dir); + private static InetSocketAddress resolveAddress(String address, int port) { + try { + return new InetSocketAddress(InetAddress.getByName(address), port); + } catch (UnknownHostException e) { + throw new RuntimeException(e); + } } } diff --git a/plugins/discovery-gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml b/plugins/discovery-gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml index a5379c2c68bed..3e1b9d2913648 100644 --- a/plugins/discovery-gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml +++ b/plugins/discovery-gce/src/yamlRestTest/resources/rest-api-spec/test/discovery_gce/10_basic.yml @@ -1,5 +1,9 @@ -# Integration tests for Discovery GCE components -# +setup: + - do: + cluster.health: + wait_for_status: green + wait_for_nodes: 3 +--- "Discovery GCE loaded": - skip: reason: "contains is a newly added assertion" @@ -14,3 +18,11 @@ nodes.info: {} - contains: { nodes.$master.plugins: { name: discovery-gce } } +--- +"All nodes are correctly discovered": + + - do: + nodes.info: + metric: [ transport ] + + - match: { _nodes.total: 3 } diff --git a/plugins/store-smb/build.gradle b/plugins/store-smb/build.gradle index 727f9ed588673..f84d7757a33bf 100644 --- a/plugins/store-smb/build.gradle +++ b/plugins/store-smb/build.gradle @@ -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". */ -apply plugin: 'elasticsearch.legacy-yaml-rest-test' +apply plugin: 'elasticsearch.internal-yaml-rest-test' apply plugin: 'elasticsearch.internal-cluster-test' esplugin { diff --git a/plugins/store-smb/src/yamlRestTest/java/org/elasticsearch/index/store/smb/StoreSmbClientYamlTestSuiteIT.java b/plugins/store-smb/src/yamlRestTest/java/org/elasticsearch/index/store/smb/StoreSmbClientYamlTestSuiteIT.java index afb12c4c79967..894dadbfb7824 100644 --- a/plugins/store-smb/src/yamlRestTest/java/org/elasticsearch/index/store/smb/StoreSmbClientYamlTestSuiteIT.java +++ b/plugins/store-smb/src/yamlRestTest/java/org/elasticsearch/index/store/smb/StoreSmbClientYamlTestSuiteIT.java @@ -12,11 +12,16 @@ import com.carrotsearch.randomizedtesting.annotations.Name; import com.carrotsearch.randomizedtesting.annotations.ParametersFactory; +import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate; import org.elasticsearch.test.rest.yaml.ESClientYamlSuiteTestCase; +import org.junit.ClassRule; public class StoreSmbClientYamlTestSuiteIT extends ESClientYamlSuiteTestCase { + @ClassRule + public static ElasticsearchCluster cluster = ElasticsearchCluster.local().plugin("store-smb").build(); + public StoreSmbClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testCandidate) { super(testCandidate); } @@ -25,4 +30,9 @@ public StoreSmbClientYamlTestSuiteIT(@Name("yaml") ClientYamlTestCandidate testC public static Iterable parameters() throws Exception { return ESClientYamlSuiteTestCase.createParameters(); } + + @Override + protected String getTestRestCluster() { + return cluster.getHttpAddresses(); + } } diff --git a/test/framework/src/main/java/org/elasticsearch/test/fixture/AbstractHttpFixture.java b/test/framework/src/main/java/org/elasticsearch/test/fixture/AbstractHttpFixture.java index 47eeaab5dca62..2998ac8470fe7 100644 --- a/test/framework/src/main/java/org/elasticsearch/test/fixture/AbstractHttpFixture.java +++ b/test/framework/src/main/java/org/elasticsearch/test/fixture/AbstractHttpFixture.java @@ -175,6 +175,10 @@ public String getAddress() { return "http://127.0.0.1:" + httpServer.getAddress().getPort(); } + public String getHostAndPort() { + return "127.0.0.1:" + httpServer.getAddress().getPort(); + } + @FunctionalInterface public interface RequestHandler { Response handle(Request request) throws IOException; From d1ca80080b4bbabfa16916550eb1ea0b1ff28ed0 Mon Sep 17 00:00:00 2001 From: Karen Metts <35154725+karenzone@users.noreply.github.com> Date: Wed, 26 Mar 2025 18:06:54 -0400 Subject: [PATCH 5/8] Doc: Update links to logstash plugin docs (#125675) (#125728) --- docs/docset.yml | 1 + docs/reference/elasticsearch-plugins/integrations.md | 8 ++++---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/docs/docset.yml b/docs/docset.yml index 9ebcf3b966f82..e83f8b31418d5 100644 --- a/docs/docset.yml +++ b/docs/docset.yml @@ -21,6 +21,7 @@ cross_links: - go-elasticsearch - kibana - logstash + - logstash-docs-md toc: - toc: reference/elasticsearch - toc: reference/community-contributed diff --git a/docs/reference/elasticsearch-plugins/integrations.md b/docs/reference/elasticsearch-plugins/integrations.md index fa21506738dac..56e94ffc8c5d9 100644 --- a/docs/reference/elasticsearch-plugins/integrations.md +++ b/docs/reference/elasticsearch-plugins/integrations.md @@ -20,10 +20,10 @@ Integrations are not plugins, but are external tools or modules that make it eas ### Supported by Elastic: [_supported_by_elastic] -* [Logstash output to Elasticsearch](logstash://reference/plugins-outputs-elasticsearch.md): The Logstash `elasticsearch` output plugin. -* [Elasticsearch input to Logstash](logstash://reference/plugins-inputs-elasticsearch.md) The Logstash `elasticsearch` input plugin. -* [Elasticsearch event filtering in Logstash](logstash://reference/plugins-filters-elasticsearch.md) The Logstash `elasticsearch` filter plugin. -* [Elasticsearch bulk codec](logstash://reference/plugins-codecs-es_bulk.md) The Logstash `es_bulk` plugin decodes the Elasticsearch bulk format into individual events. +* [Logstash output to Elasticsearch](logstash-docs-md://lsr//plugins-outputs-elasticsearch.md): The Logstash `elasticsearch` output plugin. +* [Elasticsearch input to Logstash](logstash-docs-md://lsr/plugins-inputs-elasticsearch.md) The Logstash `elasticsearch` input plugin. +* [Elasticsearch event filtering in Logstash](logstash-docs-md://lsr/plugins-filters-elasticsearch.md) The Logstash `elasticsearch` filter plugin. +* [Elasticsearch bulk codec](logstash-docs-md://lsr//plugins-codecs-es_bulk.md) The Logstash `es_bulk` plugin decodes the Elasticsearch bulk format into individual events. ### Supported by the community: [_supported_by_the_community_2] From 52467d2c26dd0be3768c62759f4f6101e70df4b7 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Wed, 26 Mar 2025 15:43:59 -0700 Subject: [PATCH 6/8] Add missing module --- qa/system-indices/build.gradle | 1 + .../elasticsearch/system/indices/AbstractSystemIndicesIT.java | 1 + 2 files changed, 2 insertions(+) diff --git a/qa/system-indices/build.gradle b/qa/system-indices/build.gradle index d59368f735e9c..4d21ad0505672 100644 --- a/qa/system-indices/build.gradle +++ b/qa/system-indices/build.gradle @@ -20,5 +20,6 @@ esplugin { dependencies { clusterModules project(':modules:analysis-common') + clusterModules project(':modules:ingest-common') clusterModules project(':x-pack:plugin:migrate') } diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java index 2e1d727cf8543..28cd24beda8e0 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java @@ -26,6 +26,7 @@ public abstract class AbstractSystemIndicesIT extends ESRestTestCase { public static ElasticsearchCluster cluster = ElasticsearchCluster.local() .plugin("system-indices-qa") .module("analysis-common") + .module("ingest-common") .module("x-pack-migrate") .setting("xpack.security.enabled", "true") .setting("xpack.security.autoconfiguration.enabled", "false") From 780222898ed6b9dc861c3ac02e2499bb960b328e Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Thu, 27 Mar 2025 08:46:48 -0700 Subject: [PATCH 7/8] No need to run with security --- .../system/indices/AbstractSystemIndicesIT.java | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java index 28cd24beda8e0..2db5ea8aa838f 100644 --- a/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java +++ b/qa/system-indices/src/javaRestTest/java/org/elasticsearch/system/indices/AbstractSystemIndicesIT.java @@ -9,18 +9,11 @@ package org.elasticsearch.system.indices; -import org.elasticsearch.common.settings.SecureString; -import org.elasticsearch.common.settings.Settings; -import org.elasticsearch.common.util.concurrent.ThreadContext; import org.elasticsearch.test.cluster.ElasticsearchCluster; import org.elasticsearch.test.rest.ESRestTestCase; import org.junit.ClassRule; public abstract class AbstractSystemIndicesIT extends ESRestTestCase { - protected static final String BASIC_AUTH_VALUE = basicAuthHeaderValue( - "rest_user", - new SecureString("rest-user-password".toCharArray()) - ); @ClassRule public static ElasticsearchCluster cluster = ElasticsearchCluster.local() @@ -28,18 +21,10 @@ public abstract class AbstractSystemIndicesIT extends ESRestTestCase { .module("analysis-common") .module("ingest-common") .module("x-pack-migrate") - .setting("xpack.security.enabled", "true") - .setting("xpack.security.autoconfiguration.enabled", "false") - .user("rest_user", "rest-user-password") .build(); @Override protected String getTestRestCluster() { return cluster.getHttpAddresses(); } - - @Override - protected Settings restClientSettings() { - return Settings.builder().put(ThreadContext.PREFIX + ".Authorization", BASIC_AUTH_VALUE).build(); - } } From dd237315ee94489f8abb489403afac62d3d794e9 Mon Sep 17 00:00:00 2001 From: Mark Vieira Date: Thu, 27 Mar 2025 09:17:48 -0700 Subject: [PATCH 8/8] Remove --- .../gradle/internal/RestrictedBuildApiService.java | 6 ------ 1 file changed, 6 deletions(-) diff --git a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java index 57c2e49bec0b3..c7da5683ee413 100644 --- a/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java +++ b/build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/RestrictedBuildApiService.java @@ -36,12 +36,6 @@ private static ListMultimap, String> createLegacyRestTestBasePluginUsag map.put(LegacyRestTestBasePlugin.class, ":qa:remote-clusters"); map.put(LegacyRestTestBasePlugin.class, ":qa:repository-multi-version"); map.put(LegacyRestTestBasePlugin.class, ":qa:rolling-upgrade-legacy"); - map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-apm-integration"); - map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-delayed-aggs"); - map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-die-with-dignity"); - map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-error-query"); - map.put(LegacyRestTestBasePlugin.class, ":test:external-modules:test-latency-simulating-directory"); - map.put(LegacyRestTestBasePlugin.class, ":test:yaml-rest-runner"); map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:core"); map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:ent-search"); map.put(LegacyRestTestBasePlugin.class, ":x-pack:plugin:fleet");