You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by ri...@apache.org on 2022/02/11 22:43:42 UTC
[geode] branch WIP-GEODE-9892 updated: clean up lpop verification logic
This is an automated email from the ASF dual-hosted git repository.
ringles pushed a commit to branch WIP-GEODE-9892
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/WIP-GEODE-9892 by this push:
new 2f6032d clean up lpop verification logic
2f6032d is described below
commit 2f6032dc1ebfe99a053e675f09dddbb669bb092c
Author: Ray Ingles <ri...@vmware.com>
AuthorDate: Fri Feb 11 17:42:15 2022 -0500
clean up lpop verification logic
---
.../commands/executor/list/LPopDUnitTest.java | 64 +++++++---------------
1 file changed, 21 insertions(+), 43 deletions(-)
diff --git a/geode-for-redis/src/distributedTest/java/org/apache/geode/redis/internal/commands/executor/list/LPopDUnitTest.java b/geode-for-redis/src/distributedTest/java/org/apache/geode/redis/internal/commands/executor/list/LPopDUnitTest.java
index 46cfa2c..119b3f2 100644
--- a/geode-for-redis/src/distributedTest/java/org/apache/geode/redis/internal/commands/executor/list/LPopDUnitTest.java
+++ b/geode-for-redis/src/distributedTest/java/org/apache/geode/redis/internal/commands/executor/list/LPopDUnitTest.java
@@ -154,58 +154,36 @@ public class LPopDUnitTest {
}
private void lpopPerformAndVerify(String key, List<String> elementList, AtomicLong runningCount) {
- int iterationCount = 0;
- List<String> poppedList = new ArrayList<>();
- String previousElement = "";
- int duplicateCount = 0;
logger.info(key + ": length is " + jedis.llen(key));
assertThat(jedis.llen(key)).isGreaterThanOrEqualTo(MINIMUM_ITERATIONS);
+
+ // while stuff still in list, and test still running
+ // figure out what we expect
+ // pop an element
+ // if not what we expect
+ // how different is it?
+ // if within threshold, update expected
+
+ int elementCount = MINIMUM_ITERATIONS - 1;
while (jedis.llen(key) > 0 && runningCount.get() > 0) {
- iterationCount++;
- String expected = elementList.get(elementList.size() - iterationCount);
+ String expected = key + "-" + (elementCount - 1) + "-";
+ String element = expected;
try {
- String element = jedis.lpop(key);
- if (element.equals(previousElement)) {
- if (duplicateCount > 0) {
- fail("LPOP found more than one duplicate list entry in a row: " + element);
- }
- // Sometimes operations can get duplicated when buckets are moved or servers
- // crash.
- logger.info(key + ": found duplicate " + element + " at iteration " + iterationCount);
- duplicateCount++;
- continue;
- } else {
- if (!previousElement.equals("")) {
- String[] chunks = element.split("-");
- int elementCount = Integer.parseInt(chunks[4]);
- chunks = expected.split("-");
- int expectedCount = Integer.parseInt(chunks[4]);
- int elementDiff = expectedCount - elementCount;
- if (elementDiff > 1) {
- fail("LPOP repeated more than once for: " + element + " xc: " + expectedCount
- + " ec: " + elementCount + " ic: " + iterationCount + " prev: "
- + previousElement);
- } else {
- previousElement = element;
- continue;
- }
+ element = jedis.lpop(key);
+ if (!element.equals(expected)) {
+ int expectedCount = elementCount - 1;
+ String[] chunks = element.split("-");
+ elementCount = Integer.parseInt(chunks[4]);
+ int elementDiff = expectedCount - elementCount;
+ if (elementDiff > 1) {
+ fail("LPOP repeated more than once for: " + element + " xc: " + expectedCount
+ + " ec: " + elementCount);
}
}
- assertThat(poppedList).as(
- "LPOP returned duplicate element from key %s at iteration %s (%s)",
- key, iterationCount, element)
- .doesNotContain(element);
- assertThat(element)
- .as("LPOP returned unexpected element from key %s at iteration %s (was %s, expected %s, previous: %s)",
- key, iterationCount, element, expected, previousElement)
- .isEqualTo(expected);
- poppedList.add(element);
- previousElement = element;
- duplicateCount = 0;
} catch (Exception ex) {
runningCount.set(0); // test is over
throw new RuntimeException("Exception performing LPOP for list '"
- + key + "' at iteration " + iterationCount + ": " + ex.getMessage());
+ + key + "' at element " + element + ": " + ex.getMessage());
}
}
if (runningCount.get() > 0) {