From cb070c13756c60d1d4dbf6dda04845b271b2425a Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Thu, 27 Nov 2014 22:03:24 +0100 Subject: [PATCH] DATAREDIS-358 - Precise version resolution within RedisTestProfileValueSource. We now resolve the precise redis version including patch level for the 2.8 line. This allows us to disable tests when building against older versions that might not have the complete featureset available. --- .../data/redis/RedisTestProfileValueSource.java | 2 +- .../connection/AbstractConnectionIntegrationTests.java | 5 +++++ .../redis/core/DefaultHyperLogLogOperationsTests.java | 10 +++------- .../data/redis/test/util/RelaxedJUnit4ClassRunner.java | 6 ++++-- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/test/java/org/springframework/data/redis/RedisTestProfileValueSource.java b/src/test/java/org/springframework/data/redis/RedisTestProfileValueSource.java index 0d3a8e68f..ef384a721 100644 --- a/src/test/java/org/springframework/data/redis/RedisTestProfileValueSource.java +++ b/src/test/java/org/springframework/data/redis/RedisTestProfileValueSource.java @@ -52,7 +52,7 @@ public class RedisTestProfileValueSource implements ProfileValueSource { public String get(String key) { if (REDIS_VERSION_KEY.equals(key)) { if (redisVersion.compareTo(RedisVersionUtils.parseVersion(REDIS_28)) >= 0) { - return REDIS_28; + return redisVersion.toString(); } if (redisVersion.compareTo(RedisVersionUtils.parseVersion(REDIS_26)) >= 0) { return REDIS_26; diff --git a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java index 7938eed8b..f07b91dd2 100644 --- a/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java +++ b/src/test/java/org/springframework/data/redis/connection/AbstractConnectionIntegrationTests.java @@ -2071,6 +2071,7 @@ public abstract class AbstractConnectionIntegrationTests { * @see DATAREDIS-308 */ @Test + @IfProfileValue(name = "redisVersion", value = "2.8.9+") public void pfAddShouldAddToNonExistingKeyCorrectly() { if (!ConnectionUtils.isJedis(connectionFactory)) { @@ -2087,6 +2088,7 @@ public abstract class AbstractConnectionIntegrationTests { * @see DATAREDIS-308 */ @Test + @IfProfileValue(name = "redisVersion", value = "2.8.9+") public void pfAddShouldReturnZeroWhenValueAlreadyExists() { if (!ConnectionUtils.isJedis(connectionFactory)) { @@ -2107,6 +2109,7 @@ public abstract class AbstractConnectionIntegrationTests { * @see DATAREDIS-308 */ @Test + @IfProfileValue(name = "redisVersion", value = "2.8.9+") public void pfCountShouldReturnCorrectly() { if (!ConnectionUtils.isJedis(connectionFactory)) { @@ -2125,6 +2128,7 @@ public abstract class AbstractConnectionIntegrationTests { * @see DATAREDIS-308 */ @Test + @IfProfileValue(name = "redisVersion", value = "2.8.9+") public void pfCountWithMultipleKeysShouldReturnCorrectly() { if (!ConnectionUtils.isJedis(connectionFactory)) { @@ -2145,6 +2149,7 @@ public abstract class AbstractConnectionIntegrationTests { * @see DATAREDIS-308 */ @Test(expected = IllegalArgumentException.class) + @IfProfileValue(name = "redisVersion", value = "2.8.9+") public void pfCountWithNullKeysShouldThrowIllegalArgumentException() { if (!ConnectionUtils.isJedis(connectionFactory)) { diff --git a/src/test/java/org/springframework/data/redis/core/DefaultHyperLogLogOperationsTests.java b/src/test/java/org/springframework/data/redis/core/DefaultHyperLogLogOperationsTests.java index eebca3412..27eef4c8d 100644 --- a/src/test/java/org/springframework/data/redis/core/DefaultHyperLogLogOperationsTests.java +++ b/src/test/java/org/springframework/data/redis/core/DefaultHyperLogLogOperationsTests.java @@ -22,7 +22,7 @@ import java.util.Collection; import org.junit.After; import org.junit.Before; -import org.junit.Rule; +import org.junit.ClassRule; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @@ -36,6 +36,7 @@ import org.springframework.test.annotation.IfProfileValue; * @author Christoph Strobl */ @RunWith(Parameterized.class) +@IfProfileValue(name = "redisVersion", value = "2.8.9+") public class DefaultHyperLogLogOperationsTests { private RedisTemplate redisTemplate; @@ -46,7 +47,7 @@ public class DefaultHyperLogLogOperationsTests { private HyperLogLogOperations hyperLogLogOps; - public @Rule MinimumRedisVersionRule versionRule = new MinimumRedisVersionRule(); + public static @ClassRule MinimumRedisVersionRule versionRule = new MinimumRedisVersionRule(); public DefaultHyperLogLogOperationsTests(RedisTemplate redisTemplate, ObjectFactory keyFactory, ObjectFactory valueFactory) { @@ -80,7 +81,6 @@ public class DefaultHyperLogLogOperationsTests { */ @Test @SuppressWarnings("unchecked") - @IfProfileValue(name = "redisVersion", value = "2.8+") public void addShouldAddDistinctValuesCorrectly() { K key = keyFactory.instance(); @@ -96,7 +96,6 @@ public class DefaultHyperLogLogOperationsTests { */ @Test @SuppressWarnings("unchecked") - @IfProfileValue(name = "redisVersion", value = "2.8+") public void addShouldNotAddExistingValuesCorrectly() { K key = keyFactory.instance(); @@ -113,7 +112,6 @@ public class DefaultHyperLogLogOperationsTests { */ @Test @SuppressWarnings("unchecked") - @IfProfileValue(name = "redisVersion", value = "2.8+") public void sizeShouldCountValuesCorrectly() { K key = keyFactory.instance(); @@ -130,7 +128,6 @@ public class DefaultHyperLogLogOperationsTests { */ @Test @SuppressWarnings("unchecked") - @IfProfileValue(name = "redisVersion", value = "2.8+") public void sizeShouldCountValuesOfMultipleKeysCorrectly() { K key = keyFactory.instance(); @@ -152,7 +149,6 @@ public class DefaultHyperLogLogOperationsTests { */ @Test @SuppressWarnings("unchecked") - @IfProfileValue(name = "redisVersion", value = "2.8+") public void unionShouldMergeValuesOfMultipleKeysCorrectly() throws InterruptedException { K sourceKey_1 = keyFactory.instance(); diff --git a/src/test/java/org/springframework/data/redis/test/util/RelaxedJUnit4ClassRunner.java b/src/test/java/org/springframework/data/redis/test/util/RelaxedJUnit4ClassRunner.java index 66d6efa89..673f6d4ef 100644 --- a/src/test/java/org/springframework/data/redis/test/util/RelaxedJUnit4ClassRunner.java +++ b/src/test/java/org/springframework/data/redis/test/util/RelaxedJUnit4ClassRunner.java @@ -20,6 +20,8 @@ import java.lang.reflect.Method; import org.junit.Ignore; import org.junit.runners.model.FrameworkMethod; import org.junit.runners.model.InitializationError; +import org.springframework.data.redis.Version; +import org.springframework.data.redis.VersionParser; import org.springframework.test.annotation.IfProfileValue; import org.springframework.test.annotation.ProfileValueSource; import org.springframework.test.annotation.ProfileValueUtils; @@ -64,8 +66,8 @@ public class RelaxedJUnit4ClassRunner extends SpringJUnit4ClassRunner { if (value.endsWith("+")) { - String expected = value.replace("+", ""); - if (expected.compareTo(environmentValue) <= 0) { + Version expected = VersionParser.parseVersion(value.replace("+", "")); + if (expected.compareTo(VersionParser.parseVersion(environmentValue)) <= 0) { return true; }