From 2777acf1c2083cdb13b861b36f33c0cb9cac8711 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Wojciech=20B=C4=85czkowski?= <36934780+Bouncheck@users.noreply.github.com> Date: Fri, 24 Jan 2025 18:09:13 +0100 Subject: [PATCH] 3.x: CcmBridge version logging; StateListenerTest bugfix (#423) * Fix bug in StateListenerTest Recently introduced change has an incorrect version check logic that skips 2025.1.x versions. They won't be skipped anymore. * Adjust cluster version logs in CCMBridge CCMBridge will now report correct Scylla version in use when configured for Scylla, instead of listing the Cassandra version. When using custom cluster version string CCMBridge will output what version number it resolves to. --- .../java/com/datastax/driver/core/CCMBridge.java | 12 ++++++++++++ .../com/datastax/driver/core/StateListenerTest.java | 8 +++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java b/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java index 62f674a8852..80d461aa5e5 100644 --- a/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java +++ b/driver-core/src/test/java/com/datastax/driver/core/CCMBridge.java @@ -258,6 +258,14 @@ public class CCMBridge implements CCMAccess { GLOBAL_DSE_VERSION_NUMBER, GLOBAL_CASSANDRA_VERSION_NUMBER, CASSANDRA_INSTALL_ARGS); + } else if (GLOBAL_SCYLLA_VERSION_NUMBER != null) { + GLOBAL_CASSANDRA_VERSION_NUMBER = VersionNumber.parse(inputCassandraVersion); + GLOBAL_DSE_VERSION_NUMBER = null; + logger.info( + "Tests requiring CCM will by default use Scylla version {} and report Cassandra version {} when asked specifically for it (install arguments: {})", + GLOBAL_SCYLLA_VERSION_NUMBER, + GLOBAL_CASSANDRA_VERSION_NUMBER, + CASSANDRA_INSTALL_ARGS); } else { GLOBAL_CASSANDRA_VERSION_NUMBER = VersionNumber.parse(inputCassandraVersion); GLOBAL_DSE_VERSION_NUMBER = null; @@ -358,6 +366,10 @@ private static VersionNumber parseScyllaInputVersion(String versionString) { "Failed to parse scylla.version: " + versionString + ". Trying to get it through CCM.", e); parsedScyllaVersionNumber = getScyllaVersionThroughCcm(versionString); + logger.info( + String.format( + "Version string %s corresponds here to version number %s", + versionString, parsedScyllaVersionNumber)); } return parsedScyllaVersionNumber; } diff --git a/driver-core/src/test/java/com/datastax/driver/core/StateListenerTest.java b/driver-core/src/test/java/com/datastax/driver/core/StateListenerTest.java index ab574d8a4f4..9d4f1e50cad 100644 --- a/driver-core/src/test/java/com/datastax/driver/core/StateListenerTest.java +++ b/driver-core/src/test/java/com/datastax/driver/core/StateListenerTest.java @@ -53,10 +53,12 @@ public void should_receive_events_when_node_states_change() throws InterruptedEx listener.waitForEvent(); // Different expectation for Scylla versions since 6.0.0 and 2024.2, both included + VersionNumber minOss = VersionNumber.parse("6.0.0"); + VersionNumber minEnterprise = VersionNumber.parse("2024.2"); VersionNumber scyllaVer = ccm().getScyllaVersion(); - if (scyllaVer != null - && ((scyllaVer.getMajor() >= 6 && scyllaVer.getMajor() <= 9) - || (scyllaVer.getMajor() >= 2024 && scyllaVer.getMinor() >= 2))) { + boolean isEnterprise = scyllaVer.getMajor() >= 2017; + if ((isEnterprise && scyllaVer.compareTo(minEnterprise) >= 0) + || (!isEnterprise && scyllaVer.compareTo(minOss) >= 0)) { listener.setExpectedEvent(DOWN); } else { listener.setExpectedEvent(REMOVE);