[jboss-svn-commits] JBL Code SVN: r31579 - in labs/jbosstm/trunk/ArjunaCore/arjuna: classes/com/arjuna/ats/arjuna/common and 14 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Feb 11 14:44:21 EST 2010
Author: mark.little at jboss.com
Date: 2010-02-11 14:44:20 -0500 (Thu, 11 Feb 2010)
New Revision: 31579
Added:
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/atomicaction/AppendLogUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/TxLogStateManagerUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidHelperUnitTest.java
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/AtomicAction.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/StateManager.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Mutex.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Uid.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/state/OutputObjectState.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/Header.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/LogWriteStateManager.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/common/UidHelper.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/AppendLogTransaction.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/ActionStore.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/tools/log/EditableAtomicAction.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/MutexUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/TypesUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/BasicThreadedObject.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/ExtendedObject.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/ExtendedUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/threadaction/ThreadActionTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/tools/LogEditorUnitTest.java
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidUnitTest.java
Log:
https://jira.jboss.org/jira/browse/JBTM-698
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/AtomicAction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/AtomicAction.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/AtomicAction.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -336,7 +336,7 @@
* @return a handle on the current AtomicAction (if any) so that the thread
* can later resume association if required.
*
- * message com.arjuna.ats.atomicaction_1 Attempt to suspend a
+ * @message com.arjuna.ats.atomicaction_1 [com.arjuna.ats.atomicaction_1] Attempt to suspend a
* non-AtomicAction transaction. Type is {0}
*/
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/StateManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/StateManager.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/StateManager.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -423,7 +423,7 @@
}
}
}
-
+
return result;
}
@@ -1472,10 +1472,10 @@
usingActions.put(action.get_uid(), action);
}
}
+
+ result = true;
}
- result = true;
-
return result;
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Mutex.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Mutex.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Mutex.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -146,7 +146,7 @@
tsLogger.arjLoggerI18N.warn("com.arjuna.ats.arjuna.common.Mutex_2");
}
- return Mutex.LOCKED;
+ return Mutex.ERROR;
}
else
{
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Uid.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Uid.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Uid.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -148,6 +148,9 @@
public Uid (byte[] byteForm)
{
+ if (byteForm == null)
+ throw new IllegalArgumentException();
+
hostAddr = new long[2];
_hashValue = -1;
_stringForm = null;
@@ -195,6 +198,9 @@
public Uid(String uidString, boolean errsOk)
{
+ if (uidString == null)
+ throw new IllegalArgumentException();
+
char theBreakChar = Uid.getBreakChar(uidString);
hostAddr = new long[2];
@@ -305,7 +311,14 @@
{
try
{
+ /*
+ * We do this so the instance is printable, but
+ * it shouldn't be usable from here on in!
+ */
+
this.copy(Uid.nullUid());
+
+ _valid = false;
}
catch (Exception e)
{
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/state/OutputObjectState.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/state/OutputObjectState.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/state/OutputObjectState.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -133,7 +133,7 @@
bufferUid = new Uid(newUid);
super._valid = bufferUid.valid();
- imageType = new String(tName);
+ imageType = (tName == null ? null : new String(tName));
}
public OutputObjectState (Uid newUid, String tName, byte[] buffer)
@@ -150,7 +150,7 @@
bufferUid = new Uid(newUid);
super._valid = bufferUid.valid();
- imageType = new String(tName);
+ imageType = (tName == null ? null : new String(tName));
}
public final boolean notempty ()
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/Header.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/Header.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/Header.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -26,7 +26,7 @@
* Tyne and Wear,
* UK.
*
- * $Id: LogWriteStateManager.java 2342 2006-03-30 13:06:17Z $
+ * $Id$
*/
package com.arjuna.ats.internal.arjuna;
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/LogWriteStateManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/LogWriteStateManager.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/LogWriteStateManager.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -51,6 +51,10 @@
* @since JTS 4.1.
*/
+/**
+ * Needs further consideration and then completion.
+ */
+
public class LogWriteStateManager extends StateManager
{
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/common/UidHelper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/common/UidHelper.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/common/UidHelper.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -32,7 +32,6 @@
package com.arjuna.ats.internal.arjuna.common;
import java.io.IOException;
-import java.security.InvalidParameterException;
import com.arjuna.ats.arjuna.common.Uid;
import com.arjuna.ats.arjuna.state.InputBuffer;
@@ -42,21 +41,22 @@
{
public static final Uid unpackFrom (InputBuffer buff) throws IOException
{
- byte[] byteForm = buff.unpackBytes();
+ if (buff == null)
+ throw new IllegalArgumentException();
- if (byteForm == null)
- throw new IOException();
-
- return new Uid(byteForm);
+ return new Uid(buff.unpackBytes());
}
public static final void packInto (Uid u, OutputBuffer buff)
throws IOException
{
+ if ((u == null) || (buff == null))
+ throw new IllegalArgumentException();
+
if (u.valid())
buff.packBytes(u.getBytes());
else
- throw new InvalidParameterException();
+ throw new IllegalArgumentException();
}
private UidHelper()
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/AppendLogTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/AppendLogTransaction.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/coordinator/AppendLogTransaction.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -31,20 +31,21 @@
package com.arjuna.ats.internal.arjuna.coordinator;
-import com.arjuna.ats.arjuna.logging.tsLogger;
-import com.arjuna.ats.arjuna.logging.FacilityCode;
+import com.arjuna.ats.arjuna.TopLevelAction;
-import com.arjuna.ats.arjuna.AtomicAction;
-
-import com.arjuna.common.util.logging.*;
-
/**
* @author Mark Little (mark at arjuna.com)
* @version $Id: AppendLogTransaction.java 2342 2006-03-30 13:06:17Z $
* @since JTS 4.1.
*/
-public class AppendLogTransaction extends AtomicAction
+/**
+ * Needs further consideration and then completion.
+ */
+
+// may no longer be needed due to TxLog work.
+
+public class AppendLogTransaction extends TopLevelAction
{
public final boolean setLoggedTransaction (AppendLogTransaction previous)
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/ActionStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/ActionStore.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/objectstore/ActionStore.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -266,23 +266,8 @@
public ActionStore(int shareStatus)
{
- super(shareStatus);
-
- try
- {
- setupStore(arjPropertyManager.getObjectStoreEnvironmentBean()
- .getLocalOSRoot());
- }
- catch (ObjectStoreException e)
- {
- if (tsLogger.arjLoggerI18N.isWarnEnabled())
- tsLogger.arjLogger.warn(e);
-
- super.makeInvalid();
-
- throw new com.arjuna.ats.arjuna.exceptions.FatalError(e.toString(),
- e);
- }
+ this(arjPropertyManager.getObjectStoreEnvironmentBean()
+ .getLocalOSRoot(), shareStatus);
}
protected synchronized boolean setupStore (String location)
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/tools/log/EditableAtomicAction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/tools/log/EditableAtomicAction.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/tools/log/EditableAtomicAction.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -27,7 +27,13 @@
import com.arjuna.ats.arjuna.coordinator.ActionStatus;
import com.arjuna.ats.arjuna.coordinator.RecordListIterator;
import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
+import com.arjuna.ats.arjuna.logging.tsLogger;
+/**
+ * @message com.arjuna.ats.internal.arjuna.tools.log.eaa1 [com.arjuna.ats.internal.arjuna.tools.log.eaa1] Transaction {0} and {1} not activate.
+ * @message com.arjuna.ats.internal.arjuna.tools.log.eaa2 [com.arjuna.ats.internal.arjuna.tools.log.eaa2] Error - could not get resource to forget heuristic. Left on Heuristic List.
+ */
+
public class EditableAtomicAction extends AtomicAction implements EditableTransaction // going to have to be one per action type because of state differences
{
public EditableAtomicAction (final Uid u)
@@ -37,7 +43,13 @@
_activated = activate();
if (!_activated)
- System.err.println("Transaction "+u+" and "+type()+" not activated.");
+ {
+ if (tsLogger.arjLoggerI18N.isWarnEnabled())
+ {
+ tsLogger.arjLoggerI18N.warn("com.arjuna.ats.internal.arjuna.tools.log.eaa1", new Object[]
+ { u, type() });
+ }
+ }
}
/**
@@ -47,7 +59,7 @@
public void moveHeuristicToPrepared (int index) throws IndexOutOfBoundsException
{
- if ((index < 0) || (index > super.heuristicList.size()))
+ if ((index < 0) || (index >= super.heuristicList.size()))
throw new IndexOutOfBoundsException();
else
{
@@ -56,7 +68,7 @@
RecordListIterator iter = new RecordListIterator(super.heuristicList);
AbstractRecord rec = iter.iterate();
-
+
for (int i = 0; i < index; i++)
rec = iter.iterate();
@@ -91,7 +103,12 @@
super.updateState();
}
else
- System.err.println("Error - could not get resource to forget heuristic. Left on Heuristic List.");
+ {
+ if (tsLogger.arjLoggerI18N.isWarnEnabled())
+ {
+ tsLogger.arjLoggerI18N.warn("com.arjuna.ats.internal.arjuna.tools.log.eaa2");
+ }
+ }
}
}
@@ -101,7 +118,7 @@
public void deleteHeuristicParticipant (int index) throws IndexOutOfBoundsException
{
- if ((index < 0) || (index > super.heuristicList.size()))
+ if ((index < 0) || (index >= super.heuristicList.size()))
throw new IndexOutOfBoundsException();
else
{
Added: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/atomicaction/AppendLogUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/atomicaction/AppendLogUnitTest.java (rev 0)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/atomicaction/AppendLogUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.hp.mwtests.ts.arjuna.atomicaction;
+
+import com.arjuna.ats.arjuna.AtomicAction;
+import com.arjuna.ats.arjuna.TopLevelAction;
+import com.arjuna.ats.arjuna.coordinator.ActionStatus;
+import com.arjuna.ats.internal.arjuna.coordinator.AppendLogTransaction;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class AppendLogUnitTest
+{
+ @Test
+ public void test() throws Exception
+ {
+ AppendLogTransaction alog1 = new AppendLogTransaction();
+ AppendLogTransaction alog2 = new AppendLogTransaction();
+
+ alog1.begin();
+ alog2.begin();
+
+ alog1.setLoggedTransaction(alog2);
+
+ alog2.commit();
+ alog1.commit();
+ }
+}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/MutexUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/MutexUnitTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/MutexUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -26,6 +26,39 @@
import static org.junit.Assert.*;
+class MutexThread extends Thread
+{
+ public MutexThread (Mutex share)
+ {
+ _mutex = share;
+ }
+
+ public void run ()
+ {
+ if (_mutex.lock() == Mutex.LOCKED)
+ {
+ for (int i = 0; i < 1000; i++)
+ {
+ // do some work
+
+ System.currentTimeMillis();
+ }
+
+ _mutex.unlock();
+ }
+
+ _done = true;
+ }
+
+ public boolean valid ()
+ {
+ return _done;
+ }
+
+ private Mutex _mutex;
+ private boolean _done = false;
+}
+
public class MutexUnitTest
{
@Test
@@ -39,6 +72,38 @@
}
@Test
+ public void testThreaded () throws Exception
+ {
+ Mutex mx = new Mutex();
+ MutexThread mt1 = new MutexThread(mx);
+ MutexThread mt2 = new MutexThread(mx);
+
+ mt1.run();
+ mt2.run();
+
+ try
+ {
+ mt1.join();
+ mt2.join();
+ }
+ catch (final Throwable ex)
+ {
+ fail();
+ }
+
+ assertTrue(mt1.valid());
+ assertTrue(mt2.valid());
+ }
+
+ @Test
+ public void testInvalid () throws Exception
+ {
+ Mutex mx = new Mutex();
+
+ assertEquals(mx.unlock(), Mutex.ERROR);
+ }
+
+ @Test
public void testReentrantMutex () throws Exception
{
Mutex mx = new Mutex();
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/TypesUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/TypesUnitTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/TypesUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -63,6 +63,10 @@
ObjectStatus.print(pw, ObjectStatus.ACTIVE);
assertEquals(ObjectStatus.toString(ObjectStatus.ACTIVE_NEW), "ACTIVE_NEW");
+ assertEquals(ObjectStatus.toString(ObjectStatus.PASSIVE), "PASSIVE");
+ assertEquals(ObjectStatus.toString(ObjectStatus.PASSIVE_NEW), "PASSIVE_NEW");
+ assertEquals(ObjectStatus.toString(ObjectStatus.DESTROYED), "DESTROYED");
+ assertEquals(ObjectStatus.toString(ObjectStatus.UNKNOWN_STATUS), "UNKNOWN_STATUS");
}
@Test
@@ -75,6 +79,8 @@
ObjectType.print(pw, ObjectType.ANDPERSISTENT);
assertEquals(ObjectType.toString(ObjectType.NEITHER), "NEITHER");
+ assertEquals(ObjectType.toString(ObjectType.RECOVERABLE), "RECOVERABLE");
+ assertEquals(ObjectType.toString(ObjectType.UNKNOWN_TYPE), "UNKNOWN_TYPE");
}
@Test
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -34,6 +34,7 @@
import com.arjuna.ats.arjuna.common.Uid;
import com.arjuna.ats.arjuna.common.arjPropertyManager;
import com.arjuna.ats.arjuna.coordinator.TxControl;
+import com.arjuna.ats.arjuna.exceptions.FatalError;
import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
import com.arjuna.ats.arjuna.objectstore.ObjectStore;
import com.arjuna.ats.arjuna.objectstore.ObjectStoreIterator;
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/BasicThreadedObject.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/BasicThreadedObject.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/BasicThreadedObject.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -57,9 +57,10 @@
Thread.yield();
} else {
- System.out.println("BasicThreadedObject " + uid + " adding to action " + BasicThreadedObject.A.get_uid());
+ System.out.println("BasicThreadedObject " + uid + " adding to existing action");
- BasicThreadedObject.A.addThread();
+ if (A != null)
+ BasicThreadedObject.A.addThread();
Thread.yield();
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/ExtendedObject.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/ExtendedObject.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/resources/ExtendedObject.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -33,6 +33,8 @@
import com.arjuna.ats.arjuna.*;
import com.arjuna.ats.arjuna.common.*;
+import com.arjuna.ats.arjuna.coordinator.BasicAction;
+import com.arjuna.ats.arjuna.coordinator.RecordType;
import com.arjuna.ats.arjuna.state.*;
public class ExtendedObject extends StateManager
@@ -68,6 +70,11 @@
getMutex().unlock();
}
+ public void set_status ()
+ {
+ super.setStatus(ObjectStatus.PASSIVE);
+ }
+
public boolean lock ()
{
return super.tryLockMutex();
@@ -78,6 +85,11 @@
return super.unlockMutex();
}
+ public boolean remember (BasicAction act)
+ {
+ return super.rememberAction(act, RecordType.ACTIVATION);
+ }
+
public void incr(int value)
{
modified();
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/ExtendedUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/ExtendedUnitTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/ExtendedUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -38,6 +38,7 @@
import com.arjuna.ats.arjuna.ObjectStatus;
import com.arjuna.ats.arjuna.ObjectType;
import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.internal.arjuna.thread.ThreadActionData;
import com.hp.mwtests.ts.arjuna.resources.*;
@@ -96,11 +97,49 @@
}
@Test
- public void tryLock () throws Exception
+ public void testTryLock () throws Exception
{
ExtendedObject bo = new ExtendedObject();
assertTrue(bo.lock());
assertTrue(bo.unlock());
}
+
+ @Test
+ public void testFail () throws Exception
+ {
+ ExtendedObject bo = new ExtendedObject();
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+ A.commit();
+
+ ThreadActionData.pushAction(A); // put it back on this thread.
+
+ bo.deactivate();
+ bo.set_status();
+
+ assertEquals(bo.activate(), false);
+ assertEquals(bo.destroy(), false);
+ }
+
+ @Test
+ public void testRememberAction () throws Exception
+ {
+ ExtendedObject bo = new ExtendedObject();
+ final Uid u = bo.get_uid();
+
+ bo.activate();
+ bo.deactivate();
+
+ bo = new ExtendedObject(u);
+
+ AtomicAction A = new AtomicAction();
+
+ A.begin();
+
+ assertTrue(bo.remember(A));
+
+ A.commit();
+ }
}
Added: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/TxLogStateManagerUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/TxLogStateManagerUnitTest.java (rev 0)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/statemanager/TxLogStateManagerUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -0,0 +1,80 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 1998, 1999, 2000,
+ *
+ * Arjuna Solutions Limited,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: BasicTest.java 2342 2006-03-30 13:06:17Z $
+ */
+
+package com.hp.mwtests.ts.arjuna.statemanager;
+
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
+import com.arjuna.ats.arjuna.AtomicAction;
+import com.arjuna.ats.arjuna.ObjectModel;
+import com.arjuna.ats.arjuna.ObjectStatus;
+import com.arjuna.ats.arjuna.ObjectType;
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.common.arjPropertyManager;
+import com.arjuna.ats.internal.arjuna.LogWriteStateManager;
+
+import com.hp.mwtests.ts.arjuna.resources.*;
+
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+class TxStateManager extends LogWriteStateManager
+{
+ public TxStateManager ()
+ {
+ super(ObjectModel.MULTIPLE);
+ }
+
+ public boolean modified ()
+ {
+ return super.modified();
+ }
+}
+
+public class TxLogStateManagerUnitTest
+{
+ @Test
+ public void test() throws Exception
+ {
+ AtomicAction A = new AtomicAction();
+ TxStateManager tm = new TxStateManager();
+
+ arjPropertyManager.getCoordinatorEnvironmentBean().setClassicPrepare(true);
+
+ A.begin();
+
+ assertTrue(tm.modified());
+ assertTrue(tm.writeOptimisation());
+
+ A.commit();
+ }
+}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/threadaction/ThreadActionTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/threadaction/ThreadActionTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/threadaction/ThreadActionTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -32,7 +32,10 @@
*/
import com.hp.mwtests.ts.arjuna.resources.BasicThreadedObject;
+import com.arjuna.ats.arjuna.AtomicAction;
import com.arjuna.ats.arjuna.coordinator.*;
+import com.arjuna.ats.internal.arjuna.thread.ThreadActionData;
+import com.arjuna.ats.internal.arjuna.thread.ThreadSetup;
import java.lang.Thread;
@@ -41,6 +44,21 @@
import org.junit.Test;
import static org.junit.Assert.*;
+class DummySetup implements ThreadSetup
+{
+ public void setup ()
+ {
+ _called = true;
+ }
+
+ public boolean called ()
+ {
+ return _called;
+ }
+
+ private boolean _called = false;
+}
+
public class ThreadActionTest
{
@Test
@@ -66,4 +84,31 @@
System.out.println("Main thread has action " + BasicAction.Current());
}
+ @Test
+ public void testOthers ()
+ {
+ DummySetup ds = new DummySetup();
+
+ ThreadActionData.addSetup(ds);
+
+ AtomicAction A = new AtomicAction();
+ AtomicAction B = new AtomicAction();
+
+ A.begin();
+ B.begin();
+
+ assertTrue(ThreadActionData.currentAction() != null);
+
+ ThreadActionData.restoreActions(B);
+
+ assertEquals(ThreadActionData.popAction(), B);
+
+ ThreadActionData.purgeActions(Thread.currentThread());
+
+ assertTrue(ds.called());
+
+ ThreadActionData.removeSetup(ds);
+
+ ThreadActionData.popAction(Thread.currentThread().getName());
+ }
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/tools/LogEditorUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/tools/LogEditorUnitTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/tools/LogEditorUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -89,7 +89,7 @@
B.add(new CrashRecord(CrashRecord.CrashLocation.CrashInCommit,
CrashRecord.CrashType.HeuristicHazard));
B.add(new CrashRecord(CrashRecord.CrashLocation.CrashInCommit,
- CrashRecord.CrashType.HeuristicHazard));
+ CrashRecord.CrashType.Normal));
B.add(new CrashRecord(CrashRecord.CrashLocation.CrashInCommit,
CrashRecord.CrashType.HeuristicHazard));
@@ -104,7 +104,7 @@
assertTrue(eaa.toString() != null);
- eaa.moveHeuristicToPrepared(0);
+ eaa.moveHeuristicToPrepared(1);
try
{
Added: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidHelperUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidHelperUnitTest.java (rev 0)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidHelperUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+package com.hp.mwtests.ts.arjuna.uid;
+
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.state.OutputObjectState;
+import com.arjuna.ats.internal.arjuna.common.UidHelper;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class UidHelperUnitTest
+{
+ @Test
+ public void test () throws Exception
+ {
+ Uid u = new Uid("hello", true); // should be invalid!
+
+ assertEquals(u.valid(), false);
+
+ try
+ {
+ u = UidHelper.unpackFrom(null);
+
+ fail();
+ }
+ catch (final IllegalArgumentException ex)
+ {
+ }
+
+ try
+ {
+ UidHelper.packInto(null, new OutputObjectState());
+
+ fail();
+ }
+ catch (final IllegalArgumentException ex)
+ {
+ }
+
+ try
+ {
+ UidHelper.packInto(u, new OutputObjectState());
+
+ fail();
+ }
+ catch (final IllegalArgumentException ex)
+ {
+ }
+ }
+}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidUnitTest.java 2010-02-11 18:43:58 UTC (rev 31578)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/uid/UidUnitTest.java 2010-02-11 19:44:20 UTC (rev 31579)
@@ -27,6 +27,8 @@
import java.io.PrintStream;
import com.arjuna.ats.arjuna.common.*;
+import com.arjuna.ats.arjuna.exceptions.FatalError;
+
import org.junit.Test;
import static org.junit.Assert.*;
@@ -47,6 +49,71 @@
}
@Test
+ public void testInvalid () throws Exception
+ {
+ Uid u = null;
+
+ try
+ {
+ u = new Uid(null, 0, 0, 0);
+
+ fail();
+ }
+ catch (final FatalError ex)
+ {
+ }
+
+ try
+ {
+ u = new Uid("hello world", false);
+
+ fail();
+ }
+ catch (final FatalError ex)
+ {
+ }
+
+ try
+ {
+ u = new Uid((String) null);
+
+ fail();
+ }
+ catch (final IllegalArgumentException ex)
+ {
+ }
+
+ try
+ {
+ u = new Uid((byte[]) null);
+
+ fail();
+ }
+ catch (final IllegalArgumentException ex)
+ {
+ }
+
+ byte[] b = {0, 0};
+ u = new Uid(b);
+
+ assertEquals(u.valid(), false);
+ }
+
+ @Test
+ public void testComparisons () throws Exception
+ {
+ Uid u = new Uid();
+
+ assertEquals(u.equals(new Object()), false);
+ assertTrue(u.notEquals(null));
+ assertEquals(u.notEquals(u), false);
+
+ assertEquals(u.lessThan(null), false);
+ assertEquals(u.greaterThan(null), false);
+ assertEquals(u.greaterThan(u), false);
+ }
+
+ @Test
public void testSerialization () throws Exception
{
Uid u1 = new Uid();
More information about the jboss-svn-commits
mailing list