From 6e855f779e7e902a931838f693d540da95771869 Mon Sep 17 00:00:00 2001 From: Christoph Strobl Date: Tue, 5 Sep 2017 14:50:36 +0200 Subject: [PATCH] DATAREDIS-687 - Adapt Redis Cache tests to Spring 5. Original pull request: #273. --- .../data/redis/cache/RedisCacheTest.java | 53 ++++++++++++++----- .../data/redis/cache/RedisCacheUnitTests.java | 36 ++++++++----- 2 files changed, 62 insertions(+), 27 deletions(-) diff --git a/src/test/java/org/springframework/data/redis/cache/RedisCacheTest.java b/src/test/java/org/springframework/data/redis/cache/RedisCacheTest.java index f19a1b507..ccf6a4865 100644 --- a/src/test/java/org/springframework/data/redis/cache/RedisCacheTest.java +++ b/src/test/java/org/springframework/data/redis/cache/RedisCacheTest.java @@ -43,7 +43,9 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import org.springframework.cache.Cache; +import org.springframework.cache.Cache.ValueRetrievalException; import org.springframework.cache.Cache.ValueWrapper; +import org.springframework.core.SpringVersion; import org.springframework.data.redis.ConnectionFactoryTracker; import org.springframework.data.redis.ObjectFactory; import org.springframework.data.redis.StringObjectFactory; @@ -301,7 +303,7 @@ public class RedisCacheTest extends AbstractNativeCacheTest { assertThat(wrapper.get(), equalTo(value)); } - @Test // DATAREDIS-510 + @Test // DATAREDIS-510, DATAREDIS-687 public void cachePutWithNullShouldNotAddStuffToRedis() { assumeThat(getAllowCacheNullValues(), is(false)); @@ -309,9 +311,16 @@ public class RedisCacheTest extends AbstractNativeCacheTest { Object key = getKey(); Object value = getValue(); - cache.put(key, null); + try { - assertThat(cache.get(key), is(nullValue())); + cache.put(key, null); + assertThat(cache.get(key), is(nullValue())); + } catch (IllegalArgumentException e) { + + if (!SpringVersion.getVersion().startsWith("5")) { + throw e; + } + } } @Test // DATAREDIS-510 @@ -326,9 +335,16 @@ public class RedisCacheTest extends AbstractNativeCacheTest { assertThat(cache.get(key).get(), is(equalTo(value))); - cache.put(key, null); + try { - assertThat(cache.get(key), is(nullValue())); + cache.put(key, null); + assertThat(cache.get(key), is(nullValue())); + } catch (IllegalArgumentException e) { + + if (!SpringVersion.getVersion().startsWith("5")) { + throw e; + } + } } @Test // DATAREDIS-443, DATAREDIS-452 @@ -371,23 +387,32 @@ public class RedisCacheTest extends AbstractNativeCacheTest { assertThat(cache.get(key).get(), is(nullValue())); } - @Test // DATAREDIS-553 + @Test // DATAREDIS-553, DATAREDIS-687 public void testCacheGetSynchronizedNullNotAllowingNull() { assumeThat(getAllowCacheNullValues(), is(false)); + assumeThat(cache, instanceOf(RedisCache.class)); assumeThat(template.getValueSerializer(), not(instanceOf(StringRedisSerializer.class))); Object key = getKey(); - Object value = cache.get(key, new Callable() { - @Override - public Object call() throws Exception { - return null; - } - }); + try { - assertThat(value, is(nullValue())); - assertThat(cache.get(key), is(nullValue())); + Object value = cache.get(key, new Callable() { + @Override + public Object call() throws Exception { + return null; + } + }); + + assertThat(value, is(nullValue())); + assertThat(cache.get(key), is(nullValue())); + } catch (ValueRetrievalException e) { + + if (!SpringVersion.getVersion().startsWith("5")) { + throw e; + } + } } @Test // DATAREDIS-553 diff --git a/src/test/java/org/springframework/data/redis/cache/RedisCacheUnitTests.java b/src/test/java/org/springframework/data/redis/cache/RedisCacheUnitTests.java index 0bb060bf6..931d8f3bc 100644 --- a/src/test/java/org/springframework/data/redis/cache/RedisCacheUnitTests.java +++ b/src/test/java/org/springframework/data/redis/cache/RedisCacheUnitTests.java @@ -34,7 +34,9 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import org.springframework.cache.Cache; +import org.springframework.cache.Cache.ValueRetrievalException; import org.springframework.cache.support.NullValue; +import org.springframework.core.SpringVersion; import org.springframework.data.redis.RedisSystemException; import org.springframework.data.redis.connection.RedisClusterConnection; import org.springframework.data.redis.connection.RedisConnection; @@ -132,8 +134,7 @@ public class RedisCacheUnitTests { cache = new RedisCache(CACHE_NAME, PREFIX_BYTES, templateSpy, EXPIRATION); cache.clear(); - verify(connectionMock).eval(any(byte[].class), eq(ReturnType.INTEGER), eq(0), - eq((PREFIX + "*").getBytes())); + verify(connectionMock).eval(any(byte[].class), eq(ReturnType.INTEGER), eq(0), eq((PREFIX + "*").getBytes())); } @Test // DATAREDIS-402 @@ -209,23 +210,32 @@ public class RedisCacheUnitTests { }); } - @Test // DATAREDIS-553 + @Test // DATAREDIS-553, DATAREDIS-687 @SuppressWarnings("unchecked") public void getWithCallableShouldStoreNullNotAllowingNull() throws ClassNotFoundException { cache = new RedisCache(CACHE_NAME, NO_PREFIX_BYTES, templateSpy, 0L, false); - cache.get(KEY, new Callable() { - @Override - public Object call() throws Exception { - return null; - } - }); + try { - verify(connectionMock).get(eq(KEY_BYTES)); - verify(connectionMock).multi(); - verify(connectionMock).del(eq(KEY_BYTES)); - verify(connectionMock).exec(); + cache.get(KEY, new Callable() { + @Override + public Object call() throws Exception { + return null; + } + }); + + verify(connectionMock).get(eq(KEY_BYTES)); + verify(connectionMock).multi(); + verify(connectionMock).del(eq(KEY_BYTES)); + verify(connectionMock).exec(); + + } catch (ValueRetrievalException e) { + + if (!SpringVersion.getVersion().startsWith("5")) { + throw e; + } + } } @Test // DATAREDIS-553