You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2011/01/20 00:09:41 UTC
svn commit: r1061057 - in /cassandra/trunk: ./
interface/thrift/gen-java/org/apache/cassandra/thrift/
src/java/org/apache/cassandra/cli/ src/java/org/apache/cassandra/net/
src/java/org/apache/cassandra/service/
test/unit/org/apache/cassandra/locator/ t...
Author: jbellis
Date: Wed Jan 19 23:09:41 2011
New Revision: 1061057
URL: http://svn.apache.org/viewvc?rev=1061057&view=rev
Log:
merge from 0.7
Modified:
cassandra/trunk/ (props changed)
cassandra/trunk/CHANGES.txt
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java (props changed)
cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java (props changed)
cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java
Propchange: cassandra/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7:1026516-1060938
+/cassandra/branches/cassandra-0.7:1026516-1061050
/cassandra/branches/cassandra-0.7.0:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3:774578-796573
Modified: cassandra/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/cassandra/trunk/CHANGES.txt?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/CHANGES.txt (original)
+++ cassandra/trunk/CHANGES.txt Wed Jan 19 23:09:41 2011
@@ -35,6 +35,7 @@
* fix writing SSTable column count statistics (CASSANDRA-1976)
* fix streaming of multiple CFs during bootstrap (CASSANDRA-1992)
* explicitly set JVM GC new generation size with -Xmn (CASSANDRA-1968)
+ * add short options for CLI flags (CASSANDRA-1565)
0.7.0-final
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1026516-1061050
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Cassandra.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/Cassandra.java:774578-796573
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1026516-1061050
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/Column.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/column_t.java:774578-792198
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1026516-1061050
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/InvalidRequestException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/InvalidRequestException.java:774578-796573
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1026516-1061050
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/NotFoundException.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/NotFoundException.java:774578-796573
Propchange: cassandra/trunk/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Jan 19 23:09:41 2011
@@ -1,5 +1,5 @@
/cassandra/branches/cassandra-0.6/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:922689-1052356,1052358-1053452,1053454,1053456-1055311,1056121,1057932
-/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1060938
+/cassandra/branches/cassandra-0.7/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1026516-1061050
/cassandra/branches/cassandra-0.7.0/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1053690-1055654
/cassandra/tags/cassandra-0.7.0-rc3/interface/thrift/gen-java/org/apache/cassandra/thrift/SuperColumn.java:1051699-1053689
/incubator/cassandra/branches/cassandra-0.3/interface/gen-java/org/apache/cassandra/service/superColumn_t.java:774578-792198
Modified: cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/cli/CliOptions.java Wed Jan 19 23:09:41 2011
@@ -24,9 +24,12 @@ import org.apache.commons.cli.*;
* Used to process, and act upon the arguments passed to the CLI.
*
*/
-public class CliOptions {
+public class CliOptions
+{
+ private static CLIOptions options = null; // Info about command line options
- private static Options options = null; // Info about command line options
+ // Name of the command line tool (used for error messages)
+ private static final String TOOL_NAME = "cassandra-cli";
// Command line options
private static final String HOST_OPTION = "host";
@@ -48,48 +51,46 @@ public class CliOptions {
// whether they take an extra argument, etc.
static
{
- options = new Options();
- options.addOption(HOST_OPTION, true, "cassandra server's host name");
- options.addOption(PORT_OPTION, true, "cassandra server's thrift port");
- options.addOption(UNFRAME_OPTION, false, "cassandra server's framed transport");
- options.addOption(DEBUG_OPTION, false, "display stack traces");
- options.addOption(USERNAME_OPTION, true, "username for cassandra authentication");
- options.addOption(PASSWORD_OPTION, true, "password for cassandra authentication");
- options.addOption(KEYSPACE_OPTION, true, "cassandra keyspace user is authenticated against");
- options.addOption(BATCH_OPTION, false, "enabled batch mode (supress output; errors are fatal)");
- options.addOption(FILE_OPTION, true, "load statements from the specific file.");
- options.addOption(JMX_PORT_OPTION, true, "JMX service port.");
- options.addOption(HELP_OPTION, false, "usage help.");
+ options = new CLIOptions();
+
+ options.addOption("h", HOST_OPTION, "HOSTNAME", "cassandra server's host name");
+ options.addOption("p", PORT_OPTION, "PORT", "cassandra server's thrift port");
+ options.addOption("u", USERNAME_OPTION, "USERNAME", "user name for cassandra authentication");
+ options.addOption("pw", PASSWORD_OPTION, "PASSWORD", "password for cassandra authentication");
+ options.addOption("k", KEYSPACE_OPTION, "KEYSPACE", "cassandra keyspace user is authenticated against");
+ options.addOption("f", FILE_OPTION, "FILENAME", "load statements from the specific file.");
+ options.addOption(null, JMX_PORT_OPTION, "JMX-PORT", "JMX service port");
+
+ // options without argument
+ options.addOption("B", BATCH_OPTION, "enabled batch mode (suppress output; errors are fatal)");
+ options.addOption(null, UNFRAME_OPTION, "use cassandra server's unframed transport");
+ options.addOption(null, DEBUG_OPTION, "display stack traces");
+ options.addOption("?", HELP_OPTION, "usage help.");
}
private static void printUsage()
{
- System.err.println("Usage: cassandra-cli --host hostname [--port <port>] [--jmxport <port>] [--file <filename>] [--unframed] [--debug]");
- System.err.println("\t[--username username] [--password password] [--keyspace keyspace] [--batch] [--help]");
+ new HelpFormatter().printHelp(TOOL_NAME, options);
}
public void processArgs(CliSessionState css, String[] args)
{
- CommandLineParser parser = new PosixParser();
+ CommandLineParser parser = new GnuParser();
+
try
{
- CommandLine cmd = parser.parse(options, args);
-
- if (!cmd.hasOption(HOST_OPTION))
+ CommandLine cmd = parser.parse(options, args, false);
+
+ if (cmd.hasOption(HOST_OPTION))
+ {
+ css.hostName = cmd.getOptionValue(HOST_OPTION);
+ }
+ else
{
// host name not specified in command line.
// In this case, we don't implicitly connect at CLI startup. In this case,
// the user must use the "connect" CLI statement to connect.
- //
css.hostName = null;
-
- // HelpFormatter formatter = new HelpFormatter();
- // formatter.printHelp("java com.facebook.infrastructure.cli.CliMain ", options);
- // System.exit(1);
- }
- else
- {
- css.hostName = cmd.getOptionValue(HOST_OPTION);
}
// Look to see if frame has been specified
@@ -113,23 +114,24 @@ public class CliOptions {
{
css.thriftPort = DEFAULT_THRIFT_PORT;
}
-
+
// Look for authentication credentials (username and password)
- if (cmd.hasOption(USERNAME_OPTION))
+ if (cmd.hasOption(USERNAME_OPTION))
{
css.username = cmd.getOptionValue(USERNAME_OPTION);
}
+
if (cmd.hasOption(PASSWORD_OPTION))
{
css.password = cmd.getOptionValue(PASSWORD_OPTION);
}
-
+
// Look for keyspace
- if (cmd.hasOption(KEYSPACE_OPTION))
+ if (cmd.hasOption(KEYSPACE_OPTION))
{
css.keyspace = cmd.getOptionValue(KEYSPACE_OPTION);
}
-
+
if (cmd.hasOption(BATCH_OPTION))
{
css.batch = true;
@@ -150,12 +152,54 @@ public class CliOptions {
printUsage();
System.exit(1);
}
+
+ // Abort if there are any unrecognized arguments left
+ if (cmd.getArgs().length > 0)
+ {
+ System.err.printf("Unknown argument: %s\n", cmd.getArgs()[0]);
+ System.err.println();
+ printUsage();
+ System.exit(1);
+ }
}
catch (ParseException e)
{
+ System.err.println(e.getMessage());
+ System.err.println();
printUsage();
- System.err.println("\n" + e.getMessage());
System.exit(1);
}
}
+
+ private static class CLIOptions extends Options
+ {
+ /**
+ * Add option with argument and argument name
+ * @param opt shortcut for option name
+ * @param longOpt complete option name
+ * @param argName argument name
+ * @param description description of the option
+ * @return updated Options object
+ */
+ public Options addOption(String opt, String longOpt, String argName, String description)
+ {
+ Option option = new Option(opt, longOpt, true, description);
+ option.setArgName(argName);
+
+ return addOption(option);
+ }
+
+ /**
+ * Add option without argument
+ * @param opt shortcut for option name
+ * @param longOpt complete option name
+ * @param description description of the option
+ * @return updated Options object
+ */
+ public Options addOption(String opt, String longOpt, String description)
+ {
+ return addOption(new Option(opt, longOpt, false, description));
+ }
+ }
+
}
Modified: cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/net/MessagingService.java Wed Jan 19 23:09:41 2011
@@ -21,10 +21,7 @@ package org.apache.cassandra.net;
import java.io.IOError;
import java.io.IOException;
import java.lang.management.ManagementFactory;
-import java.net.InetAddress;
-import java.net.InetSocketAddress;
-import java.net.ServerSocket;
-import java.net.Socket;
+import java.net.*;
import java.nio.ByteBuffer;
import java.nio.channels.AsynchronousCloseException;
import java.nio.channels.ServerSocketChannel;
@@ -45,6 +42,7 @@ import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.DebuggableThreadPoolExecutor;
import org.apache.cassandra.concurrent.StageManager;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.config.EncryptionOptions;
import org.apache.cassandra.io.util.DataOutputBuffer;
@@ -177,14 +175,14 @@ public final class MessagingService impl
* Listen on the specified port.
* @param localEp InetAddress whose port to listen on.
*/
- public void listen(InetAddress localEp) throws IOException
+ public void listen(InetAddress localEp) throws IOException, ConfigurationException
{
socketThread = new SocketThread(getServerSocket(localEp), "ACCEPT-" + localEp);
socketThread.start();
listenGate.signalAll();
}
- private ServerSocket getServerSocket(InetAddress localEp) throws IOException
+ private ServerSocket getServerSocket(InetAddress localEp) throws IOException, ConfigurationException
{
final ServerSocket ss;
if (DatabaseDescriptor.getEncryptionOptions().internode_encryption == EncryptionOptions.InternodeEncryption.all)
@@ -198,7 +196,20 @@ public final class MessagingService impl
ServerSocketChannel serverChannel = ServerSocketChannel.open();
ss = serverChannel.socket();
ss.setReuseAddress(true);
- ss.bind(new InetSocketAddress(localEp, DatabaseDescriptor.getStoragePort()));
+ InetSocketAddress address = new InetSocketAddress(localEp, DatabaseDescriptor.getStoragePort());
+ try
+ {
+ ss.bind(address);
+ }
+ catch (BindException e)
+ {
+ if (e.getMessage().contains("in use"))
+ throw new ConfigurationException(address + " is in use by another process. Change listen_address:storage_port in cassandra.yaml to values that do not conflict with other services");
+ else if (e.getMessage().contains("Cannot assign requested address"))
+ throw new ConfigurationException("Unable to bind to address " + address + ". Set listen_address in cassandra.yaml to an interface you can bind to, e.g., your private IP address on EC2");
+ else
+ throw e;
+ }
logger_.info("Starting Messaging Service on port {}", DatabaseDescriptor.getStoragePort());
}
return ss;
Modified: cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java (original)
+++ cassandra/trunk/src/java/org/apache/cassandra/service/StorageService.java Wed Jan 19 23:09:41 2011
@@ -285,7 +285,7 @@ public class StorageService implements I
return initialized;
}
- public synchronized void initClient() throws IOException
+ public synchronized void initClient() throws IOException, ConfigurationException
{
if (initialized)
{
Modified: cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java Wed Jan 19 23:09:41 2011
@@ -23,6 +23,7 @@ import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.service.StorageService;
import org.junit.Test;
@@ -31,7 +32,7 @@ import org.apache.cassandra.utils.FBUtil
public class DynamicEndpointSnitchTest
{
@Test
- public void testSnitch() throws InterruptedException, IOException
+ public void testSnitch() throws InterruptedException, IOException, ConfigurationException
{
// do this because SS needs to be initialized before DES can work properly.
StorageService.instance.initClient();
Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/InitClientTest.java Wed Jan 19 23:09:41 2011
@@ -4,6 +4,8 @@ import org.junit.Test;
import java.io.IOException;
+import org.apache.cassandra.config.ConfigurationException;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
@@ -26,12 +28,8 @@ import java.io.IOException;
public class InitClientTest // extends CleanupHelper
{
@Test
- public void testInitClientStartup()
+ public void testInitClientStartup() throws IOException, ConfigurationException
{
- try {
- StorageService.instance.initClient();
- } catch (IOException ex) {
- throw new AssertionError(ex.getMessage());
- }
+ StorageService.instance.initClient();
}
}
Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/RemoveTest.java Wed Jan 19 23:09:41 2011
@@ -32,6 +32,7 @@ import org.junit.Test;
import org.apache.cassandra.CleanupHelper;
import org.apache.cassandra.Util;
import org.apache.cassandra.concurrent.Stage;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.RandomPartitioner;
import org.apache.cassandra.dht.Token;
@@ -58,7 +59,7 @@ public class RemoveTest extends CleanupH
List<InetAddress> hosts;
@Before
- public void setup() throws IOException
+ public void setup() throws IOException, ConfigurationException
{
tmd.clearUnsafe();
IPartitioner partitioner = new RandomPartitioner();
Modified: cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java
URL: http://svn.apache.org/viewvc/cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java?rev=1061057&r1=1061056&r2=1061057&view=diff
==============================================================================
--- cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java (original)
+++ cassandra/trunk/test/unit/org/apache/cassandra/service/StorageServiceClientTest.java Wed Jan 19 23:09:41 2011
@@ -20,6 +20,7 @@
package org.apache.cassandra.service;
import org.apache.cassandra.CleanupHelper;
+import org.apache.cassandra.config.ConfigurationException;
import org.apache.cassandra.config.DatabaseDescriptor;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
@@ -31,7 +32,7 @@ import java.io.IOException;
public class StorageServiceClientTest
{
@Test
- public void testClientOnlyMode() throws IOException
+ public void testClientOnlyMode() throws IOException, ConfigurationException
{
CleanupHelper.mkdirs();
CleanupHelper.cleanup();