public void testTxCompletion() throws Exception
{
AsyncReplTestTL tl = threadLocal.get();
CacheSPI<Object, Object> cache1 = tl.cache1;
CacheSPI<Object, Object> cache2 = tl.cache2;
ReplicationListener replListener1 = tl.replListener1;
ReplicationListener replListener2 = tl.replListener2;
// test a very simple replication.
Fqn fqn = Fqn.fromString("/a");
String key = "key";
replListener2.expect(PutKeyValueCommand.class);
cache1.put(fqn, key, "value1");
// allow for replication
replListener2.waitForReplicationToOccur();
assertEquals("value1", cache1.get(fqn, key));
assertEquals("value1", cache2.get(fqn, key));
TransactionManager mgr = cache1.getTransactionManager();
mgr.begin();
replListener2.expect(PutKeyValueCommand.class);
cache1.put(fqn, key, "value2");
assertEquals("value2", cache1.get(fqn, key));
assertEquals("value1", cache2.get(fqn, key));
mgr.commit();
replListener2.waitForReplicationToOccur();
assertEquals("value2", cache1.get(fqn, key));
assertEquals("value2", cache2.get(fqn, key));
mgr.begin();