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