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