[jboss-cvs] JBoss Messaging SVN: r5582 - in trunk: src/main/org/jboss/messaging/core/paging and 3 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Jan 6 13:52:19 EST 2009


Author: clebert.suconic at jboss.com
Date: 2009-01-06 13:52:19 -0500 (Tue, 06 Jan 2009)
New Revision: 5582

Modified:
   trunk/src/main/org/jboss/messaging/core/journal/impl/AbstractSequentialFactory.java
   trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java
   trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java
   trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java
   trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java
   trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreImplTest.java
   trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreTestBase.java
Log:
Storing destination-names on txts and https://jira.jboss.org/jira/browse/JBMESSAGING-1477

Modified: trunk/src/main/org/jboss/messaging/core/journal/impl/AbstractSequentialFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/journal/impl/AbstractSequentialFactory.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/src/main/org/jboss/messaging/core/journal/impl/AbstractSequentialFactory.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -26,10 +26,12 @@
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 import org.jboss.messaging.core.journal.SequentialFileFactory;
 import org.jboss.messaging.core.logging.Logger;
+import org.jboss.messaging.core.paging.PagingStore;
 
 /**
  * 
@@ -42,28 +44,26 @@
 public abstract class AbstractSequentialFactory implements SequentialFileFactory
 {
    private static final Logger log = Logger.getLogger(AbstractSequentialFactory.class);
-   
+
    protected final String journalDir;
 
    public AbstractSequentialFactory(final String journalDir)
    {
       this.journalDir = journalDir;
    }
-   
+
    /** 
     * Create the directory if it doesn't exist yet
     */
    public void createDirs() throws Exception
