[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