This is an automated email from the ASF dual-hosted git repository.
mpochatkin 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 25bf47e183e IGNITE-26482 ItApiCompatibilityTest can't find local
module (#6630)
25bf47e183e is described below
commit 25bf47e183e2416fa3dd7fa7322718b15e6a149e
Author: Vadim Pakhnushev <[email protected]>
AuthorDate: Mon Sep 22 10:56:58 2025 +0300
IGNITE-26482 ItApiCompatibilityTest can't find local module (#6630)
---
.../ignite/internal/ItApiCompatibilityTest.java | 2 --
.../ignite/internal/CompatibilityTestBase.java | 20 +++++++++++++++-----
.../org/apache/ignite/internal/Dependencies.java | 4 ++--
.../compatibility/api/ApiCompatibilityTest.java | 4 ++--
.../compatibility/api/CompatibilityChecker.java | 10 ++++++++--
.../compatibility/api/CompatibilityInput.java | 12 +++++++++++-
6 files changed, 38 insertions(+), 14 deletions(-)
diff --git
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
index 93d2af849f2..954a305fa3c 100644
---
a/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
+++
b/modules/compatibility-tests/src/integrationTest/java/org/apache/ignite/internal/ItApiCompatibilityTest.java
@@ -24,8 +24,6 @@ class ItApiCompatibilityTest {
// TODO resolve or explain exclusions
https://issues.apache.org/jira/browse/IGNITE-26365
@ApiCompatibilityTest(
- newVersion = "3.1.0-SNAPSHOT",
- oldVersions = "3.0.0",
exclude = ""
+ "org.apache.ignite.Ignite#clusterNodes();" // deprecated
+ "org.apache.ignite.Ignite#clusterNodesAsync();" //
deprecated
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
index cf261726a63..7c70867fc8b 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/CompatibilityTestBase.java
@@ -210,11 +210,7 @@ public abstract class CompatibilityTestBase extends
BaseIgniteAbstractTest {
* @return A list of base versions for a test.
*/
public static List<String> baseVersions(int numLatest, String...
skipVersions) {
- Set<String> skipSet =
Arrays.stream(skipVersions).collect(Collectors.toSet());
- List<String> versions = IgniteVersions.INSTANCE.versions().stream()
- .map(Version::version)
- .filter(Predicate.not(skipSet::contains))
- .collect(Collectors.toList());
+ List<String> versions = baseVersions(skipVersions);
if (shouldTestAllVersions()) {
return versions;
} else {
@@ -224,6 +220,20 @@ public abstract class CompatibilityTestBase extends
BaseIgniteAbstractTest {
}
}
+ /**
+ * Returns a list of base versions.
+ *
+ * @param skipVersions Array of strings to skip.
+ * @return A list of base versions for a test.
+ */
+ public static List<String> baseVersions(String... skipVersions) {
+ Set<String> skipSet =
Arrays.stream(skipVersions).collect(Collectors.toSet());
+ return IgniteVersions.INSTANCE.versions().stream()
+ .map(Version::version)
+ .filter(Predicate.not(skipSet::contains))
+ .collect(Collectors.toList());
+ }
+
private static boolean shouldTestAllVersions() {
String value = System.getProperty("testAllVersions");
if (value != null) {
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
index c05192b9285..47c9f289140 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/Dependencies.java
@@ -41,11 +41,11 @@ public class Dependencies {
/**
* Provides the path to the dependency(s). Uses ; to separate jar files.
*/
- public static String path(String dependencyNotation, boolean transitive) {
+ public static String path(String dependencyNotation, boolean transitive,
boolean currentVersion) {
LOG.info("Resolving path for dependency: " + dependencyNotation);
File projectRoot = getProjectRoot();
- if (dependencyNotation.contains("SNAPSHOT")) {
+ if (currentVersion) {
String local = path(projectRoot, dependencyNotation);
if (!local.isEmpty()) {
return local;
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
index 250c0aa0a53..7d0cedfdb07 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/ApiCompatibilityTest.java
@@ -52,9 +52,9 @@ public @interface ApiCompatibilityTest {
String[] oldVersions() default {};
/**
- * Module new version to check compatibility for.
+ * Module new version to check compatibility for. If empty, current
version is used.
*/
- String newVersion();
+ String newVersion() default "";
/**
* List of modules to check. If empty, all modules are checked.
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
index 5ee78aeeb0c..f3c4135b0ae 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityChecker.java
@@ -51,8 +51,8 @@ class CompatibilityChecker {
*/
static CompatibilityOutput check(CompatibilityInput input) {
String[] args = {
- "--old", Dependencies.path(input.oldVersionNotation(), false),
- "--new", Dependencies.path(input.newVersionNotation(), false),
+ "--old", Dependencies.path(input.oldVersionNotation(), false,
false),
+ "--new", Dependencies.path(input.newVersionNotation(), false,
input.currentVersion()),
"--exclude", input.exclude(),
"--markdown",
"--only-incompatible",
@@ -96,6 +96,12 @@ class CompatibilityChecker {
xmlOutputGeneratorOptions.setCreateSchemaFile(true);
xmlOutputGeneratorOptions.setSemanticVersioningInformation(semverOut.generate());
XmlOutputGenerator xmlGenerator = new
XmlOutputGenerator(javaApiClasses, options, xmlOutputGeneratorOptions);
+ try {
+
Files.createDirectories(Paths.get(options.getXmlOutputFile().get()).getParent());
+ } catch (IOException e) {
+ throw new
JApiCmpException(JApiCmpException.Reason.IoException, "Could not create
directories for XML file: "
+ + e.getMessage(), e);
+ }
try (XmlOutput xmlOutput = xmlGenerator.generate()) {
XmlOutputGenerator.writeToFiles(options, xmlOutput);
} catch (Exception e) {
diff --git
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
index b15c857b5d9..d2c8f7de1b0 100644
---
a/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
+++
b/modules/compatibility-tests/src/testFixtures/java/org/apache/ignite/internal/compatibility/api/CompatibilityInput.java
@@ -17,17 +17,23 @@
package org.apache.ignite.internal.compatibility.api;
+import static org.apache.ignite.internal.util.StringUtils.nullOrEmpty;
+
+import org.apache.ignite.internal.properties.IgniteProperties;
+
class CompatibilityInput {
private final String module;
private final String oldVersion;
private final String newVersion;
private final String exclude;
private final boolean errorOnIncompatibility;
+ private final boolean currentVersion;
CompatibilityInput(String module, String oldVersion, ApiCompatibilityTest
annotation) {
this.module = module;
this.oldVersion = oldVersion;
- this.newVersion = annotation.newVersion();
+ currentVersion = nullOrEmpty(annotation.newVersion());
+ this.newVersion = currentVersion ?
IgniteProperties.get(IgniteProperties.VERSION) : annotation.newVersion();
this.exclude = annotation.exclude();
this.errorOnIncompatibility = annotation.errorOnIncompatibility();
}
@@ -59,4 +65,8 @@ class CompatibilityInput {
boolean errorOnIncompatibility() {
return errorOnIncompatibility;
}
+
+ boolean currentVersion() {
+ return currentVersion;
+ }
}