-   {      
+   {
       File file = new File(journalDir);
       boolean ok = file.mkdirs();
-//FIXME - uncomment when https://jira.jboss.org/jira/browse/JBMESSAGING-1477 is complete      
-//      if (!ok)
-//      {
-//         throw new IOException("Failed to create directory " + journalDir);
-//      }
+      if (!ok)
+      {
+         throw new IOException("Failed to create directory " + journalDir);
+      }
    }
-   
 
    public List<String> listFiles(final String extension) throws Exception
    {

Modified: trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/src/main/org/jboss/messaging/core/paging/PagingStoreFactory.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -23,10 +23,13 @@
 package org.jboss.messaging.core.paging;
 
 import java.util.List;
+import java.util.Map;
 import java.util.concurrent.Executor;
 
+import org.jboss.messaging.core.journal.SequentialFileFactory;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
 import org.jboss.messaging.util.SimpleString;
 
@@ -38,7 +41,7 @@
  */
 public interface PagingStoreFactory
 {
-   PagingStore newStore(SimpleString destinationName, QueueSettings queueSettings, boolean createDir);
+   PagingStore newStore(SimpleString destinationName, QueueSettings queueSettings) throws Exception;
 
    Executor getGlobalDepagerExecutor();
 
@@ -50,5 +53,12 @@
 
    void setPostOffice(PostOffice office);
 
-   List<SimpleString> getStoredDestinations() throws Exception;
+   List<PagingStore> reloadStores(HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception;
+
+   /**
+    * @param storeName
+    * @return
+    */
+   SequentialFileFactory newFileFactory(SimpleString destinationName) throws Exception;
+
 }

Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingManagerImpl.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -83,15 +83,6 @@
 
    private static final Logger log = Logger.getLogger(PagingManagerImpl.class);
 
-   // This is just a debug tool method.
-   // During debugs you could make log.trace as log.info, and change the
-   // variable isTrace above
-   private static void trace(final String message)
-   {
-      // log.trace(message);
-      log.info(message);
-   }
-
    // Constructors
    // --------------------------------------------------------------------------------------------------------------------
 
@@ -131,12 +122,14 @@
     */
    public void reloadStores() throws Exception
    {
-      List<SimpleString> destinations = pagingStoreFactory.getStoredDestinations();
+      List<PagingStore> destinations = pagingStoreFactory.reloadStores(queueSettingsRepository);
 
-      for (SimpleString dest : destinations)
+      for (PagingStore store: destinations)
       {
-         createPageStore(dest, false);
+         stores.put(store.getStoreName(), store);
+         store.start();
       }
+
    }
 
    /**
@@ -149,7 +142,7 @@
 
       if (store == null)
       {
-         store = newStore(storeName, createDir);
+         store = newStore(storeName);
 
          PagingStore oldStore = stores.putIfAbsent(storeName, store);
 
@@ -334,9 +327,9 @@
 
    // Private -------------------------------------------------------
 
-   private PagingStore newStore(final SimpleString destinationName, final boolean createDir)
+   private PagingStore newStore(final SimpleString destinationName) throws Exception
    {
-      return pagingStoreFactory.newStore(destinationName, queueSettingsRepository.getMatch(destinationName.toString()), createDir);
+      return pagingStoreFactory.newStore(destinationName, queueSettingsRepository.getMatch(destinationName.toString()));
    }
 
    // Inner classes -------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreFactoryNIO.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -22,7 +22,16 @@
 
 package org.jboss.messaging.core.paging.impl;
 
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FilenameFilter;
+import java.io.InputStreamReader;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.text.DecimalFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
@@ -40,12 +49,12 @@
 import org.jboss.messaging.core.paging.PagingStoreFactory;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
-import org.jboss.messaging.core.server.MessageReference;
+import org.jboss.messaging.core.settings.HierarchicalRepository;
 import org.jboss.messaging.core.settings.impl.QueueSettings;
-import org.jboss.messaging.util.Base64;
 import org.jboss.messaging.util.JBMThreadFactory;
 import org.jboss.messaging.util.OrderedExecutorFactory;
 import org.jboss.messaging.util.SimpleString;
+import org.jboss.messaging.util.UUIDGenerator;
 
 /**
  * 
@@ -60,18 +69,20 @@
 
    // Attributes ----------------------------------------------------
 
+   private final DecimalFormat format = new DecimalFormat("000000000");
+
    private final String directory;
 
    private final ExecutorService parentExecutor;
-   
+
    private final OrderedExecutorFactory executorFactory;
-   
+
    private final Executor globalDepagerExecutor;
 
    private PagingManager pagingManager;
-   
+
    private StorageManager storageManager;
-   
+
    private PostOffice postOffice;
 
    // Static --------------------------------------------------------
@@ -82,13 +93,15 @@
    {
       this.directory = directory;
 
-      parentExecutor = new ThreadPoolExecutor(0, maxThreads,
-                             60L, TimeUnit.SECONDS,
-                             new SynchronousQueue<Runnable>(),
-                             new JBMThreadFactory("JBM-depaging-threads"));
-      
+      parentExecutor = new ThreadPoolExecutor(0,
+                                              maxThreads,
+                                              60L,
+                                              TimeUnit.SECONDS,
+                                              new SynchronousQueue<Runnable>(),
+                                              new JBMThreadFactory("JBM-depaging-threads"));
+
       executorFactory = new OrderedExecutorFactory(parentExecutor);
-      
+
       globalDepagerExecutor = executorFactory.getExecutor();
    }
 
@@ -106,66 +119,122 @@
       parentExecutor.awaitTermination(30, TimeUnit.SECONDS);
    }
 
-   public PagingStore newStore(final SimpleString destinationName, final QueueSettings settings, final boolean createDir)
-   {      
-      final String destinationDirectory = directory + "/" + Base64.encodeBytes(destinationName.getData(), Base64.URL_SAFE);
-      
+   public synchronized PagingStore newStore(final SimpleString destinationName, final QueueSettings settings) throws Exception
+   {
+
       return new PagingStoreImpl(pagingManager,
                                  storageManager,
                                  postOffice,
-                                 newFileFactory(destinationDirectory),
+                                 null,
+                                 this,
                                  destinationName,
                                  settings,
-                                 executorFactory.getExecutor(),
-                                 createDir);
+                                 executorFactory.getExecutor());
    }
+   
+   /**
+    * @param storeName
+    * @return
+    */
+   public synchronized SequentialFileFactory newFileFactory(SimpleString destinationName) throws Exception
+   {
+      
+      String guid = UUIDGenerator.getInstance().generateStringUUID();
+      
+      File fileWithID = new File(directory + File.separatorChar +  guid + ".pg");
+      
+      OutputStream dataOut = new FileOutputStream(fileWithID);
+      
+      BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(dataOut));
+      
+      writer.write(destinationName.toString());
+      writer.newLine();
+      writer.write(guid);
+      writer.newLine();
+      
+      writer.close();
+      
+      SequentialFileFactory factory = newFileFactory(guid);
+      
+      factory.createDirs();
+      
+      return factory;
+   }
 
    public void setPagingManager(final PagingManager pagingManager)
    {
       this.pagingManager = pagingManager;
    }
-   
+
    public void setStorageManager(final StorageManager storageManager)
    {
-      this.storageManager = storageManager; 
+      this.storageManager = storageManager;
    }
-   
+
    public void setPostOffice(final PostOffice postOffice)
    {
       this.postOffice = postOffice;
    }
-   
-   public List<SimpleString> getStoredDestinations() throws Exception
+
+   public List<PagingStore> reloadStores(final HierarchicalRepository<QueueSettings> queueSettingsRepository) throws Exception
    {
       File pageDirectory = new File(directory);
-      
-      File[] files = pageDirectory.listFiles();
-      
+
+
+      FilenameFilter fnf = new FilenameFilter()
+      {
+         public boolean accept(File file, String name)
+         {
+            return name.endsWith(".pg");
+         }
+      };
+
+      File[] files = pageDirectory.listFiles(fnf);
+
       if (files == null)
       {
-         return Collections.<SimpleString>emptyList();
+         return Collections.<PagingStore> emptyList();
 
       }
       else
-      {         
-         ArrayList<SimpleString> filesReturn = new ArrayList<SimpleString>(files.length);
+      {
+         ArrayList<PagingStore> storesReturn = new ArrayList<PagingStore>(files.length);
          
          for (File file: files)
          {
-            if (file.isDirectory())
+            
+            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file)));
+            
+            String destination = reader.readLine();
+            String guid = reader.readLine();
+            
+            reader.close();
+            
+            if (destination == null || guid == null)
             {
-               try
-               {
-                  filesReturn.add(new SimpleString(Base64.decode(file.getName(), Base64.URL_SAFE)));
-               }
-               catch (Exception e)
-               {
-                  log.warn("Invalid encoding on directory " + file.getCanonicalPath(), e);
-               }
+               log.warn("File " + file.toString() + " is missing properties");
+               continue;
             }
+            
+            SimpleString destinationName = new SimpleString(destination);
+            
+            SequentialFileFactory factory = newFileFactory(guid);
+            
+            QueueSettings settings = queueSettingsRepository.getMatch(destinationName.toString());
+
+            PagingStore store = new PagingStoreImpl(pagingManager,
+                                                    storageManager,
+                                                    postOffice,
+                                                    factory,
+                                                    this,
+                                                    destinationName,
+                                                    settings,
+                                                    executorFactory.getExecutor());
+            
+            storesReturn.add(store);
          }
-         
-         return filesReturn;
+
+         return storesReturn;
       }
    }
 
