This is an automated email from the ASF dual-hosted git repository.
tkalkirill pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git
The following commit(s) were added to refs/heads/main by this push:
new d949049375 IGNITE-18874 Add a JUnit extension for stopping all Ignites
after test suite finishes (#1709)
d949049375 is described below
commit d94904937535570acf0c789e8fddc511743357e2
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Fri Mar 3 14:21:20 2023 +0400
IGNITE-18874 Add a JUnit extension for stopping all Ignites after test
suite finishes (#1709)
---
.../java/org/apache/ignite/IgnitionManager.java | 4 +-
modules/rest/openapi/openapi.yaml | 3 +
modules/runner/build.gradle | 2 +
...est.java => ClusterPerTestIntegrationTest.java} | 10 +---
.../ignite/internal/IgniteIntegrationTest.java | 31 ++++++++++
.../ignite/internal/ItNoSyncMetadataTest.java | 4 +-
.../component/ItRestAddressReportTest.java | 3 +-
.../ignite/internal/compute/ItComputeTest.java | 4 +-
.../internal/compute/ItLogicalTopologyTest.java | 4 +-
.../internal/deployment/ItDeploymentUnitTest.java | 4 +-
.../ignite/internal/index/ItIndexManagerTest.java | 4 +-
.../inmemory/ItRaftStorageVolatilityTest.java | 4 +-
.../internal/junit/StopAllIgnitesAfterTests.java | 66 ++++++++++++++++++++++
.../raftsnapshot/ItTableRaftSnapshotsTest.java | 7 +--
.../ignite/internal/rebalance/ItRebalanceTest.java | 7 +--
.../ignite/internal/rest/AbstractRestTestBase.java | 6 +-
.../ignite/internal/rest/ItPortRangeTest.java | 6 +-
.../ignite/internal/rest/ssl/ItRestSslTest.java | 6 +-
.../runner/app/AbstractSchemaChangeTest.java | 6 +-
.../internal/runner/app/IgniteRunnerTest.java | 6 +-
.../ignite/internal/runner/app/ItIgnitionTest.java | 6 +-
.../ItRaftCommandLeftInLogUntilRestartTest.java | 4 +-
.../runner/app/ItTableApiContractTest.java | 4 +-
.../internal/runner/app/ItTableCreationTest.java | 6 +-
.../ignite/internal/sql/api/ItCommonApiTest.java | 4 +-
.../internal/sql/api/ItSqlAsynchronousApiTest.java | 4 +-
.../internal/sql/api/ItSqlSynchronousApiTest.java | 4 +-
...st.java => ClusterPerClassIntegrationTest.java} | 11 ++--
.../internal/sql/engine/ItAggregatesTest.java | 2 +-
.../internal/sql/engine/ItCorrelatesTest.java | 2 +-
.../internal/sql/engine/ItCreateTableDdlTest.java | 2 +-
.../internal/sql/engine/ItDataTypesTest.java | 2 +-
.../ignite/internal/sql/engine/ItDmlTest.java | 2 +-
.../sql/engine/ItDynamicParameterTest.java | 2 +-
.../internal/sql/engine/ItFunctionsTest.java | 2 +-
.../sql/engine/ItHashSpoolIntegrationTest.java | 2 +-
.../internal/sql/engine/ItHashSpoolTest.java | 4 +-
.../internal/sql/engine/ItImplicitCastsTest.java | 2 +-
.../internal/sql/engine/ItIndexSpoolTest.java | 4 +-
.../ignite/internal/sql/engine/ItIntervalTest.java | 2 +-
.../ignite/internal/sql/engine/ItJoinTest.java | 2 +-
.../internal/sql/engine/ItLimitOffsetTest.java | 2 +-
.../ignite/internal/sql/engine/ItMetadataTest.java | 2 +-
.../internal/sql/engine/ItMixedQueriesTest.java | 2 +-
.../internal/sql/engine/ItOrToUnionRuleTest.java | 2 +-
.../sql/engine/ItProjectScanMergeRuleTest.java | 2 +-
.../internal/sql/engine/ItSecondaryIndexTest.java | 2 +-
.../ignite/internal/sql/engine/ItSetOpTest.java | 2 +-
.../internal/sql/engine/ItSqlOperatorsTest.java | 2 +-
.../ignite/internal/sql/engine/ItUuidTest.java | 2 +-
.../ignite/internal/sql/engine/ItZoneDdlTest.java | 2 +-
.../internal/sql/internal/InternalSchemaTest.java | 4 +-
.../ignite/internal/sqllogic/ItSqlLogicTest.java | 6 +-
.../org/apache/ignite/internal/ssl/ItSslTest.java | 6 +-
.../apache/ignite/internal/start/ItStartTest.java | 6 +-
.../internal/table/ItPublicApiColocationTest.java | 4 +-
.../ignite/internal/table/ItTableScanTest.java | 4 +-
.../apache/ignite/internal/app/IgnitionImpl.java | 20 +++++++
.../internal/component/RestAddressReporter.java | 6 +-
.../component/RestAddressReporterTest.java | 15 ++---
60 files changed, 219 insertions(+), 132 deletions(-)
diff --git a/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
b/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
index 2705fe53f1..9d69c89a06 100644
--- a/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
+++ b/modules/api/src/main/java/org/apache/ignite/IgnitionManager.java
@@ -112,9 +112,7 @@ public class IgnitionManager {
* @param nodeName Node name to stop.
*/
public static void stop(String nodeName) {
- Ignition ignition =
loadIgnitionService(Thread.currentThread().getContextClassLoader());
-
- ignition.stop(nodeName);
+ stop(nodeName, Thread.currentThread().getContextClassLoader());
}
/**
diff --git a/modules/rest/openapi/openapi.yaml
b/modules/rest/openapi/openapi.yaml
index cdc18481e7..3b3a0ec89b 100644
--- a/modules/rest/openapi/openapi.yaml
+++ b/modules/rest/openapi/openapi.yaml
@@ -157,6 +157,7 @@ paths:
operationId: updateClusterConfiguration
parameters: []
requestBody:
+ description: the cluster configuration to update
content:
text/plain:
schema:
@@ -260,6 +261,8 @@ paths:
operationId: updateNodeConfiguration
parameters: []
requestBody:
+ description: the node configuration to update. This is represented as
a plain
+ text
content:
text/plain:
schema:
diff --git a/modules/runner/build.gradle b/modules/runner/build.gradle
index a1f0650691..bd7ef4ee43 100644
--- a/modules/runner/build.gradle
+++ b/modules/runner/build.gradle
@@ -93,6 +93,7 @@ dependencies {
testImplementation libs.auto.service.annotations
integrationTestAnnotationProcessor
project(':ignite-configuration-annotation-processor')
+ integrationTestAnnotationProcessor libs.auto.service
integrationTestImplementation project(':ignite-affinity')
integrationTestImplementation project(':ignite-page-memory')
integrationTestImplementation project(':ignite-raft-api')
@@ -137,6 +138,7 @@ dependencies {
exclude group: 'org.ow2.asm', module: 'asm'
}
integrationTestImplementation libs.typesafe.config
+ integrationTestImplementation libs.auto.service.annotations
}
tasks.register("runnerPlatformTest", JavaExec) {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
similarity index 92%
rename from
modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
rename to
modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
index 6a891e4f39..4c8121d146 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/AbstractClusterIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ClusterPerTestIntegrationTest.java
@@ -27,23 +27,19 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
-import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.Timeout;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.platform.commons.support.ReflectionSupport;
/**
- * Abstract integration test that starts and stops a cluster.
+ * Abstract integration test that starts and stops a cluster per test method.
*/
@SuppressWarnings("ALL")
-@ExtendWith(WorkDirectoryExtension.class)
-public abstract class AbstractClusterIntegrationTest extends
BaseIgniteAbstractTest {
- private static final IgniteLogger LOG =
Loggers.forClass(AbstractClusterIntegrationTest.class);
+public abstract class ClusterPerTestIntegrationTest extends
IgniteIntegrationTest {
+ private static final IgniteLogger LOG =
Loggers.forClass(ClusterPerTestIntegrationTest.class);
/** Base port number. */
private static final int BASE_PORT = 3344;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/IgniteIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/IgniteIntegrationTest.java
new file mode 100644
index 0000000000..9fa5710043
--- /dev/null
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/IgniteIntegrationTest.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.apache.ignite.internal;
+
+import org.apache.ignite.internal.junit.StopAllIgnitesAfterTests;
+import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
+import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
+import org.junit.jupiter.api.extension.ExtendWith;
+
+/**
+ * A test that starts some Ignite instances (and cleans them up later if they
are forgotten).
+ */
+// The order is important here.
+@ExtendWith({WorkDirectoryExtension.class, StopAllIgnitesAfterTests.class})
+public abstract class IgniteIntegrationTest extends BaseIgniteAbstractTest {
+}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
index 72fc9b76b4..4f2e374724 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ItNoSyncMetadataTest.java
@@ -20,7 +20,7 @@ package org.apache.ignite.internal;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WithSystemProperty;
import org.junit.jupiter.api.Assertions;
@@ -32,7 +32,7 @@ import org.junit.jupiter.api.Test;
* The test check that the behavior of the cluster whit property
IGNITE_GET_METADATA_LOCALLY_ONLY is correct.
*/
@WithSystemProperty(key = "IGNITE_GET_METADATA_LOCALLY_ONLY", value = "true")
-public class ItNoSyncMetadataTest extends AbstractBasicIntegrationTest {
+public class ItNoSyncMetadataTest extends ClusterPerClassIntegrationTest {
/**
* Creates a table and waits when the metadata synchronizes among nodes of
the cluster.
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/component/ItRestAddressReportTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/component/ItRestAddressReportTest.java
index 6e31bbe4ec..97a6852ce4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/component/ItRestAddressReportTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/component/ItRestAddressReportTest.java
@@ -33,6 +33,7 @@ import java.util.concurrent.CompletableFuture;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.app.IgniteRunner;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.runner.app.IgniteRunnerTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
@@ -44,7 +45,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
* Test that after Ignite is started there is a file with REST server address
in working directory.
*/
@ExtendWith(WorkDirectoryExtension.class)
-public class ItRestAddressReportTest {
+public class ItRestAddressReportTest extends IgniteIntegrationTest {
private static final String NODE_NAME = "node";
@WorkDirectory
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItComputeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItComputeTest.java
index 09b6c53289..dc373893c6 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItComputeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItComputeTest.java
@@ -43,7 +43,7 @@ import java.util.stream.IntStream;
import org.apache.ignite.Ignite;
import org.apache.ignite.compute.ComputeJob;
import org.apache.ignite.compute.JobExecutionContext;
-import org.apache.ignite.internal.AbstractClusterIntegrationTest;
+import org.apache.ignite.internal.ClusterPerTestIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.lang.TableNotFoundException;
import org.apache.ignite.network.ClusterNode;
@@ -55,7 +55,7 @@ import org.junit.jupiter.api.Test;
* Integration tests for Compute functionality.
*/
@SuppressWarnings("resource")
-class ItComputeTest extends AbstractClusterIntegrationTest {
+class ItComputeTest extends ClusterPerTestIntegrationTest {
@Test
void executesJobLocally() throws Exception {
IgniteImpl entryNode = node(0);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
index 999ab3c488..4936a4df73 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/compute/ItLogicalTopologyTest.java
@@ -32,8 +32,8 @@ import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
-import org.apache.ignite.internal.AbstractClusterIntegrationTest;
import org.apache.ignite.internal.Cluster.NodeKnockout;
+import org.apache.ignite.internal.ClusterPerTestIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import
org.apache.ignite.internal.cluster.management.configuration.ClusterManagementConfiguration;
import
org.apache.ignite.internal.cluster.management.topology.api.LogicalTopologyEventListener;
@@ -48,7 +48,7 @@ import org.junit.jupiter.api.TestInfo;
* Integration tests for functionality of logical topology events subscription.
*/
@SuppressWarnings("resource")
-class ItLogicalTopologyTest extends AbstractClusterIntegrationTest {
+class ItLogicalTopologyTest extends ClusterPerTestIntegrationTest {
private final BlockingQueue<Event> events = new LinkedBlockingQueue<>();
private final LogicalTopologyEventListener listener = new
LogicalTopologyEventListener() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/deployment/ItDeploymentUnitTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/deployment/ItDeploymentUnitTest.java
index 32659a44dc..492f0b8bc5 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/deployment/ItDeploymentUnitTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/deployment/ItDeploymentUnitTest.java
@@ -39,7 +39,7 @@ import org.apache.ignite.deployment.DeploymentUnit;
import org.apache.ignite.deployment.UnitStatus;
import org.apache.ignite.deployment.UnitStatus.UnitStatusBuilder;
import org.apache.ignite.deployment.version.Version;
-import org.apache.ignite.internal.AbstractClusterIntegrationTest;
+import org.apache.ignite.internal.ClusterPerTestIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import
org.apache.ignite.internal.deployunit.configuration.DeploymentConfiguration;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
@@ -49,7 +49,7 @@ import org.junit.jupiter.api.Test;
/**
* Integration tests for {@link org.apache.ignite.deployment.IgniteDeployment}.
*/
-public class ItDeploymentUnitTest extends AbstractClusterIntegrationTest {
+public class ItDeploymentUnitTest extends ClusterPerTestIntegrationTest {
private static final long REPLICA_TIMEOUT = TimeUnit.SECONDS.toMillis(30);
private static final long SIZE_IN_BYTES = 1024L;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
index 368de0d152..027fe6b707 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/index/ItIndexManagerTest.java
@@ -30,7 +30,7 @@ import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.index.event.IndexEvent;
import org.apache.ignite.internal.index.event.IndexEventParameters;
import org.apache.ignite.internal.schema.configuration.index.HashIndexChange;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.junit.jupiter.api.Test;
@@ -40,7 +40,7 @@ import org.junit.jupiter.api.extension.ExtendWith;
* Tests to verify integration of {@link IndexManager} with other components.
*/
@ExtendWith(WorkDirectoryExtension.class)
-public class ItIndexManagerTest extends AbstractBasicIntegrationTest {
+public class ItIndexManagerTest extends ClusterPerClassIntegrationTest {
/** {@inheritDoc} */
@Override
protected int nodes() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
index df352db8b6..450d2d3176 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/inmemory/ItRaftStorageVolatilityTest.java
@@ -36,7 +36,7 @@ import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Stream;
-import org.apache.ignite.internal.AbstractClusterIntegrationTest;
+import org.apache.ignite.internal.ClusterPerTestIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.raft.configuration.EntryCountBudgetChange;
import org.apache.ignite.internal.raft.configuration.RaftConfiguration;
@@ -58,7 +58,7 @@ import org.rocksdb.Slice;
* Tests for making sure that RAFT groups corresponding to partition stores of
in-memory tables use volatile
* storages for storing RAFT meta and RAFT log, while they are persistent for
persistent storages.
*/
-class ItRaftStorageVolatilityTest extends AbstractClusterIntegrationTest {
+class ItRaftStorageVolatilityTest extends ClusterPerTestIntegrationTest {
private static final String TABLE_NAME = "test";
@Override
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/junit/StopAllIgnitesAfterTests.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/junit/StopAllIgnitesAfterTests.java
new file mode 100644
index 0000000000..f220d26a2d
--- /dev/null
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/junit/StopAllIgnitesAfterTests.java
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF 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.apache.ignite.internal.junit;
+
+import com.google.auto.service.AutoService;
+import java.util.ServiceLoader;
+import org.apache.ignite.Ignition;
+import org.apache.ignite.internal.app.IgnitionImpl;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
+import org.junit.jupiter.api.extension.AfterAllCallback;
+import org.junit.jupiter.api.extension.Extension;
+import org.junit.jupiter.api.extension.ExtensionContext;
+
+/**
+ * This extension tries to do its best to stop all Ignite instances that were
started in this JVM after a test
+ * suite finishes running (after-all).
+ *
+ * <p>This extension is designed to be
+ * <a
href="https://junit.org/junit5/docs/current/user-guide/#extensions-registration-automatic">automatically
registered</a>
+ * via META-INF/services/org.junit.jupiter.api.extension.Extension.
+ * For this to work, system property {@code
junit.jupiter.extensions.autodetection.enabled} must be set to {@code true}.
+ * If the property is set (currently, this is done via Gradle build scripts),
it is enough to add this module as a dependency
+ * to make tests automatically register this extension, like this:
+ *
+ * <pre>
+ * integrationTestImplementation(testFixtures(project(':ignite-core')))
+ * </pre>
+ */
+@AutoService(Extension.class)
+public class StopAllIgnitesAfterTests implements AfterAllCallback {
+ private static final IgniteLogger LOG =
Loggers.forClass(StopAllIgnitesAfterTests.class);
+
+ @Override
+ public void afterAll(ExtensionContext context) {
+ String testInstanceName =
context.getTestClass().map(Class::getName).orElse("<unknown>");
+
+ LOG.info("Trying to stop all Ignites in {}", testInstanceName);
+
+ IgnitionImpl ignition = loadIgnitionService();
+
+ ignition.stopAll();
+
+ LOG.info("Stopped all Ignites in {}", testInstanceName);
+ }
+
+ private static IgnitionImpl loadIgnitionService() {
+ ServiceLoader<?> ldr = ServiceLoader.load(Ignition.class,
Thread.currentThread().getContextClassLoader());
+ return (IgnitionImpl) ldr.iterator().next();
+ }
+}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
index c6789db457..31b005d23a 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/raftsnapshot/ItTableRaftSnapshotsTest.java
@@ -50,6 +50,7 @@ import java.util.stream.IntStream;
import org.apache.calcite.sql.validate.SqlValidatorException;
import org.apache.ignite.internal.Cluster;
import org.apache.ignite.internal.Cluster.NodeKnockout;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -61,10 +62,8 @@ import
org.apache.ignite.internal.storage.pagememory.VolatilePageMemoryStorageEn
import org.apache.ignite.internal.storage.rocksdb.RocksDbStorageEngine;
import
org.apache.ignite.internal.table.distributed.raft.snapshot.message.SnapshotMetaResponse;
import
org.apache.ignite.internal.table.distributed.replicator.TablePartitionId;
-import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.testframework.jul.NoOpHandler;
import org.apache.ignite.lang.IgniteBiTuple;
import org.apache.ignite.lang.IgniteInternalCheckedException;
@@ -88,7 +87,6 @@ import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.Timeout;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;
@@ -96,9 +94,8 @@ import org.junit.jupiter.params.provider.ValueSource;
* Tests how RAFT snapshots installation works for table partitions.
*/
@SuppressWarnings("resource")
-@ExtendWith(WorkDirectoryExtension.class)
@Timeout(90)
-class ItTableRaftSnapshotsTest extends BaseIgniteAbstractTest {
+class ItTableRaftSnapshotsTest extends IgniteIntegrationTest {
private static final IgniteLogger LOG =
Loggers.forClass(ItTableRaftSnapshotsTest.class);
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
index 665cac7338..722d1616e7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rebalance/ItRebalanceTest.java
@@ -35,6 +35,7 @@ import java.util.concurrent.ExecutionException;
import java.util.function.BooleanSupplier;
import java.util.stream.Collectors;
import org.apache.ignite.internal.Cluster;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.affinity.Assignment;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.hlc.HybridClockImpl;
@@ -48,9 +49,7 @@ import
org.apache.ignite.internal.schema.configuration.TablesConfiguration;
import org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl;
import org.apache.ignite.internal.table.TableImpl;
import
org.apache.ignite.internal.table.distributed.replicator.TablePartitionId;
-import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.ByteUtils;
import org.apache.ignite.table.Tuple;
import org.junit.jupiter.api.AfterEach;
@@ -58,13 +57,11 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Test suite for the rebalance.
*/
-@ExtendWith(WorkDirectoryExtension.class)
-public class ItRebalanceTest extends BaseIgniteAbstractTest {
+public class ItRebalanceTest extends IgniteIntegrationTest {
private static final IgniteLogger LOG =
Loggers.forClass(ItRebalanceTest.class);
@WorkDirectory
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
index 061656278d..688e0c230f 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/AbstractRestTestBase.java
@@ -36,19 +36,17 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Base class for integration REST test.
*/
-@ExtendWith(WorkDirectoryExtension.class)
-abstract class AbstractRestTestBase {
+abstract class AbstractRestTestBase extends IgniteIntegrationTest {
/** Network ports of the test nodes. */
static final int[] PORTS = {3344, 3345, 3346};
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ItPortRangeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ItPortRangeTest.java
index ed5e48165f..63456cbaf6 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ItPortRangeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ItPortRangeTest.java
@@ -40,21 +40,19 @@ import java.util.stream.IntStream;
import java.util.stream.Stream;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.rest.ssl.ItRestSslTest;
import org.apache.ignite.internal.rest.ssl.RestNode;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
/** Tests for the REST port range configuration. */
-@ExtendWith(WorkDirectoryExtension.class)
-public class ItPortRangeTest {
+public class ItPortRangeTest extends IgniteIntegrationTest {
/** Trust store path. */
private static final String trustStorePath = "ssl/truststore.jks";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ssl/ItRestSslTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ssl/ItRestSslTest.java
index 82e213b829..1e1dbfd785 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ssl/ItRestSslTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/rest/ssl/ItRestSslTest.java
@@ -40,17 +40,15 @@ import java.util.stream.Stream;
import javax.net.ssl.KeyManagerFactory;
import javax.net.ssl.SSLContext;
import javax.net.ssl.TrustManagerFactory;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/** Tests for the REST SSL configuration. */
-@ExtendWith(WorkDirectoryExtension.class)
-public class ItRestSslTest {
+public class ItRestSslTest extends IgniteIntegrationTest {
/** HTTP port of the test node. */
private static final int httpPort = 10300;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
index 5385fb2c14..ad71181c34 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/AbstractSchemaChangeTest.java
@@ -33,12 +33,12 @@ import java.util.function.Consumer;
import java.util.function.Supplier;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.schema.configuration.ColumnChange;
import
org.apache.ignite.internal.schema.configuration.defaultvalue.ConstantValueDefaultChange;
import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
import org.apache.ignite.internal.table.distributed.TableManager;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteNameUtils;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteException;
@@ -47,14 +47,12 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.function.Executable;
/**
* Ignition interface tests.
*/
-@ExtendWith(WorkDirectoryExtension.class)
-abstract class AbstractSchemaChangeTest {
+abstract class AbstractSchemaChangeTest extends IgniteIntegrationTest {
/** Table name. */
public static final String TABLE = "TBL1";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/IgniteRunnerTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/IgniteRunnerTest.java
index 77c7b901d1..69a99fcdc7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/IgniteRunnerTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/IgniteRunnerTest.java
@@ -26,17 +26,15 @@ import java.util.concurrent.CompletableFuture;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
import org.apache.ignite.app.IgniteRunner;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Tests the start ignite nodes.
*/
-@ExtendWith(WorkDirectoryExtension.class)
-public class IgniteRunnerTest {
+public class IgniteRunnerTest extends IgniteIntegrationTest {
private static final String NODE_NAME = "node";
@WorkDirectory
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
index 870ae48072..b910565d5e 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItIgnitionTest.java
@@ -40,10 +40,10 @@ import java.util.stream.Collectors;
import org.apache.ignite.Ignite;
import org.apache.ignite.Ignition;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.app.IgnitionImpl;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteException;
import org.junit.jupiter.api.AfterEach;
@@ -51,13 +51,11 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Ignition interface tests.
*/
-@ExtendWith(WorkDirectoryExtension.class)
-class ItIgnitionTest {
+class ItIgnitionTest extends IgniteIntegrationTest {
/** Network ports of the test nodes. */
private static final int[] PORTS = {3344, 3345, 3346};
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItRaftCommandLeftInLogUntilRestartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItRaftCommandLeftInLogUntilRestartTest.java
index f1699b41ab..75688ae3e2 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItRaftCommandLeftInLogUntilRestartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItRaftCommandLeftInLogUntilRestartTest.java
@@ -37,7 +37,7 @@ import org.apache.ignite.internal.schema.BinaryRow;
import org.apache.ignite.internal.schema.BinaryRowEx;
import org.apache.ignite.internal.schema.marshaller.TupleMarshallerImpl;
import org.apache.ignite.internal.schema.row.Row;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.table.TableImpl;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.thread.NamedThreadFactory;
@@ -59,7 +59,7 @@ import org.junit.jupiter.api.Test;
*/
@Disabled("IGNITE-18203 The test goes to deadlock in cluster restart, because
indexes are required to apply RAFT commands on restart , "
+ "but the table have not started yet.")
-public class ItRaftCommandLeftInLogUntilRestartTest extends
AbstractBasicIntegrationTest {
+public class ItRaftCommandLeftInLogUntilRestartTest extends
ClusterPerClassIntegrationTest {
private final Object[][] dataSet = {
{1, "Igor", 10d},
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
index 7e2248502c..407ef75445 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableApiContractTest.java
@@ -29,7 +29,7 @@ import java.util.concurrent.ExecutionException;
import org.apache.ignite.Ignite;
import org.apache.ignite.internal.schema.testutils.builder.SchemaBuilders;
import org.apache.ignite.internal.schema.testutils.definition.ColumnType;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.table.distributed.TableManager;
import org.apache.ignite.lang.TableAlreadyExistsException;
import org.apache.ignite.lang.TableNotFoundException;
@@ -50,7 +50,7 @@ import org.junit.jupiter.api.Test;
* <li>When a table is not existed, tries to alter or drop the table have to
failed {@link TableNotFoundException}.</li>
* </ul>
*/
-public class ItTableApiContractTest extends AbstractBasicIntegrationTest {
+public class ItTableApiContractTest extends ClusterPerClassIntegrationTest {
/** Schema name. */
public static final String SCHEMA = "PUBLIC";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableCreationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableCreationTest.java
index 7e64088331..171d9bfded 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableCreationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/runner/app/ItTableCreationTest.java
@@ -32,8 +32,8 @@ import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.table.KeyValueView;
import org.apache.ignite.table.RecordView;
@@ -45,14 +45,12 @@ import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
* Ignition interface tests.
*/
@Disabled("https://issues.apache.org/jira/browse/IGNITE-14578")
-@ExtendWith(WorkDirectoryExtension.class)
-class ItTableCreationTest {
+class ItTableCreationTest extends IgniteIntegrationTest {
/** Network ports of the test nodes. */
private static final int[] PORTS = {3344, 3345, 3346};
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
index 6b46dc5b76..d5ea1dfe52 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItCommonApiTest.java
@@ -25,7 +25,7 @@ import static org.junit.jupiter.api.Assertions.assertThrows;
import java.util.concurrent.TimeUnit;
import org.apache.ignite.internal.app.IgniteImpl;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.sql.engine.SqlQueryProcessor;
import org.apache.ignite.internal.sql.engine.exec.ExecutionCancelledException;
import org.apache.ignite.sql.IgniteSql;
@@ -35,7 +35,7 @@ import org.apache.ignite.sql.SqlException;
import org.junit.jupiter.api.Test;
/** Test common SQL API. */
-public class ItCommonApiTest extends AbstractBasicIntegrationTest {
+public class ItCommonApiTest extends ClusterPerClassIntegrationTest {
protected SqlQueryProcessor queryProcessor() {
return (SqlQueryProcessor) ((IgniteImpl)
CLUSTER_NODES.get(0)).queryEngine();
}
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
index 25eb439770..6e45c4e2e0 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlAsynchronousApiTest.java
@@ -46,7 +46,7 @@ import java.util.stream.StreamSupport;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.client.sql.ClientSql;
import org.apache.ignite.internal.sql.api.ColumnMetadataImpl.ColumnOriginImpl;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.sql.engine.exec.ExecutionCancelledException;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.tx.TxManager;
@@ -87,7 +87,7 @@ import org.junit.jupiter.api.TestInfo;
* Tests for asynchronous SQL API.
*/
@SuppressWarnings("ThrowableNotThrown")
-public class ItSqlAsynchronousApiTest extends AbstractBasicIntegrationTest {
+public class ItSqlAsynchronousApiTest extends ClusterPerClassIntegrationTest {
private static final int ROW_COUNT = 16;
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
index 976bc792a7..a3b492a560 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/api/ItSqlSynchronousApiTest.java
@@ -33,7 +33,7 @@ import java.util.concurrent.ExecutionException;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import org.apache.ignite.internal.app.IgniteImpl;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.tx.TxManager;
import org.apache.ignite.internal.tx.TxState;
@@ -64,7 +64,7 @@ import org.junit.jupiter.api.TestInfo;
* Tests for synchronous SQL API.
*/
@SuppressWarnings("ThrowableNotThrown")
-public class ItSqlSynchronousApiTest extends AbstractBasicIntegrationTest {
+public class ItSqlSynchronousApiTest extends ClusterPerClassIntegrationTest {
private static final int ROW_COUNT = 16;
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
similarity index 97%
rename from
modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
rename to
modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
index 7f7ac3d6c3..83ae7d24ab 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/AbstractBasicIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ClusterPerClassIntegrationTest.java
@@ -41,6 +41,7 @@ import java.util.concurrent.TimeUnit;
import java.util.stream.IntStream;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
@@ -49,9 +50,7 @@ import
org.apache.ignite.internal.schema.configuration.index.TableIndexConfigura
import org.apache.ignite.internal.sql.engine.property.PropertiesHolder;
import org.apache.ignite.internal.sql.engine.session.SessionId;
import org.apache.ignite.internal.sql.engine.util.QueryChecker;
-import org.apache.ignite.internal.testframework.BaseIgniteAbstractTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteStringFormatter;
import org.apache.ignite.sql.ColumnMetadata;
@@ -67,15 +66,13 @@ import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.TestInstance;
-import org.junit.jupiter.api.extension.ExtendWith;
/**
- * Abstract basic integration test.
+ * Abstract basic integration test that starts a cluster once for all the
tests it runs.
*/
-@ExtendWith(WorkDirectoryExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
-public class AbstractBasicIntegrationTest extends BaseIgniteAbstractTest {
- private static final IgniteLogger LOG =
Loggers.forClass(AbstractBasicIntegrationTest.class);
+public abstract class ClusterPerClassIntegrationTest extends
IgniteIntegrationTest {
+ private static final IgniteLogger LOG =
Loggers.forClass(ClusterPerClassIntegrationTest.class);
/** Timeout should be big enough to prevent premature session expiration.
*/
private static final long SESSION_IDLE_TIMEOUT =
TimeUnit.SECONDS.toMillis(60);
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItAggregatesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItAggregatesTest.java
index 5facfad006..429f92a7f4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItAggregatesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItAggregatesTest.java
@@ -36,7 +36,7 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* Group of tests to verify aggregation functions.
*/
-public class ItAggregatesTest extends AbstractBasicIntegrationTest {
+public class ItAggregatesTest extends ClusterPerClassIntegrationTest {
private static String[] disabledRules =
{"MapReduceHashAggregateConverterRule", "MapReduceSortAggregateConverterRule",
"ColocatedHashAggregateConverterRule",
"ColocatedSortAggregateConverterRule"};
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
index e61cdc873e..aabf891d91 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCorrelatesTest.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
/** Tests for correlated queries. */
-public class ItCorrelatesTest extends AbstractBasicIntegrationTest {
+public class ItCorrelatesTest extends ClusterPerClassIntegrationTest {
private static final String DISABLED_JOIN_RULES = " /*+
DISABLE_RULE('MergeJoinConverter', 'NestedLoopJoinConverter') */ ";
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
index 2493344c85..8529b37e01 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItCreateTableDdlTest.java
@@ -33,7 +33,7 @@ import org.junit.jupiter.api.TestInfo;
/**
* Integration test for set op (EXCEPT, INTERSECT).
*/
-public class ItCreateTableDdlTest extends AbstractBasicIntegrationTest {
+public class ItCreateTableDdlTest extends ClusterPerClassIntegrationTest {
/**
* Clear tables after each test.
*
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
index 18be6135e8..b9ad11ace9 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDataTypesTest.java
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
/**
* Test SQL data types.
*/
-public class ItDataTypesTest extends AbstractBasicIntegrationTest {
+public class ItDataTypesTest extends ClusterPerClassIntegrationTest {
/**
* Drops all created tables.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
index ca205d8936..53eb5cf1a6 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDmlTest.java
@@ -40,7 +40,7 @@ import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
/** Different DML tests. */
-public class ItDmlTest extends AbstractBasicIntegrationTest {
+public class ItDmlTest extends ClusterPerClassIntegrationTest {
@Override
protected int nodes() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
index fdc18de602..1cd14647b2 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItDynamicParameterTest.java
@@ -45,7 +45,7 @@ import org.junit.jupiter.params.provider.EnumSource;
import org.junit.jupiter.params.provider.EnumSource.Mode;
/** Dynamic parameters checks. */
-public class ItDynamicParameterTest extends AbstractBasicIntegrationTest {
+public class ItDynamicParameterTest extends ClusterPerClassIntegrationTest {
private static final ThreadLocalRandom RND = ThreadLocalRandom.current();
@BeforeEach
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
index 5a84bfdfcc..827158a6d2 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItFunctionsTest.java
@@ -36,7 +36,7 @@ import org.junit.jupiter.api.Test;
/**
* Test Ignite SQL functions.
*/
-public class ItFunctionsTest extends AbstractBasicIntegrationTest {
+public class ItFunctionsTest extends ClusterPerClassIntegrationTest {
private static final Object[] NULL_RESULT = new Object[] { null };
@Test
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolIntegrationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolIntegrationTest.java
index fac3c5c4b4..3101f099f2 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolIntegrationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolIntegrationTest.java
@@ -22,7 +22,7 @@ import org.junit.jupiter.api.Test;
/**
* Hash spool test.
*/
-public class ItHashSpoolIntegrationTest extends AbstractBasicIntegrationTest {
+public class ItHashSpoolIntegrationTest extends ClusterPerClassIntegrationTest
{
@Test
public void testNullsInSearchRow() {
sql("CREATE TABLE t(pk varchar default gen_random_uuid PRIMARY KEY, i1
INTEGER, i2 INTEGER)");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolTest.java
index 4b17c83fed..2f6639587c 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItHashSpoolTest.java
@@ -28,8 +28,8 @@ import org.junit.jupiter.api.Test;
/**
* Hash spool test.
*/
-public class ItHashSpoolTest extends AbstractBasicIntegrationTest {
- private static final IgniteLogger LOG =
Loggers.forClass(AbstractBasicIntegrationTest.class);
+public class ItHashSpoolTest extends ClusterPerClassIntegrationTest {
+ private static final IgniteLogger LOG =
Loggers.forClass(ClusterPerClassIntegrationTest.class);
/**
* After each.
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItImplicitCastsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItImplicitCastsTest.java
index d486270515..3697d841b8 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItImplicitCastsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItImplicitCastsTest.java
@@ -33,7 +33,7 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* Implicit casts are added where it is necessary to do so.
*/
-public class ItImplicitCastsTest extends AbstractBasicIntegrationTest {
+public class ItImplicitCastsTest extends ClusterPerClassIntegrationTest {
@AfterEach
public void dropTables() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
index 92fe9d4708..b24aa43278 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIndexSpoolTest.java
@@ -34,8 +34,8 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* Index spool test.
*/
-public class ItIndexSpoolTest extends AbstractBasicIntegrationTest {
- private static final IgniteLogger LOG =
Loggers.forClass(AbstractBasicIntegrationTest.class);
+public class ItIndexSpoolTest extends ClusterPerClassIntegrationTest {
+ private static final IgniteLogger LOG =
Loggers.forClass(ClusterPerClassIntegrationTest.class);
/**
* After each.
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
index c86aa302ef..84fdad78ff 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItIntervalTest.java
@@ -33,7 +33,7 @@ import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
/** Interval coverage tests. */
-public class ItIntervalTest extends AbstractBasicIntegrationTest {
+public class ItIntervalTest extends ClusterPerClassIntegrationTest {
@Override
protected int nodes() {
return 1;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
index da79c6f4a3..eb2f787dd0 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItJoinTest.java
@@ -32,7 +32,7 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* Check JOIN on basic cases.
*/
-public class ItJoinTest extends AbstractBasicIntegrationTest {
+public class ItJoinTest extends ClusterPerClassIntegrationTest {
@BeforeAll
public static void beforeTestsStarted() throws InterruptedException {
sql("CREATE TABLE t1 (id INT PRIMARY KEY, c1 INT NOT NULL, c2 INT, c3
INT)");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItLimitOffsetTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItLimitOffsetTest.java
index 19a2f7a655..b3a8db805b 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItLimitOffsetTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItLimitOffsetTest.java
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
/**
* Check LIMIT and\or OFFSET commands.
*/
-public class ItLimitOffsetTest extends AbstractBasicIntegrationTest {
+public class ItLimitOffsetTest extends ClusterPerClassIntegrationTest {
@BeforeEach
void beforeEach() {
sql("CREATE TABLE test (pk INT PRIMARY KEY, col0 INT)");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
index cc14334d22..40f9dff6fa 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMetadataTest.java
@@ -31,7 +31,7 @@ import org.junit.jupiter.api.Test;
/**
* Group of tests to verify the query metadata returned alongside the query
result.
*/
-public class ItMetadataTest extends AbstractBasicIntegrationTest {
+public class ItMetadataTest extends ClusterPerClassIntegrationTest {
/**
* Before all.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
index c991831b62..fa249c48d7 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItMixedQueriesTest.java
@@ -33,7 +33,7 @@ import org.junit.jupiter.api.Test;
/**
* Group of tests that still has not been sorted out. It’s better to avoid
extending this class with new tests.
*/
-public class ItMixedQueriesTest extends AbstractBasicIntegrationTest {
+public class ItMixedQueriesTest extends ClusterPerClassIntegrationTest {
/**
* Before all.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
index d2a9686f38..7dbe265507 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItOrToUnionRuleTest.java
@@ -37,7 +37,7 @@ import org.junit.jupiter.api.Test;
* <p>SELECT * FROM products WHERE category = 'Photo' UNION ALL SELECT * FROM
products WHERE subcategory ='Camera Media' AND LNNVL(category,
* 'Photo');
*/
-public class ItOrToUnionRuleTest extends AbstractBasicIntegrationTest {
+public class ItOrToUnionRuleTest extends ClusterPerClassIntegrationTest {
public static final String IDX_SUBCAT_ID = "IDX_SUBCAT_ID";
public static final String IDX_SUBCATEGORY = "IDX_SUBCATEGORY";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
index 5748ed359d..e017bd04e4 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItProjectScanMergeRuleTest.java
@@ -33,7 +33,7 @@ import org.junit.jupiter.api.Test;
* with only useful columns and. For example for tables: T1(f12, f12, f13) and
T2(f21, f22, f23) sql execution: SELECT t1.f11, t2.f21 FROM
* T1 t1 INNER JOIN T2 t2 on t1.f11 = t2.f22" need to eleminate all unused
coluns and take into account only: f11, f21 and f22 cols.
*/
-public class ItProjectScanMergeRuleTest extends AbstractBasicIntegrationTest {
+public class ItProjectScanMergeRuleTest extends ClusterPerClassIntegrationTest
{
public static final String IDX_CAT_ID = "IDX_CAT_ID";
/**
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
index 63ec7ccd81..6154b74b57 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSecondaryIndexTest.java
@@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test;
/**
* Basic index tests.
*/
-public class ItSecondaryIndexTest extends AbstractBasicIntegrationTest {
+public class ItSecondaryIndexTest extends ClusterPerClassIntegrationTest {
private static final String PK_SORTED_IDX = "PK_SORTED_IDX";
private static final String DEPID_IDX = "DEPID_IDX";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
index f7f4b94168..6ab8d39897 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSetOpTest.java
@@ -30,7 +30,7 @@ import org.junit.jupiter.api.Test;
/**
* Integration test for set op (EXCEPT, INTERSECT).
*/
-public class ItSetOpTest extends AbstractBasicIntegrationTest {
+public class ItSetOpTest extends ClusterPerClassIntegrationTest {
/**
* Before all.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
index 043961c3d6..8de2b82978 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItSqlOperatorsTest.java
@@ -36,7 +36,7 @@ import org.junit.jupiter.api.Test;
*
* @see IgniteSqlOperatorTable
*/
-public class ItSqlOperatorsTest extends AbstractBasicIntegrationTest {
+public class ItSqlOperatorsTest extends ClusterPerClassIntegrationTest {
/** {@inheritDoc} */
@Override
protected int nodes() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItUuidTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItUuidTest.java
index 2630f24fc8..824826eecd 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItUuidTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItUuidTest.java
@@ -37,7 +37,7 @@ import org.junit.jupiter.params.provider.MethodSource;
/**
* Tests for {@link org.apache.ignite.internal.sql.engine.type.UuidType} data
type.
*/
-public class ItUuidTest extends AbstractBasicIntegrationTest {
+public class ItUuidTest extends ClusterPerClassIntegrationTest {
// UUID1 > UUID2
private static final UUID UUID_1 =
UUID.fromString("fd10556e-fc27-4a99-b5e4-89b8344cb3ce");
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
index e069408c73..845b9bd0ed 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/engine/ItZoneDdlTest.java
@@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test;
/**
* Integration tests for DDL statements that affect distribution zones.
*/
-public class ItZoneDdlTest extends AbstractBasicIntegrationTest {
+public class ItZoneDdlTest extends ClusterPerClassIntegrationTest {
@Test
public void testCreateIfExists() {
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/internal/InternalSchemaTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/internal/InternalSchemaTest.java
index aab4b1e9af..755562b335 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/internal/InternalSchemaTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sql/internal/InternalSchemaTest.java
@@ -26,7 +26,7 @@ import org.apache.ignite.Ignite;
import org.apache.ignite.internal.configuration.ConfigurationManager;
import org.apache.ignite.internal.schema.configuration.ExtendedTableView;
import org.apache.ignite.internal.schema.configuration.TablesConfiguration;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.sql.IgniteSql;
import org.apache.ignite.sql.ResultSet;
@@ -34,7 +34,7 @@ import org.apache.ignite.sql.Session;
import org.junit.jupiter.api.Test;
/** Tests for internal manipulations with schema. */
-public class InternalSchemaTest extends AbstractBasicIntegrationTest {
+public class InternalSchemaTest extends ClusterPerClassIntegrationTest {
/**
* Checks that schema version is updated even if column names are
intersected.
*/
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
index 7ae5e52317..ef7255df7c 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/sqllogic/ItSqlLogicTest.java
@@ -40,6 +40,7 @@ import java.util.stream.IntStream;
import java.util.stream.Stream;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgnitionManager;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.logger.IgniteLogger;
import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.internal.sqllogic.SqlLogicTestEnvironment.RestartMode;
@@ -47,7 +48,6 @@ import
org.apache.ignite.internal.sqllogic.SqlScriptRunner.RunnerRuntime;
import org.apache.ignite.internal.testframework.SystemPropertiesExtension;
import org.apache.ignite.internal.testframework.WithSystemProperty;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.util.CollectionUtils;
import org.apache.ignite.internal.util.IgniteUtils;
import org.apache.ignite.lang.IgniteStringFormatter;
@@ -137,11 +137,11 @@ import org.junit.jupiter.api.extension.ExtendWith;
* @see <a
href="https://www.sqlite.org/sqllogictest/doc/trunk/about.wiki">Extended format
documentation.</a>
*/
@Tag(value = "sqllogic")
-@ExtendWith({WorkDirectoryExtension.class, SystemPropertiesExtension.class})
+@ExtendWith(SystemPropertiesExtension.class)
@WithSystemProperty(key = "IMPLICIT_PK_ENABLED", value = "true")
@SqlLogicTestEnvironment(scriptsRoot = "src/integrationTest/sql")
@Disabled("https://issues.apache.org/jira/browse/IGNITE-18000")
-public class ItSqlLogicTest {
+public class ItSqlLogicTest extends IgniteIntegrationTest {
private static final String SQL_LOGIC_TEST_INCLUDE_SLOW =
"SQL_LOGIC_TEST_INCLUDE_SLOW";
private static final String NODE_NAME_PREFIX = "sqllogic";
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
index 4d19136f88..4e5a4471fe 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/ssl/ItSslTest.java
@@ -31,8 +31,8 @@ import org.apache.ignite.client.IgniteClient;
import org.apache.ignite.client.IgniteClientConnectionException;
import org.apache.ignite.client.SslConfiguration;
import org.apache.ignite.internal.Cluster;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.intellij.lang.annotations.Language;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeAll;
@@ -41,11 +41,9 @@ import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
/** SSL support integration test. */
-@ExtendWith(WorkDirectoryExtension.class)
-public class ItSslTest {
+public class ItSslTest extends IgniteIntegrationTest {
private static String password;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/start/ItStartTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/start/ItStartTest.java
index 8533daabd2..8a9a9935f0 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/start/ItStartTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/start/ItStartTest.java
@@ -33,21 +33,19 @@ import java.util.logging.Handler;
import java.util.logging.LogRecord;
import java.util.logging.Logger;
import org.apache.ignite.internal.Cluster;
+import org.apache.ignite.internal.IgniteIntegrationTest;
import org.apache.ignite.internal.app.IgniteImpl;
import org.apache.ignite.internal.index.IndexManager;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.testframework.WorkDirectory;
-import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.internal.testframework.jul.NoOpHandler;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
-import org.junit.jupiter.api.extension.ExtendWith;
import org.junit.jupiter.api.function.Executable;
-@ExtendWith(WorkDirectoryExtension.class)
-class ItStartTest {
+class ItStartTest extends IgniteIntegrationTest {
private Cluster cluster;
@WorkDirectory
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItPublicApiColocationTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItPublicApiColocationTest.java
index 2b073d7222..1231e76a84 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItPublicApiColocationTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItPublicApiColocationTest.java
@@ -41,7 +41,7 @@ import java.util.stream.Collectors;
import java.util.stream.Stream;
import org.apache.ignite.internal.schema.BinaryRow;
import org.apache.ignite.internal.schema.NativeTypeSpec;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import org.apache.ignite.internal.testframework.WorkDirectoryExtension;
import org.apache.ignite.table.Table;
import org.apache.ignite.table.Tuple;
@@ -57,7 +57,7 @@ import org.junit.jupiter.params.provider.MethodSource;
* Tests for the data colocation.
*/
@ExtendWith(WorkDirectoryExtension.class)
-public class ItPublicApiColocationTest extends AbstractBasicIntegrationTest {
+public class ItPublicApiColocationTest extends ClusterPerClassIntegrationTest {
/** Rows count ot test. */
private static final int ROWS = 10;
diff --git
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
index 1e5aafd41b..42c6c55a4c 100644
---
a/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
+++
b/modules/runner/src/integrationTest/java/org/apache/ignite/internal/table/ItTableScanTest.java
@@ -55,7 +55,7 @@ import
org.apache.ignite.internal.schema.configuration.TablesConfiguration;
import
org.apache.ignite.internal.schema.configuration.index.TableIndexConfiguration;
import org.apache.ignite.internal.schema.row.Row;
import org.apache.ignite.internal.schema.row.RowAssembler;
-import org.apache.ignite.internal.sql.engine.AbstractBasicIntegrationTest;
+import org.apache.ignite.internal.sql.engine.ClusterPerClassIntegrationTest;
import
org.apache.ignite.internal.table.distributed.replicator.TablePartitionId;
import org.apache.ignite.internal.testframework.IgniteTestUtils;
import org.apache.ignite.internal.tx.InternalTransaction;
@@ -75,7 +75,7 @@ import org.junit.jupiter.api.Test;
/**
* Tests to check a scan internal command.
*/
-public class ItTableScanTest extends AbstractBasicIntegrationTest {
+public class ItTableScanTest extends ClusterPerClassIntegrationTest {
/** Table name. */
private static final String TABLE_NAME = "test";
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
index f1d9cb9130..3dff97b779 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/app/IgnitionImpl.java
@@ -24,6 +24,7 @@ import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -38,6 +39,7 @@ import
org.apache.ignite.internal.properties.IgniteProductVersion;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.lang.NodeStoppingException;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.annotations.TestOnly;
/**
* Implementation of an entry point for handling grid lifecycle.
@@ -138,6 +140,24 @@ public class IgnitionImpl implements Ignition {
});
}
+ /**
+ * Stops all Ignite instances started in this JVM.
+ */
+ @TestOnly
+ public void stopAll() {
+ List<String> nodeNames = new ArrayList<>(nodes.keySet());
+
+ if (!nodeNames.isEmpty()) {
+ LOG.info("Going to stop Ignite instances: " + nodeNames);
+
+ for (String nodeName : nodeNames) {
+ stop(nodeName);
+ }
+
+ LOG.info("Stopped the following Ignite instances: " + nodeNames);
+ }
+ }
+
@Override
public void init(String nodeName, Collection<String>
metaStorageNodenodeNames, String clusterName) {
init(nodeName, metaStorageNodenodeNames, List.of(), clusterName);
diff --git
a/modules/runner/src/main/java/org/apache/ignite/internal/component/RestAddressReporter.java
b/modules/runner/src/main/java/org/apache/ignite/internal/component/RestAddressReporter.java
index 51e1b2677c..af5447fecf 100644
---
a/modules/runner/src/main/java/org/apache/ignite/internal/component/RestAddressReporter.java
+++
b/modules/runner/src/main/java/org/apache/ignite/internal/component/RestAddressReporter.java
@@ -23,6 +23,8 @@ import java.nio.file.Path;
import java.util.Objects;
import java.util.stream.Collectors;
import java.util.stream.Stream;
+import org.apache.ignite.internal.logger.IgniteLogger;
+import org.apache.ignite.internal.logger.Loggers;
import org.apache.ignite.lang.ErrorGroups.Common;
import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.network.NetworkAddress;
@@ -33,6 +35,8 @@ import org.jetbrains.annotations.Nullable;
*/
public class RestAddressReporter {
+ private static final IgniteLogger LOG =
Loggers.forClass(RestAddressReporter.class);
+
private static final String REPORT_FILE_NAME = "rest-address";
private final Path workDir;
@@ -73,7 +77,7 @@ public class RestAddressReporter {
Files.delete(workDir.resolve(REPORT_FILE_NAME));
} catch (IOException e) {
String message = "Unexpected error when trying to remove REST
server network address file";
- throw new IgniteException(Common.UNEXPECTED_ERR, message, e);
+ LOG.error(message, new IgniteException(Common.UNEXPECTED_ERR,
message, e));
}
}
}
diff --git
a/modules/runner/src/test/java/org/apache/ignite/internal/component/RestAddressReporterTest.java
b/modules/runner/src/test/java/org/apache/ignite/internal/component/RestAddressReporterTest.java
index 174cd12a16..b69badbbee 100644
---
a/modules/runner/src/test/java/org/apache/ignite/internal/component/RestAddressReporterTest.java
+++
b/modules/runner/src/test/java/org/apache/ignite/internal/component/RestAddressReporterTest.java
@@ -18,16 +18,13 @@
package org.apache.ignite.internal.component;
import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.Matchers.containsString;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.is;
-import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
-import org.apache.ignite.lang.ErrorGroups.Common;
-import org.apache.ignite.lang.IgniteException;
import org.apache.ignite.network.NetworkAddress;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -98,18 +95,14 @@ class RestAddressReporterTest {
@Test
@DisplayName("If there is no report file for some reason then throw an
exception")
- void throwsExceptionWhenThereIsNoFile(@TempDir Path tmpDir) {
+ void doesNotThrowExceptionWhenThereIsNoFile(@TempDir Path tmpDir) {
// Given
Path path = tmpDir.resolve("nosuchpath");
RestAddressReporter reporter = new RestAddressReporter(path);
// When try to removeReport
- IgniteException thrown = assertThrows(IgniteException.class,
reporter::removeReport);
-
- // Then exception thrown with proper message
- assertThat(thrown.getMessage(), containsString("Unexpected error when
trying to remove REST server network address file"));
- // And it has COMMON error group
- assertThat(thrown.groupName(),
equalTo(Common.COMMON_ERR_GROUP.name()));
+ // Then nothing is thrown
+ assertDoesNotThrow(reporter::removeReport);
}
@Test