in geode-core/src/integrationTest/java/org/apache/geode/TXJUnitTest.java [524:790]
public void testTxEvent() throws CacheException {
TransactionId myTxId;
Region<String, String> reg1 = region;
txMgr.setListener(new TransactionListener() {
@Override
public void afterCommit(TransactionEvent event) {
listenerAfterCommit = 1;
te = event;
}
@Override
public void afterFailedCommit(TransactionEvent event) {
listenerAfterFailedCommit = 1;
te = event;
}
@Override
public void afterRollback(TransactionEvent event) {
listenerAfterRollback = 1;
te = event;
}
@Override
public void close() {
listenerClose = 1;
}
});
// make sure each operation has the correct transaction event
// check create
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.create("key1", "value1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getInvalidateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getDestroyEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getCreateEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals("value1", ev.getNewValue());
assertEquals(null, ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
assertTrue(ev.getOperation().isDistributed());
}
}
// check put of existing entry
reg1.create("key1", "value0");
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.put("key1", "value1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getCreateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getInvalidateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getDestroyEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates = TxEventTestUtil.getPutEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals("value1", ev.getNewValue());
assertEquals("value0", ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
assertTrue(ev.getOperation().isDistributed());
}
}
reg1.localDestroy("key1");
// check put of non-existent entry
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.put("key1", "value0");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getInvalidateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getDestroyEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getCreateEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals("value0", ev.getNewValue());
assertEquals(null, ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
assertTrue(ev.getOperation().isDistributed());
}
}
// check d invalidate of existing entry
reg1.create("key1", "value0");
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.invalidate("key1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getCreateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getDestroyEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getInvalidateEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals(null, ev.getNewValue());
assertEquals("value0", ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
assertTrue(ev.getOperation().isDistributed());
}
}
reg1.localDestroy("key1");
// check l invalidate of existing entry
reg1.create("key1", "value0");
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.localInvalidate("key1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getCreateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getDestroyEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getInvalidateEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals(null, ev.getNewValue());
assertEquals("value0", ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
if (!isPR()) {
assertTrue(!ev.getOperation().isDistributed());
}
}
}
reg1.localDestroy("key1");
// check d destroy of existing entry
reg1.create("key1", "value0");
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.destroy("key1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getCreateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getInvalidateEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getDestroyEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals(null, ev.getNewValue());
assertEquals("value0", ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
assertTrue(ev.getOperation().isDistributed());
}
}
reg1.localDestroy("key1");
// check l destroy of existing entry
reg1.create("key1", "value0");
txMgr.begin();
myTxId = txMgr.getTransactionId();
reg1.localDestroy("key1");
txMgr.rollback();
assertEquals(1, te.getEvents().size());
assertEquals(0, TxEventTestUtil.getCreateEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getPutEvents(te.getEvents()).size());
assertEquals(0, TxEventTestUtil.getInvalidateEvents(te.getEvents()).size());
{
Cache teCache = te.getCache();
assertEquals(teCache, cache);
List<EntryEvent<?, ?>> creates =
TxEventTestUtil.getDestroyEvents(te.getEvents());
assertEquals(myTxId, te.getTransactionId());
assertEquals(1, creates.size());
for (EntryEvent ev : creates) {
assertEquals(myTxId, ev.getTransactionId());
assertTrue(ev.getRegion() == reg1);
assertEquals("key1", ev.getKey());
assertEquals(null, ev.getNewValue());
assertEquals("value0", ev.getOldValue());
verifyEventProps(ev);
assertEquals(null, ev.getCallbackArgument());
assertEquals(true, ev.isCallbackArgumentAvailable());
assertTrue(!ev.isOriginRemote());
assertTrue(!ev.getOperation().isExpiration());
if (!isPR()) {
assertTrue(!ev.getOperation().isDistributed());
}
}
}
reg1.localDestroy("key1");
}