You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2017/04/13 17:18:33 UTC

[12/22] geode git commit: GEODE-2694: Add test coverage on RECOVERED_FROM_DISK bit after gii.

GEODE-2694: Add test coverage on RECOVERED_FROM_DISK bit after gii.


Project: http://git-wip-us.apache.org/repos/asf/geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/geode/commit/60a96cc2
Tree: http://git-wip-us.apache.org/repos/asf/geode/tree/60a96cc2
Diff: http://git-wip-us.apache.org/repos/asf/geode/diff/60a96cc2

Branch: refs/heads/feature/GEODE-2632
Commit: 60a96cc2b809ad28a21ac41e54f795274060fa04
Parents: 122e650
Author: eshu <es...@pivotal.io>
Authored: Wed Apr 12 10:11:53 2017 -0700
Committer: eshu <es...@pivotal.io>
Committed: Wed Apr 12 10:11:53 2017 -0700

----------------------------------------------------------------------
 .../geode/internal/cache/GIIDeltaDUnitTest.java | 66 ++++++++++++++++++++
 1 file changed, 66 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/geode/blob/60a96cc2/geode-core/src/test/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
----------------------------------------------------------------------
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
index 950eb43..d07227b 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/GIIDeltaDUnitTest.java
@@ -852,6 +852,72 @@ public class GIIDeltaDUnitTest extends JUnit4CacheTestCase {
   }
 
   /**
+   * P, R has key1 unchanged, make certain unfinished operations on R to trigger full gii.
+   */
+  @Test
+  public void testRecoveredFromDiskBitAfterFullGII() {
+    prepareForEachTest();
+    getMemberID(P);
+    final DiskStoreID memberR = getMemberID(R);
+    assertEquals(0, DistributedCacheOperation.SLOW_DISTRIBUTION_MS);
+
+    verifyRecoveredFromDiskBitAfterGII(memberR, true);
+  }
+
+  /**
+   * P, R has key1 unchanged, make one unfinished operation on R to trigger delta gii.
+   */
+  @Test
+  public void testRecoveredFromDiskBitAfterDeltaGII() {
+    prepareForEachTest();
+    getMemberID(P);
+    final DiskStoreID memberR = getMemberID(R);
+    assertEquals(0, DistributedCacheOperation.SLOW_DISTRIBUTION_MS);
+
+    verifyRecoveredFromDiskBitAfterGII(memberR, false);
+  }
+
+  private void verifyRecoveredFromDiskBitAfterGII(final DiskStoreID memberR, boolean isFullGII) {
+    final long[] exceptionlist = {3, 4};
+    doOnePut(R, 1, "key1");
+    doOnePut(R, 2, "key2");
+
+    R.invoke(() -> GIIDeltaDUnitTest.slowGII(exceptionlist));
+    doOnePutAsync(R, 3, "key2");
+    waitForToVerifyRVV(R, memberR, 3, null, 0); // R's rvv=r3, gc=0
+
+    if (isFullGII) {
+      doOnePutAsync(R, 4, "key2");
+      waitForToVerifyRVV(R, memberR, 4, null, 0); // R's rvv=r4, gc=0
+    }
+
+    closeCache(R);
+
+    doOnePut(P, 1, "key2");
+
+    // restart R
+    createDistributedRegion(R);
+
+    R.invoke(() -> verifyRecoveredFromDiskBit("key2", isFullGII, true));
+    R.invoke(() -> verifyRecoveredFromDiskBit("key1", isFullGII, false));
+  }
+
+  private void verifyRecoveredFromDiskBit(String key, boolean isFullGII,
+      boolean versionTagBeenChanged) {
+    LocalRegion lr = (LocalRegion) getCache().getRegion(REGION_NAME);
+    DiskEntry re = (DiskEntry) lr.getRegionEntry(key);
+    DiskId id = re.getDiskId();
+
+    byte usebits = id.getUserBits();
+    if (!versionTagBeenChanged && !isFullGII) {
+      // in delta gii, versionTag not changed entry should kept the recoveredFromDisk bit
+      assertTrue(EntryBits.isRecoveredFromDisk(usebits));
+    } else {
+      assertFalse(EntryBits.isRecoveredFromDisk(usebits));
+    }
+  }
+
+  /**
    * P1, P2, P3 R does GII but wait at BeforeSavedReceivedRVV, so R's RVV=P3R0 P4, P5 R goes on to
    * save received RVV. R's new RVV=P5(3-6)R0
    *