[jboss-svn-commits] JBL Code SVN: r29036 - in labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM: src/test/java/uk/ac/ncl/sdia/a8905943 and 9 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Aug 23 15:06:09 EDT 2009


Author: whitingjr
Date: 2009-08-23 15:06:08 -0400 (Sun, 23 Aug 2009)
New Revision: 29036

Added:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestEntityManagerImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerFactoryImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/factory/
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/factory/TestTransactionFactory.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/TestFieldUtils.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXADatasourceImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXAResource.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/AbstractTest.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitModelReplicatedMemory.java
Removed:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestEntityManagerImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestSTMEntityManagerFactoryImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXADatasourceImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXAResource.java
Modified:
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/pom.xml
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/JUTestAllTests.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/isolation/TestUnitRepeatableReadIsolationImpl.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitSTM.java
   labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/transaction/TestUnitTransactionManager.java
Log:
Added test cases.

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/pom.xml
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/pom.xml	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/pom.xml	2009-08-23 19:06:08 UTC (rev 29036)
@@ -29,6 +29,14 @@
          <version>1.2.14</version>
          <scope>compile</scope>
       </dependency>
+      <!-- 
+      <dependency>
+         <groupId>uk.ac.ncl.sdia.a8905943</groupId>
+         <artifactId>STMAnnotationsJAR</artifactId>
+         <version>0.0.1-SNAPSHOT</version>
+         <scope>compile</scope>
+      </dependency>
+       -->
 	</dependencies>
 	<build>
 		<plugins>
@@ -44,9 +52,15 @@
 							<aoppaths>
 								<aoppath>src/main/resources/META-INF/jboss-aop.xml</aoppath>
 							</aoppaths>
+							<verbose>true</verbose>
 							<includes>
 								<include>uk/ac/ncl/sdia/a8905943/model/Car.class</include>
+								<include>uk/ac/ncl/sdia/a8905943/model/Bike.class</include>
+                        <include>uk/ac/ncl/sdia/a8905943/model/LeccyCar.class</include>
+                        <include>uk/ac/ncl/sdia/a8905943/aspects/STMWriteAspect.class</include>
+                        <include>uk/ac/ncl/sdia/a8905943/aspects/STMReadAspect.class</include>
 							</includes>
+							<report>false</report>
 						</configuration>
 						<goals>
 							<goal>compile</goal>
@@ -62,7 +76,9 @@
 					<forkMode>always</forkMode>
 					<useSystemClassLoader>false</useSystemClassLoader>
 					<argLine>-Djboss.aop.path=src/main/resources/META-INF/jboss-aop.xml</argLine>
-					<additionalClasspathElement>src/test/resources</additionalClasspathElement>
+					<excludes>
+					    <exclude>**/AbstractTest.java</exclude>
+					</excludes>
 				</configuration>
 			</plugin>
 		</plugins>

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/JUTestAllTests.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/JUTestAllTests.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/JUTestAllTests.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -10,11 +10,11 @@
 import org.junit.runners.Suite;
 import org.junit.runners.Suite.SuiteClasses;
 
