You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ap...@apache.org on 2025/06/24 10:59:37 UTC

(ignite-3) branch main updated: IGNITE-25750 Fix multiple versions in client compatibility tests (#6103)

This is an automated email from the ASF dual-hosted git repository.

apkhmv 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 1612617e744 IGNITE-25750 Fix multiple versions in client compatibility tests (#6103)
1612617e744 is described below

commit 1612617e744e1bfed1747c34c4d78402bb1ff014
Author: Vadim Pakhnushev <86...@users.noreply.github.com>
AuthorDate: Tue Jun 24 13:59:32 2025 +0300

    IGNITE-25750 Fix multiple versions in client compatibility tests (#6103)
---
 modules/compatibility-tests/build.gradle           | 36 +++++++++++++---------
 .../internal/client/ClientCompatibilityTests.java  | 27 ++++++++--------
 ...urrentClientWithOldServerCompatibilityTest.java | 21 +++++++------
 .../ignite/internal/CompatibilityTestBase.java     |  0
 .../org/apache/ignite/internal/IgniteCluster.java  |  0
 .../org/apache/ignite/internal/IgniteVersions.java |  0
 .../org/apache/ignite/internal/RunnerNode.java     |  0
 .../apache/ignite/internal/StreamGrabberTask.java  |  0
 .../resources/igniteVersions.json                  |  0
 9 files changed, 49 insertions(+), 35 deletions(-)

diff --git a/modules/compatibility-tests/build.gradle b/modules/compatibility-tests/build.gradle
index 989f1abe555..38f1b7435b4 100644
--- a/modules/compatibility-tests/build.gradle
+++ b/modules/compatibility-tests/build.gradle
@@ -1,5 +1,3 @@
-import groovy.json.JsonSlurper
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one or more
  * contributor license agreements. See the NOTICE file distributed with
@@ -17,8 +15,11 @@ import groovy.json.JsonSlurper
  * limitations under the License.
  */
 
+import groovy.json.JsonSlurper
+
 apply from: "$rootDir/buildscripts/java-core.gradle"
 apply from: "$rootDir/buildscripts/java-integration-test.gradle"
+apply from: "$rootDir/buildscripts/java-test-fixtures.gradle"
 
 description = 'ignite-compatibility-tests'
 
@@ -29,23 +30,30 @@ repositories {
 
 dependencies {
     integrationTestImplementation libs.jetbrains.annotations
-    integrationTestImplementation libs.gradle.tooling.api
-    integrationTestImplementation libs.hamcrest.core
-    integrationTestImplementation libs.awaitility
-    integrationTestImplementation libs.jackson.databind
-    integrationTestImplementation(libs.jsonpath.assert) {
+    integrationTestImplementation testFixtures(project(':ignite-compatibility-tests'))
+    integrationTestImplementation testFixtures(project(':ignite-core'))
+    integrationTestImplementation project(':ignite-api')
+    integrationTestImplementation project(':ignite-client')
+
+    testFixturesImplementation libs.jetbrains.annotations
+    testFixturesImplementation libs.gradle.tooling.api
+    testFixturesImplementation libs.hamcrest.core
+    testFixturesImplementation libs.junit5.params
+    testFixturesImplementation libs.awaitility
+    testFixturesImplementation libs.jackson.databind
+    testFixturesImplementation(libs.jsonpath.assert) {
         //IDEA test runner don't apply Gradle dependency resolve strategy, this is just not implemented
         //So, exclude asm-core transitive dependency to protect of jar-hell.
         exclude group: 'org.ow2.asm', module: 'asm'
     }
 
-    integrationTestImplementation testFixtures(project(':ignite-core'))
-    integrationTestImplementation testFixtures(project(':ignite-runner'))
-    integrationTestImplementation project(':ignite-core')
-    integrationTestImplementation project(':ignite-api')
-    integrationTestImplementation project(':ignite-runner')
-    integrationTestImplementation project(':ignite-client')
-    integrationTestImplementation project(':ignite-rest-api')
+    testFixturesImplementation testFixtures(project(':ignite-core'))
+    testFixturesImplementation testFixtures(project(':ignite-runner'))
+    testFixturesImplementation project(':ignite-core')
+    testFixturesImplementation project(':ignite-api')
+    testFixturesImplementation project(':ignite-runner')
+    testFixturesImplementation project(':ignite-client')
+    testFixturesImplementation project(':ignite-rest-api')
 }
 
 private def resolveAllDependencies(String dependencyNotation, String... additionalNotations) {
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/ClientCompatibilityTests.java b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/ClientCompatibilityTests.java
index be2c91a2a0a..790489049d3 100644
--- a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/ClientCompatibilityTests.java
+++ b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/ClientCompatibilityTests.java
@@ -43,6 +43,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 import java.util.stream.IntStream;
+import org.apache.ignite.Ignite;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.compute.ComputeException;
 import org.apache.ignite.compute.JobDescriptor;
@@ -69,13 +70,11 @@ import org.hamcrest.Matchers;
 import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
-import org.junit.jupiter.api.TestInstance;
 
 /**
  * Client compatibility tests. Interface to allow "multiple inheritance" of test methods.
  */
 @SuppressWarnings({"resource", "DataFlowIssue"})
-@TestInstance(TestInstance.Lifecycle.PER_CLASS)
 public interface ClientCompatibilityTests {
     String TABLE_NAME_TEST = "TEST";
     String TABLE_NAME_ALL_COLUMNS = "ALL_COLUMNS";
@@ -571,21 +570,21 @@ public interface ClientCompatibilityTests {
     /**
      * Creates default tables for testing.
      */
-    default void createDefaultTables() {
-        if (!ddl("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_TEST + " (id INT PRIMARY KEY, name VARCHAR)")) {
-            sql("DELETE FROM " + TABLE_NAME_TEST);
+    default void createDefaultTables(Ignite client) {
+        if (!ddl(client, "CREATE TABLE IF NOT EXISTS " + TABLE_NAME_TEST + " (id INT PRIMARY KEY, name VARCHAR)")) {
+            sql(client, "DELETE FROM " + TABLE_NAME_TEST);
         }
 
-        sql("INSERT INTO " + TABLE_NAME_TEST + " (id, name) VALUES (1, 'test')");
+        sql(client, "INSERT INTO " + TABLE_NAME_TEST + " (id, name) VALUES (1, 'test')");
 
-        if (!ddl("CREATE TABLE IF NOT EXISTS " + TABLE_NAME_ALL_COLUMNS + " (id INT PRIMARY KEY, byte TINYINT, short SMALLINT, "
+        if (!ddl(client, "CREATE TABLE IF NOT EXISTS " + TABLE_NAME_ALL_COLUMNS + " (id INT PRIMARY KEY, byte TINYINT, short SMALLINT, "
                 + "int INT, long BIGINT, float REAL, double DOUBLE, dec DECIMAL(10,1), "
                 + "string VARCHAR, uuid UUID, dt DATE, tm TIME(9), ts TIMESTAMP(9), "
                 + "tstz TIMESTAMP WITH LOCAL TIME ZONE, bool BOOLEAN, bytes VARBINARY)")) {
-            sql("DELETE FROM " + TABLE_NAME_ALL_COLUMNS);
+            sql(client, "DELETE FROM " + TABLE_NAME_ALL_COLUMNS);
         }
 
-        sql("INSERT INTO " + TABLE_NAME_ALL_COLUMNS + " (id, byte, short, int, long, float, double, dec, "
+        sql(client, "INSERT INTO " + TABLE_NAME_ALL_COLUMNS + " (id, byte, short, int, long, float, double, dec, "
                 + "string, uuid, dt, tm, ts, tstz, bool, bytes) VALUES "
                 + "(1, 1, 2, 3, 4, 5.0, 6.0, 7.0, 'test', '10000000-2000-3000-4000-500000000000'::UUID, "
                 + "date '2023-01-01', time '12:00:00', timestamp '2023-01-01 12:00:00', "
@@ -593,7 +592,11 @@ public interface ClientCompatibilityTests {
     }
 
     private @Nullable List<SqlRow> sql(String sql, Object... arguments) {
-        try (var cursor = client().sql().execute(null, sql, arguments)) {
+        return sql(client(), sql, arguments);
+    }
+
+    private static @Nullable List<SqlRow> sql(Ignite client, String sql, Object... arguments) {
+        try (var cursor = client.sql().execute(null, sql, arguments)) {
             if (cursor.hasRowSet()) {
                 List<SqlRow> rows = new ArrayList<>();
                 cursor.forEachRemaining(rows::add);
@@ -605,8 +608,8 @@ public interface ClientCompatibilityTests {
     }
 
     @SuppressWarnings("BooleanMethodIsAlwaysInverted")
-    private boolean ddl(String sql) {
-        try (var cursor = client().sql().execute(null, sql)) {
+    private static boolean ddl(Ignite client, String sql) {
+        try (var cursor = client.sql().execute(null, sql)) {
             return cursor.wasApplied();
         }
     }
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/CurrentClientWithOldServerCompatibilityTest.java b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/CurrentClientWithOldServerCompatibilityTest.java
index 6e71c066369..303517dab14 100644
--- a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/CurrentClientWithOldServerCompatibilityTest.java
+++ b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/client/CurrentClientWithOldServerCompatibilityTest.java
@@ -17,12 +17,14 @@
 
 package org.apache.ignite.internal.client;
 
+import java.util.Objects;
 import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.client.IgniteClient;
 import org.apache.ignite.internal.CompatibilityTestBase;
 import org.jetbrains.annotations.Nullable;
 import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Tests that current Java client can work with all older server versions.
@@ -34,7 +36,7 @@ public class CurrentClientWithOldServerCompatibilityTest extends CompatibilityTe
 
     @Override
     protected void setupBaseVersion(Ignite baseIgnite) {
-        createDefaultTables();
+        createDefaultTables(baseIgnite);
     }
 
     @Override
@@ -48,23 +50,24 @@ public class CurrentClientWithOldServerCompatibilityTest extends CompatibilityTe
         return false;
     }
 
-    @Override
-    public IgniteClient client() {
-        if (client == null) {
-            client = cluster.createClient();
-        }
-
-        return client;
+    @BeforeEach
+    public void createClient() {
+        client = cluster.createClient();
     }
 
     @AfterEach
-    public void afterEach() {
+    public void closeClient() {
         if (client != null) {
             client.close();
             client = null;
         }
     }
 
+    @Override
+    public IgniteClient client() {
+        return Objects.requireNonNull(client);
+    }
+
     @Override
     public AtomicInteger idGen() {
         return idGen;
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/CompatibilityTestBase.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/CompatibilityTestBase.java
rename to modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/IgniteCluster.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/IgniteCluster.java
rename to modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteCluster.java
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/IgniteVersions.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteVersions.java
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/IgniteVersions.java
rename to modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/IgniteVersions.java
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/RunnerNode.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/RunnerNode.java
rename to modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/RunnerNode.java
diff --git a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/StreamGrabberTask.java b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/StreamGrabberTask.java
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/StreamGrabberTask.java
rename to modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/StreamGrabberTask.java
diff --git a/modules/compatibility-tests/src/integrationTest/resources/igniteVersions.json b/modules/compatibility-tests/src/testFixtures/resources/igniteVersions.json
similarity index 100%
rename from modules/compatibility-tests/src/integrationTest/resources/igniteVersions.json
rename to modules/compatibility-tests/src/testFixtures/resources/igniteVersions.json