diff --git a/README.md b/README.md index 40c663a..6631e39 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,7 @@ Also, you will find a little Groovy and a docker composer to setup a testing red | Library version | Jedis version | JDK Version | |-----------------|---------------|-------------| +| 6.0.0 | 5.0.X | JDK11 | | 5.3.0 | 4.4.X | JDK11 | diff --git a/gradle.properties b/gradle.properties index d06c38a..04042ac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -projectVersion=5.3.0 +projectVersion=6.0.0 #javaVersion=JavaVersion.VERSION_11 javaVersion=11 @@ -6,7 +6,7 @@ javaVersion=11 shadowVersion=7.1.2 # https://mvnrepository.com/artifact/redis.clients/jedis/4.4.3 -jedisVersion=4.4.3 +jedisVersion=5.0.2 # https://mvnrepository.com/artifact/org.javassist/javassist javassistVersion=3.29.2-GA # https://mvnrepository.com/artifact/org.slf4j/slf4j-api diff --git a/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCache.java b/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCache.java index e6847c4..bb2c239 100644 --- a/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCache.java +++ b/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCache.java @@ -19,6 +19,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -171,7 +173,7 @@ synchronized String mockSet(final String key, String value, SetParams setParams) } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -257,21 +259,6 @@ synchronized void put(String key, String element) { data.put(key, element); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams.getParam("px"); - } - public static String extractPatternFromScanParams(ScanParams scanParams) { String pattern = scanParams.match(); if (pattern.equals("*")) { @@ -293,6 +280,4 @@ static String[] fromObjectArray(Object[] data){ return result; } - - } diff --git a/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCacheTest.java b/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCacheTest.java index 16b0020..c11b6ff 100644 --- a/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCacheTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/cache/MockOfJedisForSimpleCacheTest.java @@ -17,6 +17,8 @@ import java.util.List; import static org.junit.Assert.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; @RunWith(PowerMockRunner.class) @PrepareForTest({Transaction.class, TransactionBase.class }) @@ -41,20 +43,20 @@ public void tearDown() { @Test public void testParams() { SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedisForSimpleCache.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedisForSimpleCache.getExpireTimePX(sp1)); + boolean t11 = isSetParamsNX(sp1); + boolean t12 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp1)); SetParams sp2 = new SetParams(); sp2.nx(); - boolean t21 = mockOfJedisForSimpleCache.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedisForSimpleCache.getExpireTimePX(sp2)); + boolean t21 = isSetParamsNX(sp2); + boolean t22 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp2)); SetParams sp3 = new SetParams(); sp3.px(1L); - boolean t31 = mockOfJedisForSimpleCache.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedisForSimpleCache.getExpireTimePX(sp3)); + boolean t31 = isSetParamsNX(sp3); + boolean t32 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp3)); SetParams sp4 = new SetParams(); sp4.nx().px(1L); - boolean t41 = mockOfJedisForSimpleCache.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedisForSimpleCache.getExpireTimePX(sp4)); + boolean t41 = isSetParamsNX(sp4); + boolean t42 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp4)); boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; assertTrue(finalResult); diff --git a/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForList.java b/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForList.java index 65c4b8c..b53602d 100644 --- a/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForList.java +++ b/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForList.java @@ -15,17 +15,12 @@ import redis.clients.jedis.args.ListPosition; import redis.clients.jedis.params.SetParams; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Timer; - -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyLong; -import static org.mockito.ArgumentMatchers.anyString; +import java.util.*; + +import static org.mockito.ArgumentMatchers.*; import static org.mockito.Mockito.when; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -188,7 +183,7 @@ synchronized String mockSet(final String key, String value, SetParams setParams) } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -222,21 +217,6 @@ synchronized void put(String key, Object element) { data.put(key, element); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return (Long) setParams.getParam("px"); - } - synchronized ArrayList dataToList(String key) { return dataToList(key, false); } diff --git a/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForListTest.java b/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForListTest.java index 2ab6d5c..e6b5b2e 100644 --- a/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForListTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/collections/MockOfJedisForListTest.java @@ -16,11 +16,7 @@ import java.util.Collections; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import static org.oba.jedis.extra.utils.collections.MockOfJedisForList.CLIENT_RESPONSE_KO; import static org.oba.jedis.extra.utils.collections.MockOfJedisForList.CLIENT_RESPONSE_OK; @@ -44,28 +40,6 @@ public void tearDown() { } } - @Test - public void testParams() { - SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); - SetParams sp2 = new SetParams(); - sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); - SetParams sp3 = new SetParams(); - sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); - SetParams sp4 = new SetParams(); - sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); - - boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; - assertTrue(finalResult); - } - @Test public void testDataInsertion() throws InterruptedException { mockOfJedis.getJedis().set("a", "A1", new SetParams()); diff --git a/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedis.java b/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedis.java index 27b0f3c..c5527ff 100644 --- a/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedis.java +++ b/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedis.java @@ -15,6 +15,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -82,7 +84,7 @@ private synchronized String mockSet(final String key, String value, SetParams se } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -130,23 +132,4 @@ public synchronized Map getCurrentData() { return new HashMap<>(data); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams.getParam("px"); - } - - - - - } diff --git a/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedisTest.java b/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedisTest.java index 38e15e1..e333281 100644 --- a/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedisTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/countdownlatch/MockOfJedisTest.java @@ -5,9 +5,7 @@ import org.junit.Test; import redis.clients.jedis.params.SetParams; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; public class MockOfJedisTest { @@ -28,28 +26,6 @@ public void tearDown() { } } - @Test - public void testParams() { - SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); - SetParams sp2 = new SetParams(); - sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); - SetParams sp3 = new SetParams(); - sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); - SetParams sp4 = new SetParams(); - sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); - - boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; - assertTrue(finalResult); - } - @Test public void testDataInsertion() throws InterruptedException { mockOfJedis.getJedis().set("a", "A1", new SetParams()); diff --git a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedis.java b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedis.java index 1435a19..be45264 100644 --- a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedis.java +++ b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedis.java @@ -8,23 +8,16 @@ import org.powermock.api.support.membermodification.MemberMatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import redis.clients.jedis.Jedis; -import redis.clients.jedis.JedisPool; -import redis.clients.jedis.Response; -import redis.clients.jedis.Transaction; -import redis.clients.jedis.TransactionBase; +import redis.clients.jedis.*; import redis.clients.jedis.params.SetParams; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Timer; +import java.util.*; import java.util.stream.Collectors; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -150,7 +143,7 @@ private synchronized String mockSet(final String key, String value, SetParams se } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -199,23 +192,4 @@ public synchronized Map getCurrentData() { return new HashMap<>(data); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - break; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams.getParam("px"); - } - - - - } diff --git a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedisTest.java b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedisTest.java index 71ecc37..7d9d8b0 100644 --- a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedisTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/MockOfJedisTest.java @@ -15,6 +15,8 @@ import static org.junit.Assert.*; import static org.oba.jedis.extra.utils.interruptinglocks.MockOfJedis.unitTestEnabled; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; @RunWith(PowerMockRunner.class) @PrepareForTest({Transaction.class, TransactionBase.class }) @@ -40,20 +42,20 @@ public void tearDown() { @Test public void testParams() { SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); + boolean t11 = isSetParamsNX(sp1); + boolean t12 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp1)); SetParams sp2 = new SetParams(); sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); + boolean t21 = isSetParamsNX(sp2); + boolean t22 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp2)); SetParams sp3 = new SetParams(); sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); + boolean t31 = isSetParamsNX(sp3); + boolean t32 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp3)); SetParams sp4 = new SetParams(); sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); + boolean t41 = isSetParamsNX(sp4); + boolean t42 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp4)); boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; assertTrue(finalResult); diff --git a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/functional/FunctionalJedisLocksOnCriticalZoneWithWaitingTimeTest.java b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/functional/FunctionalJedisLocksOnCriticalZoneWithWaitingTimeTest.java index 4343368..07fa903 100644 --- a/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/functional/FunctionalJedisLocksOnCriticalZoneWithWaitingTimeTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/interruptinglocks/functional/FunctionalJedisLocksOnCriticalZoneWithWaitingTimeTest.java @@ -92,7 +92,7 @@ private void accesLockOfCriticalZone(int sleepTime) { } catch (InterruptedException e) { // NOOP } - jedis.quit(); + jedis.close(); } catch (Exception e) { LOGGER.error("Other error", e); otherError.set(true); diff --git a/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedis.java b/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedis.java index 3dee871..726384f 100644 --- a/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedis.java +++ b/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedis.java @@ -11,23 +11,14 @@ import redis.clients.jedis.resps.ScanResult; import redis.clients.jedis.resps.Tuple; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.Set; -import java.util.Timer; +import java.util.*; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicLong; import java.util.stream.Collectors; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.ArgumentMatchers.anyDouble; -import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.ArgumentMatchers.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -309,7 +300,7 @@ private synchronized String mockSet(final String key, String value, SetParams se } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -363,22 +354,6 @@ public synchronized Map getCurrentData() { return new HashMap<>(data); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - break; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams.getParam("px"); - } - public List randomSizedListOfChars() { int size = ThreadLocalRandom.current().nextInt(5, ABC.length()); List result = new ArrayList<>(size); diff --git a/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedisTest.java b/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedisTest.java index 6a261f1..220d338 100644 --- a/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedisTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/iterators/MockOfJedisTest.java @@ -13,10 +13,9 @@ import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicReference; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; public class MockOfJedisTest { @@ -40,20 +39,20 @@ public void tearDown() { @Test public void testParams() { SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); + boolean t11 = isSetParamsNX(sp1); + boolean t12 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp1)); SetParams sp2 = new SetParams(); sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); + boolean t21 = isSetParamsNX(sp2); + boolean t22 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp2)); SetParams sp3 = new SetParams(); sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); + boolean t31 = isSetParamsNX(sp3); + boolean t32 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp3)); SetParams sp4 = new SetParams(); sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); + boolean t41 = isSetParamsNX(sp4); + boolean t42 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp4)); boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; assertTrue(finalResult); diff --git a/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedis.java b/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedis.java index 589cc7b..5695cff 100644 --- a/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedis.java +++ b/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedis.java @@ -12,6 +12,8 @@ import java.util.*; import static org.mockito.ArgumentMatchers.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; import static org.powermock.api.mockito.PowerMockito.when; /** @@ -122,7 +124,7 @@ private synchronized String mockSet(final String key, String value, SetParams se } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -158,21 +160,4 @@ public synchronized Map getCurrentData() { return new HashMap<>(data); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - for(byte[] b: setParams.getByteParams()){ - String s = new String(b); - if ("nx".equalsIgnoreCase(s)){ - result = true; - break; - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams.getParam("px"); - } - - } diff --git a/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedisTest.java b/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedisTest.java index 3d42797..b5a35e2 100644 --- a/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedisTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/semaphore/MockOfJedisTest.java @@ -9,6 +9,8 @@ import java.util.List; import static org.junit.Assert.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; public class MockOfJedisTest { @@ -32,20 +34,20 @@ public void tearDown() { @Test public void testParams() { SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); + boolean t11 = isSetParamsNX(sp1); + boolean t12 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp1)); SetParams sp2 = new SetParams(); sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); + boolean t21 = isSetParamsNX(sp2); + boolean t22 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp2)); SetParams sp3 = new SetParams(); sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); + boolean t31 = isSetParamsNX(sp3); + boolean t32 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp3)); SetParams sp4 = new SetParams(); sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); + boolean t41 = isSetParamsNX(sp4); + boolean t42 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp4)); boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; assertTrue(finalResult); diff --git a/src/test/java/org/oba/jedis/extra/utils/test/TestingUtils.java b/src/test/java/org/oba/jedis/extra/utils/test/TestingUtils.java new file mode 100644 index 0000000..5cd0593 --- /dev/null +++ b/src/test/java/org/oba/jedis/extra/utils/test/TestingUtils.java @@ -0,0 +1,59 @@ +package org.oba.jedis.extra.utils.test; + +import redis.clients.jedis.Protocol; +import redis.clients.jedis.params.SetParams; + +import java.lang.reflect.Field; + +public class TestingUtils { + + private TestingUtils() {} + + public static boolean isSetParamsNX(SetParams setParams) { + if (setParams != null) { + Protocol.Keyword valueExistance = extractPrivateValue("existance", SetParams.class, setParams, Protocol.Keyword.class); + return valueExistance == Protocol.Keyword.NX; + } else { + return false; + } + } + + + + public static Long extractSetParamsExpireTimePX(SetParams setParams) { + if (setParams != null) { + Protocol.Keyword valueExpiration = extractPrivateValue("expiration", SetParams.class, setParams, Protocol.Keyword.class); + Long valueExpirationValue = extractPrivateValue("expirationValue", SetParams.class, setParams, Long.class); + if (valueExpiration == null && valueExpirationValue == null) { + return null; + } else if (valueExpiration == Protocol.Keyword.PX) { + return valueExpirationValue; + } else { + throw new IllegalArgumentException("SetParams is not PX " + setParams); + } + } else { + return null; + } + + } + + + public static O extractPrivateValue(String field, Class originType, I origin, Class resultType) { + try { + Field privateField = origin.getClass().getDeclaredField(field); + privateField.setAccessible(true); + if (resultType == privateField.getType()){ + return (O) privateField.get(origin); + } else { + String error = String.format("Error in field %s originType %s origin %s resultType %s", field, originType, + origin, resultType); + throw new RuntimeException(error); + } + } catch (NoSuchFieldException | IllegalAccessException e) { + String error = String.format("Error in field %s originType %s origin %s resultType %s", field, originType, + origin, resultType); + throw new RuntimeException(error, e); + } + } + +} diff --git a/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedis.java b/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedis.java index afb8ce3..4e95058 100644 --- a/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedis.java +++ b/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedis.java @@ -19,6 +19,8 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyString; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; /** * Mock of jedis methods used by the lock @@ -148,7 +150,7 @@ private synchronized String mockSet(final String key, String value, SetParams se } if (insert) { data.put(key, value); - Long expireTime = getExpireTimePX(setParams); + Long expireTime = extractSetParamsExpireTimePX(setParams); if (expireTime != null){ timer.schedule(TTL.wrapTTL(() -> data.remove(key)),expireTime); } @@ -210,7 +212,6 @@ public static String mockScriptLoad(String script) { return ScriptEvalSha1.sha1(script); } - public Jedis getJedis(){ return jedis; } @@ -227,29 +228,10 @@ public synchronized void clearData(){ data.clear(); } - public synchronized Map getCurrentData() { return new HashMap<>(data); } - boolean isSetParamsNX(SetParams setParams) { - boolean result = false; - if (setParams != null) { - for (byte[] b : setParams.getByteParams()) { - String s = new String(b); - if ("nx".equalsIgnoreCase(s)) { - result = true; - break; - } - } - } - return result; - } - - Long getExpireTimePX(SetParams setParams) { - return setParams != null ? setParams.getParam("px") : null; - } - public static String extractPatternFromScanParams(ScanParams scanParams) { String pattern = scanParams.match(); if (pattern.equals("*")) { diff --git a/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedisTest.java b/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedisTest.java index ac63f73..f26a146 100644 --- a/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedisTest.java +++ b/src/test/java/org/oba/jedis/extra/utils/utils/MockOfJedisTest.java @@ -11,6 +11,8 @@ import java.util.Collections; import static org.junit.Assert.*; +import static org.oba.jedis.extra.utils.test.TestingUtils.extractSetParamsExpireTimePX; +import static org.oba.jedis.extra.utils.test.TestingUtils.isSetParamsNX; public class MockOfJedisTest { @@ -34,20 +36,20 @@ public void tearDown() { @Test public void testParams() { SetParams sp1 = new SetParams(); - boolean t11 = mockOfJedis.isSetParamsNX(sp1); - boolean t12 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp1)); + boolean t11 = isSetParamsNX(sp1); + boolean t12 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp1)); SetParams sp2 = new SetParams(); sp2.nx(); - boolean t21 = mockOfJedis.isSetParamsNX(sp2); - boolean t22 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp2)); + boolean t21 = isSetParamsNX(sp2); + boolean t22 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp2)); SetParams sp3 = new SetParams(); sp3.px(1L); - boolean t31 = mockOfJedis.isSetParamsNX(sp3); - boolean t32 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp3)); + boolean t31 = isSetParamsNX(sp3); + boolean t32 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp3)); SetParams sp4 = new SetParams(); sp4.nx().px(1L); - boolean t41 = mockOfJedis.isSetParamsNX(sp4); - boolean t42 = Long.valueOf(1).equals(mockOfJedis.getExpireTimePX(sp4)); + boolean t41 = isSetParamsNX(sp4); + boolean t42 = Long.valueOf(1).equals(extractSetParamsExpireTimePX(sp4)); boolean finalResult = !t11 && !t12 && t21 && !t22 && !t31 && t32 && t41 && t42; assertTrue(finalResult);