-import uk.ac.ncl.sdia.a8905943.handle.JUnitTestFieldUtils;
+import uk.ac.ncl.sdia.a8905943.handle.TestFieldUtils;
 
 @RunWith(Suite.class)
 @SuiteClasses({
-	JUnitTestFieldUtils.class
+	TestFieldUtils.class
 })
 public class JUTestAllTests {
 

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMReadAspect.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.aspects;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.model.Bike;
+import uk.ac.ncl.sdia.a8905943.stm.AbstractTest;
+
+public class TestSTMReadAspect extends AbstractTest
+{
+   /**
+    * This test checks the read aspect is invoked. 
+    */
+   @Test
+   public void testReadAspectInvoked()
+   {
+      Bike bike = new Bike(2l);
+      String name = "Raleigh";
+      bike.setName(name); // write
+      Assert.assertNotNull(bike);
+      Assert.assertNotNull(bike.getName());  // read
+      Assert.assertEquals("Raleigh", bike.getName());
+   }
+   
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestSTMWriteAspect.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,47 @@
+package uk.ac.ncl.sdia.a8905943.aspects;
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.model.Bike;
+import uk.ac.ncl.sdia.a8905943.model.LeccyCar;
+import uk.ac.ncl.sdia.a8905943.stm.AbstractTest;
+
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+
+public class TestSTMWriteAspect extends AbstractTest
+{
+   /**
+    * Use the mvn test command to execute
+    *
+    */
+   @Test
+   public void testWriteAspectInvoked()
+   {
+      String name= "Raleigh";
+      Bike bike = new Bike(2l);
+      Assert.assertNull(bike.getName());
+      /* This next line is expected to hit the aop class and set the value to something else*/
+      bike.setName(name); // write
+      Assert.assertNotNull(bike);
+      Assert.assertEquals(name, bike.getName());  // read
+   }
+   
+   @Test
+   public void testWriteAspectOnLeccyCar()
+   {
+      LeccyCar car = new LeccyCar(55l);
+      Assert.assertNotNull(car);
+
+      String name="Dukes of Hazard";
+      car.setName(name);
+      Assert.assertNotNull(car.getName());
+      Assert.assertEquals(name, car.getName());
+      
+   }
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/aspects/TestVersioningAspectImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -9,12 +9,12 @@
 import junit.framework.Assert;
 
 import org.apache.log4j.Logger;
-import org.junit.Before;
 import org.junit.Test;
 
 import uk.ac.ncl.sdia.a8905943.model.Car;
+import uk.ac.ncl.sdia.a8905943.stm.AbstractTest;
 
-public class TestVersioningAspectImpl
+public class TestVersioningAspectImpl extends AbstractTest
 {
    /* use the eclipse AOP debbugger to run these AOP test 
     * See README.txt for instructions to setup eclipse.
@@ -37,8 +37,4 @@
       Assert.assertEquals(car.getMake(), name);
    }
    
-   @Before
-   public void setUp()
-   {
-   }
 }

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestEntityManagerImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestEntityManagerImpl.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestEntityManagerImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,42 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.entitymanager;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import uk.ac.ncl.sdia.a8905943.model.Car;
-
-
-public class JUnitTestEntityManagerImpl
-{
-
-   /**
-    * This test checks to make sure the construction of an entity works.
-    */
-   @Test
-   public void testCheckCreatingEntityWorks()
-   {
-      STMEntityManagerImpl entityManager = new STMEntityManagerImpl(null);
-      Long primaryKey = new Long(1);
-      Car carEntity = entityManager.find(Car.class, primaryKey);
-      
-      Assert.assertNotNull(carEntity);
-      Assert.assertEquals(primaryKey, carEntity.getId());
-   }
-
-   /*
-   @Test (expected=RuntimeException.class)
-   public void testCheckPrimaryKeyNotRightTypeThrowsException()
-   {
-      STMEntityManagerImpl entityManager = new STMEntityManagerImpl(null);
-      String primaryKey = "1";
-      Car carEntity = entityManager.find(Car.class, primaryKey);
-   }
-   */
-}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestSTMEntityManagerFactoryImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestSTMEntityManagerFactoryImpl.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestSTMEntityManagerFactoryImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,92 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.entitymanager;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.persistence.EntityManager;
-import javax.persistence.spi.PersistenceUnitTransactionType;
-
-import org.apache.commons.lang.StringUtils;
-import org.apache.log4j.Logger;
-import org.jboss.cache.lock.IsolationLevel;
-import org.jboss.ejb3.entity.PersistenceUnitInfoImpl;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import uk.ac.ncl.sdia.a8905943.persistence.xa.STMXADatasourceImpl;
-import uk.ac.ncl.sdia.a8905943.stm.persistence.STMPersistenceProviderImpl;
-
-public class JUnitTestSTMEntityManagerFactoryImpl
-{
-   private static final Logger logger = Logger.getLogger(JUnitTestSTMEntityManagerFactoryImpl.class);
-   private STMEntityManagerFactoryImpl factory ;
-   
-   @Before
-   public void setUp()
-   {
-      PersistenceUnitInfoImpl persistenceUnitInfo = new PersistenceUnitInfoImpl();
-      persistenceUnitInfo.setExcludeUnlistedClasses(false);
-      persistenceUnitInfo.setManagedClassnames(new ArrayList<String>());
-      persistenceUnitInfo.setClassLoader(null);
-      persistenceUnitInfo.setJtaDataSource(new STMXADatasourceImpl());
-      persistenceUnitInfo.setPersistenceProviderClassName(STMPersistenceProviderImpl.class.getName());
-      //persistenceUnitInfo.setPersistenceUnitName(entityManagerName)
-      persistenceUnitInfo.setProperties(new Properties());
-      persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType.JTA);
-      persistenceUnitInfo.setPersistenceUnitName("banking");
-      
-      factory = new STMEntityManagerFactoryImpl( persistenceUnitInfo);
-   }
-   @After
-   public void tearDown()
-   {
-      factory = null;
-   }
-   
-   
-   @Test(expected=RuntimeException.class)
-   public void testCheckExceptionThrownForMissingIsolationLevelConfig()
-   {
-      Map<String, String> conifguration=  new HashMap<String, String>(1);
-      factory.createEntityManager(conifguration);
-   }
-   
-   @Test
-   public void testCheckNoExceptionForValidConfig()
-   {
-      Map<String, String> configuration = new HashMap<String, String>(1);
-      configuration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, IsolationLevel.REPEATABLE_READ.toString());
-      Assert.assertNotNull(factory);
-      EntityManager manager = factory.createEntityManager(configuration);
-      Assert.assertNotNull(manager );
-   }
-
-   @Test(expected=RuntimeException.class)
-   public void testCheckExceptionForEmptyLEvel()
-   {
-      Map<String, String> conifguration=  new HashMap<String, String>(1);
-      conifguration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, StringUtils.EMPTY);
-      factory.createEntityManager(conifguration);
-   }
-   
-   @Ignore
-   public void testCheckExceptionWhenBindingWithoutContextAvailable()
-   {
-      Map<String, String> configuration = new HashMap<String, String>(1);
-      configuration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, IsolationLevel.REPEATABLE_READ.toString());
-      Assert.assertNotNull(factory);
-      EntityManager manager = factory.createEntityManager(configuration);
-   }
-   
-}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestEntityManagerImpl.java (from rev 28665, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestEntityManagerImpl.java)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestEntityManagerImpl.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestEntityManagerImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,42 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.entitymanager;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.model.Car;
+
+
+public class TestEntityManagerImpl
+{
+
+   /**
+    * This test checks to make sure the construction of an entity works.
+    */
+   @Test
+   public void testCheckCreatingEntityWorks()
+   {
+      STMEntityManagerImpl entityManager = new STMEntityManagerImpl(null);
+      Long primaryKey = new Long(1);
+      Car carEntity = entityManager.find(Car.class, primaryKey);
+      
+      Assert.assertNotNull(carEntity);
+      Assert.assertEquals(primaryKey, carEntity.getId());
+   }
+
+   /*
+   @Test (expected=RuntimeException.class)
+   public void testCheckPrimaryKeyNotRightTypeThrowsException()
+   {
+      STMEntityManagerImpl entityManager = new STMEntityManagerImpl(null);
+      String primaryKey = "1";
+      Car carEntity = entityManager.find(Car.class, primaryKey);
+   }
+   */
+}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerFactoryImpl.java (from rev 28355, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/JUnitTestSTMEntityManagerFactoryImpl.java)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerFactoryImpl.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/entitymanager/TestSTMEntityManagerFactoryImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,92 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.entitymanager;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+
+import javax.persistence.EntityManager;
+import javax.persistence.spi.PersistenceUnitTransactionType;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.jboss.cache.lock.IsolationLevel;
+import org.jboss.ejb3.entity.PersistenceUnitInfoImpl;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.persistence.xa.STMXADatasourceImpl;
+import uk.ac.ncl.sdia.a8905943.stm.persistence.STMPersistenceProviderImpl;
+
+public class TestSTMEntityManagerFactoryImpl
+{
+   private static final Logger logger = Logger.getLogger(TestSTMEntityManagerFactoryImpl.class);
+   private STMEntityManagerFactoryImpl factory ;
+   
+   @Before
+   public void setUp()
+   {
+      PersistenceUnitInfoImpl persistenceUnitInfo = new PersistenceUnitInfoImpl();
+      persistenceUnitInfo.setExcludeUnlistedClasses(false);
+      persistenceUnitInfo.setManagedClassnames(new ArrayList<String>());
+      persistenceUnitInfo.setClassLoader(null);
+      persistenceUnitInfo.setJtaDataSource(new STMXADatasourceImpl());
+      persistenceUnitInfo.setPersistenceProviderClassName(STMPersistenceProviderImpl.class.getName());
+      //persistenceUnitInfo.setPersistenceUnitName(entityManagerName)
+      persistenceUnitInfo.setProperties(new Properties());
+      persistenceUnitInfo.setTransactionType(PersistenceUnitTransactionType.JTA);
+      persistenceUnitInfo.setPersistenceUnitName("banking");
+      
+      factory = new STMEntityManagerFactoryImpl( persistenceUnitInfo);
+   }
+   @After
+   public void tearDown()
+   {
+      factory = null;
+   }
+   
+   
+   @Test(expected=RuntimeException.class)
+   public void testCheckExceptionThrownForMissingIsolationLevelConfig()
+   {
+      Map<String, String> conifguration=  new HashMap<String, String>(1);
+      factory.createEntityManager(conifguration);
+   }
+   
+   @Test
+   public void testCheckNoExceptionForValidConfig()
+   {
+      Map<String, String> configuration = new HashMap<String, String>(1);
+      configuration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, IsolationLevel.REPEATABLE_READ.toString());
+      Assert.assertNotNull(factory);
+      EntityManager manager = factory.createEntityManager(configuration);
+      Assert.assertNotNull(manager );
+   }
+
+   @Test(expected=RuntimeException.class)
+   public void testCheckExceptionForEmptyLEvel()
+   {
+      Map<String, String> conifguration=  new HashMap<String, String>(1);
+      conifguration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, StringUtils.EMPTY);
+      factory.createEntityManager(conifguration);
+   }
+   
+   @Ignore
+   public void testCheckExceptionWhenBindingWithoutContextAvailable()
+   {
+      Map<String, String> configuration = new HashMap<String, String>(1);
+      configuration.put(STMPersistenceProviderImpl.PROPERTY_ISOLATION_LEVEL, IsolationLevel.REPEATABLE_READ.toString());
+      Assert.assertNotNull(factory);
+      EntityManager manager = factory.createEntityManager(configuration);
+   }
+   
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/factory/TestTransactionFactory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/factory/TestTransactionFactory.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/factory/TestTransactionFactory.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,45 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.factory;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.stm.transaction.STMTransaction;
+
+public class TestTransactionFactory
+{
+   @Test
+   public void testCheckDeAllocation()
+   {
+      Assert.assertNull( TransactionFactory.getFactory().getCurrentTransaction(false));
+      Assert.assertNotNull(TransactionFactory.getFactory().getCurrentTransaction(true));
+      TransactionFactory.getFactory().deallocate();
+      Assert.assertNull( TransactionFactory.getFactory().getCurrentTransaction(false));
+   }
+   @Test
+   public void testCheckAllocation()
+   {
+      STMTransaction transaction =  TransactionFactory.getFactory().getCurrentTransaction(true);
+      Assert.assertNotNull(transaction);
+   }
+   
+   
+   @Before
+   public void setUp()
+   {
+      
+   }
+   @After
+   public void tearDown()
+   {
+      
+   }
+}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,108 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.handle;
-
-import java.lang.reflect.Field;
-
-import javax.persistence.Id;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-
-import uk.ac.ncl.sdia.a8905943.handle.exception.FieldNotFoundException;
-
-public class JUnitTestFieldUtils
-{
-   @Test public void testcheckIdFieldFound()
-      throws FieldNotFoundException
-   {
-      try
-      {
-         Long id = 2l;
-         Car car = new Car(id);
-         FieldUtils utils = new FieldUtils(); 
-         Field idField = utils.findIdField(car.getClass());
-         Assert.assertNotNull(idField);
-         Assert.assertEquals(Car.class.getDeclaredField("id"), idField);
-         Assert.assertEquals(id, utils.getValue(idField, car));
-      }
-      catch (NoSuchFieldException fnfe)
-      {
-         Assert.fail("Not expecting to have an exception thrown when finding the id field.");
-      }
-   }
-   
-   @Test (expected=FieldNotFoundException.class)
-   public void checkExpectedExceptionThrown()
-      throws FieldNotFoundException
-   {
-      GreyImport car = new GreyImport();
-      FieldUtils utils =  new FieldUtils();
-      
-      Long id = utils.getValue(utils.findIdField(car.getClass()),car); 
-      Assert.fail();
-   }
-   
-   @Test
-   public void checkNullFieldBehaviour()
-      throws FieldNotFoundException
-   {
-      Car car = new Car(null);
-      FieldUtils util = new FieldUtils();
-      Long value = util.getValue(util.findIdField(car.getClass()), car);
-      Assert.assertNull(value);
-   }
-
-   
-   
-   /**
-    * 
-    * A typical car entity that has expected id annotated field. 
-    * 
-    * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
-    * @version $Revision: 1.1 $
-    */
-   public class Car 
-   {
-      @Id
-      private Long id;
-      public Car(Long id)
-      {
-         this.id = id; 
-      }
-      public Long getId()
-      {
-         return id;
-      }
-      public void setId(Long id)
-      {
-         this.id = id;
-      }
-   }
-   /**
-    * 
-    * An entity that doesn't have an annotated id field.
-    * 
-    * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
-    * @version $Revision: 1.1 $
-    */
-   public class GreyImport
-   {
-      private Long id;
-
-      public Long getId()
-      {
-         return id;
-      }
-
-      public void setId(Long id)
-      {
-         this.id = id;
-      } 
-   }
-}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/TestFieldUtils.java (from rev 28355, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/JUnitTestFieldUtils.java)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/TestFieldUtils.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/handle/TestFieldUtils.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,89 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.handle;
+
+import java.lang.reflect.Field;
+
+import junit.framework.Assert;
+
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.handle.exception.FieldNotFoundException;
+import uk.ac.ncl.sdia.a8905943.model.Car;
+
+public class TestFieldUtils
+{
+   @Test public void testcheckIdFieldFound()
+      throws FieldNotFoundException
+   {
+      try
+      {
+         Long id = 2l;
+         Car car = new Car(id);
+         FieldUtils utils = new FieldUtils(); 
+         Field idField = utils.findIdField(car.getClass());
+         Assert.assertNotNull(idField);
+         Assert.assertEquals(Car.class.getDeclaredField("id"), idField);
+         Assert.assertEquals(id, utils.getValue(idField, car));
+      }
+      catch (NoSuchFieldException fnfe)
+      {
+         Assert.fail("Not expecting to have an exception thrown when finding the id field.");
+      }
+   }
+   
+   @Test (expected=FieldNotFoundException.class)
+   public void checkExpectedExceptionThrown()
+      throws FieldNotFoundException
+   {
+      GreyImport car = new GreyImport();
+      FieldUtils utils =  new FieldUtils();
+      
+      Long id = utils.getValue(utils.findIdField(car.getClass()),car); 
+      Assert.fail();
+   }
+   
+   @Test
+   public void checkNullFieldBehaviour()
+      throws FieldNotFoundException
+   {
+      Car car = new Car(null);
+      FieldUtils util = new FieldUtils();
+      Long value = util.getValue(util.findIdField(car.getClass()), car);
+      Assert.assertNull(value);
+   }
+
+   
+   
+   /**
+    * 
+    * An entity that doesn't have an annotated id field.
+    * 
+    * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+    * @version $Revision: 1.1 $
+    */
+   public class GreyImport
+   {
+      private Long id;
+
+      public Long getId()
+      {
+         return id;
+      }
+
+      public void setId(Long id)
+      {
+         this.id = id;
+      } 
+      
+      public GreyImport()
+      {
+         // FIXME TestFieldUtils.GreyImport constructor
+
+      }
+   }
+}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/impl/JUTestMVCCStore.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,20 +0,0 @@
-package uk.ac.ncl.sdia.a8905943.impl;
-
-import org.junit.Before;
-import org.junit.Ignore;
-
-import uk.ac.ncl.sdia.a8905943.stm.STM;
-
-public class JUTestMVCCStore {
-
-	@Before
-	public void setUp()
-	{
-		
-	}
-	@Ignore
-	public void testCheckObjectStored()
-	{
-		STM store = new STM(null, null);
-	}
-}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/isolation/TestUnitRepeatableReadIsolationImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/isolation/TestUnitRepeatableReadIsolationImpl.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/isolation/TestUnitRepeatableReadIsolationImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -6,28 +6,52 @@
  */
 package uk.ac.ncl.sdia.a8905943.isolation;
 
