[jboss-cvs] JBossCache/tests/functional/org/jboss/cache/notifications ...
Manik Surtani
msurtani at jboss.com
Tue Aug 8 08:21:23 EDT 2006
User: msurtani
Date: 06/08/08 08:21:23
Added: tests/functional/org/jboss/cache/notifications Tag:
Branch_JBossCache_1_4_0
TreeCacheListenerOptimisticTest.java
TreeCacheListenerTest.java
Log:
JBCACHE-729
Revision Changes Path
No revision
No revision
1.1.2.1 +17 -0 JBossCache/tests/functional/org/jboss/cache/notifications/Attic/TreeCacheListenerOptimisticTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TreeCacheListenerOptimisticTest.java
===================================================================
RCS file: TreeCacheListenerOptimisticTest.java
diff -N TreeCacheListenerOptimisticTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TreeCacheListenerOptimisticTest.java 8 Aug 2006 12:21:23 -0000 1.1.2.1
@@ -0,0 +1,17 @@
+/*
+ * JBoss, Home of Professional Open Source
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package org.jboss.cache.notifications;
+
+public class TreeCacheListenerOptimisticTest extends TreeCacheListenerTest
+{
+
+ public TreeCacheListenerOptimisticTest(String s)
+ {
+ super(s);
+ optLocking = true;
+ }
+}
1.1.2.1 +187 -0 JBossCache/tests/functional/org/jboss/cache/notifications/Attic/TreeCacheListenerTest.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: TreeCacheListenerTest.java
===================================================================
RCS file: TreeCacheListenerTest.java
diff -N TreeCacheListenerTest.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ TreeCacheListenerTest.java 8 Aug 2006 12:21:23 -0000 1.1.2.1
@@ -0,0 +1,187 @@
+/*****************************************
+ * *
+ * JBoss Portal: The OpenSource Portal *
+ * *
+ * Distributable under LGPL license. *
+ * See terms of license at gnu.org. *
+ * *
+ *****************************************/
+package org.jboss.cache.notifications;
+
+import junit.framework.TestCase;
+import org.jboss.cache.lock.IsolationLevel;
+import org.jboss.cache.TreeCache;
+import org.jboss.cache.DummyTransactionManagerLookup;
+import org.jboss.cache.AbstractTreeCacheListener;
+import org.jboss.cache.Fqn;
+import org.jgroups.View;
+
+import javax.transaction.TransactionManager;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Collections;
+
+/**
+ * @author <a href="mailto:julien at jboss.org">Julien Viet</a>
+ * @version $Id: TreeCacheListenerTest.java,v 1.1.2.1 2006/08/08 12:21:23 msurtani Exp $
+ */
+public class TreeCacheListenerTest extends TestCase
+{
+
+ protected boolean optLocking = false;
+
+ public TreeCacheListenerTest(String s)
+ {
+ super(s);
+ }
+
+ private TreeCache cache;
+
+ protected void setUp() throws Exception
+ {
+ super.setUp();
+ cache = new TreeCache();
+ cache.setCacheMode(TreeCache.LOCAL);
+ cache.setIsolationLevel(IsolationLevel.REPEATABLE_READ);
+ if (optLocking) cache.setNodeLockingScheme("OPTIMISTIC");
+ cache.setTransactionManagerLookup(new DummyTransactionManagerLookup());
+ cache.create();
+ cache.start();
+ }
+
+ protected void tearDown() throws Exception
+ {
+ super.tearDown();
+ cache.stop();
+ cache.destroy();
+ }
+
+ public void testRemovePropertyWithCommit() throws Exception
+ {
+ cache.put("/", "name", "value");
+
+ EventLog el = new EventLog();
+ cache.addTreeCacheListener(el);
+
+ TransactionManager tm = cache.getTransactionManager();
+ tm.begin();
+ cache.remove("/", "name");
+ tm.commit();
+
+ assertEquals(Arrays.asList(new Object[]{"modify about to modify local /","modified /", "modify Modified local /"}), el.events);
+ el.events.clear();
+ }
+
+ public void testNodeCreatedAndModifiedEvent() throws Exception
+ {
+ EventLog el = new EventLog();
+ cache.addTreeCacheListener(el);
+ cache.put("/hello/world", "x", "y");
+ System.out.println(el.events);
+
+ List expectedChanges = new ArrayList();
+ expectedChanges.add("created /hello");
+ expectedChanges.add("created /hello/world");
+
+ if (optLocking)
+ {
+ // all creations are fired as mods since these reflect as modified nodes in the workspace. Opt locking only.
+ expectedChanges.add("modify about to modify local /");
+ expectedChanges.add("modified /");
+ expectedChanges.add("modify Modified local /");
+ expectedChanges.add("modify about to modify local /hello");
+ expectedChanges.add("modified /hello");
+ expectedChanges.add("modify Modified local /hello");
+ }
+
+ expectedChanges.add("modify about to modify local /hello/world");
+ expectedChanges.add("modified /hello/world");
+ expectedChanges.add("modify Modified local /hello/world");
+
+ //assertEquals(expectedChanges.size(), el.events.size());
+ assertEquals(expectedChanges, el.events);
+ el.events.clear();
+ }
+
+ public void testRemoveNodeWithRollback() throws Exception
+ {
+ cache.put("/child", new HashMap());
+
+ EventLog el = new EventLog();
+ cache.addTreeCacheListener(el);
+
+ TransactionManager tm = cache.getTransactionManager();
+ tm.begin();
+ cache.remove("/child");
+ tm.rollback();
+ if (optLocking)
+ {
+ // in opt locking, a rollback will result in nothing having changed in the cache and hence
+ // no notifications will fire.
+ assertEquals(Collections.EMPTY_LIST, el.events);
+ }
+ else
+ {
+ // with pess locking, a rollback consists of modifications + equal and opposite modifications.
+ assertEquals(Arrays.asList(new Object[]{"remove about to remove local /child","removed /child","remove Removed local /child","created /child"}), el.events);
+ }
+ el.events.clear();
+ }
+
+ public static class EventLog extends AbstractTreeCacheListener
+ {
+ public final List events = new ArrayList();
+ public void nodeCreated(Fqn fqn)
+ {
+ events.add("created " + fqn);
+ }
+ public void nodeRemove(Fqn fqn, boolean pre, boolean isLocal)
+ {
+ events.add("remove "+
+ (pre? "about to remove " : "Removed ") +
+ (isLocal? "local " : "remote ") + fqn);
+ }
+ public void nodeRemoved(Fqn fqn)
+ {
+ events.add("removed " + fqn);
+ }
+ public void nodeLoaded(Fqn fqn)
+ {
+ throw new UnsupportedOperationException();
+ }
+ public void nodeEvicted(Fqn fqn)
+ {
+ throw new UnsupportedOperationException();
+ }
+ public void nodeModify(Fqn fqn, boolean pre, boolean isLocal)
+ {
+ events.add("modify "+
+ (pre? "about to modify " : "Modified ") +
+ (isLocal? "local " : "remote ") + fqn);
+ }
+ public void nodeModified(Fqn fqn)
+ {
+ events.add("modified " + fqn);
+ }
+ public void nodeVisited(Fqn fqn)
+ {
+ throw new UnsupportedOperationException();
+ }
+ public void cacheStarted(TreeCache treeCache)
+ {
+ throw new UnsupportedOperationException();
+ }
+ public void cacheStopped(TreeCache treeCache)
+ {
+ throw new UnsupportedOperationException();
+ }
+ public void viewChange(View view)
+ {
+ throw new UnsupportedOperationException();
+ }
+ }
+
+
+}
More information about the jboss-cvs-commits
mailing list