@@ -173,9 +242,9 @@
 
    // Protected -----------------------------------------------------
 
-   protected SequentialFileFactory newFileFactory(final String destinationDirectory)
+   protected SequentialFileFactory newFileFactory(final String directoryName)
    {
-      return new NIOSequentialFileFactory(destinationDirectory);
+      return new NIOSequentialFileFactory(directory + File.separatorChar + directoryName);
    }
 
    // Private -------------------------------------------------------

Modified: trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java
===================================================================
--- trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/src/main/org/jboss/messaging/core/paging/impl/PagingStoreImpl.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -43,6 +43,7 @@
 import org.jboss.messaging.core.paging.PagedMessage;
 import org.jboss.messaging.core.paging.PagingManager;
 import org.jboss.messaging.core.paging.PagingStore;
+import org.jboss.messaging.core.paging.PagingStoreFactory;
 import org.jboss.messaging.core.persistence.StorageManager;
 import org.jboss.messaging.core.postoffice.PostOffice;
 import org.jboss.messaging.core.server.ServerMessage;
@@ -76,8 +77,11 @@
 
    private final SimpleString storeName;
 
-   private final SequentialFileFactory fileFactory;
+   // The FileFactory is created lazily as soon as the first write is attempted
+   private volatile SequentialFileFactory fileFactory;
 