-import java.sql.Connection;
+import junit.framework.Assert;
 
-import org.junit.Ignore;
 import org.junit.Test;
 
 import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
-import uk.ac.ncl.sdia.a8905943.handle.TransactedObjectReference;
-import uk.ac.ncl.sdia.a8905943.isolation.factory.IsolationFactory;
-import uk.ac.ncl.sdia.a8905943.spec.STMTransaction;
+import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
+import uk.ac.ncl.sdia.a8905943.impl.STMTransactionImpl;
+import uk.ac.ncl.sdia.a8905943.model.Car;
+import uk.ac.ncl.sdia.a8905943.stm.AbstractTest;
+import uk.ac.ncl.sdia.a8905943.stm.field.FieldReadParameter;
+import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
 
-public class TestUnitRepeatableReadIsolationImpl
+public class TestUnitRepeatableReadIsolationImpl extends AbstractTest
 {
 
    @Test
    public void testCheckReadIsolationFieldValueNotFound()
    {
+       Assert.assertNotNull(this.stm);
+       STMTransactionImpl transaction =(STMTransactionImpl) TransactionFactory.getFactory().getCurrentTransaction(false);
+       Assert.assertNotNull(transaction);
+       Long id = 3l;
+       Long handle = new HandleUtils().getHandle(Car.class, id, "make") ;
+       FieldReadParameter parameter = new FieldReadParameter(handle);
+       Object value = this.stm.read(parameter);
        
+       Assert.assertNull(value);
    }
-  
+   
    @Test
-   public void check()
+   public void testCheckReadIsolationFieldValueIsFound()
    {
-      
+       Assert.assertNotNull(this.stm);
+       STMTransactionImpl transaction =(STMTransactionImpl) TransactionFactory.getFactory().getCurrentTransaction(false);
+       Assert.assertNotNull(transaction);
+       Long id = 3l;
+       String make = "MG";
+       Long handle = new HandleUtils().getHandle(Car.class, id, "make") ;
+       TransactedObjectReference transactedReference = new TransactedObjectReference(handle, make, transaction.getVersion());
+       this.fieldStore.put(handle, transactedReference);
+       
+       FieldReadParameter parameter = new FieldReadParameter(handle);
+       Object value = this.stm.read(parameter);
+       
+       Assert.assertNotNull(value);
+       Assert.assertEquals(make.getClass(), value.getClass());
+       Assert.assertEquals(make, value);
    }
 }

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXADatasourceImpl.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXADatasourceImpl.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXADatasourceImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,83 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.persistence.xa;
-
-import java.sql.SQLException;
-
-import javax.sql.XAConnection;
-
-import org.junit.Assert;
-import org.junit.Test;
-
-public class JUnitTestSTMXADatasourceImpl
-{
-
-   @Test 
-   public void testCheckDataSourceCreationWorks()
-   {
-      STMXADatasourceImpl dataSource = new STMXADatasourceImpl();
-      dataSource.setDatabaseName("aag");
-      try
-      {
-         XAConnection connection = dataSource.getXAConnection();
-         Assert.assertNotNull(connection);
-         Assert.assertNotNull(connection.getXAResource());
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail(sqle.getMessage());
-      }
-   }
-   
-   @Test
-   public void testCheckCreatingDataSourceObjectsHaveIdenticalSTM()
-   {
-      STMXADatasourceImpl dataSourceA = new STMXADatasourceImpl();
-      dataSourceA.setDatabaseName("hmrc");// databaseName is important
-      
-      STMXADatasourceImpl dataSourceB = new STMXADatasourceImpl();
-      dataSourceB.setDatabaseName("hmrc");
-      
-      try
-      {
-         STMXAConnectionImpl connectionA = (STMXAConnectionImpl)dataSourceA.getXAConnection();
-         STMXAConnectionImpl connectionB = (STMXAConnectionImpl)dataSourceB.getXAConnection();
-         Assert.assertNotNull(connectionA);
-         Assert.assertNotNull(connectionB);
-         Assert.assertEquals(connectionA.getSTM(), connectionB.getSTM());
-         Assert.assertTrue(connectionA.getSTM() == connectionB.getSTM());
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail(sqle.getMessage());
-      }
-   }
-   
-   @Test
-   public void testCheckDifferentDatabaseCreatesDifferentSTMInstance()
-   {
-      STMXADatasourceImpl dataSourceA = new STMXADatasourceImpl();
-      dataSourceA.setDatabaseName("hmrc");
-      
-      STMXADatasourceImpl dataSourceB = new STMXADatasourceImpl();
-      dataSourceB.setDatabaseName("inlandRevenue");
-      
-      Assert.assertNotNull(dataSourceA);
-      Assert.assertNotNull(dataSourceB);
-      
-      try
-      {
-         STMXAConnectionImpl connectionA = (STMXAConnectionImpl)dataSourceA.getXAConnection();
-         STMXAConnectionImpl connectionB = (STMXAConnectionImpl)dataSourceB.getXAConnection();
-         Assert.assertNotSame(connectionA.getSTM(), connectionB.getSTM());
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail(sqle.getMessage());
-      }
-   }
-}

