[jboss-svn-commits] JBL Code SVN: r21594 - labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Aug 18 03:27:56 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-08-18 03:27:55 -0400 (Mon, 18 Aug 2008)
New Revision: 21594
Added:
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java
Log:
JBRULES-1738 Support XAResource transactions and generic save points
JBRULES-1739 in-memory XAResource
-Added PersistenceManagerTest
Added: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java 2008-08-18 07:27:55 UTC (rev 21594)
@@ -0,0 +1,103 @@
+package org.drools.persistence.memory;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.drools.persistence.DroolsXid;
+import org.drools.persistence.memory.MemoryPersistenceManager;
+import org.drools.persistence.memory.MemoryXaResource;
+import org.drools.transaction.MockByteArraySnapshotter;
+
+import junit.framework.TestCase;
+
+public class MemoryPersistenceManagerTest extends TestCase {
+ private byte[] data1 = new byte[] { 1, 1, 1, 1, 1 };
+ private byte[] data2 = new byte[] { 1, 1, 1, 1, 0 };
+ private byte[] data3 = new byte[] { 1, 1, 1, 0, 0 };
+
+ MockByteArraySnapshotter snapshotter;
+ MemoryPersistenceManager pm;
+
+ protected void setUp() throws Exception {
+ snapshotter = new MockByteArraySnapshotter();
+ pm = new MemoryPersistenceManager( snapshotter );
+ }
+
+ public void testSave() {
+ snapshotter.loadSnapshot( data1 );
+ pm.save();
+ assertTrue( assertEquals( data1, snapshotter.bytes ) );
+
+ snapshotter.loadSnapshot( data2 );
+ assertTrue( assertEquals( data2, snapshotter.bytes ) );
+
+ pm.load();
+ assertTrue( assertEquals( data1, snapshotter.bytes ) );
+ }
+
+ public void testSaveInOpenTransaction() throws XAException {
+ snapshotter.loadSnapshot( data1 );
+
+ XAResource xa = pm.getXAResource();
+ Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
+ xa.start(xid, XAResource.TMNOFLAGS);
+
+ try {
+ pm.save();
+ fail( "save should fail as the session currently has an open transaction" );
+ } catch ( Exception e) {
+ // success
+ }
+ }
+
+ public void testLoadInOpenTransaction() throws XAException {
+ snapshotter.loadSnapshot( data1 );
+ pm.save();
+
+ XAResource xa = pm.getXAResource();
+ Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
+ xa.start(xid, XAResource.TMNOFLAGS);
+
+ try {
+ pm.load();
+ fail( "load should fail as the session currently has an open transaction" );
+ } catch ( Exception e) {
+ // success
+ }
+ }
+
+ public void testLoadSaveAfterTransaction() throws Exception {
+ snapshotter.loadSnapshot( data1 );
+ XAResource xa = pm.getXAResource();
+ Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
+ xa.start(xid, XAResource.TMNOFLAGS);
+
+
+ snapshotter.loadSnapshot( data2 );
+ xa.commit(xid, true);
+
+ pm.save();
+ assertTrue( assertEquals( data2, snapshotter.bytes ) );
+
+ snapshotter.loadSnapshot( data3 );
+ assertTrue( assertEquals( data3, snapshotter.bytes ) );
+
+ pm.load();
+ assertTrue( assertEquals( data2, snapshotter.bytes ) );
+ }
+
+ public boolean assertEquals( byte[] bytes1, byte[] bytes2) {
+ if ( bytes1.length != bytes2.length ) {
+ return false;
+ }
+
+ for ( int i = 0; i < bytes1.length; i++ ) {
+ if ( bytes1[i] != bytes2[i] ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+}
More information about the jboss-svn-commits
mailing list