+   private final PagingStoreFactory storeFactory;
+
    private final long maxSize;
 
    private final long pageSize;
@@ -111,8 +115,6 @@
    private final ReadWriteLock currentPageLock = new ReentrantReadWriteLock();
 
    private volatile boolean running = false;
-   
-   private final boolean createDir;
 
    // Static --------------------------------------------------------
 
@@ -135,10 +137,10 @@
                           final StorageManager storageManager,
                           final PostOffice postOffice,
                           final SequentialFileFactory fileFactory,
+                          final PagingStoreFactory storeFactory,
                           final SimpleString storeName,
                           final QueueSettings queueSettings,
-                          final Executor executor,
-                          final boolean createDir)
+                          final Executor executor)
    {
       if (pagingManager == null)
       {
@@ -149,8 +151,6 @@
 
       this.postOffice = postOffice;
 
-      this.fileFactory = fileFactory;
-
       this.storeName = storeName;
 
       maxSize = queueSettings.getMaxSizeBytes();
@@ -169,8 +169,10 @@
       this.executor = executor;
 
       this.pagingManager = pagingManager;
-      
-      this.createDir = createDir;
+
+      this.fileFactory = fileFactory;
+
+      this.storeFactory = storeFactory;
    }
 
    // Public --------------------------------------------------------
@@ -319,7 +321,7 @@
       }
    }
 