Deleted: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXAResource.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXAResource.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXAResource.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -1,145 +0,0 @@
-/*
- * JBoss, the OpenSource J2EE webOS
- * 
- * Distributable under LGPL license.
- * See terms of license at gnu.org.
- */
-package uk.ac.ncl.sdia.a8905943.persistence.xa;
-
-import java.sql.SQLException;
-
-import javax.transaction.xa.XAException;
-import javax.transaction.xa.XAResource;
-import javax.transaction.xa.Xid;
-
-import org.apache.log4j.Logger;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-
-import com.arjuna.ats.arjuna.xa.XID;
-import com.arjuna.ats.jta.xa.XidImple;
-
-public class JUnitTestSTMXAResource
-{
-   private static final Logger logger = Logger.getLogger(JUnitTestSTMXAResource.class);
-   private STMXAResource resourceManager ;
-   @Before
-   public void setUp()
-   {
-      try
-      {
-         STMXADatasourceImpl dataSource = new STMXADatasourceImpl();
-         dataSource.setDatabaseName("media");
-         STMXAConnectionImpl connection = (STMXAConnectionImpl) dataSource.getXAConnection();
-         this.resourceManager = (STMXAResource)connection.getXAResource();
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail();
-      }
-   }
-   @Test
-   /**
-    * This test checks the resource manager allows a new branch to be started
-    * for the associated connection.
-    */
-   public void testCheckStartWorks()
-   {
-      // starting off with a clean resource manager
-      Assert.assertNotNull(resourceManager);
-      Xid xid = new XidImple();
-      try
-      {
-         resourceManager.getXAConnection().getConnection();
-         resourceManager.start(xid, XAResource.TMNOFLAGS);
-      }
-      catch (XAException xae)
-      {// not expecting an exception here
-         Assert.fail("Not expecting an exception when XAResource.start called. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
-      }
-   }
-   
-   
-   /**
-    * Test to check an exception is thrown when an active branch is
-    * running and a second branch attempts to start.
-    */
-   @Test (expected=XAException.class)
-   public void testCheckExceptionThrownForActiveBranch()
-      throws XAException
-   {// starting off with a clean resource manager
-      Assert.assertNotNull(resourceManager);
-      Xid xid = new XidImple();
-      resourceManager.start(xid, XAResource.TMNOFLAGS);
-      XID xidaj = new XID();// set dummy data
-      xidaj.data = "sample".getBytes();
-      xidaj.formatID = 44;
-      xidaj.gtrid_length = 55;
-      // attempt to start another branch when one is already active
-      try
-      {
-         resourceManager.start(new XidImple(xidaj), XAResource.TMNOFLAGS);
-         Assert.fail("REsource manager failed to throw an exception when starting a branch");
-      }
-      catch (XAException xae)
-      {
-         Assert.assertNotNull(xae);
-         Assert.assertEquals(XAException.XA_RBPROTO, xae.errorCode);//check protocol error is reported
-         throw xae;
-      }
-      
-   }
-   
-   /**
-    * This test checks a running resouce can be suspended.
-    */
-   @Test
-   public void testCheckSuspendWorks()
-   {
-      Assert.assertNotNull(resourceManager);
-      Xid xid = new XidImple();
-      try
-      {
-         resourceManager.getXAConnection().getConnection();
-         resourceManager.start(xid, XAResource.TMNOFLAGS);
-         resourceManager.end(xid, XAResource.TMSUSPEND); // no exception expected
-      }
-      catch (XAException xae)
-      {// not expecting an exception here
-         Assert.fail("Not expecting an exception when suspending an active resource. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
-      }
-   }
-   
-   /* This test checks the working scenario when a suspended  */
-   @Test
-   public void testCheckJoinAfterSuspendWorks()
-   {
-      Assert.assertNotNull(resourceManager);
-      Xid xid = new XidImple();
-      try
-      {
-         resourceManager.getXAConnection().getConnection();
-         resourceManager.start(xid, XAResource.TMNOFLAGS);
-         resourceManager.end(xid, XAResource.TMSUSPEND); 
-         resourceManager.start(xid, XAResource.TMJOIN);// no exception expected
-      }
-      catch (XAException xae)
-      {// not expecting an exception here
-         Assert.fail("Not expecting an exception when suspending an active resource. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
-      }
-      catch (SQLException sqle)
-      {
-         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
-      }
-   }
-   
-}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXADatasourceImpl.java (from rev 28358, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXADatasourceImpl.java)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXADatasourceImpl.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXADatasourceImpl.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,83 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.persistence.xa;
+
+import java.sql.SQLException;
+
+import javax.sql.XAConnection;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+public class TestSTMXADatasourceImpl
+{
+
+   @Test 
+   public void testCheckDataSourceCreationWorks()
+   {
+      STMXADatasourceImpl dataSource = new STMXADatasourceImpl();
+      dataSource.setDatabaseName("aag");
+      try
+      {
+         XAConnection connection = dataSource.getXAConnection();
+         Assert.assertNotNull(connection);
+         Assert.assertNotNull(connection.getXAResource());
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail(sqle.getMessage());
+      }
+   }
+   
+   @Test
+   public void testCheckCreatingDataSourceObjectsHaveIdenticalSTM()
+   {
+      STMXADatasourceImpl dataSourceA = new STMXADatasourceImpl();
+      dataSourceA.setDatabaseName("hmrc");// databaseName is important
+      
+      STMXADatasourceImpl dataSourceB = new STMXADatasourceImpl();
+      dataSourceB.setDatabaseName("hmrc");
+      
+      try
+      {
+         STMXAConnectionImpl connectionA = (STMXAConnectionImpl)dataSourceA.getXAConnection();
+         STMXAConnectionImpl connectionB = (STMXAConnectionImpl)dataSourceB.getXAConnection();
+         Assert.assertNotNull(connectionA);
+         Assert.assertNotNull(connectionB);
+         Assert.assertEquals(connectionA.getSTM(), connectionB.getSTM());
+         Assert.assertTrue(connectionA.getSTM() == connectionB.getSTM());
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail(sqle.getMessage());
+      }
+   }
+   
+   @Test
+   public void testCheckDifferentDatabaseCreatesDifferentSTMInstance()
+   {
+      STMXADatasourceImpl dataSourceA = new STMXADatasourceImpl();
+      dataSourceA.setDatabaseName("hmrc");
+      
+      STMXADatasourceImpl dataSourceB = new STMXADatasourceImpl();
+      dataSourceB.setDatabaseName("inlandRevenue");
+      
+      Assert.assertNotNull(dataSourceA);
+      Assert.assertNotNull(dataSourceB);
+      
+      try
+      {
+         STMXAConnectionImpl connectionA = (STMXAConnectionImpl)dataSourceA.getXAConnection();
+         STMXAConnectionImpl connectionB = (STMXAConnectionImpl)dataSourceB.getXAConnection();
+         Assert.assertNotSame(connectionA.getSTM(), connectionB.getSTM());
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail(sqle.getMessage());
+      }
+   }
+}

Copied: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXAResource.java (from rev 28502, labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/JUnitTestSTMXAResource.java)
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXAResource.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/persistence/xa/TestSTMXAResource.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,145 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.persistence.xa;
+
+import java.sql.SQLException;
+
+import javax.transaction.xa.XAException;
+import javax.transaction.xa.XAResource;
+import javax.transaction.xa.Xid;
+
+import org.apache.log4j.Logger;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.arjuna.ats.arjuna.xa.XID;
+import com.arjuna.ats.jta.xa.XidImple;
+
+public class TestSTMXAResource
+{
+   private static final Logger logger = Logger.getLogger(TestSTMXAResource.class);
+   private STMXAResource resourceManager ;
+   @Before
+   public void setUp()
+   {
+      try
+      {
+         STMXADatasourceImpl dataSource = new STMXADatasourceImpl();
+         dataSource.setDatabaseName("media");
+         STMXAConnectionImpl connection = (STMXAConnectionImpl) dataSource.getXAConnection();
+         this.resourceManager = (STMXAResource)connection.getXAResource();
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail();
+      }
+   }
+   @Test
+   /**
+    * This test checks the resource manager allows a new branch to be started
+    * for the associated connection.
+    */
+   public void testCheckStartWorks()
+   {
+      // starting off with a clean resource manager
+      Assert.assertNotNull(resourceManager);
+      Xid xid = new XidImple();
+      try
+      {
+         resourceManager.getXAConnection().getConnection();
+         resourceManager.start(xid, XAResource.TMNOFLAGS);
+      }
+      catch (XAException xae)
+      {// not expecting an exception here
+         Assert.fail("Not expecting an exception when XAResource.start called. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
+      }
+   }
+   
+   
+   /**
+    * Test to check an exception is thrown when an active branch is
+    * running and a second branch attempts to start.
+    */
+   @Test (expected=XAException.class)
+   public void testCheckExceptionThrownForActiveBranch()
+      throws XAException
+   {// starting off with a clean resource manager
+      Assert.assertNotNull(resourceManager);
+      Xid xid = new XidImple();
+      resourceManager.start(xid, XAResource.TMNOFLAGS);
+      XID xidaj = new XID();// set dummy data
+      xidaj.data = "sample".getBytes();
+      xidaj.formatID = 44;
+      xidaj.gtrid_length = 55;
+      // attempt to start another branch when one is already active
+      try
+      {
+         resourceManager.start(new XidImple(xidaj), XAResource.TMNOFLAGS);
+         Assert.fail("REsource manager failed to throw an exception when starting a branch");
+      }
+      catch (XAException xae)
+      {
+         Assert.assertNotNull(xae);
+         Assert.assertEquals(XAException.XA_RBPROTO, xae.errorCode);//check protocol error is reported
+         throw xae;
+      }
+      
+   }
+   
+   /**
+    * This test checks a running resouce can be suspended.
+    */
+   @Test
+   public void testCheckSuspendWorks()
+   {
+      Assert.assertNotNull(resourceManager);
+      Xid xid = new XidImple();
+      try
+      {
+         resourceManager.getXAConnection().getConnection();
+         resourceManager.start(xid, XAResource.TMNOFLAGS);
+         resourceManager.end(xid, XAResource.TMSUSPEND); // no exception expected
+      }
+      catch (XAException xae)
+      {// not expecting an exception here
+         Assert.fail("Not expecting an exception when suspending an active resource. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
+      }
+   }
+   
+   /* This test checks the working scenario when a suspended  */
+   @Test
+   public void testCheckJoinAfterSuspendWorks()
+   {
+      Assert.assertNotNull(resourceManager);
+      Xid xid = new XidImple();
+      try
+      {
+         resourceManager.getXAConnection().getConnection();
+         resourceManager.start(xid, XAResource.TMNOFLAGS);
+         resourceManager.end(xid, XAResource.TMSUSPEND); 
+         resourceManager.start(xid, XAResource.TMJOIN);// no exception expected
+      }
+      catch (XAException xae)
+      {// not expecting an exception here
+         Assert.fail("Not expecting an exception when suspending an active resource. message["+xae.getMessage()+"] code ["+xae.errorCode+"].");
+      }
+      catch (SQLException sqle)
+      {
+         Assert.fail("Failed to create a Connection object to get the resource manager to accept work.");
+      }
+   }
+   
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/AbstractTest.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/AbstractTest.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/AbstractTest.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.stm;
+
+import java.sql.Connection;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+import junit.framework.Assert;
+
+import org.junit.After;
+import org.junit.Before;
+
+import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
+import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
+import uk.ac.ncl.sdia.a8905943.stm.exception.IsolationLevelNotConfiguredException;
+import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
+
+public class AbstractTest
+{
+   protected STM stm = null;
+   protected Map<Long, TransactedObjectReference> fieldStore = null;
+   protected Map<String, List<Object>> modelStore = null;
+
+   
+   @Before
+   public void setUp()
+   {
+      this.fieldStore = new ConcurrentHashMap<Long, TransactedObjectReference>();
+      this.modelStore = new ConcurrentHashMap<String, List<Object>>();
+      this.stm  = new STM("retail", this.fieldStore, this.modelStore);
+      STMFactory.getFactoryInstance().allocate(this.stm);
+      stm.setCurrentTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
+      try
+      {
+         this.stm.begin();
+      }
+      catch (IsolationLevelNotConfiguredException ilnce)
+      {
+         Assert.fail(ilnce.getMessage());
+      }
+   }
+   
+   @After
+   public void tearDown()
+   {
+      STMFactory.getFactoryInstance().getCurrent().abort();
+      STMFactory.getFactoryInstance().deallocate();
+      TransactionFactory.getFactory().deallocate();
+      
+   }
+
+}

Added: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitModelReplicatedMemory.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitModelReplicatedMemory.java	                        (rev 0)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitModelReplicatedMemory.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, the OpenSource J2EE webOS
+ * 
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package uk.ac.ncl.sdia.a8905943.stm;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.Assert;
+
+import org.apache.commons.jxpath.JXPathContext;
+import org.junit.Before;
+import org.junit.Test;
+
+import uk.ac.ncl.sdia.a8905943.model.Car;
+import uk.ac.ncl.sdia.a8905943.model.untransactional.Fish;
+
+/**
+ * This is a test case to try out searches on the model store of
+ * the transactional system.
+ * 
+ * 
+ * @author <a href="whitingjr at hotmail.com">Jeremy Whiting</a>
+ * @version $Revision: 1.1 $
+ */
+public class TestUnitModelReplicatedMemory extends AbstractTest
+{
+   
+   /**
+    * Create a Map, populate it with typical Entities. The try running 
+    * a query to retrieve entities using JXPath query.
+    */
+   @Test
+   public void testQueryAllEntities()
+   {
+      JXPathContext context = JXPathContext.newContext(this.stm);
+      Object object = context.getValue("model/uk.ac.ncl.sdia.a8905943.model.Car");
+      Assert.assertNotNull(object);
+      List<Object> list = (List<Object>)object ;
+      Assert.assertFalse(list.isEmpty());
+      Assert.assertEquals(3, list.size());
+   }
+   /**
+    * This is a non transactional test to check model elements can be
+    * queried. 
+    *
+    */
+   @Test
+   public void testQueryFishByType()
+   {
+      //String fishEntityFQCN=  "Fish";
+      String fishEntityFQCN=  Fish.class.getName();
+      List<Object> entityList = new ArrayList<Object>();
+      Fish fishy1 = new Fish(1l);
+      fishy1.setType("Whiting");
+      entityList.add(fishy1);
+      Fish fishy2 = new Fish(2l);
+      fishy2.setType("Cod");
+      entityList.add(fishy2);
+      Fish fishy3 = new Fish(3l);
+      fishy3.setType("Flounder");
+      entityList.add(fishy3);
+      this.modelStore.put(fishEntityFQCN, entityList);
+      
+      JXPathContext context = JXPathContext.newContext(this.stm);
+      Object object = context.getValue("model/uk.ac.ncl.sdia.a8905943.model.untransactional.Fish[type='Whiting']");
+      Assert.assertNotNull(object);
+      Fish fish = (Fish)object;
+      Assert.assertEquals("Whiting", fish.getType());
+   }
+   
+   /**
+    * This is a non transactional test to check model elements can be
+    * queried. 
+    */
+   @Test
+   public void testQueryInTransactionalCarByType()
+   {
+      JXPathContext context = JXPathContext.newContext(this.stm);
+      Object object = context.getValue("model/uk.ac.ncl.sdia.a8905943.model.Car[make='MG']");
+      Assert.assertNotNull(object);
+      Car car = (Car)object;
+      Assert.assertEquals("MG", car.getMake());
+      Assert.assertEquals (new Long(2) , car.getId());
+   }
+   
+   
+   @Before
+   public void setUp()
+   {
+      super.setUp();
+      
+      List<Object> entityList = new ArrayList<Object>();
+      Car car1 = new Car(1l);
+      entityList.add(car1);
+      car1.setMake("Ford");
+      
+      Car car2 = new Car(2l);
+      entityList.add(car2);
+      car2.setMake("MG");
+      
+      Car car3 = new Car(3l);
+      entityList.add(car3);
+      car3.setMake("Jaguar");
+      this.modelStore.put(Car.class.getName(), entityList);
+   }
+}

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitSTM.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitSTM.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/TestUnitSTM.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -6,21 +6,26 @@
  */
 package uk.ac.ncl.sdia.a8905943.stm;
 
-import org.infinispan.manager.CacheManager;
-import org.infinispan.manager.DefaultCacheManager;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
 import org.junit.Test;
 
 import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
 import uk.ac.ncl.sdia.a8905943.stm.exception.IsolationLevelNotConfiguredException;
+import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
 
-public class TestUnitSTM
+public class TestUnitSTM 
 {
    @Test (expected=IsolationLevelNotConfiguredException.class)
    public void checkIsolationSetBeforeBeginningTransaction()
       throws IsolationLevelNotConfiguredException  
    { // expected to throw an exception when stm instructred to begin before configured
-      CacheManager cacheManager = new DefaultCacheManager(  );
-      STM stm = new STM("retail", cacheManager.getCache());
+      Map<Long, TransactedObjectReference> fieldStore = new ConcurrentHashMap<Long, TransactedObjectReference>();
+      Map<String, List<Object>> modelStore = new ConcurrentHashMap<String, List<Object>>();
+      
+      STM stm = new STM("retail", fieldStore, modelStore);
       STMFactory.getFactoryInstance().allocate(stm);
       stm.begin();
    }

Modified: labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/transaction/TestUnitTransactionManager.java
===================================================================
--- labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/transaction/TestUnitTransactionManager.java	2009-08-23 19:04:58 UTC (rev 29035)
+++ labs/jbosstm/workspace/whitingjr/trunk/MVCCSampleSTM/src/test/java/uk/ac/ncl/sdia/a8905943/stm/transaction/TestUnitTransactionManager.java	2009-08-23 19:06:08 UTC (rev 29036)
@@ -6,52 +6,69 @@
  */
 package uk.ac.ncl.sdia.a8905943.stm.transaction;
 
-import java.sql.Connection;
-
 import junit.framework.Assert;
 
-import org.infinispan.manager.CacheManager;
-import org.infinispan.manager.DefaultCacheManager;
-import org.junit.Before;
 import org.junit.Test;
 
-import uk.ac.ncl.sdia.a8905943.factory.STMFactory;
-import uk.ac.ncl.sdia.a8905943.stm.STM;
-import uk.ac.ncl.sdia.a8905943.stm.exception.IsolationLevelNotConfiguredException;
+import uk.ac.ncl.sdia.a8905943.factory.TransactionFactory;
+import uk.ac.ncl.sdia.a8905943.handle.HandleUtils;
+import uk.ac.ncl.sdia.a8905943.impl.STMTransactionImpl;
+import uk.ac.ncl.sdia.a8905943.model.Car;
+import uk.ac.ncl.sdia.a8905943.stm.AbstractTest;
+import uk.ac.ncl.sdia.a8905943.stm.object.TransactedObjectReference;
 
-public class TestUnitTransactionManager
+public class TestUnitTransactionManager extends AbstractTest
 {
-   
    /**
     * This test constructs a valid number of reads and validates them against the shared version.
     */
    @Test
    public void checkValidationPasses()
    {
-//      Car car = new uk.ac.ncl.sdia.a8905943.model.Car
+      Assert.assertNotNull(TransactionFactory.getFactory());
+      STMTransactionImpl transaction =(STMTransactionImpl) TransactionFactory.getFactory().getCurrentTransaction(false);
+      Assert.assertNotNull(transaction);
+      Long id = 3l;
+      String make = "Ford";
+      Long version = 1l;
+      Car car = new Car(id);
+      Long handle = new HandleUtils().getHandle(Car.class, id, "make") ;
+      TransactedObjectReference reference = new TransactedObjectReference(handle, make,  version);
+      this.fieldStore.put(handle, reference);
       
+      car.setMake(make);
+      car.getMake();// puts the read in the transaction history
       
+      TransactionManager transactionManager = new TransactionManager();
+      Assert.assertEquals(1, transaction.getDeferredReads().size());
+      Assert.assertEquals( 1, this.fieldStore.size());
+      Assert.assertTrue( transactionManager.validate(transaction, this.fieldStore));
    }
+   
    @Test
    public void checkValidationConflictDetected()
    {
+      Assert.assertNotNull(TransactionFactory.getFactory());
+      STMTransactionImpl transaction =(STMTransactionImpl) TransactionFactory.getFactory().getCurrentTransaction(false);
+      Assert.assertNotNull(transaction);
+      Long id = 3l;
+      String make = "Ford";
+      Long version = 2l; // newer version 
+      Car car = new Car(id);
+      Long handle = new HandleUtils().getHandle(Car.class, id, "make") ;
+      TransactedObjectReference reference = new TransactedObjectReference(handle, make,  version);
+      this.fieldStore.put(handle, reference);
       
+      car.setMake(make);
+      car.getMake();// puts the read in the transaction history with version number 1
+      
+      TransactedObjectReference concurrentUpdate = new TransactedObjectReference(handle, make, 3l);
+      this.fieldStore.put(handle, concurrentUpdate);
+      
+      TransactionManager transactionManager = new TransactionManager();
+      Assert.assertEquals(1, transaction.getDeferredReads().size());
+      Assert.assertEquals( 1, this.fieldStore.size());
+      Assert.assertFalse( transactionManager.validate(transaction, this.fieldStore));
    }
    
-   @Before
-   public void setUp()
-   {
-      CacheManager cacheManager = new DefaultCacheManager(  );
-      STM stm = new STM("retail", cacheManager.getCache());
-      STMFactory.getFactoryInstance().allocate(stm);
-      stm.setCurrentTransactionIsolation(Connection.TRANSACTION_REPEATABLE_READ);
-      try
-      {
-         stm.begin();
-      }
-      catch (IsolationLevelNotConfiguredException ilnce)
-      {
-         Assert.fail(ilnce.getMessage());
-      }
-   }
 }



More information about the jboss-svn-commits mailing list