@Test public void lockKeysAndPrimaryReturnFalseIfDoesNotNeedWriteLock() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(false).when(bucketRegion).needWriteLock(event); assertThat(bucketRegion.lockKeysAndPrimary(event)).isFalse(); }
@Test(expected = RegionDestroyedException.class) public void basicUpdateEntryVersionDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); when(event.getRegion()).thenReturn(bucketRegion); doReturn(true).when(bucketRegion).hasSeenEvent(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicUpdateEntryVersion(event); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void waitUntilLockedReturnsTrueIfNoOtherThreadLockedKeys() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); Integer[] keys = {1}; doReturn(null).when(bucketRegion).searchAndLock(keys); assertThat(bucketRegion.waitUntilLocked(keys)).isTrue(); }
@Test public void basicPutEntryReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicPutEntry(event, 1); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicInvalidateReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.basicInvalidate(event, false, false); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void waitUntilLockedThrowsIfFoundLockAndPartitionedRegionIsClosing() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); Integer[] keys = {1}; doReturn(mock(LockObject.class)).when(bucketRegion).searchAndLock(keys); doThrow(regionDestroyedException).when(partitionedRegion) .checkReadiness(); bucketRegion.waitUntilLocked(keys); }
@Test(expected = RegionDestroyedException.class) public void basicPutEntryDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicPutEntry(event, 1); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void virtualPutDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.virtualPut(event, false, true, null, false, 1, true); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void basicInvalidateDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicInvalidate(event, false, false); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void basicDestroyDoesNotReleaseLockIfKeysAndPrimaryNotLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doThrow(regionDestroyedException).when(bucketRegion).lockKeysAndPrimary(event); bucketRegion.basicDestroy(event, false, null); verify(bucketRegion, never()).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void basicDestroyReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.basicDestroy(event, false, null); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test public void lockKeysAndPrimaryReleaseLockHeldIfDoesNotLockForPrimary() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doReturn(true).when(bucketRegion).waitUntilLocked(keys); doReturn(true).when(bucketRegion).doLockForPrimary(false); bucketRegion.lockKeysAndPrimary(event); verify(bucketRegion, never()).removeAndNotifyKeys(keys); }
@Test public void basicUpdateEntryVersionReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); when(event.getRegion()).thenReturn(bucketRegion); doReturn(true).when(bucketRegion).hasSeenEvent(event); doReturn(mock(AbstractRegionMap.class)).when(bucketRegion).getRegionMap(); bucketRegion.basicUpdateEntryVersion(event); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = RegionDestroyedException.class) public void lockKeysAndPrimaryThrowsIfWaitUntilLockedThrows() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doThrow(regionDestroyedException).when(bucketRegion).waitUntilLocked(keys); bucketRegion.lockKeysAndPrimary(event); }
@Test public void virtualPutReleaseLockIfKeysAndPrimaryLocked() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(true).when(bucketRegion).lockKeysAndPrimary(event); doReturn(true).when(bucketRegion).hasSeenEvent(event); bucketRegion.virtualPut(event, false, true, null, false, 1, true); verify(bucketRegion).releaseLockForKeysAndPrimary(eq(event)); }
@Test(expected = PrimaryBucketException.class) public void lockKeysAndPrimaryReleaseLockHeldIfDoLockForPrimaryThrows() { BucketRegion bucketRegion = spy(new BucketRegion(regionName, regionAttributes, partitionedRegion, cache, internalRegionArgs)); doReturn(keys).when(bucketRegion).getKeysToBeLocked(event); doReturn(true).when(bucketRegion).waitUntilLocked(keys); doThrow(new PrimaryBucketException()).when(bucketRegion).doLockForPrimary(false); bucketRegion.lockKeysAndPrimary(event); verify(bucketRegion).removeAndNotifyKeys(keys); }
@Override protected DistributedRegion createAndDefineRegion(boolean isConcurrencyChecksEnabled, RegionAttributes ra, InternalRegionArguments ira, GemFireCacheImpl cache) { BucketRegion br = new BucketRegion("testRegion", ra, null, cache, ira); // it is necessary to set the event tracker to initialized, since initialize() in not being // called on the instantiated region br.getEventTracker().setInitialized(); // since br is a real bucket region object, we need to tell mockito to monitor it br = spy(br); // doNothing().when(dm).addMembershipListener(any()); doNothing().when(br).distributeUpdateOperation(any(), anyLong()); doNothing().when(br).distributeDestroyOperation(any()); doNothing().when(br).distributeInvalidateOperation(any()); doNothing().when(br).distributeUpdateEntryVersionOperation(any()); doNothing().when(br).checkForPrimary(); doNothing().when(br).handleWANEvent(any()); doReturn(false).when(br).needWriteLock(any()); return br; }
internalRegionArgs); } else { newRegion = new BucketRegion(subregionName, regionAttributes, this, this.cache, internalRegionArgs);