public void testTransactionsSpanningKeysRollback() throws Exception { // we need 2 keys that reside on different caches... MagicKey k1 = new MagicKey("k1", c1, c2); // maps on to c1 and c2 MagicKey k2 = new MagicKey("k2", c2, c3); // maps on to c2 and c3 init(k1, k2); // now test a transaction that spans both keys. TransactionManager tm4 = getTransactionManager(c4); tm4.begin(); c4.put(k1, "new_value1"); c4.put(k2, "new_value2"); tm4.rollback(); assertIsInContainerImmortal(c1, k1); assertIsInContainerImmortal(c2, k1); assertIsInContainerImmortal(c2, k2); assertIsInContainerImmortal(c3, k2); assertTransactionOriginatorDataAfterRollback(c4, k1, k2); assertIsNotInL1(c1, k2); assertIsNotInL1(c3, k1); checkOwnership(k1, k2, "value1", "value2"); }
public void testPutFromNonOwner() throws Exception { // we need 2 keys that reside on different caches... MagicKey k1 = new MagicKey("k1", c1, c2); // maps on to c1 and c2 MagicKey k2 = new MagicKey("k2", c2, c3); // maps on to c2 and c3 init(k1, k2); TransactionManager tm4 = getTransactionManager(c4); tm4.begin(); assertRetVal("value1", c4.put(k1, "new_value")); assertRetVal("value2", c4.put(k2, "new_value")); tm4.rollback(); assertIsInContainerImmortal(c1, k1); assertIsInContainerImmortal(c2, k1); assertIsInContainerImmortal(c2, k2); assertIsInContainerImmortal(c3, k2); assertTransactionOriginatorDataAfterRollback(c4, k1, k2); assertIsNotInL1(c1, k2); assertIsNotInL1(c3, k1); checkOwnership(k1, k2, "value1", "value2"); }
public void testReplaceFromNonOwner() throws Exception { // we need 2 keys that reside on different caches... MagicKey k1 = new MagicKey("k1", c1, c2); // maps on to c1 and c2 MagicKey k2 = new MagicKey("k2", c2, c3); // maps on to c2 and c3 init(k1, k2); TransactionManager tm4 = getTransactionManager(c4); tm4.begin(); assertRetVal("value1", c4.replace(k1, "new_value")); assertRetVal("value2", c4.replace(k2, "new_value")); assertEquals("new_value", c4.get(k1)); assertEquals("new_value", c4.get(k2)); tm4.rollback(); assertIsInContainerImmortal(c1, k1); assertIsInContainerImmortal(c2, k1); assertIsInContainerImmortal(c2, k2); assertIsInContainerImmortal(c3, k2); assertTransactionOriginatorDataAfterRollback(c4, k1, k2); assertIsNotInL1(c1, k2); assertIsNotInL1(c3, k1); checkOwnership(k1, k2, "value1", "value2"); }
public void testPutIfAbsentFromNonOwner() throws Exception { // we need 2 keys that reside on different caches... MagicKey k1 = new MagicKey("k1", c1, c2); // maps on to c1 and c2 MagicKey k2 = new MagicKey("k2", c2, c3); // maps on to c2 and c3 init(k1, k2); TransactionManager tm4 = getTransactionManager(c4); LockManager lockManager4 = extractComponent(c4, LockManager.class); tm4.begin(); assertRetVal("value1", c4.putIfAbsent(k1, "new_value")); assertRetVal("value2", c4.putIfAbsent(k2, "new_value")); assertEquals("value1", c4.get(k1)); assertEquals("value2", c4.get(k2)); tm4.rollback(); assertFalse(lockManager4.isLocked(k1)); assertFalse(lockManager4.isLocked(k2)); assertEquals("value1", c2.get(k1)); assertEquals("value2", c2.get(k2)); assertIsInContainerImmortal(c1, k1); assertIsInContainerImmortal(c2, k1); assertIsInContainerImmortal(c2, k2); assertIsInContainerImmortal(c3, k2); assertTransactionOriginatorDataAfterRollback(c4, k1, k2); assertIsNotInL1(c1, k2); assertIsNotInL1(c3, k1); checkOwnership(k1, k2, "value1", "value2"); }
assertTransactionOriginatorDataAfterRollback(c4, k1, k2); assertIsNotInL1(c1, k2); assertIsNotInL1(c3, k1);