Sfoglia il codice sorgente

Move yamlRestCompatTest plugin to internal and add a new lifecycle (#67394)

This commit moves the yamlRestCompatTest plugin to an internal package
since this plugin is use for the internal build only (ie not plugin devs).

Since there was considerable use of package private class members directly, 
getters/setters have been added and the class members moved to private scope.

This commit also adds a lifecycle to help abstract the execution of the
concept of rest compatibility testing from the current (and only) task. 
This allows this lifecycle task to be added to CI (if needed) and other 
tasks added (if needed) without needing to change the CI setup.
Jake Landis 4 anni fa
parent
commit
880f850185

+ 41 - 0
buildSrc/src/integTest/groovy/org/elasticsearch/gradle/YamlRestCompatTestPluginFuncTest.groovy

@@ -119,4 +119,45 @@ class YamlRestCompatTestPluginFuncTest extends AbstractRestResourcesFuncTest {
         result.task(':copyRestApiCompatSpecsTask').outcome == TaskOutcome.UP_TO_DATE
         result.task(':copyRestApiCompatTestTask').outcome == TaskOutcome.UP_TO_DATE
     }
+    
+    def "yamlRestCompatTest is wired into check and checkRestCompat"() {
+        given:
+
+        addSubProject(":distribution:bwc:minor") << """
+        configurations { checkout }
+        artifacts {
+            checkout(new File(projectDir, "checkoutDir"))
+        }
+        """
+
+        buildFile << """
+        plugins {
+          id 'elasticsearch.yaml-rest-compat-test'
+        }
+
+        """
+
+        when:
+        def result = gradleRunner("check").build()
+
+        then:
+        result.task(':check').outcome == TaskOutcome.UP_TO_DATE
+        result.task(':checkRestCompat').outcome == TaskOutcome.UP_TO_DATE
+        result.task(':yamlRestCompatTest').outcome == TaskOutcome.NO_SOURCE
+        result.task(':copyRestApiCompatSpecsTask').outcome == TaskOutcome.NO_SOURCE
+        result.task(':copyRestApiCompatTestTask').outcome == TaskOutcome.NO_SOURCE
+
+        when:
+        buildFile << """
+         ext.bwc_tests_enabled = false
+        """
+        result = gradleRunner("check").build()
+
+        then:
+        result.task(':check').outcome == TaskOutcome.UP_TO_DATE
+        result.task(':checkRestCompat').outcome == TaskOutcome.UP_TO_DATE
+        result.task(':yamlRestCompatTest').outcome == TaskOutcome.SKIPPED
+        result.task(':copyRestApiCompatSpecsTask').outcome == TaskOutcome.SKIPPED
+        result.task(':copyRestApiCompatTestTask').outcome == TaskOutcome.SKIPPED
+    }
 }

+ 69 - 30
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/YamlRestCompatTestPlugin.java → buildSrc/src/main/java/org/elasticsearch/gradle/internal/YamlRestCompatTestPlugin.java

@@ -17,23 +17,31 @@
  * under the License.
  */
 
-package org.elasticsearch.gradle.test.rest;
+package org.elasticsearch.gradle.internal;
 
 import org.elasticsearch.gradle.ElasticsearchJavaPlugin;
 import org.elasticsearch.gradle.test.RestIntegTestTask;
 import org.elasticsearch.gradle.test.RestTestBasePlugin;
+import org.elasticsearch.gradle.test.rest.CopyRestApiTask;
+import org.elasticsearch.gradle.test.rest.CopyRestTestsTask;
+import org.elasticsearch.gradle.test.rest.RestResourcesExtension;
+import org.elasticsearch.gradle.test.rest.RestResourcesPlugin;
+import org.elasticsearch.gradle.test.rest.RestTestUtil;
+import org.elasticsearch.gradle.test.rest.YamlRestTestPlugin;
 import org.elasticsearch.gradle.testclusters.ElasticsearchCluster;
 import org.elasticsearch.gradle.testclusters.TestClustersPlugin;
 import org.elasticsearch.gradle.testclusters.TestDistribution;
 import org.elasticsearch.gradle.util.GradleUtils;
 import org.gradle.api.Plugin;
 import org.gradle.api.Project;
+import org.gradle.api.Task;
 import org.gradle.api.artifacts.Configuration;
 import org.gradle.api.artifacts.Dependency;
 import org.gradle.api.plugins.JavaBasePlugin;
 import org.gradle.api.provider.Provider;
 import org.gradle.api.tasks.SourceSet;
 import org.gradle.api.tasks.SourceSetContainer;
+import org.gradle.api.tasks.TaskProvider;
 
 import java.io.File;
 import java.nio.file.Path;
@@ -49,6 +57,7 @@ import static org.elasticsearch.gradle.test.rest.RestTestUtil.setupDependencies;
 // artifacts that include all of the REST tests for the latest 7.x.y releases
 public class YamlRestCompatTestPlugin implements Plugin<Project> {
 
+    public static final String REST_COMPAT_CHECK_TASK_NAME = "checkRestCompat";
     public static final String SOURCE_SET_NAME = "yamlRestCompatTest";
     private static final Path RELATIVE_API_PATH = Path.of("rest-api-spec/api");
     private static final Path RELATIVE_TEST_PATH = Path.of("rest-api-spec/test");
@@ -85,46 +94,60 @@ public class YamlRestCompatTestPlugin implements Plugin<Project> {
         Provider<CopyRestApiTask> copyCompatYamlSpecTask = project.getTasks()
             .register("copyRestApiCompatSpecsTask", CopyRestApiTask.class, task -> {
                 task.dependsOn(bwcMinorConfig);
-                task.coreConfig = bwcMinorConfig;
-                task.xpackConfig = bwcMinorConfig;
-                task.additionalConfig = bwcMinorConfig;
-                task.includeCore.set(extension.restApi.getIncludeCore());
-                task.includeXpack.set(extension.restApi.getIncludeXpack());
-                task.sourceSetName = SOURCE_SET_NAME;
-                task.skipHasRestTestCheck = true;
-                task.coreConfigToFileTree = config -> project.fileTree(
-                    config.getSingleFile().toPath().resolve(RELATIVE_REST_API_RESOURCES).resolve(RELATIVE_API_PATH)
+                task.setCoreConfig(bwcMinorConfig);
+                task.setXpackConfig(bwcMinorConfig);
+                task.setAdditionalConfig(bwcMinorConfig);
+                task.getIncludeCore().set(extension.getRestApi().getIncludeCore());
+                task.getIncludeXpack().set(extension.getRestApi().getIncludeXpack());
+                task.setSourceSetName(SOURCE_SET_NAME);
+                task.setSkipHasRestTestCheck(true);
+                task.setCoreConfigToFileTree(
+                    config -> project.fileTree(
+                        config.getSingleFile().toPath().resolve(RELATIVE_REST_API_RESOURCES).resolve(RELATIVE_API_PATH)
+                    )
                 );
-                task.xpackConfigToFileTree = config -> project.fileTree(
-                    config.getSingleFile().toPath().resolve(RELATIVE_REST_XPACK_RESOURCES).resolve(RELATIVE_API_PATH)
+                task.setXpackConfigToFileTree(
+                    config -> project.fileTree(
+                        config.getSingleFile().toPath().resolve(RELATIVE_REST_XPACK_RESOURCES).resolve(RELATIVE_API_PATH)
+                    )
                 );
-                task.additionalConfigToFileTree = config -> project.fileTree(
-                    getCompatProjectPath(project, config.getSingleFile().toPath()).resolve(RELATIVE_REST_PROJECT_RESOURCES)
-                        .resolve(RELATIVE_API_PATH)
+                task.setAdditionalConfigToFileTree(
+                    config -> project.fileTree(
+                        getCompatProjectPath(project, config.getSingleFile().toPath()).resolve(RELATIVE_REST_PROJECT_RESOURCES)
+                            .resolve(RELATIVE_API_PATH)
+                    )
                 );
+                task.onlyIf(t -> isEnabled(project));
             });
 
         // copy compatible rest tests
         Provider<CopyRestTestsTask> copyCompatYamlTestTask = project.getTasks()
             .register("copyRestApiCompatTestTask", CopyRestTestsTask.class, task -> {
                 task.dependsOn(bwcMinorConfig);
-                task.coreConfig = bwcMinorConfig;
-                task.xpackConfig = bwcMinorConfig;
-                task.additionalConfig = bwcMinorConfig;
-                task.includeCore.set(extension.restTests.getIncludeCore());
-                task.includeXpack.set(extension.restTests.getIncludeXpack());
-                task.sourceSetName = SOURCE_SET_NAME;
-                task.coreConfigToFileTree = config -> project.fileTree(
-                    config.getSingleFile().toPath().resolve(RELATIVE_REST_API_RESOURCES).resolve(RELATIVE_TEST_PATH)
+                task.setCoreConfig(bwcMinorConfig);
+                task.setXpackConfig(bwcMinorConfig);
+                task.setAdditionalConfig(bwcMinorConfig);
+                task.getIncludeCore().set(extension.getRestTests().getIncludeCore());
+                task.getIncludeXpack().set(extension.getRestTests().getIncludeXpack());
+                task.setSourceSetName(SOURCE_SET_NAME);
+                task.setCoreConfigToFileTree(
+                    config -> project.fileTree(
+                        config.getSingleFile().toPath().resolve(RELATIVE_REST_API_RESOURCES).resolve(RELATIVE_TEST_PATH)
+                    )
                 );
-                task.xpackConfigToFileTree = config -> project.fileTree(
-                    config.getSingleFile().toPath().resolve(RELATIVE_REST_XPACK_RESOURCES).resolve(RELATIVE_TEST_PATH)
+                task.setXpackConfigToFileTree(
+                    config -> project.fileTree(
+                        config.getSingleFile().toPath().resolve(RELATIVE_REST_XPACK_RESOURCES).resolve(RELATIVE_TEST_PATH)
+                    )
                 );
-                task.additionalConfigToFileTree = config -> project.fileTree(
-                    getCompatProjectPath(project, config.getSingleFile().toPath()).resolve(RELATIVE_REST_PROJECT_RESOURCES)
-                        .resolve(RELATIVE_TEST_PATH)
+                task.setAdditionalConfigToFileTree(
+                    config -> project.fileTree(
+                        getCompatProjectPath(project, config.getSingleFile().toPath()).resolve(RELATIVE_REST_PROJECT_RESOURCES)
+                            .resolve(RELATIVE_TEST_PATH)
+                    )
                 );
                 task.dependsOn(copyCompatYamlSpecTask);
+                task.onlyIf(t -> isEnabled(project));
             });
 
         // setup the yamlRestTest task
@@ -143,6 +166,7 @@ public class YamlRestCompatTestPlugin implements Plugin<Project> {
             // run compatibility tests after "normal" tests
             testTask.mustRunAfter(project.getTasks().named(YamlRestTestPlugin.SOURCE_SET_NAME));
             testTask.dependsOn(copyCompatYamlTestTask);
+            testTask.onlyIf(t -> isEnabled(project));
         });
 
         // setup the dependencies
@@ -151,8 +175,23 @@ public class YamlRestCompatTestPlugin implements Plugin<Project> {
         // setup IDE
         GradleUtils.setupIdeForTestSourceSet(project, yamlCompatTestSourceSet);
 
-        // wire this task into check
-        project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(yamlRestCompatTestTask));
+        // add a lifecycle task to allow for a possible future additional rest compatibility without needing to change task names
+        TaskProvider<Task> checkRestCompatTask = project.getTasks().register(REST_COMPAT_CHECK_TASK_NAME, (thisCheckTask) -> {
+            thisCheckTask.setDescription("Runs all REST compatibility checks.");
+            thisCheckTask.setGroup("verification");
+        });
+
+        // wire the lifecycle task into the main check task
+        project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(checkRestCompatTask));
+
+        // wire the yamlRestCompatTest into the custom lifecycle task
+        project.getTasks().named(REST_COMPAT_CHECK_TASK_NAME).configure(check -> check.dependsOn(yamlRestCompatTestTask));
+
+    }
+
+    private boolean isEnabled(Project project) {
+        Object bwcEnabled = project.getExtensions().getExtraProperties().getProperties().get("bwc_tests_enabled");
+        return bwcEnabled == null || (Boolean) bwcEnabled;
     }
 
     // TODO: implement custom extension that allows us move around of the projects between major versions and still find them

+ 53 - 10
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/CopyRestApiTask.java

@@ -32,6 +32,7 @@ import org.gradle.api.plugins.JavaPluginConvention;
 import org.gradle.api.provider.ListProperty;
 import org.gradle.api.tasks.Input;
 import org.gradle.api.tasks.InputFiles;
+import org.gradle.api.tasks.Internal;
 import org.gradle.api.tasks.OutputDirectory;
 import org.gradle.api.tasks.SkipWhenEmpty;
 import org.gradle.api.tasks.SourceSet;
@@ -60,16 +61,16 @@ import static org.elasticsearch.gradle.util.GradleUtils.getProjectPathFromTask;
  */
 public class CopyRestApiTask extends DefaultTask {
     private static final String REST_API_PREFIX = "rest-api-spec/api";
-    final ListProperty<String> includeCore = getProject().getObjects().listProperty(String.class);
-    final ListProperty<String> includeXpack = getProject().getObjects().listProperty(String.class);
-    String sourceSetName;
-    boolean skipHasRestTestCheck;
-    FileCollection coreConfig;
-    FileCollection xpackConfig;
-    FileCollection additionalConfig;
-    Function<FileCollection, FileTree> coreConfigToFileTree = FileCollection::getAsFileTree;
-    Function<FileCollection, FileTree> xpackConfigToFileTree = FileCollection::getAsFileTree;
-    Function<FileCollection, FileTree> additionalConfigToFileTree = FileCollection::getAsFileTree;
+    private final ListProperty<String> includeCore = getProject().getObjects().listProperty(String.class);
+    private final ListProperty<String> includeXpack = getProject().getObjects().listProperty(String.class);
+    private String sourceSetName;
+    private boolean skipHasRestTestCheck;
+    private FileCollection coreConfig;
+    private FileCollection xpackConfig;
+    private FileCollection additionalConfig;
+    private Function<FileCollection, FileTree> coreConfigToFileTree = FileCollection::getAsFileTree;
+    private Function<FileCollection, FileTree> xpackConfigToFileTree = FileCollection::getAsFileTree;
+    private Function<FileCollection, FileTree> additionalConfigToFileTree = FileCollection::getAsFileTree;
 
     private final PatternFilterable corePatternSet;
     private final PatternFilterable xpackPatternSet;
@@ -260,4 +261,46 @@ public class CopyRestApiTask extends DefaultTask {
             ? Optional.empty()
             : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(getSourceSetName()));
     }
+
+    public void setSourceSetName(String sourceSetName) {
+        this.sourceSetName = sourceSetName;
+    }
+
+    public void setSkipHasRestTestCheck(boolean skipHasRestTestCheck) {
+        this.skipHasRestTestCheck = skipHasRestTestCheck;
+    }
+
+    public void setCoreConfig(FileCollection coreConfig) {
+        this.coreConfig = coreConfig;
+    }
+
+    public void setXpackConfig(FileCollection xpackConfig) {
+        this.xpackConfig = xpackConfig;
+    }
+
+    public void setAdditionalConfig(FileCollection additionalConfig) {
+        this.additionalConfig = additionalConfig;
+    }
+
+    public void setCoreConfigToFileTree(Function<FileCollection, FileTree> coreConfigToFileTree) {
+        this.coreConfigToFileTree = coreConfigToFileTree;
+    }
+
+    public void setXpackConfigToFileTree(Function<FileCollection, FileTree> xpackConfigToFileTree) {
+        this.xpackConfigToFileTree = xpackConfigToFileTree;
+    }
+
+    public void setAdditionalConfigToFileTree(Function<FileCollection, FileTree> additionalConfigToFileTree) {
+        this.additionalConfigToFileTree = additionalConfigToFileTree;
+    }
+
+    @Internal
+    public FileCollection getCoreConfig() {
+        return coreConfig;
+    }
+
+    @Internal
+    public FileCollection getXpackConfig() {
+        return xpackConfig;
+    }
 }

+ 48 - 9
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/CopyRestTestsTask.java

@@ -32,6 +32,7 @@ import org.gradle.api.plugins.JavaPluginConvention;
 import org.gradle.api.provider.ListProperty;
 import org.gradle.api.tasks.Input;
 import org.gradle.api.tasks.InputFiles;
+import org.gradle.api.tasks.Internal;
 import org.gradle.api.tasks.OutputDirectory;
 import org.gradle.api.tasks.SkipWhenEmpty;
 import org.gradle.api.tasks.SourceSet;
@@ -57,16 +58,16 @@ import static org.elasticsearch.gradle.util.GradleUtils.getProjectPathFromTask;
  */
 public class CopyRestTestsTask extends DefaultTask {
     private static final String REST_TEST_PREFIX = "rest-api-spec/test";
-    final ListProperty<String> includeCore = getProject().getObjects().listProperty(String.class);
-    final ListProperty<String> includeXpack = getProject().getObjects().listProperty(String.class);
+    private final ListProperty<String> includeCore = getProject().getObjects().listProperty(String.class);
+    private final ListProperty<String> includeXpack = getProject().getObjects().listProperty(String.class);
 
-    String sourceSetName;
-    FileCollection coreConfig;
-    FileCollection xpackConfig;
-    FileCollection additionalConfig;
-    Function<FileCollection, FileTree> coreConfigToFileTree = FileCollection::getAsFileTree;
-    Function<FileCollection, FileTree> xpackConfigToFileTree = FileCollection::getAsFileTree;
-    Function<FileCollection, FileTree> additionalConfigToFileTree = FileCollection::getAsFileTree;
+    private String sourceSetName;
+    private FileCollection coreConfig;
+    private FileCollection xpackConfig;
+    private FileCollection additionalConfig;
+    private Function<FileCollection, FileTree> coreConfigToFileTree = FileCollection::getAsFileTree;
+    private Function<FileCollection, FileTree> xpackConfigToFileTree = FileCollection::getAsFileTree;
+    private Function<FileCollection, FileTree> additionalConfigToFileTree = FileCollection::getAsFileTree;
 
     private final PatternFilterable corePatternSet;
     private final PatternFilterable xpackPatternSet;
@@ -198,4 +199,42 @@ public class CopyRestTestsTask extends DefaultTask {
             ? Optional.empty()
             : Optional.ofNullable(GradleUtils.getJavaSourceSets(project).findByName(getSourceSetName()));
     }
+
+    public void setSourceSetName(String sourceSetName) {
+        this.sourceSetName = sourceSetName;
+    }
+
+    public void setCoreConfig(FileCollection coreConfig) {
+        this.coreConfig = coreConfig;
+    }
+
+    public void setXpackConfig(FileCollection xpackConfig) {
+        this.xpackConfig = xpackConfig;
+    }
+
+    public void setAdditionalConfig(FileCollection additionalConfig) {
+        this.additionalConfig = additionalConfig;
+    }
+
+    public void setCoreConfigToFileTree(Function<FileCollection, FileTree> coreConfigToFileTree) {
+        this.coreConfigToFileTree = coreConfigToFileTree;
+    }
+
+    public void setXpackConfigToFileTree(Function<FileCollection, FileTree> xpackConfigToFileTree) {
+        this.xpackConfigToFileTree = xpackConfigToFileTree;
+    }
+
+    public void setAdditionalConfigToFileTree(Function<FileCollection, FileTree> additionalConfigToFileTree) {
+        this.additionalConfigToFileTree = additionalConfigToFileTree;
+    }
+
+    @Internal
+    public FileCollection getCoreConfig() {
+        return coreConfig;
+    }
+
+    @Internal
+    public FileCollection getXpackConfig() {
+        return xpackConfig;
+    }
 }

+ 9 - 1
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestResourcesExtension.java

@@ -47,7 +47,15 @@ public class RestResourcesExtension {
         spec.execute(restTests);
     }
 
-    static class RestResourcesSpec {
+    public RestResourcesSpec getRestApi() {
+        return restApi;
+    }
+
+    public RestResourcesSpec getRestTests() {
+        return restTests;
+    }
+
+    public static class RestResourcesSpec {
 
         private final ListProperty<String> includeCore;
         private final ListProperty<String> includeXpack;

+ 12 - 12
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestResourcesPlugin.java

@@ -99,21 +99,21 @@ public class RestResourcesPlugin implements Plugin<Project> {
         project.getConfigurations().create("restXpackTests");
         Provider<CopyRestTestsTask> copyRestYamlTestTask = project.getTasks()
             .register("copyYamlTestsTask", CopyRestTestsTask.class, task -> {
-                task.includeCore.set(extension.restTests.getIncludeCore());
-                task.includeXpack.set(extension.restTests.getIncludeXpack());
-                task.coreConfig = testConfig;
-                task.sourceSetName = TEST_SOURCE_SET_NAME;
+                task.getIncludeCore().set(extension.restTests.getIncludeCore());
+                task.getIncludeXpack().set(extension.restTests.getIncludeXpack());
+                task.setCoreConfig(testConfig);
+                task.setSourceSetName(TEST_SOURCE_SET_NAME);
                 if (BuildParams.isInternal()) {
                     // core
                     Dependency restTestdependency = project.getDependencies()
                         .project(Map.of("path", ":rest-api-spec", "configuration", "restTests"));
                     project.getDependencies().add(testConfig.getName(), restTestdependency);
                     // x-pack
-                    task.xpackConfig = xpackTestConfig;
+                    task.setXpackConfig(xpackTestConfig);
                     Dependency restXPackTestdependency = project.getDependencies()
                         .project(Map.of("path", ":x-pack:plugin", "configuration", "restXpackTests"));
                     project.getDependencies().add(xpackTestConfig.getName(), restXPackTestdependency);
-                    task.dependsOn(task.xpackConfig);
+                    task.dependsOn(task.getXpackConfig());
                 } else {
                     Dependency dependency = project.getDependencies()
                         .create("org.elasticsearch:rest-api-spec:" + VersionProperties.getElasticsearch());
@@ -129,20 +129,20 @@ public class RestResourcesPlugin implements Plugin<Project> {
         project.getConfigurations().create("restXpackSpecs");
         Provider<CopyRestApiTask> copyRestYamlSpecTask = project.getTasks()
             .register("copyRestApiSpecsTask", CopyRestApiTask.class, task -> {
-                task.includeCore.set(extension.restApi.getIncludeCore());
-                task.includeXpack.set(extension.restApi.getIncludeXpack());
+                task.getIncludeCore().set(extension.restApi.getIncludeCore());
+                task.getIncludeXpack().set(extension.restApi.getIncludeXpack());
                 task.dependsOn(copyRestYamlTestTask);
-                task.coreConfig = specConfig;
-                task.sourceSetName = TEST_SOURCE_SET_NAME;
+                task.setCoreConfig(specConfig);
+                task.setSourceSetName(TEST_SOURCE_SET_NAME);
                 if (BuildParams.isInternal()) {
                     Dependency restSpecDependency = project.getDependencies()
                         .project(Map.of("path", ":rest-api-spec", "configuration", "restSpecs"));
                     project.getDependencies().add(specConfig.getName(), restSpecDependency);
-                    task.xpackConfig = xpackSpecConfig;
+                    task.setXpackConfig(xpackSpecConfig);
                     Dependency restXpackSpecDependency = project.getDependencies()
                         .project(Map.of("path", ":x-pack:plugin", "configuration", "restXpackSpecs"));
                     project.getDependencies().add(xpackSpecConfig.getName(), restXpackSpecDependency);
-                    task.dependsOn(task.xpackConfig);
+                    task.dependsOn(task.getXpackConfig());
                 } else {
                     Dependency dependency = project.getDependencies()
                         .create("org.elasticsearch:rest-api-spec:" + VersionProperties.getElasticsearch());

+ 3 - 3
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/RestTestUtil.java

@@ -41,7 +41,7 @@ public class RestTestUtil {
 
     private RestTestUtil() {}
 
-    static ElasticsearchCluster createTestCluster(Project project, SourceSet sourceSet) {
+    public static ElasticsearchCluster createTestCluster(Project project, SourceSet sourceSet) {
         // eagerly create the testCluster container so it is easily available for configuration
         @SuppressWarnings("unchecked")
         NamedDomainObjectContainer<ElasticsearchCluster> testClusters = (NamedDomainObjectContainer<ElasticsearchCluster>) project
@@ -53,7 +53,7 @@ public class RestTestUtil {
     /**
      * Creates a task with the source set name of type {@link RestIntegTestTask}
      */
-    static Provider<RestIntegTestTask> registerTask(Project project, SourceSet sourceSet) {
+    public static Provider<RestIntegTestTask> registerTask(Project project, SourceSet sourceSet) {
         // lazily create the test task
         Provider<RestIntegTestTask> testProvider = project.getTasks().register(sourceSet.getName(), RestIntegTestTask.class, testTask -> {
             testTask.setGroup(JavaBasePlugin.VERIFICATION_GROUP);
@@ -79,7 +79,7 @@ public class RestTestUtil {
     /**
      * Setup the dependencies needed for the REST tests.
      */
-    static void setupDependencies(Project project, SourceSet sourceSet) {
+    public static void setupDependencies(Project project, SourceSet sourceSet) {
         BuildParams.withInternalBuild(
             () -> { project.getDependencies().add(sourceSet.getImplementationConfigurationName(), project.project(":test:framework")); }
         ).orElse(() -> {

+ 2 - 2
buildSrc/src/main/java/org/elasticsearch/gradle/test/rest/YamlRestTestPlugin.java

@@ -66,13 +66,13 @@ public class YamlRestTestPlugin implements Plugin<Project> {
         // setup the copy for the rest resources
         project.getTasks()
             .withType(CopyRestApiTask.class)
-            .configureEach(copyRestApiTask -> { copyRestApiTask.sourceSetName = SOURCE_SET_NAME; });
+            .configureEach(copyRestApiTask -> { copyRestApiTask.setSourceSetName(SOURCE_SET_NAME); });
         project.getTasks()
             .named(yamlTestSourceSet.getProcessResourcesTaskName())
             .configure(t -> t.dependsOn(project.getTasks().withType(CopyRestApiTask.class)));
         project.getTasks()
             .withType(CopyRestTestsTask.class)
-            .configureEach(copyRestTestTask -> copyRestTestTask.sourceSetName = SOURCE_SET_NAME);
+            .configureEach(copyRestTestTask -> copyRestTestTask.setSourceSetName(SOURCE_SET_NAME));
 
         // setup IDE
         GradleUtils.setupIdeForTestSourceSet(project, yamlTestSourceSet);

+ 1 - 1
buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.yaml-rest-compat-test.properties

@@ -17,4 +17,4 @@
 # under the License.
 #
 
-implementation-class=org.elasticsearch.gradle.test.rest.YamlRestCompatTestPlugin
+implementation-class=org.elasticsearch.gradle.internal.YamlRestCompatTestPlugin