-   //TODO all of this can be simplified
+   // TODO all of this can be simplified
    public boolean page(final PagedMessage message, final boolean sync, final boolean duplicateDetection) throws Exception
    {
       if (!running)
@@ -357,25 +359,26 @@
          {
             return false;
          }
-         
+
          if (duplicateDetection)
          {
-            //We set the duplicate detection header to prevent the message being depaged more than once in case of failure during depage
-            
+            // We set the duplicate detection header to prevent the message being depaged more than once in case of
+            // failure during depage
+
             byte[] bytes = new byte[8];
-            
+
             ByteBuffer buff = ByteBuffer.wrap(bytes);
-            
+
             ServerMessage msg = message.getMessage(storageManager);
-            
+
             buff.putLong(msg.getMessageID());
-            
+
             SimpleString duplID = new SimpleString(bytes);
-               
+
             message.getMessage(storageManager).putStringProperty(MessageImpl.HDR_DUPLICATE_DETECTION_ID, duplID);
          }
 
-         int bytesToWrite = fileFactory.calculateBlockSize(message.getEncodeSize() + PageImpl.SIZE_RECORD);
+         int bytesToWrite = message.getEncodeSize() + PageImpl.SIZE_RECORD;
 
          if (currentPageSize.addAndGet(bytesToWrite) > pageSize && currentPage.getNumberOfMessages() > 0)
          {
@@ -399,10 +402,10 @@
          try
          {
             if (currentPage != null)
-            {               
-               
+            {
+
                currentPage.write(message);
-               
+
                if (sync)
                {
                   currentPage.sync();
@@ -450,7 +453,7 @@
    }
 
    public boolean startDepaging(final Executor executor)
-   {     
+   {
       currentPageLock.readLock().lock();
       try
       {
@@ -517,7 +520,7 @@
    }
 
    public void start() throws Exception
-   {      
+   {
       writeLock.lock();
 
       try
@@ -536,48 +539,49 @@
          {
             currentPageLock.writeLock().lock();
 
-            if (createDir)
-            {               
-               fileFactory.createDirs();
-            }
-
-            firstPageId = Integer.MAX_VALUE;
-            currentPageId = 0;
-            currentPage = null;
-
             try
             {
-               List<String> files = fileFactory.listFiles("page");
+               running = true;
+               firstPageId = Integer.MAX_VALUE;
 
-               numberOfPages = files.size();
-
-               for (String fileName : files)
+               // There are no files yet on this Storage. We will just return it empty
+               if (fileFactory != null)
                {
-                  final int fileId = getPageIdFromFileName(fileName);
 
-                  if (fileId > currentPageId)
+                  currentPageId = 0;
+                  currentPage = null;
+
+                  List<String> files = fileFactory.listFiles("page");
+
+                  numberOfPages = files.size();
+
+                  for (String fileName : files)
                   {
-                     currentPageId = fileId;
+                     final int fileId = getPageIdFromFileName(fileName);
+
+                     if (fileId > currentPageId)
+                     {
+                        currentPageId = fileId;
+                     }
+
+                     if (fileId < firstPageId)
+                     {
+                        firstPageId = fileId;
+                     }
                   }
 
-                  if (fileId < firstPageId)
+                  if (numberOfPages != 0)
                   {
-                     firstPageId = fileId;
+                     startPaging();
                   }
                }
-
-               running = true;
-
-               if (numberOfPages != 0)
-               {
-                  startPaging();
-               }
             }
             finally
             {
                currentPageLock.writeLock().unlock();
             }
          }
+
       }
       finally
       {
@@ -651,12 +655,14 @@
 
       try
       {
+
          if (numberOfPages == 0)
          {
             return null;
          }
          else
          {
+
             numberOfPages--;
 
             final Page returnPage;
@@ -701,7 +707,6 @@
             {
                returnPage = createPage(firstPageId++);
             }
-
             return returnPage;
          }
       }
@@ -738,24 +743,23 @@
          return;
       }
 
-
       // Depage has to be done atomically, in case of failure it should be
       // back to where it was
-      
+
       Transaction depageTransaction = new TransactionImpl(storageManager);
-      
+
       depageTransaction.putProperty(TransactionPropertyIndexes.CONTAINS_PERSISTENT, true);
-      
+
       depageTransaction.putProperty(TransactionPropertyIndexes.IS_DEPAGE, Boolean.valueOf(true));
 
       HashSet<PageTransactionInfo> pageTransactionsToUpdate = new HashSet<PageTransactionInfo>();
-            
+
       for (PagedMessage pagedMessage : pagedMessages)
       {
          ServerMessage message = null;
 
          message = pagedMessage.getMessage(storageManager);
-         
+
          final long transactionIdDuringPaging = pagedMessage.getTransactionID();
 
          if (transactionIdDuringPaging >= 0)
@@ -767,7 +771,9 @@
             // section
             if (pageTransactionInfo == null)
             {
-               log.warn("Transaction " + pagedMessage.getTransactionID() + " used during paging not found, ignoring message " + message);
+               log.warn("Transaction " + pagedMessage.getTransactionID() +
+                        " used during paging not found, ignoring message " +
+                        message);
                continue;
             }
 
@@ -789,7 +795,7 @@
                pageTransactionsToUpdate.add(pageTransactionInfo);
             }
          }
-         
+
          postOffice.route(message, depageTransaction);
       }
 
@@ -809,7 +815,7 @@
       }
 
       depageTransaction.commit();
-      
+
       trace("Depage committed");
    }
 
@@ -844,7 +850,7 @@
    {
       final boolean pageFull = isFull(getPageSizeBytes());
       final boolean globalFull = isGlobalFull(getPageSizeBytes());
-      if (pageFull || globalFull)
+      if (pageFull || globalFull || !isPaging())
       {
          depaging.set(false);
          if (!globalFull)
@@ -895,6 +901,11 @@
    {
       String fileName = createFileName(page);
 
+      if (fileFactory == null)
+      {
+         fileFactory = storeFactory.newFileFactory(this.getStoreName());
+      }
+
       SequentialFile file = fileFactory.createSequentialFile(fileName, 1000);
 
       file.open();
@@ -938,9 +949,9 @@
    private void readPage() throws Exception
    {
       Page page = depage();
-      
+
       if (page == null)
-      {        
+      {
          return;
       }
 
@@ -951,6 +962,7 @@
       onDepage(page.getPageId(), storeName, messages);
 
       page.delete();
+
    }
 
    // Inner classes -------------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/tests/src/org/jboss/messaging/tests/integration/paging/PagingManagerIntegrationTest.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -32,6 +32,7 @@
 import org.jboss.messaging.core.paging.impl.PagingManagerImpl;
 import org.jboss.messaging.core.paging.impl.PagingStoreFactoryNIO;
 import org.jboss.messaging.core.paging.impl.TestSupportPageStore;
+import org.jboss.messaging.core.persistence.impl.nullpm.NullStorageManager;
 import org.jboss.messaging.core.remoting.impl.ByteBufferWrapper;
 import org.jboss.messaging.core.server.ServerMessage;
 import org.jboss.messaging.core.server.impl.ServerMessageImpl;
@@ -62,11 +63,12 @@
 
    public void testPagingManager() throws Exception
    {
+      
       HierarchicalRepository<QueueSettings> queueSettings = new HierarchicalObjectRepository<QueueSettings>();
       queueSettings.setDefault(new QueueSettings());
-
+      
       PagingManagerImpl managerImpl = new PagingManagerImpl(new PagingStoreFactoryNIO(getPageDir(), 10),
-                                                            null,
+                                                            new NullStorageManager(),
                                                             queueSettings,
                                                             -1,
                                                             1024 * 1024,
@@ -187,7 +189,7 @@
       super.tearDown();
       // deleteDirectory(new File(journalDir));
    }
-
+   
    // Private -------------------------------------------------------
 
    private void recreateDirectory()
@@ -195,6 +197,10 @@
       File fileJournalDir = new File(getJournalDir());
       deleteDirectory(fileJournalDir);
       fileJournalDir.mkdirs();
+
+      File pageDirDir = new File(getPageDir());
+      deleteDirectory(pageDirDir);
+      pageDirDir.mkdirs();
    }
 
    // Inner classes -------------------------------------------------

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreImplTest.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreImplTest.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreImplTest.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -26,10 +26,12 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import org.easymock.classextension.EasyMock;
 import org.jboss.messaging.core.journal.SequentialFileFactory;
 import org.jboss.messaging.core.paging.Page;
 import org.jboss.messaging.core.paging.PagedMessage;
 import org.jboss.messaging.core.paging.PagingStore;
+import org.jboss.messaging.core.paging.PagingStoreFactory;
 import org.jboss.messaging.core.paging.impl.PagedMessageImpl;
 import org.jboss.messaging.core.paging.impl.PagingStoreImpl;
 import org.jboss.messaging.core.paging.impl.TestSupportPageStore;
@@ -65,9 +67,10 @@
                                                   createStorageManagerMock(),
                                                   createPostOfficeMock(),
                                                   factory,
+                                                  null,
                                                   destinationTestName,
                                                   new QueueSettings(),
-                                                  executor, true);
+                                                  executor);
 
       storeImpl.start();
 
@@ -83,14 +86,19 @@
    public void testStore() throws Exception
    {
       SequentialFileFactory factory = new FakeSequentialFileFactory();
+      
+      PagingStoreFactory storeFactory = EasyMock.createNiceMock(PagingStoreFactory.class);
+      
+      EasyMock.replay(storeFactory);
 
       PagingStore storeImpl = new PagingStoreImpl(createMockManager(),
                                                   createStorageManagerMock(),
                                                   createPostOfficeMock(),
                                                   factory,
+                                                  storeFactory,
                                                   destinationTestName,
                                                   new QueueSettings(),
-                                                  executor, true);
+                                                  executor);
 
       storeImpl.start();
 
@@ -121,9 +129,10 @@
                                       createStorageManagerMock(),
                                       createPostOfficeMock(),
                                       factory,
+                                      null,
                                       destinationTestName,
                                       new QueueSettings(),
-                                      executor, true);
+                                      executor);
 
       storeImpl.start();
 
@@ -135,13 +144,20 @@
    {
       SequentialFileFactory factory = new FakeSequentialFileFactory();
 
+      SimpleString destination = new SimpleString("test");
+      
+      PagingStoreFactory storeFactory = EasyMock.createMock(PagingStoreFactory.class);
+      
+      EasyMock.replay(storeFactory);
+
       TestSupportPageStore storeImpl = new PagingStoreImpl(createMockManager(),
                                                   createStorageManagerMock(),
                                                   createPostOfficeMock(),
                                                   factory,
+                                                  storeFactory,
                                                   destinationTestName,
                                                   new QueueSettings(),
-                                                  executor, true);
+                                                  executor);
 
       storeImpl.start();
 
@@ -151,8 +167,6 @@
 
       List<ByteBuffer> buffers = new ArrayList<ByteBuffer>();
 
-      SimpleString destination = new SimpleString("test");
-
       for (int i = 0; i < 10; i++)
       {
 
@@ -195,14 +209,22 @@
    public void testDepageMultiplePages() throws Exception
    {
       SequentialFileFactory factory = new FakeSequentialFileFactory();
+      SimpleString destination = new SimpleString("test");
+      
+      PagingStoreFactory storeFactory = EasyMock.createNiceMock(PagingStoreFactory.class);
+      
+      EasyMock.expect(storeFactory.newFileFactory(destination)).andReturn(factory);
+      
+      EasyMock.replay(storeFactory);
 
       TestSupportPageStore storeImpl = new PagingStoreImpl(createMockManager(),
                                                            createStorageManagerMock(),
                                                            createPostOfficeMock(),
                                                            factory,
+                                                           storeFactory,
                                                            destinationTestName,
                                                            new QueueSettings(),
-                                                           executor, true);
+                                                           executor);
 
       storeImpl.start();
 
@@ -214,8 +236,6 @@
 
       List<ByteBuffer> buffers = new ArrayList<ByteBuffer>();
 
-      SimpleString destination = new SimpleString("test");
-
       for (int i = 0; i < 10; i++)
       {
 

Modified: trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreTestBase.java
===================================================================
--- trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreTestBase.java	2009-01-06 15:48:57 UTC (rev 5581)
+++ trunk/tests/src/org/jboss/messaging/tests/unit/core/paging/impl/PagingStoreTestBase.java	2009-01-06 18:52:19 UTC (rev 5582)
@@ -39,6 +39,7 @@
 import org.jboss.messaging.core.paging.Page;
 import org.jboss.messaging.core.paging.PagedMessage;
 import org.jboss.messaging.core.paging.PagingManager;
+import org.jboss.messaging.core.paging.PagingStoreFactory;
 import org.jboss.messaging.core.paging.impl.PagedMessageImpl;
 import org.jboss.messaging.core.paging.impl.PagingStoreImpl;
 import org.jboss.messaging.core.paging.impl.TestSupportPageStore;
@@ -91,6 +92,10 @@
    protected void testConcurrentPaging(final SequentialFileFactory factory, final int numberOfThreads) throws Exception,
                                                                                                       InterruptedException
    {
+      
+      PagingStoreFactory storeFactory = EasyMock.createNiceMock(PagingStoreFactory.class);
+      
+      EasyMock.replay(storeFactory);
 
       final int MAX_SIZE = 1024 * 10;
 
@@ -111,9 +116,10 @@
                                                                  createStorageManagerMock(),
                                                                  createPostOfficeMock(),
                                                                  factory,
+                                                                 storeFactory,
                                                                  new SimpleString("test"),
                                                                  settings,
-                                                                 executor, true);
+                                                                 executor);
 
       storeImpl.start();
 
@@ -266,9 +272,10 @@
                                                             createStorageManagerMock(),
                                                             createPostOfficeMock(),
                                                             factory,
+                                                            storeFactory,
                                                             new SimpleString("test"),
                                                             settings,
-                                                            executor, true);
+                                                            executor);
       storeImpl2.start();
 
       int numberOfPages = storeImpl2.getNumberOfPages();




More information about the jboss-cvs-commits mailing list