[jboss-cvs] JBoss Messaging SVN: r3471 - in trunk: src/main/org/jboss/messaging/newcore/impl/bdbje/integration and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Dec 11 00:08:08 EST 2007
Author: timfox
Date: 2007-12-11 00:08:08 -0500 (Tue, 11 Dec 2007)
New Revision: 3471
Added:
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/BDBSpeedTest.java
Removed:
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBSpeedTest.java
Modified:
trunk/src/main/org/jboss/messaging/newcore/impl/MessageImpl.java
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEDatabase.java
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEEnvironment.java
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/RealBDBJEEnvironmentTest.java
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBJEEnvironmentTestBase.java
trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/fakes/FakeBDBJEEnvironment.java
trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/MessageTest.java
trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/QueueTest.java
trunk/src/main/org/jboss/messaging/test/unit/UnitTestCase.java
trunk/tests/build.xml
Log:
Get tests running and add to short-tests
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/MessageImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/MessageImpl.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/MessageImpl.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -94,19 +94,19 @@
*/
public MessageImpl()
{
+ this.headers = new HashMap<String, Object>();
}
public MessageImpl(long messageID, int type, boolean reliable, long expiration,
long timestamp, byte priority)
{
+ this();
this.messageID = messageID;
this.type = type;
this.reliable = reliable;
this.expiration = expiration;
this.timestamp = timestamp;
- this.priority = priority;
-
- this.headers = new HashMap<String, Object>();
+ this.priority = priority;
}
/*
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEDatabase.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEDatabase.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEDatabase.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -38,8 +38,9 @@
DatabaseEntry value = new DatabaseEntry();
- if (offset != 0)
+ if (offset != 0 || bytes.length != length)
{
+ System.out.println("Partial, offset=" + offset);
value.setPartial(offset, length, true);
}
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEEnvironment.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEEnvironment.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/RealBDBJEEnvironment.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -93,6 +93,9 @@
* Used for debug only to ensure the XA operations are called in the right order
*/
private Map<Thread, ThreadTXStatus> threadTXStatuses;
+
+ private Map<Xid, ThreadTXStatus> transactions;
+
public RealBDBJEEnvironment(boolean debug)
{
@@ -101,6 +104,8 @@
if (debug)
{
threadTXStatuses = new ConcurrentHashMap<Thread, ThreadTXStatus>();
+
+ transactions = new ConcurrentHashMap<Xid, ThreadTXStatus>();
}
}
@@ -263,9 +268,7 @@
{
if (debug)
{
- checkNoStatus();
-
- threadTXStatuses.put(Thread.currentThread(), new ThreadTXStatus(xid));
+ checkStartWork(xid);
}
environment.start(xid, XAResource.TMNOFLAGS);
@@ -275,21 +278,17 @@
{
if (debug)
{
- checkXAState(xid, XAState.IN_WORK);
-
- setXAState(XAState.DONE_WORK);
+ checkEndWork(xid);
}
environment.end(xid, failed ? XAResource.TMFAIL : XAResource.TMSUCCESS);
}
-
+
public void prepare(Xid xid) throws Exception
{
if (debug)
{
- checkXAState(xid, XAState.DONE_WORK);
-
- setXAState(XAState.PREPARE_CALLED);
+ checkPrepare(xid);
}
environment.prepare(xid);
@@ -299,9 +298,7 @@
{
if (debug)
{
- checkXAState(xid, XAState.PREPARE_CALLED);
-
- threadTXStatuses.remove(Thread.currentThread());
+ checkCommitRollback(xid);
}
environment.commit(xid, false);
@@ -311,9 +308,7 @@
{
if (debug)
{
- checkXAState(xid, XAState.PREPARE_CALLED);
-
- threadTXStatuses.remove(Thread.currentThread());
+ checkCommitRollback(xid);
}
environment.rollback(xid);
@@ -324,54 +319,82 @@
/*
* Used for debug only
*/
- private ThreadTXStatus getTxStatus()
+
+ private void checkStartWork(Xid xid)
{
- return threadTXStatuses.get(Thread.currentThread());
+ if (threadTXStatuses.get(Thread.currentThread()) != null)
+ {
+ throw new IllegalStateException("Already implicit transaction");
+ }
+
+ if (transactions.get(xid) != null)
+ {
+ throw new IllegalStateException("Already tx for xid");
+ }
+
+ threadTXStatuses.put(Thread.currentThread(), new ThreadTXStatus(xid));
}
- private void checkXAState(Xid xid, XAState state)
+ private void checkEndWork(Xid xid)
{
- ThreadTXStatus status = getTxStatus();
-
+ ThreadTXStatus status = threadTXStatuses.get(Thread.currentThread());
+
if (status == null)
{
- throw new IllegalStateException("Not started any xa work");
+ throw new IllegalStateException("No implicit transaction");
+ }
+
+ if (!status.implicitXid.equals(xid))
+ {
+ throw new IllegalStateException("Wrong xid");
}
- if (!state.equals(status.state))
+ threadTXStatuses.remove(Thread.currentThread());
+
+ transactions.put(xid, status);
+ }
+
+ private void checkPrepare(Xid xid)
+ {
+ ThreadTXStatus status = this.transactions.get(xid);
+
+ if (status == null)
{
- throw new IllegalStateException("Invalid XAState expected " + state + " got " + status.state);
+ throw new IllegalStateException("Cannot find tx for xid");
}
- if (xid != status.implicitXid)
+ if (this.threadTXStatuses.get(Thread.currentThread()) != null)
{
- throw new IllegalStateException("Wrong xid");
+ throw new IllegalStateException("Implicit transaction exists");
}
+
+ status.prepared = true;
}
-
- private void checkNoStatus()
+
+ private void checkCommitRollback(Xid xid)
{
- ThreadTXStatus status = getTxStatus();
-
- if (status != null)
+ ThreadTXStatus status = this.transactions.get(xid);
+
+ if (status == null)
{
- throw new IllegalStateException("XA status should not exist");
+ throw new IllegalStateException("Cannot find tx for xid");
}
+
+ if (!status.prepared)
+ {
+ throw new IllegalStateException("Tx not prepared");
+ }
+
+ if (this.threadTXStatuses.get(Thread.currentThread()) != null)
+ {
+ throw new IllegalStateException("Implicit transaction exists");
+ }
+
+ transactions.remove(xid);
}
- private void setXAState(XAState state)
- {
- threadTXStatuses.get(Thread.currentThread()).state = state;
- }
-
-
// Inner classes --------------------------------------------------------------------
- private enum XAState
- {
- NOT_STARTED, IN_WORK, DONE_WORK, PREPARE_CALLED
- }
-
/*
* Used for debug only
*/
@@ -384,7 +407,9 @@
Xid implicitXid;
- XAState state = XAState.IN_WORK;
+ //XAState state = XAState.IN_WORK;
+
+ boolean prepared;
}
}
Copied: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/BDBSpeedTest.java (from rev 3467, trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBSpeedTest.java)
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/BDBSpeedTest.java (rev 0)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/BDBSpeedTest.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -0,0 +1,660 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY 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 along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.messaging.newcore.impl.bdbje.integration.test.unit;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.transaction.xa.Xid;
+
+import org.jboss.jms.tx.MessagingXid;
+import org.jboss.messaging.newcore.impl.MessageImpl;
+import org.jboss.messaging.newcore.impl.QueueImpl;
+import org.jboss.messaging.newcore.impl.bdbje.BDBJEPersistenceManager;
+import org.jboss.messaging.newcore.intf.Message;
+import org.jboss.messaging.newcore.intf.MessageReference;
+import org.jboss.messaging.newcore.intf.Queue;
+import org.jboss.messaging.test.unit.UnitTestCase;
+
+/**
+ *
+ * A BDBSpeedTest
+ *
+ * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
+ *
+ */
+public class BDBSpeedTest extends UnitTestCase
+{
+
+ public void test1()
+ {
+ }
+
+// public void testCommitMessage() throws Exception
+// {
+// String envPath = "/home/tim/test-env";
+//
+// File file = new File(envPath);
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// final int numMessages = 5000;
+//
+// final int numRefs = 10;
+//
+// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
+//
+// bdb.start();
+//
+// Queue queue = new QueueImpl(1);
+//
+// //List<Message> messages = new ArrayList<Message>();
+//
+// long start = System.currentTimeMillis();
+//
+// byte[] payload = new byte[1 * 1024];
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
+//
+// for (int j = 0; j < numRefs; j++)
+// {
+// message.createReference(queue);
+//
+// message.setPayload(payload);
+// }
+//
+// //messages.add(message);
+//
+// bdb.commitMessage(message);
+// }
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Insert Rate: " + rate);
+//
+// }
+//
+// public void testCommitMessages() throws Exception
+// {
+// String envPath = "/home/tim/test-env";
+//
+// File file = new File(envPath);
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// final int numMessages = 5000;
+//
+// final int numRefs = 10;
+//
+// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
+//
+// bdb.start();
+//
+// Queue queue = new QueueImpl(1);
+//
+// List<Message> messages = new ArrayList<Message>();
+//
+// long start = System.currentTimeMillis();
+//
+// byte[] payload = new byte[1 * 1024];
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
+//
+// for (int j = 0; j < numRefs; j++)
+// {
+// message.createReference(queue);
+//
+// message.setPayload(payload);
+// }
+//
+// messages.add(message);
+//
+// if (i % 100 == 0)
+// {
+// bdb.commitMessages(messages);
+//
+// messages.clear();
+// }
+// }
+// bdb.commitMessages(messages);
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Insert Rate: " + rate);
+//
+// }
+//
+// public void testDeleteReferences() throws Exception
+// {
+// String envPath = "/home/tim/test-env";
+//
+// File file = new File(envPath);
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// final int numMessages = 5000;
+//
+// final int numRefs = 10;
+//
+// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
+//
+// bdb.start();
+//
+// Queue queue = new QueueImpl(1);
+//
+// List<Message> messages = new ArrayList<Message>();
+//
+// byte[] payload = new byte[1 * 1024];
+//
+// List<MessageReference> refs = new ArrayList<MessageReference>();
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
+//
+// for (int j = 0; j < numRefs; j++)
+// {
+// MessageReference ref = message.createReference(queue);
+//
+// message.setPayload(payload);
+//
+// refs.add(ref);
+// }
+//
+// messages.add(message);
+//
+// if (i % 100 == 0)
+// {
+// bdb.commitMessages(messages);
+//
+// messages.clear();
+// }
+// }
+// bdb.commitMessages(messages);
+//
+// long start = System.currentTimeMillis();
+//
+// //Now delete them
+//
+// bdb.deleteReferences(refs);
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Delete Rate: " + rate);
+//
+// }
+//
+// public void testDeleteReference() throws Exception
+// {
+// String envPath = "/home/tim/test-env";
+//
+// File file = new File(envPath);
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// final int numMessages = 5000;
+//
+// final int numRefs = 1;
+//
+// BDBJEPersistenceManager bdb = new BDBJEPersistenceManager(envPath);
+//
+// bdb.start();
+//
+// Queue queue = new QueueImpl(1);
+//
+// List<Message> messages = new ArrayList<Message>();
+//
+// byte[] payload = new byte[1 * 1024];
+//
+// List<MessageReference> refs = new ArrayList<MessageReference>();
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
+//
+// for (int j = 0; j < numRefs; j++)
+// {
+// MessageReference ref = message.createReference(queue);
+//
+// message.setPayload(payload);
+//
+// refs.add(ref);
+// }
+//
+// messages.add(message);
+//
+// if (i % 100 == 0)
+// {
+// bdb.commitMessages(messages);
+//
+// messages.clear();
+// }
+// }
+// bdb.commitMessages(messages);
+//
+// System.out.println("Added them");
+//
+// long start = System.currentTimeMillis();
+//
+// //Now delete them
+//
+// for (MessageReference ref: refs)
+// {
+// bdb.deleteReference(ref);
+// }
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Delete Rate: " + rate);
+//
+// }
+//
+//
+// public void testPrepareMessages() throws Exception
+// {
+// String envPath = "/home/tim/test-env";
+//
+// File file = new File(envPath);
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// final int numMessages = 5000;
+//
+// final int numRefs = 10;
+//
+// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
+//
+// bdb.start();
+//
+// Queue queue = new QueueImpl(1);
+//
+// List<Message> messages = new ArrayList<Message>();
+//
+// long start = System.currentTimeMillis();
+//
+// byte[] payload = new byte[1 * 1024];
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
+//
+// for (int j = 0; j < numRefs; j++)
+// {
+// message.createReference(queue);
+//
+// message.setPayload(payload);
+// }
+//
+// messages.add(message);
+//
+// if (i % 100 == 0)
+// {
+// Xid xid = this.generateXid();
+//
+// bdb.prepareMessages(xid, messages);
+//
+// bdb.commitPreparedMessages(xid);
+//
+// messages.clear();
+// }
+// }
+//
+// Xid xid = this.generateXid();
+//
+// bdb.prepareMessages(xid, messages);
+//
+// bdb.commitPreparedMessages(xid);
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Insert Rate: " + rate);
+//
+// }
+
+// /*
+// * Test with message and ref in separate databases
+// */
+// public void testMsgandRefsDifferentDBSNoXA() throws Exception
+// {
+// File file = new File("/home/tim/test-env");
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// EnvironmentConfig envConfig = new EnvironmentConfig();
+//
+// envConfig.setAllowCreate(true);
+//
+// envConfig.setTransactional(true);
+//
+//// envConfig.setTxnNoSync(true);
+////
+//// envConfig.setTxnWriteNoSync(true);
+//
+// Environment env1 = new Environment(file, envConfig);
+//
+// DatabaseConfig dbConfig1 = new DatabaseConfig();
+//
+// dbConfig1.setTransactional(true);
+//
+// dbConfig1.setAllowCreate(true);
+//
+// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
+//
+// DatabaseConfig dbConfig2 = new DatabaseConfig();
+//
+// dbConfig2.setTransactional(true);
+//
+// dbConfig2.setAllowCreate(true);
+//
+// Database refDB = env1.openDatabase(null, "ref", dbConfig2);
+//
+//
+// DatabaseConfig dbConfig3 = new DatabaseConfig();
+//
+// dbConfig3.setTransactional(true);
+//
+// dbConfig3.setAllowCreate(true);
+//
+// Database txDB = env1.openDatabase(null, "tx", dbConfig3);
+//
+//
+//
+// final int numMessages = 5000;
+//
+// byte[] msgBytes = new byte[256];
+//
+// final int numRefs = 10;
+//
+// byte[] refBytes = new byte[numRefs * 20];
+//
+// byte[] txBytes = new byte[numRefs * 50];
+//
+//
+// long start = System.currentTimeMillis();
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// byte[] keyBytes = new byte[8];
+//
+// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
+//
+// buffer.putLong(i);
+//
+// DatabaseEntry key = new DatabaseEntry(keyBytes);
+//
+//
+// //Prepare refs
+//
+// DatabaseEntry refVal = new DatabaseEntry(refBytes);
+//
+// Transaction tx = env1.beginTransaction(null, null);
+//
+// refDB.put(tx, key, refVal);
+//
+// // Message
+//
+// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
+//
+// msgDB.put(tx, key, msgVal);
+//
+// //Write a tx record
+//
+// DatabaseEntry txVal = new DatabaseEntry(txBytes);
+//
+// txDB.put(tx, key, txVal);
+//
+// //Commit the prepare
+//
+// tx.commit();
+//
+// tx = env1.beginTransaction(null, null);
+//
+// //Now commit the refs
+//
+// refVal = new DatabaseEntry(refBytes);
+//
+// refDB.put(tx, key, refVal);
+//
+// //And delete the tx record
+//
+// txDB.delete(tx, key);
+//
+// tx.commit();
+// }
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Insert Rate: " + rate);
+//
+//
+// }
+//
+// public void testMsgandRefsDifferentDBSXA() throws Exception
+// {
+// File file = new File("/home/tim/test-env");
+//
+// deleteDirectory(file);
+//
+// file.mkdir();
+//
+// EnvironmentConfig envConfig = new EnvironmentConfig();
+//
+// envConfig.setAllowCreate(true);
+//
+// envConfig.setTransactional(true);
+//
+// XAEnvironment env1 = new XAEnvironment(file, envConfig);
+//
+// DatabaseConfig dbConfig1 = new DatabaseConfig();
+//
+// dbConfig1.setTransactional(true);
+//
+// dbConfig1.setAllowCreate(true);
+//
+// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
+//
+// DatabaseConfig dbConfig2 = new DatabaseConfig();
+//
+// dbConfig2.setTransactional(true);
+//
+// dbConfig2.setAllowCreate(true);
+//
+// Database refDB = env1.openDatabase(null, "ref", dbConfig2);
+//
+//
+//
+// final int numMessages = 5000;
+//
+// byte[] msgBytes = new byte[256];
+//
+// final int numRefs = 10;
+//
+// byte[] refBytes = new byte[numRefs * 20];
+//
+// long start = System.currentTimeMillis();
+//
+// for (int i = 0; i < numMessages; i++)
+// {
+// Xid xid = generateXid();
+//
+// env1.start(xid, XAResource.TMNOFLAGS);
+//
+// byte[] keyBytes = new byte[8];
+//
+// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
+//
+// buffer.putLong(i);
+//
+// DatabaseEntry key = new DatabaseEntry(keyBytes);
+//
+// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
+//
+// Transaction tx = env1.beginTransaction(null, null);
+//
+// msgDB.put(null, key, msgVal);
+//
+// //Now the refs
+//
+// DatabaseEntry refVal = new DatabaseEntry(refBytes);
+//
+// refDB.put(null, key, refVal);
+//
+// env1.end(xid, XAResource.TMSUCCESS);
+//
+// env1.prepare(xid);
+//
+// env1.commit(xid, false);
+//
+// // tx.commit();
+// }
+//
+// long end = System.currentTimeMillis();
+//
+// double rate = 1000 * (double)numMessages / (end - start);
+//
+// System.out.println("Insert Rate: " + rate);
+//
+// start = System.currentTimeMillis();
+// }
+//
+// private Xid generateXid()
+// {
+// String id = java.util.UUID.randomUUID().toString();
+//
+// Xid xid = new MessagingXid("blah".getBytes(), 123, id.getBytes());
+//
+// return xid;
+// }
+//
+//
+//// This is very slow
+//// public void testMsgandRefsSameDBSNoXA() throws Exception
+//// {
+//// File file = new File("/home/tim/test-env");
+////
+//// deleteDirectory(file);
+////
+//// file.mkdir();
+////
+//// EnvironmentConfig envConfig = new EnvironmentConfig();
+////
+//// envConfig.setAllowCreate(true);
+////
+//// envConfig.setTransactional(true);
+////
+//// Environment env1 = new Environment(file, envConfig);
+////
+//// DatabaseConfig dbConfig1 = new DatabaseConfig();
+////
+//// dbConfig1.setTransactional(true);
+////
+//// dbConfig1.setAllowCreate(true);
+////
+//// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
+////
+//// final int numMessages = 5000;
+////
+//// byte[] msgBytes = new byte[10 * 1024];
+////
+//// byte[] refBytes = new byte[24];
+////
+//// long start = System.currentTimeMillis();
+////
+//// for (int i = 0; i < numMessages; i++)
+//// {
+//// byte[] keyBytes = new byte[8];
+////
+//// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
+////
+//// buffer.putLong(i);
+////
+//// DatabaseEntry key = new DatabaseEntry(keyBytes);
+////
+//// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
+////
+//// Transaction tx = env1.beginTransaction(null, null);
+////
+//// msgDB.put(tx, key, msgVal);
+////
+//// //Now the refs
+////
+//// final int numRefs = 50;
+////
+//// for (int j = 0; j < numRefs; j++)
+//// {
+//// keyBytes = new byte[8];
+////
+//// buffer = ByteBuffer.wrap(keyBytes);
+////
+//// buffer.putLong(j);
+////
+//// key = new DatabaseEntry(keyBytes);
+////
+//// DatabaseEntry value = new DatabaseEntry();
+////
+//// value.setPartial(0, refBytes.length, true);
+////
+//// value.setData(refBytes);
+////
+//// msgDB.put(tx, key, value);
+//// }
+////
+//// tx.commit();
+////
+//// }
+////
+//// long end = System.currentTimeMillis();
+////
+//// double rate = 1000 * (double)numMessages / (end - start);
+////
+//// System.out.println("Rate: " + rate);
+//// }
+}
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/RealBDBJEEnvironmentTest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/RealBDBJEEnvironmentTest.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/integration/test/unit/RealBDBJEEnvironmentTest.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -17,6 +17,8 @@
{
protected void setUp() throws Exception
{
+ System.out.println("Creating env dir");
+
createDir(ENV_DIR);
env = createEnvironment();
@@ -25,7 +27,7 @@
env.start();
- database = env.getDatabase("test-db");
+ database = env.getDatabase("test-db");
}
protected BDBJEEnvironment createEnvironment() throws Exception
@@ -41,8 +43,10 @@
{
File file = new File(path);
- deleteDirectory(file);
+ boolean deleted = deleteDirectory(file);
+ System.out.println("Deleted: " + deleted);
+
file.mkdir();
}
}
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBJEEnvironmentTestBase.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBJEEnvironmentTestBase.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBJEEnvironmentTestBase.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -50,6 +50,8 @@
@Override
protected void setUp() throws Exception
{
+ super.setUp();
+
env = createEnvironment();
env.setEnvironmentPath(ENV_DIR);
@@ -63,6 +65,8 @@
protected void tearDown() throws Exception
{
+ super.tearDown();
+
database.close();
env.stop();
@@ -145,7 +149,7 @@
Xid xid2 = generateXid();
env.startWork(xid2);
- database.put(null, 1, new byte[10], 0, 10);
+ database.put(null, 2, new byte[10], 0, 10);
env.endWork(xid2, false);
env.prepare(xid2);
@@ -155,7 +159,7 @@
Xid xid3 = generateXid();
env.startWork(xid3);
- database.put(null, 1, new byte[10], 0, 10);
+ database.put(null, 3, new byte[10], 0, 10);
env.endWork(xid3, false);
env.prepare(xid3);
@@ -163,68 +167,75 @@
assertTrue(xids.contains(xid1));
assertTrue(xids.contains(xid2));
assertTrue(xids.contains(xid3));
-
- }
-
- public void testGetInDoubtXidsMultipleWithRestart() throws Exception
- {
- List<Xid> xids = env.getInDoubtXids();
- assertTrue(xids.isEmpty());
+ env.commit(xid1);
- Xid xid1 = generateXid();
- env.startWork(xid1);
- database.put(null, 1, new byte[10], 0, 10);
- env.endWork(xid1, false);
+ env.commit(xid2);
- env.prepare(xid1);
- xids = env.getInDoubtXids();
- assertEquals(xid1, xids.get(0));
-
-
- Xid xid2 = generateXid();
- env.startWork(xid2);
- database.put(null, 1, new byte[10], 0, 10);
- env.endWork(xid2, false);
-
- env.prepare(xid2);
- xids = env.getInDoubtXids();
- assertTrue(xids.contains(xid1));
- assertTrue(xids.contains(xid2));
-
- Xid xid3 = generateXid();
- env.startWork(xid3);
- database.put(null, 1, new byte[10], 0, 10);
- env.endWork(xid3, false);
-
- env.prepare(xid3);
- xids = env.getInDoubtXids();
- assertTrue(xids.contains(xid1));
- assertTrue(xids.contains(xid2));
- assertTrue(xids.contains(xid3));
-
- database.close();
-
- env.stop();
-
- env.start();
-
- database = env.getDatabase(DB_NAME);
-
- xids = env.getInDoubtXids();
- assertTrue(xids.contains(xid1));
- assertTrue(xids.contains(xid2));
- assertTrue(xids.contains(xid3));
-
- env.commit(xid1);
- env.commit(xid2);
env.commit(xid3);
-
- xids = env.getInDoubtXids();
-
- assertTrue(xids.isEmpty());
+
}
+// Commented out until http://jira.jboss.org/jira/browse/JBMESSAGING-1192 is complete
+// public void testGetInDoubtXidsMultipleWithRestart() throws Exception
+// {
+// List<Xid> xids = env.getInDoubtXids();
+//
+// assertTrue(xids.isEmpty());
+//
+// Xid xid1 = generateXid();
+// env.startWork(xid1);
+// database.put(null, 1, new byte[10], 0, 10);
+// env.endWork(xid1, false);
+//
+// env.prepare(xid1);
+// xids = env.getInDoubtXids();
+// assertEquals(xid1, xids.get(0));
+//
+//
+// Xid xid2 = generateXid();
+// env.startWork(xid2);
+// database.put(null, 2, new byte[10], 0, 10);
+// env.endWork(xid2, false);
+//
+// env.prepare(xid2);
+// xids = env.getInDoubtXids();
+// assertTrue(xids.contains(xid1));
+// assertTrue(xids.contains(xid2));
+//
+// Xid xid3 = generateXid();
+// env.startWork(xid3);
+// database.put(null, 3, new byte[10], 0, 10);
+// env.endWork(xid3, false);
+//
+// env.prepare(xid3);
+// xids = env.getInDoubtXids();
+// assertTrue(xids.contains(xid1));
+// assertTrue(xids.contains(xid2));
+// assertTrue(xids.contains(xid3));
+//
+// database.close();
+//
+// env.stop();
+//
+// env.start();
+//
+// database = env.getDatabase(DB_NAME);
+//
+// xids = env.getInDoubtXids();
+// assertTrue(xids.contains(xid1));
+// assertTrue(xids.contains(xid2));
+// assertTrue(xids.contains(xid3));
+//
+// env.commit(xid1);
+// env.commit(xid2);
+// env.commit(xid3);
+//
+// xids = env.getInDoubtXids();
+//
+// assertTrue(xids.isEmpty());
+// }
+
public void testPutAndRemoveNonTransactional() throws Exception
{
byte[] bytes = new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
@@ -1093,8 +1104,7 @@
byte[] bytes7 = new byte[] { 21, 10, 20, 21, 22, 23 };
assertContainsPair(id, bytes7, 1);
-
-
+
database.remove(null, 1);
assertStoreEmpty();
Deleted: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBSpeedTest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBSpeedTest.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/BDBSpeedTest.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -1,656 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY 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 along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.messaging.newcore.impl.bdbje.test.unit;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.transaction.xa.Xid;
-
-import org.jboss.jms.tx.MessagingXid;
-import org.jboss.messaging.newcore.impl.MessageImpl;
-import org.jboss.messaging.newcore.impl.QueueImpl;
-import org.jboss.messaging.newcore.impl.bdbje.BDBJEPersistenceManager;
-import org.jboss.messaging.newcore.intf.Message;
-import org.jboss.messaging.newcore.intf.MessageReference;
-import org.jboss.messaging.newcore.intf.Queue;
-import org.jboss.messaging.test.unit.UnitTestCase;
-
-/**
- *
- * A BDBSpeedTest
- *
- * @author <a href="mailto:tim.fox at jboss.com">Tim Fox</a>
- *
- */
-public class BDBSpeedTest extends UnitTestCase
-{
-
-// public void testCommitMessage() throws Exception
-// {
-// String envPath = "/home/tim/test-env";
-//
-// File file = new File(envPath);
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// final int numMessages = 5000;
-//
-// final int numRefs = 10;
-//
-// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
-//
-// bdb.start();
-//
-// Queue queue = new QueueImpl(1);
-//
-// //List<Message> messages = new ArrayList<Message>();
-//
-// long start = System.currentTimeMillis();
-//
-// byte[] payload = new byte[1 * 1024];
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
-//
-// for (int j = 0; j < numRefs; j++)
-// {
-// message.createReference(queue);
-//
-// message.setPayload(payload);
-// }
-//
-// //messages.add(message);
-//
-// bdb.commitMessage(message);
-// }
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Insert Rate: " + rate);
-//
-// }
-//
-// public void testCommitMessages() throws Exception
-// {
-// String envPath = "/home/tim/test-env";
-//
-// File file = new File(envPath);
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// final int numMessages = 5000;
-//
-// final int numRefs = 10;
-//
-// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
-//
-// bdb.start();
-//
-// Queue queue = new QueueImpl(1);
-//
-// List<Message> messages = new ArrayList<Message>();
-//
-// long start = System.currentTimeMillis();
-//
-// byte[] payload = new byte[1 * 1024];
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
-//
-// for (int j = 0; j < numRefs; j++)
-// {
-// message.createReference(queue);
-//
-// message.setPayload(payload);
-// }
-//
-// messages.add(message);
-//
-// if (i % 100 == 0)
-// {
-// bdb.commitMessages(messages);
-//
-// messages.clear();
-// }
-// }
-// bdb.commitMessages(messages);
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Insert Rate: " + rate);
-//
-// }
-//
-// public void testDeleteReferences() throws Exception
-// {
-// String envPath = "/home/tim/test-env";
-//
-// File file = new File(envPath);
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// final int numMessages = 5000;
-//
-// final int numRefs = 10;
-//
-// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
-//
-// bdb.start();
-//
-// Queue queue = new QueueImpl(1);
-//
-// List<Message> messages = new ArrayList<Message>();
-//
-// byte[] payload = new byte[1 * 1024];
-//
-// List<MessageReference> refs = new ArrayList<MessageReference>();
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
-//
-// for (int j = 0; j < numRefs; j++)
-// {
-// MessageReference ref = message.createReference(queue);
-//
-// message.setPayload(payload);
-//
-// refs.add(ref);
-// }
-//
-// messages.add(message);
-//
-// if (i % 100 == 0)
-// {
-// bdb.commitMessages(messages);
-//
-// messages.clear();
-// }
-// }
-// bdb.commitMessages(messages);
-//
-// long start = System.currentTimeMillis();
-//
-// //Now delete them
-//
-// bdb.deleteReferences(refs);
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Delete Rate: " + rate);
-//
-// }
-//
-// public void testDeleteReference() throws Exception
-// {
-// String envPath = "/home/tim/test-env";
-//
-// File file = new File(envPath);
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// final int numMessages = 5000;
-//
-// final int numRefs = 1;
-//
-// BDBJEPersistenceManager bdb = new BDBJEPersistenceManager(envPath);
-//
-// bdb.start();
-//
-// Queue queue = new QueueImpl(1);
-//
-// List<Message> messages = new ArrayList<Message>();
-//
-// byte[] payload = new byte[1 * 1024];
-//
-// List<MessageReference> refs = new ArrayList<MessageReference>();
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
-//
-// for (int j = 0; j < numRefs; j++)
-// {
-// MessageReference ref = message.createReference(queue);
-//
-// message.setPayload(payload);
-//
-// refs.add(ref);
-// }
-//
-// messages.add(message);
-//
-// if (i % 100 == 0)
-// {
-// bdb.commitMessages(messages);
-//
-// messages.clear();
-// }
-// }
-// bdb.commitMessages(messages);
-//
-// System.out.println("Added them");
-//
-// long start = System.currentTimeMillis();
-//
-// //Now delete them
-//
-// for (MessageReference ref: refs)
-// {
-// bdb.deleteReference(ref);
-// }
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Delete Rate: " + rate);
-//
-// }
-//
-//
-// public void testPrepareMessages() throws Exception
-// {
-// String envPath = "/home/tim/test-env";
-//
-// File file = new File(envPath);
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// final int numMessages = 5000;
-//
-// final int numRefs = 10;
-//
-// BDBJEPersistenceManager2 bdb = new BDBJEPersistenceManager2(envPath);
-//
-// bdb.start();
-//
-// Queue queue = new QueueImpl(1);
-//
-// List<Message> messages = new ArrayList<Message>();
-//
-// long start = System.currentTimeMillis();
-//
-// byte[] payload = new byte[1 * 1024];
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Message message = new MessageImpl(i, 0, true, 0, System.currentTimeMillis(), (byte)4);
-//
-// for (int j = 0; j < numRefs; j++)
-// {
-// message.createReference(queue);
-//
-// message.setPayload(payload);
-// }
-//
-// messages.add(message);
-//
-// if (i % 100 == 0)
-// {
-// Xid xid = this.generateXid();
-//
-// bdb.prepareMessages(xid, messages);
-//
-// bdb.commitPreparedMessages(xid);
-//
-// messages.clear();
-// }
-// }
-//
-// Xid xid = this.generateXid();
-//
-// bdb.prepareMessages(xid, messages);
-//
-// bdb.commitPreparedMessages(xid);
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Insert Rate: " + rate);
-//
-// }
-
-// /*
-// * Test with message and ref in separate databases
-// */
-// public void testMsgandRefsDifferentDBSNoXA() throws Exception
-// {
-// File file = new File("/home/tim/test-env");
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// EnvironmentConfig envConfig = new EnvironmentConfig();
-//
-// envConfig.setAllowCreate(true);
-//
-// envConfig.setTransactional(true);
-//
-//// envConfig.setTxnNoSync(true);
-////
-//// envConfig.setTxnWriteNoSync(true);
-//
-// Environment env1 = new Environment(file, envConfig);
-//
-// DatabaseConfig dbConfig1 = new DatabaseConfig();
-//
-// dbConfig1.setTransactional(true);
-//
-// dbConfig1.setAllowCreate(true);
-//
-// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
-//
-// DatabaseConfig dbConfig2 = new DatabaseConfig();
-//
-// dbConfig2.setTransactional(true);
-//
-// dbConfig2.setAllowCreate(true);
-//
-// Database refDB = env1.openDatabase(null, "ref", dbConfig2);
-//
-//
-// DatabaseConfig dbConfig3 = new DatabaseConfig();
-//
-// dbConfig3.setTransactional(true);
-//
-// dbConfig3.setAllowCreate(true);
-//
-// Database txDB = env1.openDatabase(null, "tx", dbConfig3);
-//
-//
-//
-// final int numMessages = 5000;
-//
-// byte[] msgBytes = new byte[256];
-//
-// final int numRefs = 10;
-//
-// byte[] refBytes = new byte[numRefs * 20];
-//
-// byte[] txBytes = new byte[numRefs * 50];
-//
-//
-// long start = System.currentTimeMillis();
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// byte[] keyBytes = new byte[8];
-//
-// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
-//
-// buffer.putLong(i);
-//
-// DatabaseEntry key = new DatabaseEntry(keyBytes);
-//
-//
-// //Prepare refs
-//
-// DatabaseEntry refVal = new DatabaseEntry(refBytes);
-//
-// Transaction tx = env1.beginTransaction(null, null);
-//
-// refDB.put(tx, key, refVal);
-//
-// // Message
-//
-// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
-//
-// msgDB.put(tx, key, msgVal);
-//
-// //Write a tx record
-//
-// DatabaseEntry txVal = new DatabaseEntry(txBytes);
-//
-// txDB.put(tx, key, txVal);
-//
-// //Commit the prepare
-//
-// tx.commit();
-//
-// tx = env1.beginTransaction(null, null);
-//
-// //Now commit the refs
-//
-// refVal = new DatabaseEntry(refBytes);
-//
-// refDB.put(tx, key, refVal);
-//
-// //And delete the tx record
-//
-// txDB.delete(tx, key);
-//
-// tx.commit();
-// }
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Insert Rate: " + rate);
-//
-//
-// }
-//
-// public void testMsgandRefsDifferentDBSXA() throws Exception
-// {
-// File file = new File("/home/tim/test-env");
-//
-// deleteDirectory(file);
-//
-// file.mkdir();
-//
-// EnvironmentConfig envConfig = new EnvironmentConfig();
-//
-// envConfig.setAllowCreate(true);
-//
-// envConfig.setTransactional(true);
-//
-// XAEnvironment env1 = new XAEnvironment(file, envConfig);
-//
-// DatabaseConfig dbConfig1 = new DatabaseConfig();
-//
-// dbConfig1.setTransactional(true);
-//
-// dbConfig1.setAllowCreate(true);
-//
-// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
-//
-// DatabaseConfig dbConfig2 = new DatabaseConfig();
-//
-// dbConfig2.setTransactional(true);
-//
-// dbConfig2.setAllowCreate(true);
-//
-// Database refDB = env1.openDatabase(null, "ref", dbConfig2);
-//
-//
-//
-// final int numMessages = 5000;
-//
-// byte[] msgBytes = new byte[256];
-//
-// final int numRefs = 10;
-//
-// byte[] refBytes = new byte[numRefs * 20];
-//
-// long start = System.currentTimeMillis();
-//
-// for (int i = 0; i < numMessages; i++)
-// {
-// Xid xid = generateXid();
-//
-// env1.start(xid, XAResource.TMNOFLAGS);
-//
-// byte[] keyBytes = new byte[8];
-//
-// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
-//
-// buffer.putLong(i);
-//
-// DatabaseEntry key = new DatabaseEntry(keyBytes);
-//
-// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
-//
-// Transaction tx = env1.beginTransaction(null, null);
-//
-// msgDB.put(null, key, msgVal);
-//
-// //Now the refs
-//
-// DatabaseEntry refVal = new DatabaseEntry(refBytes);
-//
-// refDB.put(null, key, refVal);
-//
-// env1.end(xid, XAResource.TMSUCCESS);
-//
-// env1.prepare(xid);
-//
-// env1.commit(xid, false);
-//
-// // tx.commit();
-// }
-//
-// long end = System.currentTimeMillis();
-//
-// double rate = 1000 * (double)numMessages / (end - start);
-//
-// System.out.println("Insert Rate: " + rate);
-//
-// start = System.currentTimeMillis();
-// }
-//
-// private Xid generateXid()
-// {
-// String id = java.util.UUID.randomUUID().toString();
-//
-// Xid xid = new MessagingXid("blah".getBytes(), 123, id.getBytes());
-//
-// return xid;
-// }
-//
-//
-//// This is very slow
-//// public void testMsgandRefsSameDBSNoXA() throws Exception
-//// {
-//// File file = new File("/home/tim/test-env");
-////
-//// deleteDirectory(file);
-////
-//// file.mkdir();
-////
-//// EnvironmentConfig envConfig = new EnvironmentConfig();
-////
-//// envConfig.setAllowCreate(true);
-////
-//// envConfig.setTransactional(true);
-////
-//// Environment env1 = new Environment(file, envConfig);
-////
-//// DatabaseConfig dbConfig1 = new DatabaseConfig();
-////
-//// dbConfig1.setTransactional(true);
-////
-//// dbConfig1.setAllowCreate(true);
-////
-//// Database msgDB = env1.openDatabase(null, "message", dbConfig1);
-////
-//// final int numMessages = 5000;
-////
-//// byte[] msgBytes = new byte[10 * 1024];
-////
-//// byte[] refBytes = new byte[24];
-////
-//// long start = System.currentTimeMillis();
-////
-//// for (int i = 0; i < numMessages; i++)
-//// {
-//// byte[] keyBytes = new byte[8];
-////
-//// ByteBuffer buffer = ByteBuffer.wrap(keyBytes);
-////
-//// buffer.putLong(i);
-////
-//// DatabaseEntry key = new DatabaseEntry(keyBytes);
-////
-//// DatabaseEntry msgVal = new DatabaseEntry(msgBytes);
-////
-//// Transaction tx = env1.beginTransaction(null, null);
-////
-//// msgDB.put(tx, key, msgVal);
-////
-//// //Now the refs
-////
-//// final int numRefs = 50;
-////
-//// for (int j = 0; j < numRefs; j++)
-//// {
-//// keyBytes = new byte[8];
-////
-//// buffer = ByteBuffer.wrap(keyBytes);
-////
-//// buffer.putLong(j);
-////
-//// key = new DatabaseEntry(keyBytes);
-////
-//// DatabaseEntry value = new DatabaseEntry();
-////
-//// value.setPartial(0, refBytes.length, true);
-////
-//// value.setData(refBytes);
-////
-//// msgDB.put(tx, key, value);
-//// }
-////
-//// tx.commit();
-////
-//// }
-////
-//// long end = System.currentTimeMillis();
-////
-//// double rate = 1000 * (double)numMessages / (end - start);
-////
-//// System.out.println("Rate: " + rate);
-//// }
-}
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/fakes/FakeBDBJEEnvironment.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/fakes/FakeBDBJEEnvironment.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/bdbje/test/unit/fakes/FakeBDBJEEnvironment.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -173,24 +173,56 @@
public void startWork(Xid xid) throws Exception
{
- if (implicitTXs.get(Thread.currentThread()) != null)
- {
- throw new IllegalStateException("Already implicit transaction");
- }
+ checkStartWork(xid);
- implicitTXs.put(Thread.currentThread(), createTransactionInternal(xid));
+ implicitTXs.put(Thread.currentThread(), createTransactionInternal(xid));
}
public void endWork(Xid xid, boolean fail) throws Exception
{
- FakeBDBJETransaction removed = implicitTXs.remove(Thread.currentThread());
+ checkEndWork(xid);
- if (removed == null)
- {
- throw new IllegalStateException("No implicit tx");
- }
+ implicitTXs.remove(Thread.currentThread());
}
+
+ public void prepare(Xid xid) throws Exception
+ {
+ FakeBDBJETransaction tx = findTXForXid(xid);
+
+ checkPrepare(tx);
+
+ tx.prepare();
+ }
+
+ public void commit(Xid xid) throws Exception
+ {
+ FakeBDBJETransaction tx = findTXForXid(xid);
+
+ checkCommitRollback(tx);
+
+ tx.commit();
+ }
+ public void rollback(Xid xid) throws Exception
+ {
+ FakeBDBJETransaction tx = findTXForXid(xid);
+
+ checkCommitRollback(tx);
+
+ tx.rollback();
+ }
+
+ // Private -----------------------------------------------------------------------
+
+ private FakeBDBJETransaction createTransactionInternal(Xid xid) throws Exception
+ {
+ FakeBDBJETransaction tx = new FakeBDBJETransaction(xid);
+
+ transactions.put(tx.id, tx);
+
+ return tx;
+ }
+
private FakeBDBJETransaction findTXForXid(Xid xid)
{
for (FakeBDBJETransaction tx: transactions.values())
@@ -203,68 +235,68 @@
return null;
}
- public void prepare(Xid xid) throws Exception
+ private void checkStartWork(Xid xid)
{
- FakeBDBJETransaction tx = findTXForXid(xid);
-
- if (tx == null)
+ if (implicitTXs.get(Thread.currentThread()) != null)
{
- throw new IllegalStateException("Cannot find tx for xid " + xid);
+ throw new IllegalStateException("Already implicit transaction");
}
- if (implicitTXs.containsKey(Thread.currentThread()))
+ if (findTXForXid(xid) != null)
{
- throw new IllegalStateException("Work not ended");
- }
-
- tx.prepare();
+ throw new IllegalStateException("Already tx for xid");
+ }
}
- public void commit(Xid xid) throws Exception
+ private void checkEndWork(Xid xid)
{
- FakeBDBJETransaction tx = findTXForXid(xid);
+ FakeBDBJETransaction tx = implicitTXs.get(Thread.currentThread());
if (tx == null)
{
- throw new IllegalStateException("Cannot find tx for xid " + xid);
- }
+ throw new IllegalStateException("No implicit tx");
+ }
- if (implicitTXs.containsKey(Thread.currentThread()))
+ if (!tx.xid.equals(xid))
{
- throw new IllegalStateException("Work not ended");
+ throw new IllegalStateException("Wrong xid");
}
-
- tx.commit();
}
- public void rollback(Xid xid) throws Exception
+
+ private void checkPrepare(FakeBDBJETransaction tx)
{
- FakeBDBJETransaction tx = findTXForXid(xid);
-
if (tx == null)
{
- throw new IllegalStateException("Cannot find tx for xid " + xid);
+ throw new IllegalStateException("Cannot find tx for xid");
}
if (implicitTXs.containsKey(Thread.currentThread()))
{
throw new IllegalStateException("Work not ended");
}
-
- tx.rollback();
}
- // Private -----------------------------------------------------------------------
- private FakeBDBJETransaction createTransactionInternal(Xid xid) throws Exception
+ private void checkCommitRollback(FakeBDBJETransaction tx)
{
- FakeBDBJETransaction tx = new FakeBDBJETransaction(xid);
+ if (tx == null)
+ {
+ throw new IllegalStateException("Cannot find tx for xid");
+ }
- transactions.put(tx.id, tx);
+ if (!tx.prepared)
+ {
+ throw new IllegalStateException("Tx not prepared");
+ }
- return tx;
- }
+ if (implicitTXs.containsKey(Thread.currentThread()))
+ {
+ throw new IllegalStateException("Work not ended");
+ }
+ }
+
// Inner classes ------------------------------------------------------------------
private class FakeBDBJETransaction implements BDBJETransaction
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/MessageTest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/MessageTest.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/MessageTest.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -195,7 +195,7 @@
assertEquals(val1, message.removeHeader(key1));
assertFalse(message.containsHeader(key2));
assertEquals(1, message.getHeaders().size());
- assertEquals(val3, message.removeHeader(key3));
+ assertEquals(val4, message.removeHeader(key3));
assertFalse(message.containsHeader(key3));
assertTrue(message.getHeaders().isEmpty());
}
Modified: trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/QueueTest.java
===================================================================
--- trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/QueueTest.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/newcore/impl/test/unit/QueueTest.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -670,7 +670,7 @@
refs.add(ref);
- assertEquals(HandleStatus.BUSY, queue.addLast(ref));
+ assertEquals(HandleStatus.HANDLED, queue.addLast(ref));
}
assertEquals(maxSize, queue.getMessageCount());
Modified: trunk/src/main/org/jboss/messaging/test/unit/UnitTestCase.java
===================================================================
--- trunk/src/main/org/jboss/messaging/test/unit/UnitTestCase.java 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/src/main/org/jboss/messaging/test/unit/UnitTestCase.java 2007-12-11 05:08:08 UTC (rev 3471)
@@ -218,10 +218,12 @@
protected Xid generateXid()
{
- String id = java.util.UUID.randomUUID().toString();
+ String id1 = java.util.UUID.randomUUID().toString();
- Xid xid = new MessagingXid("blah".getBytes(), 123, id.getBytes());
+ String id2 = java.util.UUID.randomUUID().toString();
+ Xid xid = new MessagingXid(id1.getBytes(), 123, id2.getBytes());
+
return xid;
}
Modified: trunk/tests/build.xml
===================================================================
--- trunk/tests/build.xml 2007-12-10 19:19:25 UTC (rev 3470)
+++ trunk/tests/build.xml 2007-12-11 05:08:08 UTC (rev 3471)
@@ -154,6 +154,8 @@
<path refid="jboss.profiler.jvmti.classpath"/>
<path refid="jboss.test14.classpath"/>
<path refid="jboss.jboss.retro.classpath"/>
+ <pathelement location="${project.root}/lib/je-3.2.44.jar"/>
+ <pathelement location="${tests.root}/lib/easymock.jar"/>
</path>
<!--
@@ -166,6 +168,8 @@
<pathelement location="${project.root}/src/etc"/> <!-- server's configuration files -->
<pathelement location="${project.root}/src/etc/server/default/deploy"/>
<pathelement location="${project.thirdparty}/naming/jnp-client.jar"/>
+ <pathelement location="${project.root}/lib/je-3.2.44.jar"/>
+ <pathelement location="${tests.root}/lib/easymock.jar"/>
<path refid="test.compilation.classpath"/>
<path refid="dom4j.dom4j.classpath"/>
<path refid="apache.log4j.classpath"/>
@@ -221,6 +225,21 @@
<classpath refid="test.compilation.classpath"/>
<include name="**/*.java"/>
</javac>
+
+ <javac destdir="${build.tests.classes}"
+ optimize="${javac.optimize}"
+ target="1.5"
+ source="1.5"
+ debug="${javac.debug}"
+ depend="${javac.depend}"
+ verbose="${javac.verbose}"
+ deprecation="${javac.deprecation}"
+ includeJavaRuntime="${javac.include.java.runtime}"
+ failonerror="${javac.fail.onerror}">
+ <src path="${tests.root}/../src/main/"/>
+ <classpath refid="test.compilation.classpath"/>
+ <include name="**/test/**/*.java"/>
+ </javac>
<!--
RMI compilation to to create stub for server.
@@ -308,6 +327,14 @@
<antcall target="invm-tests"/>
<antcall target="remote-tests"/>
+
+ <antcall target="unit-tests"/>
+
+ <antcall target="integration-tests"/>
+
+ <antcall target="concurrent-tests"/>
+
+ <antcall target="timing-tests"/>
</target>
@@ -324,6 +351,93 @@
<param name="test.remoting" value="http"/>
</antcall>
</target>
+
+ <target name="unit-tests" depends="tests-jar, prepare-testdirs, clear-test-logs"
+ description="Runs unit tests">
+
+ <echo message=""/>
+ <echo message="Running unit tests"/>
+ <echo message=""/>
+
+ <junit printsummary="yes" haltonfailure="yes" haltonerror="yes">
+ <sysproperty key="test.logfile.suffix" value="unit"/>
+ <sysproperty key="module.output" value="${tests.output}"/>
+ <classpath refid="test.execution.classpath"/>
+ <formatter type="xml" usefile="${junit.formatter.usefile}"/>
+ <batchtest todir="${junit.batchtest.todir}">
+ <formatter type="plain" usefile="${junit.formatter.usefile}"/>
+ <fileset dir="${build.tests.classes}">
+ <include name="**/test/unit/**/${test-mask}.class"/>
+ <exclude name="**/integration/test/unit/**/${test-mask}.class"/>
+
+
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="integration-tests" depends="tests-jar, prepare-testdirs, clear-test-logs"
+ description="Runs integration tests">
+
+ <echo message=""/>
+ <echo message="Running unit tests"/>
+ <echo message=""/>
+
+ <junit printsummary="yes" haltonfailure="yes" haltonerror="yes">
+ <sysproperty key="test.logfile.suffix" value="unit"/>
+ <sysproperty key="module.output" value="${tests.output}"/>
+ <classpath refid="test.execution.classpath"/>
+ <formatter type="xml" usefile="${junit.formatter.usefile}"/>
+ <batchtest todir="${junit.batchtest.todir}">
+ <formatter type="plain" usefile="${junit.formatter.usefile}"/>
+ <fileset dir="${build.tests.classes}">
+ <include name="**/integration/test/unit/**/${test-mask}.class"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="concurrent-tests" depends="tests-jar, prepare-testdirs, clear-test-logs"
+ description="Runs concurrent tests">
+
+ <echo message=""/>
+ <echo message="Running concurrent tests"/>
+ <echo message=""/>
+
+ <junit printsummary="yes" haltonfailure="yes" haltonerror="yes">
+ <sysproperty key="test.logfile.suffix" value="unit"/>
+ <sysproperty key="module.output" value="${tests.output}"/>
+ <classpath refid="test.execution.classpath"/>
+ <formatter type="xml" usefile="${junit.formatter.usefile}"/>
+ <batchtest todir="${junit.batchtest.todir}">
+ <formatter type="plain" usefile="${junit.formatter.usefile}"/>
+ <fileset dir="${build.tests.classes}">
+ <include name="**/test/concurrent/**/${test-mask}.class"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="timing-tests" depends="tests-jar, prepare-testdirs, clear-test-logs"
+ description="Runs timing sensitive tests">
+
+ <echo message=""/>
+ <echo message="Running timing sensitive tests"/>
+ <echo message=""/>
+
+ <junit printsummary="yes" haltonfailure="yes" haltonerror="yes">
+ <sysproperty key="test.logfile.suffix" value="unit"/>
+ <sysproperty key="module.output" value="${tests.output}"/>
+ <classpath refid="test.execution.classpath"/>
+ <formatter type="xml" usefile="${junit.formatter.usefile}"/>
+ <batchtest todir="${junit.batchtest.todir}">
+ <formatter type="plain" usefile="${junit.formatter.usefile}"/>
+ <fileset dir="${build.tests.classes}">
+ <include name="**/test/timing/**/${test-mask}.class"/>
+ </fileset>
+ </batchtest>
+ </junit>
+ </target>
<target name="invm-tests" depends="tests-jar, prepare-testdirs, clear-test-logs"
description="Runs all available tests an in-VM configuration">
More information about the jboss-cvs-commits
mailing list