From b9d94703152eb7d1b9be68ca79cca4b99caeb051 Mon Sep 17 00:00:00 2001 From: Ryan Ernst Date: Sat, 16 Aug 2025 10:06:37 -0700 Subject: [PATCH] Split transport version func test into abstract base 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} (64%) 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..92c825a1e255c --- /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 initialTransportVersion(String name, String id) { + javaResource("myserver", "transport/definitions/initial/" + 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") + initialTransportVersion("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 64% 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 18df5a99260cb..242b33f6b85ac 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 initialTransportVersion(String name, String id) { - javaResource("myserver", "transport/definitions/initial/" + 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") - initialTransportVersion("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: