You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by zh...@apache.org on 2020/07/08 06:36:36 UTC
[geode] branch feature/GEODE-8334 updated: add junit tests
This is an automated email from the ASF dual-hosted git repository.
zhouxj pushed a commit to branch feature/GEODE-8334
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/feature/GEODE-8334 by this push:
new d233d3b add junit tests
d233d3b is described below
commit d233d3bfcd92eedd60a42ff4e2fe340193bcbab1
Author: zhouxh <gz...@pivotal.io>
AuthorDate: Tue Jul 7 23:35:38 2020 -0700
add junit tests
---
.../cache/partitioned/PutAllPRMessageTest.java | 33 +++++++++++++++++++++
.../cache/partitioned/RemoveAllPRMessageTest.java | 34 ++++++++++++++++++++++
2 files changed, 67 insertions(+)
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PutAllPRMessageTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PutAllPRMessageTest.java
index ab82a93..c5dd140 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PutAllPRMessageTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/PutAllPRMessageTest.java
@@ -15,9 +15,12 @@
package org.apache.geode.internal.cache.partitioned;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
@@ -119,4 +122,34 @@ public class PutAllPRMessageTest {
eq(regionDestroyedException));
}
+ @Test
+ public void rvvLockedAfterKeysAreLockedAndUnlockRVVBeforeKeys() throws Exception {
+ PutAllPRMessage message = spy(new PutAllPRMessage(bucketId, 1, false, false, false, null));
+ message.addEntry(entryData);
+ doReturn(keys).when(message).getKeysToBeLocked();
+ when(bucketRegion.waitUntilLocked(keys)).thenReturn(true);
+ when(bucketRegion.doLockForPrimary(false)).thenThrow(new PrimaryBucketException());
+ doNothing().when(bucketRegion).lockRVVForBulkOp();
+ doNothing().when(bucketRegion).unlockRVVForBulkOp();
+
+ InternalCache cache = mock(InternalCache.class);
+ InternalDistributedSystem ids = mock(InternalDistributedSystem.class);
+ when(bucketRegion.getCache()).thenReturn(cache);
+ when(cache.getDistributedSystem()).thenReturn(ids);
+ when(ids.getOffHeapStore()).thenReturn(null);
+
+ try {
+ message.doLocalPutAll(partitionedRegion, mock(InternalDistributedMember.class), 1);
+ fail("Expect PrimaryBucketException");
+ } catch (Exception e) {
+ assertThat(e instanceof PrimaryBucketException);
+ }
+
+ InOrder inOrder = inOrder(bucketRegion);
+ inOrder.verify(bucketRegion).waitUntilLocked(keys);
+ inOrder.verify(bucketRegion).lockRVVForBulkOp();
+ inOrder.verify(bucketRegion).unlockRVVForBulkOp();
+ inOrder.verify(bucketRegion).removeAndNotifyKeys(keys);
+ }
+
}
diff --git a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RemoveAllPRMessageTest.java b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RemoveAllPRMessageTest.java
index 2309cb0..19d508e 100644
--- a/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RemoveAllPRMessageTest.java
+++ b/geode-core/src/test/java/org/apache/geode/internal/cache/partitioned/RemoveAllPRMessageTest.java
@@ -14,9 +14,12 @@
*/
package org.apache.geode.internal.cache.partitioned;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.RETURNS_DEEP_STUBS;
+import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.inOrder;
import static org.mockito.Mockito.mock;
@@ -131,4 +134,35 @@ public class RemoveAllPRMessageTest {
verify(dataStore).checkRegionDestroyedOnBucket(eq(bucketRegion), eq(true),
eq(regionDestroyedException));
}
+
+ @Test
+ public void rvvLockedAfterKeysAreLockedAndUnlockRVVBeforeKeys() throws Exception {
+ RemoveAllPRMessage message =
+ spy(new RemoveAllPRMessage(bucketId, 1, false, false, false, null));
+ message.addEntry(entryData);
+ doReturn(keys).when(message).getKeysToBeLocked();
+ when(bucketRegion.waitUntilLocked(keys)).thenReturn(true);
+ when(bucketRegion.doLockForPrimary(false)).thenThrow(new PrimaryBucketException());
+ doNothing().when(bucketRegion).lockRVVForBulkOp();
+ doNothing().when(bucketRegion).unlockRVVForBulkOp();
+
+ InternalCache cache = mock(InternalCache.class);
+ InternalDistributedSystem ids = mock(InternalDistributedSystem.class);
+ when(bucketRegion.getCache()).thenReturn(cache);
+ when(cache.getDistributedSystem()).thenReturn(ids);
+ when(ids.getOffHeapStore()).thenReturn(null);
+
+ try {
+ message.doLocalRemoveAll(partitionedRegion, mock(InternalDistributedMember.class), true);
+ fail("Expect PrimaryBucketException");
+ } catch (Exception e) {
+ assertThat(e instanceof PrimaryBucketException);
+ }
+
+ InOrder inOrder = inOrder(bucketRegion);
+ inOrder.verify(bucketRegion).waitUntilLocked(keys);
+ inOrder.verify(bucketRegion).lockRVVForBulkOp();
+ inOrder.verify(bucketRegion).unlockRVVForBulkOp();
+ inOrder.verify(bucketRegion).removeAndNotifyKeys(keys);
+ }
}