[jboss-svn-commits] JBL Code SVN: r21620 - in labs/jbossrules/trunk/drools-core/src: test/java/org/drools/persistence/memory and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Aug 19 01:23:08 EDT 2008
Author: mark.proctor at jboss.com
Date: 2008-08-19 01:23:08 -0400 (Tue, 19 Aug 2008)
New Revision: 21620
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java
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/MemoryPersistenceSessionTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java
Log:
JBRULES-1738 Support XAResource transactions and generic save points
JBRULES-1739 in-memory XAResource
-MemoryPersistenceManager now works with sessions
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/ByteArraySnapshotter.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -5,6 +5,6 @@
public interface ByteArraySnapshotter {
public byte[] getSnapshot();
-
- public void loadSnapshot(byte[] bytes);
+
+ public void loadSnapshot(byte[] bytes);
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/DroolsXid.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -1,38 +1,62 @@
package org.drools.persistence;
-import javax.transaction.xa.*;
+import javax.transaction.xa.Xid;
-
- public class DroolsXid implements Xid
- {
- protected int formatId;
- protected byte gtrid[];
- protected byte bqual[];
+public class DroolsXid
+ implements
+ Xid {
+ protected int formatId;
+ protected byte gtrid[];
+ protected byte bqual[];
- public DroolsXid()
- {
- }
+ public DroolsXid() {
+ }
- public DroolsXid(int formatId, byte gtrid[], byte bqual[])
- {
- this.formatId = formatId;
- this.gtrid = gtrid;
- this.bqual = bqual;
- }
+ public DroolsXid(int formatId,
+ byte gtrid[],
+ byte bqual[]) {
+ this.formatId = formatId;
+ this.gtrid = gtrid;
+ this.bqual = bqual;
+ }
+ public int getFormatId() {
+ return formatId;
+ }
- public int getFormatId()
- {
- return formatId;
+ public byte[] getBranchQualifier() {
+ return bqual;
+ }
+
+ public byte[] getGlobalTransactionId() {
+ return gtrid;
+ }
+
+ public String toString() {
+ int hexVal;
+ StringBuffer sb = new StringBuffer( 512 );
+ sb.append( "formatId=" + formatId );
+ sb.append( " gtrid(" + gtrid.length + ")={0x" );
+ for ( int i = 0; i < gtrid.length; i++ ) {
+ hexVal = gtrid[i] & 0xFF;
+ if ( hexVal < 0x10 ) {
+ sb.append( "0" + Integer.toHexString( gtrid[i] & 0xFF ) );
+ } else {
+ sb.append( Integer.toHexString( gtrid[i] & 0xFF ) );
+ }
}
- public byte[] getBranchQualifier()
- {
- return bqual;
+ sb.append( "} bqual(" + bqual.length + ")={0x" );
+ for ( int i = 0; i < bqual.length; i++ ) {
+ hexVal = bqual[i] & 0xFF;
+ if ( hexVal < 0x10 ) {
+ sb.append( "0" + Integer.toHexString( bqual[i] & 0xFF ) );
+ } else {
+ sb.append( Integer.toHexString( bqual[i] & 0xFF ) );
+ }
}
- public byte[] getGlobalTransactionId()
- {
- return gtrid;
- }
+ sb.append( "}" );
+ return sb.toString();
}
+}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/PersistenceManager.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -2,15 +2,14 @@
import javax.transaction.xa.XAResource;
-
public interface PersistenceManager {
- XAResource getXAResource();
+ XAResource getXAResource();
- Transaction getTransaction();
+ Transaction getTransaction();
- void save();
+ void save();
- void load();
+ void load();
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/StatefulSessionSnapshotter.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -9,32 +9,40 @@
import org.drools.marshalling.DefaultMarshaller;
import org.drools.marshalling.Marshaller;
-public class StatefulSessionSnapshotter implements ByteArraySnapshotter{
- StatefulSession session;
- Marshaller marshaller = new DefaultMarshaller();
-
- public StatefulSessionSnapshotter(StatefulSession session) {
- this.session = session;
- }
+public class StatefulSessionSnapshotter
+ implements
+ ByteArraySnapshotter {
+ StatefulSession session;
+ Marshaller marshaller = new DefaultMarshaller();
- public byte[] getSnapshot() {
+ public StatefulSessionSnapshotter(StatefulSession session) {
+ this.session = session;
+ }
+
+ public byte[] getSnapshot() {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
- marshaller.write( baos, (InternalRuleBase) session.getRuleBase(), session );
- } catch (IOException e) {
- throw new RuntimeException( "Unable to get session snapshot", e );
+ marshaller.write( baos,
+ (InternalRuleBase) session.getRuleBase(),
+ session );
+ } catch ( IOException e ) {
+ throw new RuntimeException( "Unable to get session snapshot",
+ e );
}
-
+
return baos.toByteArray();
- }
+ }
- public void loadSnapshot(byte[] bytes) {
+ public void loadSnapshot(byte[] bytes) {
ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
try {
- marshaller.read( bais, (InternalRuleBase) session.getRuleBase(), session );
- } catch (Exception e) {
- throw new RuntimeException( "Unable to load session snapshot", e );
+ marshaller.read( bais,
+ (InternalRuleBase) session.getRuleBase(),
+ session );
+ } catch ( Exception e ) {
+ throw new RuntimeException( "Unable to load session snapshot",
+ e );
}
-
- }
+
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/persistence/Transaction.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -5,30 +5,33 @@
import javax.transaction.xa.Xid;
public class Transaction {
- private Xid xid;
-
- XAResource xaResource;
-
- public Transaction(Xid xid, XAResource xaResource) {
+ private Xid xid;
+
+ XAResource xaResource;
+
+ public Transaction(Xid xid,
+ XAResource xaResource) {
this.xid = xid;
this.xaResource = xaResource;
}
-
+
public Xid getXid() {
return xid;
- }
-
+ }
+
public void start() throws XAException {
- this.xaResource.start( xid, XAResource.TMNOFLAGS );
+ this.xaResource.start( xid,
+ XAResource.TMNOFLAGS );
}
-
+
public void rollback() throws XAException {
- this.xaResource.rollback( xid );
+ this.xaResource.rollback( xid );
}
-
+
public void commit() throws XAException {
- this.xaResource.commit( xid, true );
- }
+ this.xaResource.commit( xid,
+ true );
+ }
public int hashCode() {
return xid.hashCode();
@@ -43,6 +46,6 @@
if ( other.xid != null ) return false;
} else if ( !xid.equals( other.xid ) ) return false;
return true;
- }
-
+ }
+
}
Modified: 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 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceManagerTest.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -4,100 +4,114 @@
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
+import junit.framework.TestCase;
+
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};
-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();
+ 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 ) );
+ 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);
-
+ 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
+ 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);
-
+ 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
+ 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( 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);
-
+ xa.commit( xid,
+ true );
+
pm.save();
- assertTrue( assertEquals( data2, snapshotter.bytes ) );
-
+ assertTrue( assertEquals( data2,
+ snapshotter.bytes ) );
+
snapshotter.loadSnapshot( data3 );
- assertTrue( assertEquals( data3, snapshotter.bytes ) );
+ assertTrue( assertEquals( data3,
+ snapshotter.bytes ) );
pm.load();
- assertTrue( assertEquals( data2, snapshotter.bytes ) );
+ assertTrue( assertEquals( data2,
+ snapshotter.bytes ) );
}
-
- public boolean assertEquals( byte[] bytes1, byte[] bytes2) {
+
+ 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;
- }
+ }
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryPersistenceSessionTest.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -7,9 +7,7 @@
import java.util.ArrayList;
import java.util.List;
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
+import junit.framework.TestCase;
import org.drools.Person;
import org.drools.RuleBase;
@@ -23,20 +21,12 @@
import org.drools.base.evaluators.EqualityEvaluatorsDefinition;
import org.drools.base.evaluators.Operator;
import org.drools.common.InternalWorkingMemory;
-import org.drools.examples.manners.Context;
-import org.drools.examples.manners.Count;
-import org.drools.examples.manners.Guest;
-import org.drools.examples.manners.Path;
-import org.drools.examples.manners.Seating;
-import org.drools.persistence.DroolsXid;
import org.drools.persistence.StatefulSessionSnapshotter;
import org.drools.persistence.Transaction;
-import org.drools.persistence.memory.MemoryPersistenceManager;
-import org.drools.persistence.memory.MemoryXaResource;
import org.drools.rule.Declaration;
import org.drools.rule.InvalidRuleException;
+import org.drools.rule.Package;
import org.drools.rule.Pattern;
-import org.drools.rule.Package;
import org.drools.rule.Rule;
import org.drools.rule.VariableConstraint;
import org.drools.spi.BetaNodeFieldConstraint;
@@ -46,10 +36,7 @@
import org.drools.spi.InternalReadAccessor;
import org.drools.spi.KnowledgeHelper;
import org.drools.spi.Tuple;
-import org.drools.transaction.MockByteArraySnapshotter;
-import junit.framework.TestCase;
-
public class MemoryPersistenceSessionTest extends TestCase {
private byte[] data1 = new byte[]{1, 1, 1, 1, 1};
private byte[] data2 = new byte[]{1, 1, 1, 1, 0};
@@ -60,81 +47,95 @@
public void testSave() throws Exception {
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package pkg = new Package( "org.drools.test" );
- pkg.addGlobal( "list", List.class );
+ pkg.addGlobal( "list",
+ List.class );
pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
store = pkg.getClassFieldAccessorStore();
store.setEagerWire( true );
-
- pkg.addRule( getFindPersonRule() );
+
+ pkg.addRule( getFindPersonRule() );
ruleBase.addPackage( pkg );
-
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- session.setGlobal( "list", list );
- Person p1 = new Person("boba fet", 500);
+ session.setGlobal( "list",
+ list );
+ Person p1 = new Person( "boba fet",
+ 500 );
session.insert( p1 );
-
+
MemoryPersistenceManager pm = new MemoryPersistenceManager( new StatefulSessionSnapshotter( session ) );
pm.save();
-
-
- Person p2 = new Person("boba fet", 500);
- Person p3 = new Person("boba fet", 500);
+
+ Person p2 = new Person( "boba fet",
+ 500 );
+ Person p3 = new Person( "boba fet",
+ 500 );
session.insert( p2 );
- session.insert( p3 );
+ session.insert( p3 );
session.insert( new String( "boba fet" ) );
- assertEquals( 4, ((InternalWorkingMemory)session).getObjectStore().size() );
- session.fireAllRules();
- assertEquals(3, list.size() );
-
+ assertEquals( 4,
+ ((InternalWorkingMemory) session).getObjectStore().size() );
+ session.fireAllRules();
+ assertEquals( 3,
+ list.size() );
+
pm.load();
list.clear();
session.insert( new String( "boba fet" ) );
- session.fireAllRules();
- assertEquals( 1, list.size() );
- assertEquals( 2, ((InternalWorkingMemory)session).getObjectStore().size() );
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
+ assertEquals( 2,
+ ((InternalWorkingMemory) session).getObjectStore().size() );
}
-
+
public void testTransactionWithRollback() throws Exception {
RuleBase ruleBase = RuleBaseFactory.newRuleBase();
Package pkg = new Package( "org.drools.test" );
- pkg.addGlobal( "list", List.class );
+ pkg.addGlobal( "list",
+ List.class );
pkg.setClassFieldAccessorCache( new ClassFieldAccessorCache( Thread.currentThread().getContextClassLoader() ) );
store = pkg.getClassFieldAccessorStore();
store.setEagerWire( true );
-
- pkg.addRule( getFindPersonRule() );
+
+ pkg.addRule( getFindPersonRule() );
ruleBase.addPackage( pkg );
-
StatefulSession session = ruleBase.newStatefulSession();
List list = new ArrayList();
- session.setGlobal( "list", list );
- Person p1 = new Person("boba fet", 500);
+ session.setGlobal( "list",
+ list );
+ Person p1 = new Person( "boba fet",
+ 500 );
session.insert( p1 );
-
+
MemoryPersistenceManager pm = new MemoryPersistenceManager( new StatefulSessionSnapshotter( session ) );
Transaction t = pm.getTransaction();
t.start();
-
-
- Person p2 = new Person("boba fet", 500);
- Person p3 = new Person("boba fet", 500);
+
+ Person p2 = new Person( "boba fet",
+ 500 );
+ Person p3 = new Person( "boba fet",
+ 500 );
session.insert( p2 );
- session.insert( p3 );
+ session.insert( p3 );
session.insert( new String( "boba fet" ) );
- assertEquals( 4, ((InternalWorkingMemory)session).getObjectStore().size() );
- session.fireAllRules();
- assertEquals(3, list.size() );
-
+ assertEquals( 4,
+ ((InternalWorkingMemory) session).getObjectStore().size() );
+ session.fireAllRules();
+ assertEquals( 3,
+ list.size() );
+
t.rollback();
list.clear();
session.insert( new String( "boba fet" ) );
- session.fireAllRules();
- assertEquals( 1, list.size() );
- assertEquals( 2, ((InternalWorkingMemory)session).getObjectStore().size() );
- }
+ session.fireAllRules();
+ assertEquals( 1,
+ list.size() );
+ assertEquals( 2,
+ ((InternalWorkingMemory) session).getObjectStore().size() );
+ }
private Rule getFindPersonRule() throws IntrospectionException,
InvalidRuleException {
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java 2008-08-19 05:05:09 UTC (rev 21619)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/persistence/memory/MemoryXaResourceTest.java 2008-08-19 05:23:08 UTC (rev 21620)
@@ -3,118 +3,144 @@
import javax.transaction.xa.XAResource;
import javax.transaction.xa.Xid;
+import junit.framework.TestCase;
+
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 MemoryXaResourceTest 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};
-public class MemoryXaResourceTest 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();
+ snapshotter = new MockByteArraySnapshotter();
pm = new MemoryPersistenceManager( snapshotter );
}
-
+
public void testInitFields() {
MemoryXaResource xa = pm.getXAResource();
-
+
// make sure these are initialised correctly
- assertEquals( 0, xa.list.size() );
- assertNull( pm.lastSave );
+ assertEquals( 0,
+ xa.list.size() );
+ assertNull( pm.lastSave );
}
-
+
public void testSingleTransactionWithRollBack() throws Exception {
MemoryXaResource xa = pm.getXAResource();
-
- Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
-
- snapshotter.bytes = data1;
- xa.start(xid, XAResource.TMNOFLAGS);
- assertEquals( 1, xa.list.size() ); // we only have one transaction
- assertSame( xa.data.get( xa.list.get( 0 )), pm.lastSave ); // lastSave is always set to begin of the first transaction
-
+ Xid xid = new DroolsXid( 100,
+ new byte[]{0x01},
+ new byte[]{0x01} );
+
+ snapshotter.bytes = data1;
+ xa.start( xid,
+ XAResource.TMNOFLAGS );
+ assertEquals( 1,
+ xa.list.size() ); // we only have one transaction
+ assertSame( xa.data.get( xa.list.get( 0 ) ),
+ pm.lastSave ); // lastSave is always set to begin of the first transaction
+
snapshotter.bytes = data2;
- xa.rollback(xid);
-
- assertTrue( assertEquals( data1, snapshotter.bytes ) );
+ xa.rollback( xid );
+
+ assertTrue( assertEquals( data1,
+ snapshotter.bytes ) );
assertTrue( xa.list.isEmpty() );
- assertTrue( xa.data.isEmpty() );
+ assertTrue( xa.data.isEmpty() );
}
-
+
public void testSingleTransactionWithCommit() throws Exception {
MemoryXaResource xa = pm.getXAResource();
-
- Xid xid = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
-
- snapshotter.bytes = data1;
- xa.start(xid, XAResource.TMNOFLAGS);
-
+
+ Xid xid = new DroolsXid( 100,
+ new byte[]{0x01},
+ new byte[]{0x01} );
+
+ snapshotter.bytes = data1;
+ xa.start( xid,
+ XAResource.TMNOFLAGS );
+
snapshotter.bytes = data2;
- xa.commit(xid, true);
-
+ xa.commit( xid,
+ true );
+
// check levels are empty and that lastsave was updated to be the same as end
- assertEquals( 0, xa.list.size() );
- assertSame( data2, pm.lastSave );
-
+ assertEquals( 0,
+ xa.list.size() );
+ assertSame( data2,
+ pm.lastSave );
+
// should do nothing as there is nothing to rollback
- xa.rollback(xid);
-
- assertTrue( assertEquals( data2, snapshotter.bytes ) );
+ xa.rollback( xid );
+
+ assertTrue( assertEquals( data2,
+ snapshotter.bytes ) );
assertTrue( xa.list.isEmpty() );
assertTrue( xa.data.isEmpty() );
- }
-
+ }
+
public void testMultipleTransactions() throws Exception {
MemoryXaResource xa = pm.getXAResource();
-
- Xid xid1 = new DroolsXid(100, new byte[]{0x01}, new byte[]{0x01});
-
- snapshotter.bytes = data1;
- xa.start(xid1, XAResource.TMNOFLAGS);
-
- Xid xid2 = new DroolsXid(100, new byte[]{0x02}, new byte[]{0x02});
+
+ Xid xid1 = new DroolsXid( 100,
+ new byte[]{0x01},
+ new byte[]{0x01} );
+
+ snapshotter.bytes = data1;
+ xa.start( xid1,
+ XAResource.TMNOFLAGS );
+
+ Xid xid2 = new DroolsXid( 100,
+ new byte[]{0x02},
+ new byte[]{0x02} );
snapshotter.bytes = data2;
- xa.start(xid2, XAResource.TMNOFLAGS);
- assertEquals( 2, xa.list.size() ); // we now have two levels
- assertSame( xa.data.get( xa.list.get( 0 ) ), pm.lastSave ); // check lastSave is still first transaction
-
- Xid xid3 = new DroolsXid(100, new byte[]{0x03}, new byte[]{0x03});
+ xa.start( xid2,
+ XAResource.TMNOFLAGS );
+ assertEquals( 2,
+ xa.list.size() ); // we now have two levels
+ assertSame( xa.data.get( xa.list.get( 0 ) ),
+ pm.lastSave ); // check lastSave is still first transaction
+
+ Xid xid3 = new DroolsXid( 100,
+ new byte[]{0x03},
+ new byte[]{0x03} );
snapshotter.bytes = data3;
- xa.start(xid3, XAResource.TMNOFLAGS);
- assertEquals( 3, xa.list.size() ); // we now have three levels.
-
+ xa.start( xid3,
+ XAResource.TMNOFLAGS );
+ assertEquals( 3,
+ xa.list.size() ); // we now have three levels.
+
// commit the first, so the second should become the lastSave point
- xa.commit( xid1, true );
-
- assertSame( xa.data.get( xid2 ), pm.lastSave ); // xid2 should now be the lastSave point
+ xa.commit( xid1,
+ true );
+ assertSame( xa.data.get( xid2 ),
+ pm.lastSave ); // xid2 should now be the lastSave point
+
// rollback xid2, should result in rolling back xid3 too
- xa.rollback( xid2 );
-
+ xa.rollback( xid2 );
+
assertTrue( xa.list.isEmpty() );
assertTrue( xa.data.isEmpty() );
- }
-
- public boolean assertEquals( byte[] bytes1, byte[] bytes2) {
+ }
+
+ 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