[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