You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by je...@apache.org on 2021/05/05 14:48:18 UTC
[geode] branch develop updated: GEODE-9220: Switch redis set DUnit
tests to use JedisCluster (#6429)
This is an automated email from the ASF dual-hosted git repository.
jensdeppe pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 4cfea73 GEODE-9220: Switch redis set DUnit tests to use JedisCluster (#6429)
4cfea73 is described below
commit 4cfea73b1d9ce1810190817e80017feae0e64246
Author: Louis Jacome <ja...@vmware.com>
AuthorDate: Wed May 5 07:46:43 2021 -0700
GEODE-9220: Switch redis set DUnit tests to use JedisCluster (#6429)
---
.../redis/internal/executor/set/SaddDUnitTest.java | 120 +++++--------------
.../redis/internal/executor/set/SremDUnitTest.java | 130 ++++++---------------
2 files changed, 70 insertions(+), 180 deletions(-)
diff --git a/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SaddDUnitTest.java b/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SaddDUnitTest.java
index 1735656..4394529 100644
--- a/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SaddDUnitTest.java
+++ b/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SaddDUnitTest.java
@@ -28,7 +28,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
+import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisCluster;
import org.apache.geode.redis.ConcurrentLoopingThreads;
import org.apache.geode.test.awaitility.GeodeAwaitility;
@@ -44,9 +46,7 @@ public class SaddDUnitTest {
private static final int SET_SIZE = 1000;
private static final int JEDIS_TIMEOUT =
Math.toIntExact(GeodeAwaitility.getTimeout().toMillis());
- private static Jedis jedis1;
- private static Jedis jedis2;
- private static Jedis jedis3;
+ private static JedisCluster jedis;
private static Properties locatorProperties;
@@ -55,9 +55,8 @@ public class SaddDUnitTest {
private static MemberVM server2;
private static MemberVM server3;
- private static int redisServerPort1;
- private static int redisServerPort2;
- private static int redisServerPort3;
+ private static int redisServerPort;
+
@BeforeClass
public static void classSetup() {
@@ -69,49 +68,44 @@ public class SaddDUnitTest {
server2 = clusterStartUp.startRedisVM(2, locator.getPort());
server3 = clusterStartUp.startRedisVM(3, locator.getPort());
- redisServerPort1 = clusterStartUp.getRedisPort(1);
- redisServerPort2 = clusterStartUp.getRedisPort(2);
- redisServerPort3 = clusterStartUp.getRedisPort(3);
+ redisServerPort = clusterStartUp.getRedisPort(1);
- jedis1 = new Jedis(LOCAL_HOST, redisServerPort1, JEDIS_TIMEOUT);
- jedis2 = new Jedis(LOCAL_HOST, redisServerPort2, JEDIS_TIMEOUT);
- jedis3 = new Jedis(LOCAL_HOST, redisServerPort3, JEDIS_TIMEOUT);
+ jedis = new JedisCluster(new HostAndPort(LOCAL_HOST, redisServerPort), JEDIS_TIMEOUT);
}
@Before
public void testSetup() {
- jedis1.flushAll();
+ try (Jedis conn = jedis.getConnectionFromSlot(0)) {
+ conn.flushAll();
+ }
}
@AfterClass
public static void tearDown() {
- jedis1.disconnect();
- jedis2.disconnect();
- jedis3.disconnect();
+ jedis.close();
server1.stop();
server2.stop();
server3.stop();
}
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients() {
+ @Test
+ public void shouldDistributeDataAmongCluster() {
String key = "key";
List<String> members = makeMemberList(SET_SIZE, "member1-");
- jedis1.sadd(key, members.toArray(new String[] {}));
+ jedis.sadd(key, members.toArray(new String[] {}));
- Set<String> result = jedis2.smembers(key);
+ Set<String> result = jedis.smembers(key);
assertThat(result.toArray()).containsExactlyInAnyOrder(members.toArray());
-
}
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_AddingDifferentDataToSameSetConcurrently() {
+ @Test
+ public void shouldDistributeDataAmongCluster_givenConcurrentlyAddingDifferentDataToSameSet() {
String key = "key";
List<String> members1 = makeMemberList(SET_SIZE, "member1-");
@@ -122,33 +116,34 @@ public class SaddDUnitTest {
allMembers.addAll(members2);
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.sadd(key, members1.get(i)),
- (i) -> jedis2.sadd(key, members2.get(i))).run();
+ (i) -> jedis.sadd(key, members1.get(i)),
+ (i) -> jedis.sadd(key, members2.get(i))).runInLockstep();
- Set<String> results = jedis3.smembers(key);
+ Set<String> results = jedis.smembers(key);
assertThat(results.toArray()).containsExactlyInAnyOrder(allMembers.toArray());
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_AddingSameDataToSameSetConcurrently() {
+ public void shouldDistributeDataAmongCluster_givenConcurrentlyAddingSameDataToSameSet() {
String key = "key";
List<String> members = makeMemberList(SET_SIZE, "member-");
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.sadd(key, members.get(i)),
- (i) -> jedis2.sadd(key, members.get(i))).run();
+ (i) -> jedis.sadd(key, members.get(i)),
+ (i) -> jedis.sadd(key, members.get(i))).run();
- Set<String> results = jedis3.smembers(key);
+ Set<String> results = jedis.smembers(key);
assertThat(results.toArray()).containsExactlyInAnyOrder(members.toArray());
-
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_AddingDifferentSetsConcurrently() {
+ public void shouldDistributeDataAmongCluster_givenConcurrentlyAddingDifferentSets() {
String key1 = "key1";
String key2 = "key2";
@@ -157,69 +152,17 @@ public class SaddDUnitTest {
List<String> members2 = makeMemberList(SET_SIZE, "member2-");
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.sadd(key1, members1.get(i)),
- (i) -> jedis2.sadd(key2, members2.get(i))).run();
+ (i) -> jedis.sadd(key1, members1.get(i)),
+ (i) -> jedis.sadd(key2, members2.get(i))).runInLockstep();
- Set<String> results1 = jedis3.smembers(key1);
- Set<String> results2 = jedis3.smembers(key2);
+ Set<String> results1 = jedis.smembers(key1);
+ Set<String> results2 = jedis.smembers(key2);
assertThat(results1.toArray()).containsExactlyInAnyOrder(members1.toArray());
assertThat(results2.toArray()).containsExactlyInAnyOrder(members2.toArray());
}
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenTwoSetsOfClients_OperatingOnTheSameSetConcurrently() {
-
- Jedis jedis1B = new Jedis(LOCAL_HOST, redisServerPort1);
- Jedis jedis2B = new Jedis(LOCAL_HOST, redisServerPort2);
-
- String key = "key";
-
- List<String> members = makeMemberList(SET_SIZE, "member1-");
-
- new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.sadd(key, members.get(i)),
- (i) -> jedis1B.sadd(key, members.get(i)),
- (i) -> jedis2.sadd(key, members.get(i)),
- (i) -> jedis2B.sadd(key, members.get(i))).run();
-
- Set<String> results = jedis3.smembers(key);
-
- assertThat(results.toArray()).containsExactlyInAnyOrder(members.toArray());
-
- jedis1B.disconnect();
- jedis2B.disconnect();
- }
-
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenTwoSetsOfClients_OperatingOnTheSameSet_withDifferentData_Concurrently() {
-
- Jedis jedis1B = new Jedis(LOCAL_HOST, redisServerPort1);
- Jedis jedis2B = new Jedis(LOCAL_HOST, redisServerPort2);
-
- String key = "key1";
-
- List<String> members1 = makeMemberList(SET_SIZE, "member1-");
- List<String> members2 = makeMemberList(SET_SIZE, "member2-");
-
- List<String> allMembers = new ArrayList<>();
- allMembers.addAll(members1);
- allMembers.addAll(members2);
-
- new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.sadd(key, members1.get(i)),
- (i) -> jedis1B.sadd(key, members1.get(i)),
- (i) -> jedis2.sadd(key, members2.get(i)),
- (i) -> jedis2B.sadd(key, members2.get(i))).run();
-
- Set<String> results = jedis3.smembers(key);
-
- assertThat(results.toArray()).containsExactlyInAnyOrder(allMembers.toArray());
-
- jedis1B.disconnect();
- jedis2B.disconnect();
- }
private List<String> makeMemberList(int setSize, String baseString) {
List<String> members = new ArrayList<>();
@@ -228,4 +171,5 @@ public class SaddDUnitTest {
}
return members;
}
+
}
diff --git a/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SremDUnitTest.java b/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SremDUnitTest.java
index 4f6f1c4..97204be 100644
--- a/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SremDUnitTest.java
+++ b/geode-apis-compatible-with-redis/src/distributedTest/java/org/apache/geode/redis/internal/executor/set/SremDUnitTest.java
@@ -28,7 +28,9 @@ import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.ClassRule;
import org.junit.Test;
+import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
+import redis.clients.jedis.JedisCluster;
import org.apache.geode.redis.ConcurrentLoopingThreads;
import org.apache.geode.test.awaitility.GeodeAwaitility;
@@ -44,9 +46,7 @@ public class SremDUnitTest {
private static final int SET_SIZE = 1000;
private static final int JEDIS_TIMEOUT =
Math.toIntExact(GeodeAwaitility.getTimeout().toMillis());
- private static Jedis jedis1;
- private static Jedis jedis2;
- private static Jedis jedis3;
+ private static JedisCluster jedis;
private static Properties locatorProperties;
@@ -55,9 +55,7 @@ public class SremDUnitTest {
private static MemberVM server2;
private static MemberVM server3;
- private static int redisServerPort1;
- private static int redisServerPort2;
- private static int redisServerPort3;
+ private static int redisServerPort;
@BeforeClass
public static void classSetup() {
@@ -69,33 +67,30 @@ public class SremDUnitTest {
server2 = clusterStartUp.startRedisVM(2, locator.getPort());
server3 = clusterStartUp.startRedisVM(3, locator.getPort());
- redisServerPort1 = clusterStartUp.getRedisPort(1);
- redisServerPort2 = clusterStartUp.getRedisPort(2);
- redisServerPort3 = clusterStartUp.getRedisPort(3);
+ redisServerPort = clusterStartUp.getRedisPort(1);
- jedis1 = new Jedis(LOCAL_HOST, redisServerPort1, JEDIS_TIMEOUT);
- jedis2 = new Jedis(LOCAL_HOST, redisServerPort2, JEDIS_TIMEOUT);
- jedis3 = new Jedis(LOCAL_HOST, redisServerPort3, JEDIS_TIMEOUT);
+ jedis = new JedisCluster(new HostAndPort(LOCAL_HOST, redisServerPort), JEDIS_TIMEOUT);
}
@Before
public void testSetup() {
- jedis1.flushAll();
+ try (Jedis conn = jedis.getConnectionFromSlot(0)) {
+ conn.flushAll();
+ }
}
@AfterClass
public static void tearDown() {
- jedis1.disconnect();
- jedis2.disconnect();
- jedis3.disconnect();
+ jedis.close();
server1.stop();
server2.stop();
server3.stop();
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients() {
+ public void shouldDistributeDataAmongCluster_thenRemoveHalfOfData() {
String key = "key";
@@ -104,17 +99,19 @@ public class SremDUnitTest {
List<String> otherHalfOfMembers = new ArrayList<>(members);
otherHalfOfMembers.removeAll(halfOfMembers);
- jedis1.sadd(key, members.toArray(new String[] {}));
- jedis2.srem(key, halfOfMembers.toArray(new String[] {}));
+ jedis.sadd(key, members.toArray(new String[] {}));
+ jedis.srem(key, halfOfMembers.toArray(new String[] {}));
- Set<String> result = jedis3.smembers(key);
+ Set<String> result = jedis.smembers(key);
assertThat(result.toArray().length).isEqualTo(otherHalfOfMembers.size());
assertThat(result.toArray()).containsExactlyInAnyOrder(otherHalfOfMembers.toArray());
+
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_removingDifferentDataFromSameSetConcurrently() {
+ public void shouldDistributeDataAmongCluster_thenRemoveDifferentDataFromSameSetConcurrently() {
String key = "key";
@@ -125,37 +122,41 @@ public class SremDUnitTest {
allMembers.addAll(members1);
allMembers.addAll(members2);
- jedis3.sadd(key, allMembers.toArray(new String[] {}));
+ jedis.sadd(key, allMembers.toArray(new String[] {}));
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.srem(key, members1.get(i)),
- (i) -> jedis2.srem(key, members2.get(i))).run();
+ (i) -> jedis.srem(key, members1.get(i)),
+ (i) -> jedis.srem(key, members2.get(i))).run();
- Set<String> results = jedis3.smembers(key);
+ Set<String> results = jedis.smembers(key);
assertThat(results).isEmpty();
+
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_removingSameDataFromSameSetConcurrently() {
+ public void shouldDistributeDataAmongCluster_thenRemoveSameDataFromSameSetConcurrently() {
String key = "key";
List<String> members = makeMemberList(SET_SIZE, "member-");
- jedis3.sadd(key, members.toArray(new String[] {}));
+ jedis.sadd(key, members.toArray(new String[] {}));
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.srem(key, members.get(i)),
- (i) -> jedis2.srem(key, members.get(i))).run();
+ (i) -> jedis.srem(key, members.get(i)),
+ (i) -> jedis.srem(key, members.get(i))).run();
- Set<String> results = jedis3.smembers(key);
+ Set<String> results = jedis.smembers(key);
assertThat(results).isEmpty();
+
}
+
@Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClients_removingFromDifferentSetsConcurrently() {
+ public void shouldDistributeDataAmongCluster_thenRemoveFromDifferentSetsConcurrently() {
String key1 = "key1";
String key2 = "key2";
@@ -163,76 +164,21 @@ public class SremDUnitTest {
List<String> members1 = makeMemberList(SET_SIZE, "member1-");
List<String> members2 = makeMemberList(SET_SIZE, "member2-");
- jedis3.sadd(key1, members1.toArray(new String[] {}));
- jedis3.sadd(key2, members2.toArray(new String[] {}));
+ jedis.sadd(key1, members1.toArray(new String[] {}));
+ jedis.sadd(key2, members2.toArray(new String[] {}));
new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.srem(key1, members1.get(i)),
- (i) -> jedis2.srem(key2, members2.get(i))).run();
+ (i) -> jedis.srem(key1, members1.get(i)),
+ (i) -> jedis.srem(key2, members2.get(i))).run();
- Set<String> results1 = jedis3.smembers(key1);
- Set<String> results2 = jedis3.smembers(key2);
+ Set<String> results1 = jedis.smembers(key1);
+ Set<String> results2 = jedis.smembers(key2);
assertThat(results1).isEmpty();
assertThat(results2).isEmpty();
}
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClientsOnSameServer_removingSameDataFromSameSetConcurrently() {
-
- Jedis jedis1B = new Jedis(LOCAL_HOST, redisServerPort1);
- Jedis jedis2B = new Jedis(LOCAL_HOST, redisServerPort2);
-
- String key = "key";
-
- List<String> members = makeMemberList(SET_SIZE, "member1-");
- jedis3.sadd(key, members.toArray(new String[] {}));
-
- new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.srem(key, members.get(i)),
- (i) -> jedis1B.srem(key, members.get(i)),
- (i) -> jedis2.srem(key, members.get(i)),
- (i) -> jedis2B.srem(key, members.get(i))).run();
-
- Set<String> results = jedis3.smembers(key);
-
- assertThat(results).isEmpty();
-
- jedis1B.disconnect();
- jedis2B.disconnect();
- }
-
- @Test
- public void shouldDistributeDataAmongMultipleServers_givenMultipleClientsOnSameServer_removingDifferentDataFromSameSetConcurrently() {
-
- Jedis jedis1B = new Jedis(LOCAL_HOST, redisServerPort1);
- Jedis jedis2B = new Jedis(LOCAL_HOST, redisServerPort2);
-
- String key = "key1";
-
- List<String> members1 = makeMemberList(SET_SIZE, "member1-");
- List<String> members2 = makeMemberList(SET_SIZE, "member2-");
-
- List<String> allMembers = new ArrayList<>();
- allMembers.addAll(members1);
- allMembers.addAll(members2);
-
- jedis3.sadd(key, allMembers.toArray(new String[] {}));
-
- new ConcurrentLoopingThreads(SET_SIZE,
- (i) -> jedis1.srem(key, members1.get(i)),
- (i) -> jedis1B.srem(key, members1.get(i)),
- (i) -> jedis2.srem(key, members2.get(i)),
- (i) -> jedis2B.srem(key, members2.get(i))).run();
-
- Set<String> results = jedis3.smembers(key);
-
- assertThat(results).isEmpty();
-
- jedis1B.disconnect();
- jedis2B.disconnect();
- }
private List<String> makeMemberList(int setSize, String baseString) {
List<String> members = new ArrayList<>();