void checkPutIfAbsentResult(EntryEventImpl event, Object value, Object result) { if (result != null) { // we may see a non null result possibly due to retry if (event.hasRetried() && putIfAbsentResultHasSameValue(true, value, result)) { if (logger.isDebugEnabled()) { logger.debug("retried putIfAbsent and result is the value to be put," + " treat as a successful putIfAbsent"); } } else { // customers don't see this exception throw new EntryNotFoundException("entry existed for putIfAbsent"); } } }
@Test public void putIfAbsentResultHasSameValueReturnTrueIfResultIsInvalidTokenAndValueToBePutIsNull() { when(region.putIfAbsentResultHasSameValue(true, null, Token.INVALID)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(true, null, Token.INVALID)).isTrue(); }
@Test public void putIfAbsentResultHasSameValueReturnFalseIfResultIsInvalidTokenAndValueToBePutIsNotNull() { when(region.putIfAbsentResultHasSameValue(true, value, Token.INVALID)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(true, value, Token.INVALID)).isFalse(); }
@Test public void putIfAbsentResultHasSameValueReturnFalseIfResultDoesNotHaveSameValue() { Object result = "differentValue"; when(region.putIfAbsentResultHasSameValue(true, value, result)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(true, value, result)).isFalse(); verify(region, never()).getAttributes(); }
@Test public void putIfAbsentResultHasSameValueChecksRegionAttributesIfNotFromClient() { Object result = "value"; when(region.putIfAbsentResultHasSameValue(false, value, result)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(false, value, result)).isTrue(); verify(region).getAttributes(); }
@Test public void putIfAbsentResultHasSameValueReturnTrueIfResultHasSameValue() { Object result = "value"; when(region.putIfAbsentResultHasSameValue(true, value, result)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(true, value, result)).isTrue(); verify(region, never()).getAttributes(); }
@Test public void checkPutIfAbsentResultSucceedsIfEventHasRetriedAndResultHasSameValue() { Object result = new Object(); when(event.hasRetried()).thenReturn(true); when(region.putIfAbsentResultHasSameValue(true, value, result)).thenReturn(true); doCallRealMethod().when(region).checkPutIfAbsentResult(event, value, result); region.checkPutIfAbsentResult(event, value, result); verify(event).hasRetried(); verify(region).putIfAbsentResultHasSameValue(true, value, result); }
@Test(expected = EntryNotFoundException.class) public void checkPutIfAbsentResultThrowsIfEventHasRetriedButResultNotHaveSameValue() { Object result = new Object(); when(event.hasRetried()).thenReturn(true); when(region.putIfAbsentResultHasSameValue(true, value, result)).thenReturn(false); doCallRealMethod().when(region).checkPutIfAbsentResult(event, value, result); region.checkPutIfAbsentResult(event, value, result); }
@Test public void putIfAbsentResultHasSameValueReturnTrueIfResultHasSameValueAndNotFromClient() { Object result = new VMCachedDeserializable(EntryEventImpl.serialize(value)); when(region.putIfAbsentResultHasSameValue(false, value, result)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(false, value, result)).isTrue(); verify(region).getAttributes(); }
@Test public void putIfAbsentResultHasSameValueReturnFalseIfResultDoesNotHaveSameValueAndNotFromClient() { Object oldValue = "differentValue"; Object result = new VMCachedDeserializable(EntryEventImpl.serialize(oldValue)); when(region.putIfAbsentResultHasSameValue(false, value, result)).thenCallRealMethod(); assertThat(region.putIfAbsentResultHasSameValue(false, value, result)).isFalse(); verify(region).getAttributes(); }
if (!basicPut(event, ifNew, ifOld, oldValue, requireOldValue)) { Object result = event.getOldValue(); if (event.isPossibleDuplicate() && putIfAbsentResultHasSameValue(false, value, result)) { if (logger.isDebugEnabled()) { logger.debug("possible duplicate putIfAbsent event and result is the value to be put,"