You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ie...@apache.org on 2012/03/18 05:06:01 UTC

svn commit: r1302061 - in /james/mailbox/trunk/hbase/src: main/java/org/apache/james/mailbox/hbase/ main/java/org/apache/james/mailbox/hbase/mail/ test/java/org/apache/james/mailbox/hbase/ test/java/org/apache/james/mailbox/hbase/mail/ test/java/org/ap...

Author: ieugen
Date: Sun Mar 18 04:06:01 2012
New Revision: 1302061

URL: http://svn.apache.org/viewvc?rev=1302061&view=rev
Log:
MAILBOX-172

- removed all table references from HBaseClusterSingleton
- shortened column familie names to one letter
- updated tests
Issue #MAILBOX-172 - Refactor HBaseClusterSingleton to remove decoupling from table names

Modified:
    james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
    james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseNames.java
    james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessage.java
    james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java
    james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java

Modified: james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java (original)
+++ james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactory.java Sun Mar 18 04:06:01 2012
@@ -42,7 +42,7 @@ import org.apache.james.mailbox.store.us
 
 /**
  * HBase implementation of {@link MailboxSessionMapperFactory}
- * 
+ *
  */
 public class HBaseMailboxSessionMapperFactory extends MailboxSessionMapperFactory<UUID> {
 
@@ -52,12 +52,12 @@ public class HBaseMailboxSessionMapperFa
 
     /**
      * Creates  the necessary tables in HBase if they do not exist.
-     * 
+     *
      * @param conf Configuration for the cluster
      * @param uidProvider UID provider for mailbox uid.
-     * @param modSeqProvider 
+     * @param modSeqProvider
      * @throws MasterNotRunningException
-     * @throws ZooKeeperConnectionException 
+     * @throws ZooKeeperConnectionException
      * @throws IOException
      */
     public HBaseMailboxSessionMapperFactory(Configuration conf, UidProvider<UUID> uidProvider, ModSeqProvider<UUID> modSeqProvider) {
@@ -82,18 +82,18 @@ public class HBaseMailboxSessionMapperFa
             }
 
             if (!hbaseAdmin.tableExists(MESSAGES_TABLE)) {
-                /**TODO: try to reduce the number of column families as suggested by: 
-                 * http://hbase.apache.org/book.html#number.of.cfs 
+                /**TODO: try to reduce the number of column families as suggested by:
+                 * http://hbase.apache.org/book.html#number.of.cfs
                  * Down to three column families, striking for just two.
                  */
                 desc = new HTableDescriptor(MESSAGES_TABLE);
                 hColumnDescriptor = new HColumnDescriptor(MESSAGES_META_CF);
                 hColumnDescriptor.setMaxVersions(1);
                 desc.addFamily(hColumnDescriptor);
-                hColumnDescriptor = new HColumnDescriptor(MESSAGE_DATA_HEADERS);
+                hColumnDescriptor = new HColumnDescriptor(MESSAGE_DATA_HEADERS_CF);
                 hColumnDescriptor.setMaxVersions(1);
                 desc.addFamily(hColumnDescriptor);
-                hColumnDescriptor = new HColumnDescriptor(MESSAGE_DATA_BODY);
+                hColumnDescriptor = new HColumnDescriptor(MESSAGE_DATA_BODY_CF);
                 hColumnDescriptor.setMaxVersions(1);
                 desc.addFamily(hColumnDescriptor);
                 hbaseAdmin.createTable(desc);

Modified: james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseNames.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseNames.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseNames.java (original)
+++ james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/HBaseNames.java Sun Mar 18 04:06:01 2012
@@ -23,7 +23,7 @@ import org.apache.hadoop.hbase.util.Byte
 /**
  * Contains table names, column family names, qualifier names and other constants
  * for use in HBase.
- *     
+ *
  * Each qualifier in the META column will begin with a short prefix that will
  * determine it's purpose. </br>
  * Qualifier prefix meaning:<br/>
@@ -42,7 +42,7 @@ public interface HBaseNames {
     public static final String MAILBOXES = "JAMES_MAILBOXES";
     public static final byte[] MAILBOXES_TABLE = Bytes.toBytes(MAILBOXES);
     /** Default mailbox column family */
-    public static final byte[] MAILBOX_CF = Bytes.toBytes("DATA");
+    public static final byte[] MAILBOX_CF = Bytes.toBytes("D");
     /** HBase column qualifiers: field names stored as byte arrays*/
     public static final byte[] MAILBOX_NAME = Bytes.toBytes("name");
     public static final byte[] MAILBOX_USER = Bytes.toBytes("user");
@@ -56,19 +56,17 @@ public interface HBaseNames {
     /** The HBase table name for storing subscriptions */
     public static final byte[] SUBSCRIPTIONS_TABLE = Bytes.toBytes(SUBSCRIPTIONS);
     /** Default subscription column family */
-    public static final byte[] SUBSCRIPTION_CF = Bytes.toBytes("DATA");
+    public static final byte[] SUBSCRIPTION_CF = Bytes.toBytes("D");
     /** The HBase table name for storing messages */
     public static final String MESSAGES = "JAMES_MESSAGES";
     /** The HBase table name for storing messages */
     public static final byte[] MESSAGES_TABLE = Bytes.toBytes(MESSAGES);
-    /** Column family for storing message data*/
-    //public static final byte[] MESSAGES_DATA_CF = Bytes.toBytes("DATA");
     /** Column family for storing message meta information*/
-    public static final byte[] MESSAGES_META_CF = Bytes.toBytes("META");
+    public static final byte[] MESSAGES_META_CF = Bytes.toBytes("M");
     /** Column family for storing message headers*/
-    public static final byte[] MESSAGE_DATA_HEADERS = Bytes.toBytes("HEAD");
+    public static final byte[] MESSAGE_DATA_HEADERS_CF = Bytes.toBytes("H");
     /** Column family for storing message body*/
-    public static final byte[] MESSAGE_DATA_BODY = Bytes.toBytes("BODY");
+    public static final byte[] MESSAGE_DATA_BODY_CF = Bytes.toBytes("B");
     public static final String PREFIX_META = "m:";
     public static final byte[] PREFIX_META_B = Bytes.toBytes(PREFIX_META);
     /** kept sorted */

Modified: james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessage.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessage.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessage.java (original)
+++ james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessage.java Sun Mar 18 04:06:01 2012
@@ -41,7 +41,7 @@ import static org.apache.james.mailbox.h
 
 /**
  * Concrete HBaseMessage implementation. This implementation does not store any
- * message content. The message content is retrieved using a ChunkedInputStream 
+ * message content. The message content is retrieved using a ChunkedInputStream
  * directly from HBase.
  */
 public class HBaseMessage extends AbstractMessage<UUID> {
@@ -90,7 +90,7 @@ public class HBaseMessage extends Abstra
      * @param uid
      * @param modSeq
      * @param original
-     * @throws MailboxException 
+     * @throws MailboxException
      */
     public HBaseMessage(Configuration conf, UUID mailboxId, long uid, long modSeq, Message<?> original) throws MailboxException {
         super();
@@ -101,7 +101,7 @@ public class HBaseMessage extends Abstra
         this.userFlags = new ArrayList<String>();
         setFlags(original.createFlags());
 
-        // A copy of a message is recent 
+        // A copy of a message is recent
         // See MAILBOX-85
         this.recent = true;
 
@@ -122,7 +122,7 @@ public class HBaseMessage extends Abstra
      * @param flags
      * @param contentOctets
      * @param bodyStartOctet
-     * @param propertyBuilder 
+     * @param propertyBuilder
      */
     public HBaseMessage(Configuration conf, UUID mailboxId, Date internalDate, Flags flags, long contentOctets, int bodyStartOctet, PropertyBuilder propertyBuilder) {
         super();
@@ -146,7 +146,7 @@ public class HBaseMessage extends Abstra
      */
     @Override
     public InputStream getBodyContent() throws IOException {
-        return new ChunkInputStream(conf, MESSAGES_TABLE, MESSAGE_DATA_BODY, messageRowKey(this));
+        return new ChunkInputStream(conf, MESSAGES_TABLE, MESSAGE_DATA_BODY_CF, messageRowKey(this));
     }
 
     /*
@@ -155,7 +155,7 @@ public class HBaseMessage extends Abstra
      */
     @Override
     public InputStream getHeaderContent() throws IOException {
-        return new ChunkInputStream(conf, MESSAGES_TABLE, MESSAGE_DATA_HEADERS, messageRowKey(this));
+        return new ChunkInputStream(conf, MESSAGES_TABLE, MESSAGE_DATA_HEADERS_CF, messageRowKey(this));
     }
 
     @Override
@@ -214,7 +214,7 @@ public class HBaseMessage extends Abstra
 
     /**
      * Gets the top level MIME content media type.
-     * 
+     *
      * @return top level MIME content media type, or null if default
      */
     @Override
@@ -224,7 +224,7 @@ public class HBaseMessage extends Abstra
 
     /**
      * Gets the MIME content subtype.
-     * 
+     *
      * @return the MIME content subtype, or null if default
      */
     @Override
@@ -366,8 +366,8 @@ public class HBaseMessage extends Abstra
 
     /**
      * This implementation supports user flags
-     * 
-     * 
+     *
+     *
      */
     @Override
     public String[] createUserFlags() {

Modified: james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java (original)
+++ james/mailbox/trunk/hbase/src/main/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapper.java Sun Mar 18 04:06:01 2012
@@ -61,9 +61,9 @@ import static org.apache.james.mailbox.h
 import static org.apache.james.mailbox.hbase.FlagConvertor.*;
 
 /**
- * HBase implementation of a {@link MessageMapper}. 
+ * HBase implementation of a {@link MessageMapper}.
  * I don't know if this class is thread-safe! Asume it is not!
- * 
+ *
  */
 public class HBaseMessageMapper extends NonTransactionalMapper implements MessageMapper<UUID> {
 
@@ -172,7 +172,7 @@ public class HBaseMessageMapper extends 
     private List<Message<UUID>> findMessagesInMailboxAfterUID(Mailbox<UUID> mailbox, final long from, final int batchSize, final boolean flaggedForDelete) throws IOException {
         List<Message<UUID>> messageList = new ArrayList<Message<UUID>>();
         HTable messages = new HTable(conf, MESSAGES_TABLE);
-        // uids are stored in reverse so we need to search 
+        // uids are stored in reverse so we need to search
         Scan scan = new Scan(messageRowKey(mailbox.getMailboxId(), Long.MAX_VALUE),
                 messageRowKey(mailbox.getMailboxId(), from - 1));
         if (flaggedForDelete) {
@@ -206,7 +206,7 @@ public class HBaseMessageMapper extends 
         }
         HTable messages = new HTable(conf, MESSAGES_TABLE);
         /*TODO: check if Between should be inclusive or exclusive regarding limits.
-         * HBase scan operaion are exclusive to the upper bound when providing stop row key. 
+         * HBase scan operaion are exclusive to the upper bound when providing stop row key.
          */
         Scan scan = new Scan(messageRowKey(mailbox.getMailboxId(), to), messageRowKey(mailbox.getMailboxId(), from - 1));
         if (flaggedForDelete) {
@@ -511,7 +511,7 @@ public class HBaseMessageMapper extends 
                 Flags newFlags = member.createFlags();
                 put = flagsToPut(member, newFlags);
                 if (UpdatedFlags.flagsChanged(originalFlags, newFlags)) {
-                    // increase the mod-seq as we changed the flags                    
+                    // increase the mod-seq as we changed the flags
                     put.add(MESSAGES_META_CF, MESSAGE_MODSEQ, Bytes.toBytes(modSeq));
                     // update put not to include the allready existing flags
                     messages.put(put);
@@ -531,8 +531,8 @@ public class HBaseMessageMapper extends 
                     throw new MailboxException("Error setting flags for messages in " + mailbox, e);
                 }
             }
-        }   
-        
+        }
+
         return updatedFlags.iterator();
     }
 
@@ -572,8 +572,8 @@ public class HBaseMessageMapper extends 
     }
 
     /**
-     * Save the {@link Message} for the given {@link Mailbox} and return the {@link MessageMetaData} 
-     * 
+     * Save the {@link Message} for the given {@link Mailbox} and return the {@link MessageMetaData}
+     *
      * @param mailbox
      * @param message
      * @return metaData
@@ -596,7 +596,7 @@ public class HBaseMessageMapper extends 
 
             int b;
             out = new ChunkOutputStream(conf,
-                    MESSAGES_TABLE, MESSAGE_DATA_BODY, messageRowKey(message), MAX_COLUMN_SIZE);
+                    MESSAGES_TABLE, MESSAGE_DATA_BODY_CF, messageRowKey(message), MAX_COLUMN_SIZE);
             in = new BufferedInputStream(message.getBodyContent());
             while ((b = in.read()) != -1) {
                 out.write(b);
@@ -604,7 +604,7 @@ public class HBaseMessageMapper extends 
             in.close();
             out.close();
             out = new ChunkOutputStream(conf,
-                    MESSAGES_TABLE, MESSAGE_DATA_HEADERS, messageRowKey(message), MAX_COLUMN_SIZE);
+                    MESSAGES_TABLE, MESSAGE_DATA_HEADERS_CF, messageRowKey(message), MAX_COLUMN_SIZE);
             in = new BufferedInputStream(message.getHeaderContent());
             while ((b = in.read()) != -1) {
                 out.write(b);
@@ -665,7 +665,7 @@ public class HBaseMessageMapper extends 
         HTable mailboxes = new HTable(conf, MAILBOXES_TABLE);
         List<Delete> deletes = new ArrayList<Delete>();
         /*TODO: check if Between should be inclusive or exclusive regarding limits.
-         * HBase scan operaion are exclusive to the upper bound when providing stop row key. 
+         * HBase scan operaion are exclusive to the upper bound when providing stop row key.
          */
         Scan scan = new Scan(messageRowKey(mailbox.getMailboxId(), fromUid), messageRowKey(mailbox.getMailboxId(), toUid));
         scan.addColumn(MESSAGES_META_CF, FLAGS_DELETED);
@@ -691,7 +691,7 @@ public class HBaseMessageMapper extends 
         HTable mailboxes = new HTable(conf, MAILBOXES_TABLE);
         List<Delete> deletes = new ArrayList<Delete>();
         /*TODO: check if Between should be inclusive or exclusive regarding limits.
-         * HBase scan operaion are exclusive to the upper bound when providing stop row key. 
+         * HBase scan operaion are exclusive to the upper bound when providing stop row key.
          */
         Scan scan = new Scan(messageRowKey(mailbox.getMailboxId(), fromUid));
         scan.addColumn(MESSAGES_META_CF, FLAGS_DELETED);
@@ -717,7 +717,7 @@ public class HBaseMessageMapper extends 
         HTable mailboxes = new HTable(conf, MAILBOXES_TABLE);
         List<Delete> deletes = new ArrayList<Delete>();
         /*TODO: check if Between should be inclusive or exclusive regarding limits.
-         * HBase scan operaion are exclusive to the upper bound when providing stop row key. 
+         * HBase scan operaion are exclusive to the upper bound when providing stop row key.
          */
         Scan scan = new Scan(customMessageRowKey(mailbox.getMailboxId(), 0L),
                 new PrefixFilter(Bytes.add(Bytes.toBytes(mailbox.getMailboxId().getMostSignificantBits()),

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseClusterSingleton.java Sun Mar 18 04:06:01 2012
@@ -1,44 +1,28 @@
-/**
- * **************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one * or more
- * contributor license agreements. See the NOTICE file * distributed with this
- * work for additional information * regarding copyright ownership. The ASF
- * licenses this file * to you under the Apache License, Version 2.0 (the *
- * "License"); you may not use this file except in compliance * with the
- * License. You may obtain a copy of the License at * *
- * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable
- * law or agreed to in writing, * software distributed under the License is
- * distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
- * KIND, either express or implied. See the License for the * specific language
- * governing permissions and limitations * under the License. *
- * **************************************************************
- */
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
 package org.apache.james.mailbox.hbase;
 
-import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES;
-import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOX_CF;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_META_CF;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_BODY;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_HEADERS;
-import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS;
-import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
-
 import java.io.IOException;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HTableDescriptor;
 import org.apache.hadoop.hbase.MiniHBaseCluster;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
+import org.apache.hadoop.hbase.client.*;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.hadoop.io.IOUtils;
 import org.slf4j.Logger;
@@ -55,6 +39,11 @@ public final class HBaseClusterSingleton
     private MiniHBaseCluster hbaseCluster;
     private Configuration conf;
 
+    /**
+     * Builds a MiniCluster instance.
+     * @return the {@link HBaseClusterSingleton} instance
+     * @throws RuntimeException
+     */
     public static synchronized HBaseClusterSingleton build()
             throws RuntimeException {
         LOG.info("Retrieving cluster instance.");
@@ -65,18 +54,18 @@ public final class HBaseClusterSingleton
     }
 
     private HBaseClusterSingleton() throws RuntimeException {
-        HTableDescriptor desc = null;
-        HColumnDescriptor hColumnDescriptor = null;
+        htu.getConfiguration().setBoolean("dfs.support.append", true);
+        htu.getConfiguration().setInt("zookeeper.session.timeout", 20000);
+//        htu.getConfiguration().setInt("hbase.client.retries.number", 2);
         try {
             hbaseCluster = htu.startMiniCluster();
-            htu.createTable(MAILBOXES_TABLE, MAILBOX_CF);
-            htu.createTable(MESSAGES_TABLE, new byte[][]{MESSAGES_META_CF,
-                        MESSAGE_DATA_HEADERS, MESSAGE_DATA_BODY});
-            htu.createTable(SUBSCRIPTIONS_TABLE, SUBSCRIPTION_CF);
-            
+            LOG.info("After cluster start-up.");
+            hbaseCluster.waitForActiveAndReadyMaster();
+            LOG.info("After active and ready.");
+//            ensureTables();
             conf = hbaseCluster.getConfiguration();
-        } catch (Exception e) {
-            throw new RuntimeException("Error starting MiniCluster ", e);
+        } catch (Exception ex) {
+            throw new RuntimeException("Minicluster not starting.");
         } finally {
             if (hbaseCluster != null) {
                 // add a shutdown hook for shuting down the minicluster.
@@ -95,23 +84,39 @@ public final class HBaseClusterSingleton
         }
     }
 
+    /**
+     * Return a configuration for the runnning MiniCluster.
+     * @return
+     */
     public Configuration getConf() {
         return conf;
     }
 
-    public void truncateTable(String tableName) {
-        LOG.info("Truncating table!");
-        try {
-            htu.truncateTable(Bytes.toBytes(tableName));
-        } catch (IOException ex) {
-            LOG.info("Exception truncating table {}", tableName, ex);
+    /**
+     * Creates a table with the specified column families.
+     * @param tableName the table name
+     * @param columnFamilies the colum families
+     * @throws IOException
+     */
+    public void ensureTable(String tableName, String... columnFamilies) throws IOException {
+        byte[][] cfs = new byte[columnFamilies.length][];
+        for (int i = 0; i < columnFamilies.length; i++) {
+            cfs[i] = Bytes.toBytes(columnFamilies[i]);
         }
+        ensureTable(Bytes.toBytes(tableName), cfs);
     }
 
-    public void clearTables() {
-        clearTable(MAILBOXES);
-        clearTable(MESSAGES);
-        clearTable(SUBSCRIPTIONS);
+    /**
+     * Creates a table with the specified column families.
+     * @param tableName the table name
+     * @param cfs the column families
+     * @throws IOException
+     */
+    public void ensureTable(byte[] tableName, byte[][] cfs) throws IOException {
+        HBaseAdmin admin = htu.getHBaseAdmin();
+        if (!admin.tableExists(tableName)) {
+            htu.createTable(tableName, cfs);
+        }
     }
 
     /**
@@ -136,8 +141,7 @@ public final class HBaseClusterSingleton
             LOG.info("Exception clearing table {}", tableName);
         } finally {
             IOUtils.closeStream(scanner);
-            // TODO Temporary commented, was not compiling.
-//            IOUtils.closeStream(table);
+            IOUtils.closeStream(table);
         }
     }
 }

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxManagerTest.java Sun Mar 18 04:06:01 2012
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-
 package org.apache.james.mailbox.hbase;
 
+import java.io.IOException;
 import org.apache.james.mailbox.AbstractMailboxManagerTest;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
@@ -27,6 +27,7 @@ import org.apache.james.mailbox.acl.Simp
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.exception.BadCredentialsException;
 import org.apache.james.mailbox.exception.MailboxException;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
 import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
 import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
 import org.junit.After;
@@ -35,27 +36,42 @@ import org.slf4j.LoggerFactory;
 
 /**
  * HBaseMailboxManagerTest that extends the StoreMailboxManagerTest.
- *  
+ *
  */
 public class HBaseMailboxManagerTest extends AbstractMailboxManagerTest {
 
-    private static final HBaseClusterSingleton clsuter = HBaseClusterSingleton.build();
+    private static final HBaseClusterSingleton CLUSTER = HBaseClusterSingleton.build();
+
     /**
      * Setup the mailboxManager.
-     
+
      * @throws Exception
      */
     @Before
     public void setup() throws Exception {
-        clsuter.clearTables();
+        ensureTables();
+        clearTables();
         createMailboxManager();
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     /**
      * Close the system session and entityManagerFactory
-     * 
-     * @throws MailboxException 
-     * @throws BadCredentialsException 
+     *
+     * @throws MailboxException
+     * @throws BadCredentialsException
      */
     @After
     public void tearDown() throws Exception {
@@ -68,16 +84,17 @@ public class HBaseMailboxManagerTest ext
      * @see org.apache.james.mailbox.MailboxManagerTest#createMailboxManager()
      */
     @Override
-    protected void createMailboxManager() throws MailboxException{
-        final HBaseUidProvider uidProvider = new HBaseUidProvider(clsuter.getConf());
-        final HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(clsuter.getConf());
-        final HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(clsuter.getConf(),
+    protected void createMailboxManager() throws MailboxException {
+        final HBaseUidProvider uidProvider = new HBaseUidProvider(CLUSTER.getConf());
+        final HBaseModSeqProvider modSeqProvider = new HBaseModSeqProvider(CLUSTER.getConf());
+        final HBaseMailboxSessionMapperFactory mapperFactory = new HBaseMailboxSessionMapperFactory(CLUSTER.getConf(),
                 uidProvider, modSeqProvider);
-        
+
         final MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
         final GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
-        
-        final HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory, null, aclResolver, groupMembershipResolver);
+
+        final HBaseMailboxManager manager = new HBaseMailboxManager(mapperFactory, null, aclResolver,
+                groupMembershipResolver);
         manager.init();
 
         setMailboxManager(manager);

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseMailboxSessionMapperFactoryTest.java Sun Mar 18 04:06:01 2012
@@ -16,12 +16,13 @@
  * specific language governing permissions and limitations      *
  * under the License.                                           *
  ****************************************************************/
-
 package org.apache.james.mailbox.hbase;
 
+import java.io.IOException;
 import java.util.UUID;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.james.mailbox.MailboxSession;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
 import org.apache.james.mailbox.hbase.mail.HBaseModSeqProvider;
 import org.apache.james.mailbox.hbase.mail.HBaseUidProvider;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
@@ -46,11 +47,25 @@ public class HBaseMailboxSessionMapperFa
     private static Configuration conf;
 
     @Before
-    public void beforeMethod() {
-        CLUSTER.clearTables();
+    public void beforeMethod() throws IOException {
+        ensureTables();
+        clearTables();
         conf = CLUSTER.getConf();
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     /**
      * Test of createMessageMapper method, of class
      * HBaseMailboxSessionMapperFactory.

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/HBaseUtilsTest.java Sun Mar 18 04:06:01 2012
@@ -19,10 +19,15 @@
 package org.apache.james.mailbox.hbase;
 
 import java.util.Date;
-import org.apache.hadoop.hbase.util.Bytes;
 import java.util.UUID;
 import javax.mail.Flags;
 import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.util.Bytes;
+import static org.apache.james.mailbox.hbase.FlagConvertor.*;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
+import static org.apache.james.mailbox.hbase.HBaseUtils.*;
+import static org.apache.james.mailbox.hbase.PropertyConvertor.getProperty;
+import static org.apache.james.mailbox.hbase.PropertyConvertor.getValue;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.Property;
@@ -31,17 +36,11 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.mail.model.impl.SimpleProperty;
 import org.apache.james.mailbox.store.user.model.Subscription;
 import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
-import org.junit.Test;
-
 import static org.junit.Assert.*;
-import static org.apache.james.mailbox.hbase.HBaseUtils.*;
-import static org.apache.james.mailbox.hbase.HBaseNames.*;
-import static org.apache.james.mailbox.hbase.FlagConvertor.*;
-import static org.apache.james.mailbox.hbase.PropertyConvertor.*;
+import org.junit.Test;
 
 /**
  * Tests for HBase Mailbox store utility methods .
- * @author ieugen
  */
 public class HBaseUtilsTest {
 

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMailboxMapperTest.java Sun Mar 18 04:06:01 2012
@@ -15,17 +15,6 @@
  */
 package org.apache.james.mailbox.hbase.mail;
 
-import static org.apache.james.mailbox.hbase.HBaseNames.MAILBOXES_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGES_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.MESSAGE_DATA_BODY;
-import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxFromResult;
-import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxRowKey;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -33,7 +22,6 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
 import java.util.UUID;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.HTable;
@@ -42,11 +30,15 @@ import org.apache.hadoop.hbase.util.Byte
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.exception.MailboxNotFoundException;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
+import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxFromResult;
+import static org.apache.james.mailbox.hbase.HBaseUtils.mailboxRowKey;
 import org.apache.james.mailbox.hbase.io.ChunkInputStream;
 import org.apache.james.mailbox.hbase.io.ChunkOutputStream;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import static org.junit.Assert.*;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -55,7 +47,6 @@ import org.slf4j.LoggerFactory;
 /**
  * HBaseMailboxMapper unit tests.
  *
- * @author ieugen
  */
 public class HBaseMailboxMapperTest {
 
@@ -67,13 +58,14 @@ public class HBaseMailboxMapperTest {
     private static List<MailboxPath> pathsList;
     private static final int NAMESPACES = 5;
     private static final int USERS = 5;
-    private static final int MAILBOXES = 5;
+    private static final int MAILBOX_NO = 5;
     private static final char SEPARATOR = '%';
 
     @Before
     public void setUp() throws Exception {
-        // start the test cluster 
-        CLUSTER.clearTables();
+        ensureTables();
+        // start the test cluster
+        clearTables();
         conf = CLUSTER.getConf();
         fillMailboxList();
         mapper = new HBaseMailboxMapper(conf);
@@ -82,9 +74,22 @@ public class HBaseMailboxMapperTest {
         }
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     /**
      * Test an ordered scenario with list, delete... methods.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -130,7 +135,7 @@ public class HBaseMailboxMapperTest {
         for (int i = start; i < end; i++) {
             newPath = new MailboxPath(path);
             newPath.setName(i + newPath.getName() + " " + i);
-            // test for paths with null user 
+            // test for paths with null user
             if (i % 2 == 0) {
                 newPath.setUser(null);
             }
@@ -161,7 +166,7 @@ public class HBaseMailboxMapperTest {
 
         final Get get = new Get(mailboxRowKey(mlbx.getMailboxId()));
         // get all columns for the DATA column family
-        get.addFamily(Bytes.toBytes("DATA"));
+        get.addFamily(MAILBOX_CF);
 
         final Result result = mailboxes.get(get);
         final HBaseMailbox newValue = (HBaseMailbox) mailboxFromResult(result);
@@ -261,9 +266,9 @@ public class HBaseMailboxMapperTest {
         byte[] data = Bytes.toBytes(original);
         // we make the column size = 10 bytes
         ChunkOutputStream out = new ChunkOutputStream(conf,
-                MESSAGES_TABLE, MESSAGE_DATA_BODY, Bytes.toBytes("10"), 10);
+                MESSAGES_TABLE, MESSAGE_DATA_BODY_CF, Bytes.toBytes("10"), 10);
         ChunkInputStream in = new ChunkInputStream(conf,
-                MESSAGES_TABLE, MESSAGE_DATA_BODY, Bytes.toBytes("10"));
+                MESSAGES_TABLE, MESSAGE_DATA_BODY_CF, Bytes.toBytes("10"));
         //create the stream
         ByteArrayInputStream bin = new ByteArrayInputStream(data);
         ByteArrayOutputStream bout = new ByteArrayOutputStream(data.length);
@@ -278,7 +283,7 @@ public class HBaseMailboxMapperTest {
         String s = bout.toString();
         assertTrue(original.equals(s));
     }
-    
+
     private static void fillMailboxList() {
         mailboxList = new ArrayList<HBaseMailbox>();
         pathsList = new ArrayList<MailboxPath>();
@@ -286,7 +291,7 @@ public class HBaseMailboxMapperTest {
         String name;
         for (int i = 0; i < NAMESPACES; i++) {
             for (int j = 0; j < USERS; j++) {
-                for (int k = 0; k < MAILBOXES; k++) {
+                for (int k = 0; k < MAILBOX_NO; k++) {
                     if (j == 3) {
                         name = "test" + SEPARATOR + "subbox" + k;
                     } else {
@@ -309,5 +314,4 @@ public class HBaseMailboxMapperTest {
         mapper.save(mailbox);
         LOG.info("Added new mailbox: {} paths: {}", mailboxList.size(), pathsList.size());
     }
-
 }

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseMessageMapperTest.java Sun Mar 18 04:06:01 2012
@@ -18,22 +18,16 @@
  ****************************************************************/
 package org.apache.james.mailbox.hbase.mail;
 
-import static org.junit.Assert.assertEquals;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Random;
-import java.util.UUID;
-
+import java.io.IOException;
+import java.util.*;
 import javax.mail.Flags;
 import javax.mail.internet.SharedInputStream;
 import javax.mail.util.SharedByteArrayInputStream;
-
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
 import org.apache.james.mailbox.mock.MockMailboxSession;
 import org.apache.james.mailbox.model.MailboxPath;
@@ -41,6 +35,7 @@ import org.apache.james.mailbox.store.ma
 import org.apache.james.mailbox.store.mail.model.Message;
 import org.apache.james.mailbox.store.mail.model.impl.PropertyBuilder;
 import org.apache.james.mailbox.store.mail.model.impl.SimpleMessage;
+import static org.junit.Assert.assertEquals;
 import org.junit.Before;
 import org.junit.Test;
 import org.slf4j.Logger;
@@ -49,7 +44,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Unit tests for HBaseMessageMapper.
  *
- * @author ieugen
  */
 public class HBaseMessageMapperTest {
 
@@ -60,7 +54,7 @@ public class HBaseMessageMapperTest {
     private static HBaseMessageMapper messageMapper;
     private static final List<MailboxPath> MBOX_PATHS = new ArrayList<MailboxPath>();
     private static final List<Mailbox<UUID>> MBOXES = new ArrayList<Mailbox<UUID>>();
-    private static final List<Message<UUID>> MESSAGES = new ArrayList<Message<UUID>>();
+    private static final List<Message<UUID>> MESSAGE_NO = new ArrayList<Message<UUID>>();
     private static final int COUNT = 5;
     private static Configuration conf;
     /*
@@ -81,18 +75,32 @@ public class HBaseMessageMapperTest {
 
     @Before
     public void setUp() throws Exception {
-        CLUSTER.clearTables();
+        ensureTables();
+        clearTables();
         conf = CLUSTER.getConf();
         uidProvider = new HBaseUidProvider(conf);
         modSeqProvider = new HBaseModSeqProvider(conf);
         generateTestData();
         final MailboxSession session = new MockMailboxSession("ieugen");
         messageMapper = new HBaseMessageMapper(session, uidProvider, modSeqProvider, conf);
-        for (int i = 0; i < MESSAGES.size(); i++) {
-            messageMapper.add(MBOXES.get(1), MESSAGES.get(i));
+        for (int i = 0; i < MESSAGE_NO.size(); i++) {
+            messageMapper.add(MBOXES.get(1), MESSAGE_NO.get(i));
         }
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     public static void generateTestData() {
         final Random random = new Random();
         MailboxPath mboxPath;
@@ -125,13 +133,13 @@ public class HBaseMessageMapperTest {
                 flags.remove(Flags.Flag.RECENT);
                 myMsg.setFlags(flags);
             }
-            MESSAGES.add(myMsg);
+            MESSAGE_NO.add(myMsg);
         }
     }
-    
+
     /**
      * Test an ordered scenario with count, find, add... methods.
-     * 
+     *
      * @throws Exception
      */
     @Test
@@ -151,7 +159,7 @@ public class HBaseMessageMapperTest {
     private void testCountMessagesInMailbox() throws Exception {
         LOG.info("countMessagesInMailbox");
         long messageCount = messageMapper.countMessagesInMailbox(MBOXES.get(1));
-        assertEquals(MESSAGES.size(), messageCount);
+        assertEquals(MESSAGE_NO.size(), messageCount);
     }
 
     /**
@@ -160,7 +168,7 @@ public class HBaseMessageMapperTest {
     private void testCountUnseenMessagesInMailbox() throws Exception {
         LOG.info("countUnseenMessagesInMailbox");
         long unseen = messageMapper.countUnseenMessagesInMailbox(MBOXES.get(1));
-        assertEquals(MESSAGES.size() - 1, unseen);
+        assertEquals(MESSAGE_NO.size() - 1, unseen);
     }
 
     /**
@@ -179,7 +187,7 @@ public class HBaseMessageMapperTest {
     private void testFindRecentMessageUidsInMailbox() throws Exception {
         LOG.info("findRecentMessageUidsInMailbox");
         List<Long> recentMessages = messageMapper.findRecentMessageUidsInMailbox(MBOXES.get(1));
-        assertEquals(MESSAGES.size() - 1, recentMessages.size());
+        assertEquals(MESSAGE_NO.size() - 1, recentMessages.size());
     }
 
     /**
@@ -189,8 +197,8 @@ public class HBaseMessageMapperTest {
         LOG.info("add");
         // The tables should be deleted every time the tests run.
         long msgCount = messageMapper.countMessagesInMailbox(MBOXES.get(1));
-        LOG.info(msgCount + " " + MESSAGES.size());
-        assertEquals(MESSAGES.size(), msgCount);
+        LOG.info(msgCount + " " + MESSAGE_NO.size());
+        assertEquals(MESSAGE_NO.size(), msgCount);
     }
 
     /**
@@ -199,7 +207,7 @@ public class HBaseMessageMapperTest {
     private void testGetLastUid() throws Exception {
         LOG.info("getLastUid");
         long lastUid = messageMapper.getLastUid(MBOXES.get(1));
-        assertEquals(MESSAGES.size(), lastUid);
+        assertEquals(MESSAGE_NO.size(), lastUid);
     }
 
     /**
@@ -208,6 +216,6 @@ public class HBaseMessageMapperTest {
     private void testGetHighestModSeq() throws Exception {
         LOG.info("getHighestModSeq");
         long highestModSeq = messageMapper.getHighestModSeq(MBOXES.get(1));
-        assertEquals(MESSAGES.size(), highestModSeq);
+        assertEquals(MESSAGE_NO.size(), highestModSeq);
     }
 }

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/HBaseUidAndModSeqProviderTest.java Sun Mar 18 04:06:01 2012
@@ -18,13 +18,14 @@
  ****************************************************************/
 package org.apache.james.mailbox.hbase.mail;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
 import org.apache.james.mailbox.hbase.mail.model.HBaseMailbox;
 import org.apache.james.mailbox.model.MailboxPath;
-
 import static org.junit.Assert.assertEquals;
 import org.junit.Before;
 import org.junit.Test;
@@ -34,7 +35,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Unit tests for UidProvider and ModSeqProvider.
  *
- * @author ieugen
  */
 public class HBaseUidAndModSeqProviderTest {
 
@@ -48,12 +48,13 @@ public class HBaseUidAndModSeqProviderTe
     private static List<MailboxPath> pathsList;
     private static final int NAMESPACES = 5;
     private static final int USERS = 5;
-    private static final int MAILBOXES = 5;
+    private static final int MAILBOX_NO = 5;
     private static final char SEPARATOR = '%';
 
     @Before
     public void setUpClass() throws Exception {
-        CLUSTER.clearTables();
+        ensureTables();
+        clearTables();
         conf = CLUSTER.getConf();
         uidProvider = new HBaseUidProvider(conf);
         modSeqProvider = new HBaseModSeqProvider(conf);
@@ -64,6 +65,19 @@ public class HBaseUidAndModSeqProviderTe
         }
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     private static void fillMailboxList() {
         mailboxList = new ArrayList<HBaseMailbox>();
         pathsList = new ArrayList<MailboxPath>();
@@ -71,7 +85,7 @@ public class HBaseUidAndModSeqProviderTe
         String name;
         for (int i = 0; i < NAMESPACES; i++) {
             for (int j = 0; j < USERS; j++) {
-                for (int k = 0; k < MAILBOXES; k++) {
+                for (int k = 0; k < MAILBOX_NO; k++) {
                     if (j == 3) {
                         name = "test" + SEPARATOR + "subbox" + k;
                     } else {

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/mail/model/HBaseMailboxTest.java Sun Mar 18 04:06:01 2012
@@ -19,14 +19,12 @@
 package org.apache.james.mailbox.hbase.mail.model;
 
 import java.util.UUID;
-
 import org.apache.james.mailbox.model.MailboxPath;
+import static org.junit.Assert.assertEquals;
 import org.junit.Test;
-import static org.junit.Assert.*;
 
 /**
  * Unit tests for HBaseMailbox class.
- * @author ieugen
  */
 public class HBaseMailboxTest {
 

Modified: james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java
URL: http://svn.apache.org/viewvc/james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java?rev=1302061&r1=1302060&r2=1302061&view=diff
==============================================================================
--- james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java (original)
+++ james/mailbox/trunk/hbase/src/test/java/org/apache/james/mailbox/hbase/user/HBaseSubscriptionMapperTest.java Sun Mar 18 04:06:01 2012
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.hbase.user;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
@@ -30,8 +31,7 @@ import org.apache.hadoop.hbase.util.Byte
 import org.apache.james.mailbox.exception.SubscriptionException;
 import org.apache.james.mailbox.hbase.HBaseClusterSingleton;
 import org.apache.james.mailbox.hbase.HBaseMailboxSessionMapperFactory;
-import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTIONS_TABLE;
-import static org.apache.james.mailbox.hbase.HBaseNames.SUBSCRIPTION_CF;
+import static org.apache.james.mailbox.hbase.HBaseNames.*;
 import org.apache.james.mailbox.store.user.model.Subscription;
 import org.apache.james.mailbox.store.user.model.impl.SimpleSubscription;
 import static org.junit.Assert.*;
@@ -43,7 +43,6 @@ import org.slf4j.LoggerFactory;
 /**
  * Runs tests for SubscriptionMapper.
  *
- * @author ieugen
  */
 public class HBaseSubscriptionMapperTest {
 
@@ -54,17 +53,31 @@ public class HBaseSubscriptionMapperTest
     private static HBaseSubscriptionMapper mapper;
     private static Map<String, List<SimpleSubscription>> subscriptionList;
     private static final int USERS = 5;
-    private static final int MAILBOXES = 5;
+    private static final int MAILBOX_NO = 5;
 
     @Before
-    public void setUpClass() throws Exception {
-        CLUSTER.clearTables();
+    public void setUp() throws Exception {
+        ensureTables();
+        clearTables();
         conf = CLUSTER.getConf();
         mapperFactory = new HBaseMailboxSessionMapperFactory(conf, null, null);
         mapper = new HBaseSubscriptionMapper(conf);
         fillSubscriptionList();
     }
 
+    private void ensureTables() throws IOException {
+        CLUSTER.ensureTable(MAILBOXES_TABLE, new byte[][]{MAILBOX_CF});
+        CLUSTER.ensureTable(MESSAGES_TABLE,
+                new byte[][]{MESSAGES_META_CF, MESSAGE_DATA_HEADERS_CF, MESSAGE_DATA_BODY_CF});
+        CLUSTER.ensureTable(SUBSCRIPTIONS_TABLE, new byte[][]{SUBSCRIPTION_CF});
+    }
+
+    private void clearTables() {
+        CLUSTER.clearTable(MAILBOXES);
+        CLUSTER.clearTable(MESSAGES);
+        CLUSTER.clearTable(SUBSCRIPTIONS);
+    }
+
     private static void fillSubscriptionList() throws SubscriptionException {
         LOG.info("Creating subscription list");
         SimpleSubscription subscription;
@@ -75,7 +88,7 @@ public class HBaseSubscriptionMapperTest
             final List<SimpleSubscription> mailboxes = new ArrayList<SimpleSubscription>();
             subscriptionList.put(user, mailboxes);
 
-            for (int j = 0; j < MAILBOXES; j++) {
+            for (int j = 0; j < MAILBOX_NO; j++) {
                 if (j == 0) {
                     mailbox = "INBOX";
                 } else {



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org