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<>();