From 4171de4636303f3519ddd473eb007eb37598ad3e Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Mon, 18 Aug 2025 20:54:17 -0700 Subject: [PATCH] Split transport version func test into abstract base (#133035) In order to support future gradle transport version tests, this commit adds a base abstract case with setup and utilities for managing transport version resources. It also renames the existing func test to make it more clear it is aimed at testing transport version validation. --- .../AbstractTransportVersionFuncTest.groovy | 122 ++++++++++++++++++ ...TransportVersionValidationFuncTest.groovy} | 117 +---------------- 2 files changed, 123 insertions(+), 116 deletions(-) create mode 100644 build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy rename build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/{TransportVersionManagementPluginFuncTest.groovy => TransportVersionValidationFuncTest.groovy} (65%) diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy new file mode 100644 index 0000000000000..257da1b64fd8e --- /dev/null +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/AbstractTransportVersionFuncTest.groovy @@ -0,0 +1,122 @@ +/* + * 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.gradle.internal.transport + +import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest +import org.gradle.testkit.runner.BuildResult +import org.gradle.testkit.runner.TaskOutcome + +class AbstractTransportVersionFuncTest extends AbstractGradleFuncTest { + def javaResource(String project, String path, String content) { + file("${project}/src/main/resources/${path}").withWriter { writer -> + writer << content + } + } + + def javaSource(String project, String packageName, String className, String imports, String content) { + String packageSlashes = packageName.replace('.', '/') + file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer -> + writer << """ + package ${packageName}; + ${imports} + public class ${className} { + ${content} + } + """ + } + } + + def namedTransportVersion(String name, String ids) { + javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) + } + + def unreferencedTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id) + } + + def definedAndUsedTransportVersion(String name, String ids) { + return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}") + } + + def definedAndUsedTransportVersion(String name, String ids, String classname) { + javaSource("myserver", "org.elasticsearch", classname, "", """ + static final TransportVersion usage = TransportVersion.fromName("${name}"); + """) + namedTransportVersion(name, ids) + } + + def latestTransportVersion(String branch, String name, String id) { + javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}") + } + + def validateReferencesFails(String project) { + return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail() + } + + def validateDefinitionsFails() { + return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail() + } + + def assertReferencesFailure(BuildResult result, String project, String expectedOutput) { + result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED + assertOutputContains(result.output, expectedOutput) + } + + def assertDefinitionsFailure(BuildResult result, String expectedOutput) { + result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED + assertOutputContains(result.output, expectedOutput) + } + + def setup() { + configurationCacheCompatible = false + internalBuild() + settingsFile << """ + include ':myserver' + include ':myplugin' + """ + file("gradle.properties") << """ + org.elasticsearch.transport.definitionsProject=:myserver + """ + + file("myserver/build.gradle") << """ + apply plugin: 'java-library' + apply plugin: 'elasticsearch.transport-version-references' + apply plugin: 'elasticsearch.transport-version-resources' + """ + namedTransportVersion("existing_91", "8012000") + namedTransportVersion("existing_92", "8123000,8012001") + unreferencedTransportVersion("initial_9_0_0", "8000000") + latestTransportVersion("9.2", "existing_92", "8123000") + latestTransportVersion("9.1", "existing_92", "8012001") + // a mock version of TransportVersion, just here so we can compile Dummy.java et al + javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """ + public static TransportVersion fromName(String name) { + return null; + } + """) + javaSource("myserver", "org.elasticsearch", "Dummy", "", """ + static final TransportVersion existing91 = TransportVersion.fromName("existing_91"); + static final TransportVersion existing92 = TransportVersion.fromName("existing_92"); + """) + + file("myplugin/build.gradle") << """ + apply plugin: 'java-library' + apply plugin: 'elasticsearch.transport-version-references' + + dependencies { + implementation project(":myserver") + } + """ + + setupLocalGitRepo() + execute("git checkout -b main") + execute("git checkout -b test") + } +} diff --git a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy similarity index 65% rename from build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy rename to build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy index f74639bf7d841..52fab5a4f1625 100644 --- a/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionManagementPluginFuncTest.groovy +++ b/build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionValidationFuncTest.groovy @@ -10,124 +10,9 @@ package org.elasticsearch.gradle.internal.transport -import org.elasticsearch.gradle.fixtures.AbstractGradleFuncTest -import org.gradle.testkit.runner.BuildResult import org.gradle.testkit.runner.TaskOutcome -class TransportVersionManagementPluginFuncTest extends AbstractGradleFuncTest { - - /** - * - * @param project - * @param path - * @param content - * @return - */ - def javaResource(String project, String path, String content) { - file("${project}/src/main/resources/${path}").withWriter { writer -> - writer << content - } - } - - def javaSource(String project, String packageName, String className, String imports, String content) { - String packageSlashes = packageName.replace('.', '/') - file("${project}/src/main/java/${packageSlashes}/${className}.java").withWriter { writer -> - writer << """ - package ${packageName}; - ${imports} - public class ${className} { - ${content} - } - """ - } - } - - def namedTransportVersion(String name, String ids) { - javaResource("myserver", "transport/definitions/named/" + name + ".csv", ids) - } - - def unreferencedTransportVersion(String name, String id) { - javaResource("myserver", "transport/definitions/unreferenced/" + name + ".csv", id) - } - - def definedAndUsedTransportVersion(String name, String ids) { - return definedAndUsedTransportVersion(name, ids, "Test${name.capitalize()}") - } - - def definedAndUsedTransportVersion(String name, String ids, String classname) { - javaSource("myserver", "org.elasticsearch", classname, "", """ - static final TransportVersion usage = TransportVersion.fromName("${name}"); - """) - namedTransportVersion(name, ids) - } - - def latestTransportVersion(String branch, String name, String id) { - javaResource("myserver", "transport/latest/" + branch + ".csv","${name},${id}") - } - - def validateReferencesFails(String project) { - return gradleRunner(":${project}:validateTransportVersionReferences").buildAndFail() - } - - def validateDefinitionsFails() { - return gradleRunner(":myserver:validateTransportVersionDefinitions").buildAndFail() - } - - def assertReferencesFailure(BuildResult result, String project, String expectedOutput) { - result.task(":${project}:validateTransportVersionReferences").outcome == TaskOutcome.FAILED - assertOutputContains(result.output, expectedOutput) - } - - def assertDefinitionsFailure(BuildResult result, String expectedOutput) { - result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.FAILED - assertOutputContains(result.output, expectedOutput) - } - - def setup() { - configurationCacheCompatible = false - internalBuild() - settingsFile << """ - include ':myserver' - include ':myplugin' - """ - file("gradle.properties") << """ - org.elasticsearch.transport.definitionsProject=:myserver - """ - - file("myserver/build.gradle") << """ - apply plugin: 'java-library' - apply plugin: 'elasticsearch.transport-version-references' - apply plugin: 'elasticsearch.transport-version-resources' - """ - namedTransportVersion("existing_91", "8012000") - namedTransportVersion("existing_92", "8123000,8012001") - unreferencedTransportVersion("initial_9_0_0", "8000000") - latestTransportVersion("9.2", "existing_92", "8123000") - latestTransportVersion("9.1", "existing_92", "8012001") - // a mock version of TransportVersion, just here so we can compile Dummy.java et al - javaSource("myserver", "org.elasticsearch", "TransportVersion", "", """ - public static TransportVersion fromName(String name) { - return null; - } - """) - javaSource("myserver", "org.elasticsearch", "Dummy", "", """ - static final TransportVersion existing91 = TransportVersion.fromName("existing_91"); - static final TransportVersion existing92 = TransportVersion.fromName("existing_92"); - """) - - file("myplugin/build.gradle") << """ - apply plugin: 'java-library' - apply plugin: 'elasticsearch.transport-version-references' - - dependencies { - implementation project(":myserver") - } - """ - - setupLocalGitRepo() - execute("git checkout -b main") - execute("git checkout -b test") - } +class TransportVersionValidationFuncTest extends AbstractTransportVersionFuncTest { def "test setup works"() { when: