Browse Source

Create plugin for internalClusterTest task (#55896)

This commit creates a new gradle plugin to provide a separate task name
and source set for running ESIntegTestCase tests. The only project
converted to use the new plugin in this PR is server, as an example. The
remaining cases in x-pack will be handled in followups.
Ryan Ernst 5 years ago
parent
commit
cabe6a3305
100 changed files with 173 additions and 96 deletions
  1. 2 2
      TESTING.asciidoc
  2. 0 6
      buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy
  3. 1 2
      buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy
  4. 15 9
      buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsTasks.java
  5. 41 0
      buildSrc/src/main/java/org/elasticsearch/gradle/test/InternalClusterTestPlugin.java
  6. 86 0
      buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java
  7. 20 0
      buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.internal-cluster-test.properties
  8. 7 11
      server/build.gradle
  9. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/IndicesRequestIT.java
  10. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/ListenerActionIT.java
  11. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/RejectionActionIT.java
  12. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/HotThreadsIT.java
  13. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/ReloadSecureSettingsIT.java
  14. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/allocation/ClusterAllocationExplainIT.java
  15. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/CancellableTasksIT.java
  16. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskStorageRetryIT.java
  17. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/TasksIT.java
  18. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/repositories/RepositoryBlocksIT.java
  19. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/snapshots/SnapshotBlocksIT.java
  20. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/state/TransportClusterStateActionDisruptionIT.java
  21. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/stats/ClusterStatsIT.java
  22. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/tasks/PendingTasksBlocksIT.java
  23. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/alias/ValidateIndicesAliasesRequestIT.java
  24. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/cache/clear/ClearIndicesCacheBlocksIT.java
  25. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/CloneIndexIT.java
  26. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/CreateIndexIT.java
  27. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java
  28. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/SplitIndexIT.java
  29. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexBlocksIT.java
  30. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/flush/FlushBlocksIT.java
  31. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeBlocksIT.java
  32. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeIT.java
  33. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java
  34. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/mapping/put/ValidateMappingRequestPluginIT.java
  35. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/refresh/RefreshBlocksIT.java
  36. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/rollover/RolloverIT.java
  37. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/segments/IndicesSegmentsBlocksIT.java
  38. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/shards/IndicesShardStoreRequestIT.java
  39. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/stats/IndicesStatsBlocksIT.java
  40. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java
  41. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorClusterSettingsIT.java
  42. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorIT.java
  43. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorRetryIT.java
  44. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkRejectionIT.java
  45. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkWithUpdatesIT.java
  46. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/ingest/AsyncIngestProcessorIT.java
  47. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/search/SearchProgressActionListenerIT.java
  48. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/search/TransportSearchIT.java
  49. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/support/ActiveShardsObserverIT.java
  50. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/support/WaitActiveShardCountIT.java
  51. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/support/master/IndexingMasterFailoverIT.java
  52. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/support/replication/TransportReplicationActionRetryOnClosedNodeIT.java
  53. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/termvectors/GetTermVectorsIT.java
  54. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/action/termvectors/MultiTermVectorsIT.java
  55. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/aliases/IndexAliasesIT.java
  56. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/blocks/SimpleBlocksIT.java
  57. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/broadcast/BroadcastActionsIT.java
  58. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/bwcompat/RecoveryWithUnsupportedIndicesIT.java
  59. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/client/node/NodeClientIT.java
  60. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterHealthIT.java
  61. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterInfoServiceIT.java
  62. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterStateDiffIT.java
  63. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/MinimumMasterNodesIT.java
  64. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/NoMasterNodeIT.java
  65. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java
  66. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleDataNodesIT.java
  67. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/SpecificMasterNodesIT.java
  68. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/UpdateSettingsValidationIT.java
  69. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/AwarenessAllocationIT.java
  70. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/ClusterRerouteIT.java
  71. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/FilteringAllocationIT.java
  72. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/SimpleAllocationIT.java
  73. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RareClusterStateIT.java
  74. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RemoveCustomsCommandIT.java
  75. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RemoveSettingsCommandIT.java
  76. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/UnsafeBootstrapAndDetachCommandIT.java
  77. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/VotingConfigurationIT.java
  78. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/ZenDiscoveryIT.java
  79. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java
  80. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/UpgradeIndexSettingsIT.java
  81. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleIT.java
  82. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/AllocationIdIT.java
  83. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/DelayedAllocationIT.java
  84. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/PrimaryAllocationIT.java
  85. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/ShardStateIT.java
  86. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/decider/MockDiskUsagesIT.java
  87. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/decider/UpdateShardAllocationSettingsIT.java
  88. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/service/ClusterServiceIT.java
  89. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/settings/ClusterSettingsIT.java
  90. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/settings/SettingsFilteringIT.java
  91. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/cluster/shards/ClusterSearchShardsIT.java
  92. 1 66
      server/src/internalClusterTest/java/org/elasticsearch/cluster/shards/ClusterShardLimitIT.java
  93. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/common/settings/ConsistentSettingsIT.java
  94. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/common/settings/UpgradeSettingsIT.java
  95. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/ClusterDisruptionCleanSettingsIT.java
  96. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/ClusterDisruptionIT.java
  97. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/DiscoveryDisruptionIT.java
  98. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/DiskDisruptionIT.java
  99. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/MasterDisruptionIT.java
  100. 0 0
      server/src/internalClusterTest/java/org/elasticsearch/discovery/SettingsBasedSeedHostsProviderIT.java

+ 2 - 2
TESTING.asciidoc

@@ -253,10 +253,10 @@ To run all verification tasks, including static checks, unit tests, and integrat
 ---------------------------------------------------------------------------
 
 Note that this will also run the unit tests and precommit tasks first. If you want to just
-run the integration tests (because you are debugging them):
+run the in memory cluster integration tests (because you are debugging them):
 
 ---------------------------------------------------------------------------
-./gradlew integTest
+./gradlew internalClusterTest
 ---------------------------------------------------------------------------
 
 If you want to just run the precommit checks:

+ 0 - 6
buildSrc/src/main/groovy/org/elasticsearch/gradle/BuildPlugin.groovy

@@ -27,7 +27,6 @@ import nebula.plugin.info.InfoBrokerPlugin
 import org.apache.commons.io.IOUtils
 import org.elasticsearch.gradle.info.BuildParams
 import org.elasticsearch.gradle.info.GlobalBuildInfoPlugin
-import org.elasticsearch.gradle.info.JavaHome
 import org.elasticsearch.gradle.plugin.PluginBuildPlugin
 import org.elasticsearch.gradle.precommit.DependencyLicensesTask
 import org.elasticsearch.gradle.precommit.PrecommitTasks
@@ -55,13 +54,11 @@ import org.gradle.api.artifacts.repositories.IvyPatternRepositoryLayout
 import org.gradle.api.artifacts.repositories.MavenArtifactRepository
 import org.gradle.api.credentials.HttpHeaderCredentials
 import org.gradle.api.execution.TaskActionListener
-import org.gradle.api.execution.TaskExecutionGraph
 import org.gradle.api.file.CopySpec
 import org.gradle.api.plugins.BasePlugin
 import org.gradle.api.plugins.BasePluginConvention
 import org.gradle.api.plugins.ExtraPropertiesExtension
 import org.gradle.api.plugins.JavaPlugin
-import org.gradle.api.plugins.JavaPluginExtension
 import org.gradle.api.publish.PublishingExtension
 import org.gradle.api.publish.maven.MavenPublication
 import org.gradle.api.publish.maven.plugins.MavenPublishPlugin
@@ -70,16 +67,13 @@ import org.gradle.api.tasks.SourceSet
 import org.gradle.api.tasks.SourceSetContainer
 import org.gradle.api.tasks.TaskProvider
 import org.gradle.api.tasks.bundling.Jar
-import org.gradle.api.tasks.compile.GroovyCompile
 import org.gradle.api.tasks.compile.JavaCompile
 import org.gradle.api.tasks.javadoc.Javadoc
 import org.gradle.api.tasks.testing.Test
-import org.gradle.api.tasks.testing.logging.TestLoggingContainer
 import org.gradle.authentication.http.HttpHeaderAuthentication
 import org.gradle.external.javadoc.CoreJavadocOptions
 import org.gradle.internal.jvm.Jvm
 import org.gradle.language.base.plugins.LifecycleBasePlugin
-import org.gradle.process.CommandLineArgumentProvider
 import org.gradle.util.GradleVersion
 
 import java.nio.charset.StandardCharsets

+ 1 - 2
buildSrc/src/main/groovy/org/elasticsearch/gradle/precommit/PrecommitTasks.groovy

@@ -165,8 +165,7 @@ class PrecommitTasks {
             }
 
             SourceSet sourceSet = project.sourceSets.getByName(sourceSetName)
-            FileCollection runtime = sourceSet.runtimeClasspath
-            classpath = runtime.plus(sourceSet.compileClasspath)
+            classpath = project.files { sourceSet.runtimeClasspath.plus(sourceSet.compileClasspath) }
 
             targetCompatibility = BuildParams.runtimeJavaVersion.majorVersion
             if (BuildParams.runtimeJavaVersion > JavaVersion.VERSION_13) {

+ 15 - 9
buildSrc/src/main/java/org/elasticsearch/gradle/precommit/TestingConventionsTasks.java

@@ -20,6 +20,7 @@ package org.elasticsearch.gradle.precommit;
 
 import groovy.lang.Closure;
 import org.elasticsearch.gradle.util.GradleUtils;
+import org.elasticsearch.gradle.util.Util;
 import org.gradle.api.DefaultTask;
 import org.gradle.api.NamedDomainObjectContainer;
 import org.gradle.api.Task;
@@ -46,9 +47,12 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.StandardOpenOption;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import java.util.function.Predicate;
 import java.util.stream.Collectors;
@@ -62,6 +66,8 @@ public class TestingConventionsTasks extends DefaultTask {
 
     private final NamedDomainObjectContainer<TestingConventionRule> naming;
 
+    private List<String> tasks = null;
+
     public TestingConventionsTasks() {
         setDescription("Tests various testing conventions");
         // Run only after everything is compiled
@@ -74,6 +80,7 @@ public class TestingConventionsTasks extends DefaultTask {
         return getProject().getTasks()
             .withType(Test.class)
             .stream()
+            .filter(t -> tasks == null || tasks.contains(t.getName()))
             .filter(Task::getEnabled)
             .collect(Collectors.toMap(Task::getPath, task -> task.getCandidateClassFiles().getFiles()));
     }
@@ -81,8 +88,8 @@ public class TestingConventionsTasks extends DefaultTask {
     @Input
     public Map<String, File> getTestClassNames() {
         if (testClassNames == null) {
-            testClassNames = GradleUtils.getJavaSourceSets(getProject())
-                .getByName("test")
+            testClassNames = Util.getJavaTestSourceSet(getProject())
+                .get()
                 .getOutput()
                 .getClassesDirs()
                 .getFiles()
@@ -108,6 +115,10 @@ public class TestingConventionsTasks extends DefaultTask {
         naming.configure(action);
     }
 
+    public void setTasks(String... tasks) {
+        this.tasks = Arrays.asList(tasks);
+    }
+
     @Input
     public Set<String> getMainClassNamedLikeTests() {
         SourceSetContainer javaSourceSets = GradleUtils.getJavaSourceSets(getProject());
@@ -319,6 +330,7 @@ public class TestingConventionsTasks extends DefaultTask {
     }
 
     private boolean implementsNamingConvention(Class<?> clazz) {
+        Objects.requireNonNull(clazz);
         return implementsNamingConvention(clazz.getName());
     }
 
@@ -349,13 +361,7 @@ public class TestingConventionsTasks extends DefaultTask {
         // the classes these don't influence the checks done by this task.
         // A side effect is that we could mark as up-to-date with missing dependencies, but these will be found when
         // running the tests.
-        return getProject().files(
-            getProject().getConfigurations().getByName("testRuntime").resolve(),
-            GradleUtils.getJavaSourceSets(getProject())
-                .stream()
-                .flatMap(sourceSet -> sourceSet.getOutput().getClassesDirs().getFiles().stream())
-                .collect(Collectors.toList())
-        );
+        return Util.getJavaTestSourceSet(getProject()).get().getRuntimeClasspath();
     }
 
     private Map<String, File> walkPathAndLoadClasses(File testRoot) {

+ 41 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/test/InternalClusterTestPlugin.java

@@ -0,0 +1,41 @@
+/*
+ * Licensed to Elasticsearch under one or more contributor
+ * license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright
+ * ownership. Elasticsearch licenses this file to you under
+ * the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.elasticsearch.gradle.test;
+
+import org.elasticsearch.gradle.util.GradleUtils;
+import org.gradle.api.Plugin;
+import org.gradle.api.Project;
+import org.gradle.api.tasks.SourceSet;
+
+public class InternalClusterTestPlugin implements Plugin<Project> {
+
+    public static final String SOURCE_SET_NAME = "internalClusterTest";
+
+    @Override
+    public void apply(Project project) {
+        GradleUtils.addTestSourceSet(project, SOURCE_SET_NAME);
+
+        // TODO: fix usages of IT tests depending on Tests methods so this extension is not necessary
+        GradleUtils.extendSourceSet(project, SourceSet.TEST_SOURCE_SET_NAME, SOURCE_SET_NAME);
+
+        // add alias task that is easier to type
+        project.getTasks().register("icTest").configure(alias -> alias.dependsOn(SOURCE_SET_NAME));
+    }
+}

+ 86 - 0
buildSrc/src/main/java/org/elasticsearch/gradle/util/GradleUtils.java

@@ -18,6 +18,7 @@
  */
 package org.elasticsearch.gradle.util;
 
+import org.elasticsearch.gradle.ElasticsearchJavaPlugin;
 import org.gradle.api.Action;
 import org.gradle.api.GradleException;
 import org.gradle.api.NamedDomainObjectContainer;
@@ -25,16 +26,26 @@ import org.gradle.api.PolymorphicDomainObjectContainer;
 import org.gradle.api.Project;
 import org.gradle.api.Task;
 import org.gradle.api.UnknownTaskException;
+import org.gradle.api.artifacts.Configuration;
+import org.gradle.api.plugins.JavaBasePlugin;
 import org.gradle.api.plugins.JavaPluginConvention;
 import org.gradle.api.provider.Provider;
 import org.gradle.api.services.BuildService;
 import org.gradle.api.services.BuildServiceRegistration;
 import org.gradle.api.services.BuildServiceRegistry;
+import org.gradle.api.tasks.SourceSet;
 import org.gradle.api.tasks.SourceSetContainer;
 import org.gradle.api.tasks.TaskContainer;
 import org.gradle.api.tasks.TaskProvider;
+import org.gradle.api.tasks.testing.Test;
+import org.gradle.plugins.ide.eclipse.model.EclipseModel;
+import org.gradle.plugins.ide.idea.model.IdeaModel;
 
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
 import java.util.Optional;
+import java.util.function.Function;
 
 public abstract class GradleUtils {
 
@@ -120,4 +131,79 @@ public abstract class GradleUtils {
 
         return (Provider<T>) registration.getService();
     }
+
+    /**
+     * Add a source set and task of the same name that runs tests.
+     *
+     * IDEs are also configured if setup, and the test task is added to check. The new test source
+     * set extends from the normal test source set to allow sharing of utilities.
+     *
+     * @return A task provider for the newly created test task
+     */
+    public static TaskProvider<?> addTestSourceSet(Project project, String sourceSetName) {
+        project.getPluginManager().apply(ElasticsearchJavaPlugin.class);
+
+        // create our test source set and task
+        SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
+        SourceSet testSourceSet = sourceSets.create(sourceSetName);
+        TaskProvider<Test> testTask = project.getTasks().register(sourceSetName, Test.class);
+        testTask.configure(task -> {
+            task.setGroup(JavaBasePlugin.VERIFICATION_GROUP);
+            task.setTestClassesDirs(testSourceSet.getOutput().getClassesDirs());
+            task.setClasspath(testSourceSet.getRuntimeClasspath());
+        });
+
+        Configuration testCompileConfig = project.getConfigurations().getByName(testSourceSet.getCompileClasspathConfigurationName());
+        Configuration testRuntimeConfig = project.getConfigurations().getByName(testSourceSet.getRuntimeClasspathConfigurationName());
+        testSourceSet.setCompileClasspath(testCompileConfig);
+        testSourceSet.setRuntimeClasspath(project.getObjects().fileCollection().from(testSourceSet.getOutput(), testRuntimeConfig));
+
+        extendSourceSet(project, SourceSet.MAIN_SOURCE_SET_NAME, sourceSetName);
+
+        // setup IDEs
+        String runtimeClasspathName = testSourceSet.getRuntimeClasspathConfigurationName();
+        Configuration runtimeClasspathConfiguration = project.getConfigurations().getByName(runtimeClasspathName);
+        project.getPluginManager().withPlugin("idea", p -> {
+            IdeaModel idea = project.getExtensions().getByType(IdeaModel.class);
+            idea.getModule().setTestSourceDirs(testSourceSet.getJava().getSrcDirs());
+            idea.getModule().getScopes().put("TEST", Map.of("plus", List.of(runtimeClasspathConfiguration)));
+        });
+        project.getPluginManager().withPlugin("eclipse", p -> {
+            EclipseModel eclipse = project.getExtensions().getByType(EclipseModel.class);
+            eclipse.getClasspath().setSourceSets(List.of(testSourceSet));
+            eclipse.getClasspath().getPlusConfigurations().add(runtimeClasspathConfiguration);
+        });
+
+        // add to the check task
+        project.getTasks().named(JavaBasePlugin.CHECK_TASK_NAME).configure(check -> check.dependsOn(testTask));
+
+        return testTask;
+    }
+
+    /**
+     * Extend the configurations of one source set from another.
+     */
+    public static void extendSourceSet(Project project, String parentSourceSetName, String childSourceSetName) {
+        final List<Function<SourceSet, String>> configNameFunctions = Arrays.asList(
+            SourceSet::getCompileConfigurationName,
+            SourceSet::getImplementationConfigurationName,
+            SourceSet::getRuntimeConfigurationName,
+            SourceSet::getRuntimeOnlyConfigurationName
+        );
+        SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
+        SourceSet parent = sourceSets.getByName(parentSourceSetName);
+        SourceSet child = sourceSets.getByName(childSourceSetName);
+
+        for (Function<SourceSet, String> configNameFunction : configNameFunctions) {
+            String parentConfigName = configNameFunction.apply(parent);
+            String childConfigName = configNameFunction.apply(child);
+            Configuration parentConfig = project.getConfigurations().getByName(parentConfigName);
+            Configuration childConfig = project.getConfigurations().getByName(childConfigName);
+            childConfig.extendsFrom(parentConfig);
+        }
+
+        // tie this new test source set to the main and test source sets
+        child.setCompileClasspath(project.getObjects().fileCollection().from(child.getCompileClasspath(), parent.getOutput()));
+        child.setRuntimeClasspath(project.getObjects().fileCollection().from(child.getRuntimeClasspath(), parent.getOutput()));
+    }
 }

+ 20 - 0
buildSrc/src/main/resources/META-INF/gradle-plugins/elasticsearch.internal-cluster-test.properties

@@ -0,0 +1,20 @@
+#
+# Licensed to Elasticsearch under one or more contributor
+# license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright
+# ownership. Elasticsearch licenses this file to you under
+# the Apache License, Version 2.0 (the "License"); you may
+# not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+implementation-class=org.elasticsearch.gradle.test.InternalClusterTestPlugin

+ 7 - 11
server/build.gradle

@@ -22,6 +22,7 @@ import org.elasticsearch.gradle.info.BuildParams
 apply plugin: 'elasticsearch.build'
 apply plugin: 'nebula.optional-base'
 apply plugin: 'nebula.maven-base-publish'
+apply plugin: 'elasticsearch.internal-cluster-test'
 
 publishing {
   publications {
@@ -134,11 +135,15 @@ dependencies {
     // tests use the locally compiled version of server
     exclude group: 'org.elasticsearch', module: 'server'
   }
+  internalClusterTestCompile(project(":test:framework")) {
+    exclude group: 'org.elasticsearch', module: 'server'
+  }
 
 }
 
 compileJava.options.compilerArgs << "-Xlint:-cast,-rawtypes,-unchecked"
 compileTestJava.options.compilerArgs << "-Xlint:-cast,-rawtypes,-unchecked"
+compileInternalClusterTestJava.options.compilerArgs << "-Xlint:-cast,-rawtypes,-unchecked"
 
 // Until this project is always being formatted with spotless, we need to
 // guard against `spotless()` not existing.
@@ -175,6 +180,7 @@ testingConventions {
       baseClass "org.elasticsearch.test.ESSingleNodeTestCase"
     }
   }
+  tasks = ['test']
 }
 
 task generateModulesList {
@@ -332,20 +338,10 @@ dependencyLicenses {
 }
 
 
-task integTest(type: Test) {
-  description = 'Multi-node tests'
-  mustRunAfter test
-
-  include '**/*IT.class'
+tasks.named('internalClusterTest').configure {
   if (org.elasticsearch.gradle.info.BuildParams.isSnapshotBuild() == false) {
     systemProperty 'es.datastreams_feature_enabled', 'true'
   }
 }
 
-check.dependsOn integTest
-
-task internalClusterTest {
-  dependsOn integTest
-}
-
 

+ 0 - 0
server/src/test/java/org/elasticsearch/action/IndicesRequestIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/IndicesRequestIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/ListenerActionIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/ListenerActionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/RejectionActionIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/RejectionActionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/HotThreadsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/HotThreadsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/ReloadSecureSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/ReloadSecureSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/allocation/ClusterAllocationExplainIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/allocation/ClusterAllocationExplainIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/CancellableTasksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/CancellableTasksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskStorageRetryIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/TaskStorageRetryIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/node/tasks/TasksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/node/tasks/TasksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/repositories/RepositoryBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/repositories/RepositoryBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/snapshots/SnapshotBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/snapshots/SnapshotBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/state/TransportClusterStateActionDisruptionIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/state/TransportClusterStateActionDisruptionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/stats/ClusterStatsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/stats/ClusterStatsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/cluster/tasks/PendingTasksBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/cluster/tasks/PendingTasksBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/alias/ValidateIndicesAliasesRequestIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/alias/ValidateIndicesAliasesRequestIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/cache/clear/ClearIndicesCacheBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/cache/clear/ClearIndicesCacheBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/create/CloneIndexIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/CloneIndexIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/create/CreateIndexIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/CreateIndexIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/ShrinkIndexIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/create/SplitIndexIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/create/SplitIndexIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/delete/DeleteIndexBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/flush/FlushBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/flush/FlushBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/forcemerge/ForceMergeIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/get/GetIndexIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/mapping/put/ValidateMappingRequestPluginIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/mapping/put/ValidateMappingRequestPluginIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/refresh/RefreshBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/refresh/RefreshBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/rollover/RolloverIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/rollover/RolloverIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/segments/IndicesSegmentsBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/segments/IndicesSegmentsBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/shards/IndicesShardStoreRequestIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/shards/IndicesShardStoreRequestIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/admin/indices/stats/IndicesStatsBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/admin/indices/stats/IndicesStatsBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkIntegrationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkProcessorClusterSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorClusterSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkProcessorIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkProcessorRetryIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkProcessorRetryIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkRejectionIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkRejectionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/bulk/BulkWithUpdatesIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/bulk/BulkWithUpdatesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/ingest/AsyncIngestProcessorIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/ingest/AsyncIngestProcessorIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/search/SearchProgressActionListenerIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/search/SearchProgressActionListenerIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/search/TransportSearchIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/search/TransportSearchIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/support/ActiveShardsObserverIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/support/ActiveShardsObserverIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/support/WaitActiveShardCountIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/support/WaitActiveShardCountIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/support/master/IndexingMasterFailoverIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/support/master/IndexingMasterFailoverIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/support/replication/TransportReplicationActionRetryOnClosedNodeIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/support/replication/TransportReplicationActionRetryOnClosedNodeIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/termvectors/GetTermVectorsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/termvectors/GetTermVectorsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/action/termvectors/MultiTermVectorsIT.java → server/src/internalClusterTest/java/org/elasticsearch/action/termvectors/MultiTermVectorsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/aliases/IndexAliasesIT.java → server/src/internalClusterTest/java/org/elasticsearch/aliases/IndexAliasesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/blocks/SimpleBlocksIT.java → server/src/internalClusterTest/java/org/elasticsearch/blocks/SimpleBlocksIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/broadcast/BroadcastActionsIT.java → server/src/internalClusterTest/java/org/elasticsearch/broadcast/BroadcastActionsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/bwcompat/RecoveryWithUnsupportedIndicesIT.java → server/src/internalClusterTest/java/org/elasticsearch/bwcompat/RecoveryWithUnsupportedIndicesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/client/node/NodeClientIT.java → server/src/internalClusterTest/java/org/elasticsearch/client/node/NodeClientIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/ClusterHealthIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterHealthIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/ClusterInfoServiceIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterInfoServiceIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/ClusterStateDiffIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/ClusterStateDiffIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/MinimumMasterNodesIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/MinimumMasterNodesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/NoMasterNodeIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/NoMasterNodeIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/SimpleClusterStateIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleClusterStateIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/SimpleDataNodesIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/SimpleDataNodesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/SpecificMasterNodesIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/SpecificMasterNodesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/UpdateSettingsValidationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/UpdateSettingsValidationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/allocation/AwarenessAllocationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/AwarenessAllocationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/allocation/ClusterRerouteIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/ClusterRerouteIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/allocation/FilteringAllocationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/FilteringAllocationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/allocation/SimpleAllocationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/allocation/SimpleAllocationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/RareClusterStateIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RareClusterStateIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/RemoveCustomsCommandIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RemoveCustomsCommandIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/RemoveSettingsCommandIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/RemoveSettingsCommandIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/UnsafeBootstrapAndDetachCommandIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/UnsafeBootstrapAndDetachCommandIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/VotingConfigurationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/VotingConfigurationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/coordination/ZenDiscoveryIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/coordination/ZenDiscoveryIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/TemplateUpgradeServiceIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/metadata/UpgradeIndexSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/metadata/UpgradeIndexSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/node/DiscoveryNodeRoleIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/AllocationIdIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/AllocationIdIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/DelayedAllocationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/DelayedAllocationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/PrimaryAllocationIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/PrimaryAllocationIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/allocation/ShardStateIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/ShardStateIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/MockDiskUsagesIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/decider/MockDiskUsagesIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/routing/allocation/decider/UpdateShardAllocationSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/routing/allocation/decider/UpdateShardAllocationSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/service/ClusterServiceIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/service/ClusterServiceIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/settings/ClusterSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/settings/ClusterSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/settings/SettingsFilteringIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/settings/SettingsFilteringIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/cluster/shards/ClusterSearchShardsIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/shards/ClusterSearchShardsIT.java


+ 1 - 66
server/src/test/java/org/elasticsearch/cluster/shards/ClusterShardLimitIT.java → server/src/internalClusterTest/java/org/elasticsearch/cluster/shards/ClusterShardLimitIT.java

@@ -45,7 +45,6 @@ import static org.elasticsearch.cluster.metadata.IndexMetadata.SETTING_NUMBER_OF
 import static org.elasticsearch.test.hamcrest.ElasticsearchAssertions.assertAcked;
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.greaterThan;
-import static org.hamcrest.Matchers.lessThanOrEqualTo;
 
 @ESIntegTestCase.ClusterScope(scope = ESIntegTestCase.Scope.TEST)
 public class ClusterShardLimitIT extends ESIntegTestCase {
@@ -110,7 +109,7 @@ public class ClusterShardLimitIT extends ESIntegTestCase {
 
         setShardsPerNode(counts.getShardsPerNode());
 
-        if (counts.firstIndexShards > 0) {
+        if (counts.getFirstIndexShards() > 0) {
             createIndex(
                 "test",
                 Settings.builder()
@@ -367,68 +366,4 @@ public class ClusterShardLimitIT extends ESIntegTestCase {
         assertEquals(expectedError, e.getMessage());
     }
 
-    public static class ShardCounts {
-        private final int shardsPerNode;
-
-        private final int firstIndexShards;
-        private final int firstIndexReplicas;
-
-        private final int failingIndexShards;
-        private final int failingIndexReplicas;
-
-        private ShardCounts(int shardsPerNode,
-                            int firstIndexShards,
-                            int firstIndexReplicas,
-                            int failingIndexShards,
-                            int failingIndexReplicas) {
-            this.shardsPerNode = shardsPerNode;
-            this.firstIndexShards = firstIndexShards;
-            this.firstIndexReplicas = firstIndexReplicas;
-            this.failingIndexShards = failingIndexShards;
-            this.failingIndexReplicas = failingIndexReplicas;
-        }
-
-        public static ShardCounts forDataNodeCount(int dataNodes) {
-            assertThat("this method will not work reliably with this many data nodes due to the limit of shards in a single index," +
-                "use fewer data nodes or multiple indices", dataNodes, lessThanOrEqualTo(90));
-            int mainIndexReplicas = between(0, dataNodes - 1);
-            int mainIndexShards = between(1, 10);
-            int totalShardsInIndex = (mainIndexReplicas + 1) * mainIndexShards;
-            // Sometimes add some headroom to the limit to check that it works even if you're not already right up against the limit
-            int shardsPerNode = (int) Math.ceil((double) totalShardsInIndex / dataNodes) + between(0, 10);
-            int totalCap = shardsPerNode * dataNodes;
-
-            int failingIndexShards;
-            int failingIndexReplicas;
-            if (dataNodes > 1 && frequently()) {
-                failingIndexShards = Math.max(1, totalCap - totalShardsInIndex);
-                failingIndexReplicas = between(1, dataNodes - 1);
-            } else {
-                failingIndexShards = totalCap - totalShardsInIndex + between(1, 10);
-                failingIndexReplicas = 0;
-            }
-
-            return new ShardCounts(shardsPerNode, mainIndexShards, mainIndexReplicas, failingIndexShards, failingIndexReplicas);
-        }
-
-        public int getShardsPerNode() {
-            return shardsPerNode;
-        }
-
-        public int getFirstIndexShards() {
-            return firstIndexShards;
-        }
-
-        public int getFirstIndexReplicas() {
-            return firstIndexReplicas;
-        }
-
-        public int getFailingIndexShards() {
-            return failingIndexShards;
-        }
-
-        public int getFailingIndexReplicas() {
-            return failingIndexReplicas;
-        }
-    }
 }

+ 0 - 0
server/src/test/java/org/elasticsearch/common/settings/ConsistentSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/common/settings/ConsistentSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/common/settings/UpgradeSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/common/settings/UpgradeSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/ClusterDisruptionCleanSettingsIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/ClusterDisruptionCleanSettingsIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/ClusterDisruptionIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/ClusterDisruptionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/DiscoveryDisruptionIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/DiscoveryDisruptionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/DiskDisruptionIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/DiskDisruptionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/MasterDisruptionIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/MasterDisruptionIT.java


+ 0 - 0
server/src/test/java/org/elasticsearch/discovery/SettingsBasedSeedHostsProviderIT.java → server/src/internalClusterTest/java/org/elasticsearch/discovery/SettingsBasedSeedHostsProviderIT.java


Some files were not shown because too many files changed in this diff