diff options
| author | Robert Gemmell <robbie@apache.org> | 2011-07-14 10:01:18 +0000 |
|---|---|---|
| committer | Robert Gemmell <robbie@apache.org> | 2011-07-14 10:01:18 +0000 |
| commit | efbb50c1c2a5bf65b3bb206e116c8bcf6acb5df7 (patch) | |
| tree | 709486af2c17cb51377960a5b9acfefd84cc2617 /java | |
| parent | f86abf60f63019062c2b102c7298ecaecfe1dc39 (diff) | |
| download | qpid-python-efbb50c1c2a5bf65b3bb206e116c8bcf6acb5df7.tar.gz | |
QPID-2815: move conversion of logWatch argument into milliseconds into Broker, add a unit test for the various argument parsing methods in Main.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk/qpid@1146625 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java')
4 files changed, 169 insertions, 14 deletions
diff --git a/java/broker/src/main/java/org/apache/qpid/server/Broker.java b/java/broker/src/main/java/org/apache/qpid/server/Broker.java index e5c24369f7..ffc323a23b 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/Broker.java +++ b/java/broker/src/main/java/org/apache/qpid/server/Broker.java @@ -366,7 +366,7 @@ public class Broker // log4j expects the watch interval in milliseconds try { - QpidLog4JConfigurator.configureAndWatch(logConfigFile.getPath(), logWatchTime); + QpidLog4JConfigurator.configureAndWatch(logConfigFile.getPath(), logWatchTime * 1000); } catch (Exception e) { diff --git a/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java b/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java index 5bea33e5f3..b83da92660 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java +++ b/java/broker/src/main/java/org/apache/qpid/server/BrokerOptions.java @@ -141,6 +141,10 @@ public class BrokerOptions return _logWatchFrequency; } + /** + * Set the frequency with which the log config file will be checked for updates. + * @param logWatchFrequency frequency in seconds + */ public void setLogWatchFrequency(final int logWatchFrequency) { _logWatchFrequency = logWatchFrequency; diff --git a/java/broker/src/main/java/org/apache/qpid/server/Main.java b/java/broker/src/main/java/org/apache/qpid/server/Main.java index b9a1106b44..449b52d737 100644 --- a/java/broker/src/main/java/org/apache/qpid/server/Main.java +++ b/java/broker/src/main/java/org/apache/qpid/server/Main.java @@ -38,10 +38,8 @@ import org.apache.qpid.server.registry.ApplicationRegistry; */ public class Main { - private static Logger _logger; - - protected final static Options options = new Options(); - protected static CommandLine commandLine; + private final Options options = new Options(); + private CommandLine commandLine; public static void main(String[] args) { @@ -53,8 +51,11 @@ public class Main System.setProperty("log4j.defaultInitOverride", "true"); } - //now that the override status is know, we can instantiate the Loggers - _logger = Logger.getLogger(Main.class); + new Main(args); + } + + public Main(final String[] args) + { setOptions(options); if (parseCommandline(args)) { @@ -71,7 +72,7 @@ public class Main } } - protected static boolean parseCommandline(String[] args) + protected boolean parseCommandline(final String[] args) { try { @@ -89,7 +90,7 @@ public class Main } } - protected static void setOptions(Options options) + protected void setOptions(final Options options) { Option help = new Option("h", "help", false, "print this message"); Option version = new Option("v", "version", false, "print the version information and exit"); @@ -164,7 +165,7 @@ public class Main options.addOption(sslport); } - protected static void execute() throws Exception + protected void execute() throws Exception { BrokerOptions options = new BrokerOptions(); String configFile = commandLine.getOptionValue(BrokerOptions.CONFIG); @@ -176,7 +177,7 @@ public class Main String logWatchConfig = commandLine.getOptionValue(BrokerOptions.WATCH); if(logWatchConfig != null) { - options.setLogWatchFrequency(Integer.parseInt(logWatchConfig) * 1000); + options.setLogWatchFrequency(Integer.parseInt(logWatchConfig)); } String logConfig = commandLine.getOptionValue(BrokerOptions.LOG_CONFIG); @@ -217,17 +218,23 @@ public class Main } } + startBroker(options); + } + + protected void startBroker(final BrokerOptions options) throws Exception + { Broker broker = new Broker(); broker.startup(options); } - protected static void shutdown(int status) + protected void shutdown(final int status) { ApplicationRegistry.remove(); System.exit(status); } - private static void parsePortArray(BrokerOptions options, Object[] ports, boolean ssl) throws InitException + private static void parsePortArray(final BrokerOptions options,final Object[] ports, + final boolean ssl) throws InitException { if(ports != null) { @@ -252,7 +259,8 @@ public class Main } } - private static void parsePortArray(BrokerOptions options, Object[] ports, ProtocolExclusion excludedProtocol) throws InitException + private static void parsePortArray(final BrokerOptions options, final Object[] ports, + final ProtocolExclusion excludedProtocol) throws InitException { if(ports != null) { diff --git a/java/broker/src/test/java/org/apache/qpid/server/MainTest.java b/java/broker/src/test/java/org/apache/qpid/server/MainTest.java new file mode 100644 index 0000000000..3bb8d33190 --- /dev/null +++ b/java/broker/src/test/java/org/apache/qpid/server/MainTest.java @@ -0,0 +1,143 @@ +package org.apache.qpid.server; + +import java.util.EnumSet; + +import org.apache.qpid.test.utils.QpidTestCase; + +/** + * Test to verify the command line parsing within the Main class, by + * providing it a series of command line arguments and verifying the + * BrokerOptions emerging for use in starting the Broker instance. + */ +public class MainTest extends QpidTestCase +{ + public void testNoOptionsSpecified() + { + BrokerOptions options = startDummyMain(""); + + assertTrue(options.getPorts().isEmpty()); + assertTrue(options.getSSLPorts().isEmpty()); + assertEquals(null, options.getJmxPort()); + assertEquals(null, options.getConfigFile()); + assertEquals(null, options.getLogConfigFile()); + assertEquals(null, options.getBind()); + + for(ProtocolExclusion pe : EnumSet.allOf(ProtocolExclusion.class)) + { + assertEquals(0, options.getExcludedPorts(pe).size()); + } + } + + public void testPortOverriddenSingle() + { + BrokerOptions options = startDummyMain("-p 1234"); + + assertTrue(options.getPorts().contains(1234)); + assertEquals(1, options.getPorts().size()); + assertTrue(options.getSSLPorts().isEmpty()); + } + + public void testPortOverriddenMultiple() + { + BrokerOptions options = startDummyMain("-p 1234 -p 4321"); + + assertTrue(options.getPorts().contains(1234)); + assertTrue(options.getPorts().contains(4321)); + assertEquals(2, options.getPorts().size()); + assertTrue(options.getSSLPorts().isEmpty()); + } + + public void testSSLPortOverriddenSingle() + { + BrokerOptions options = startDummyMain("-s 5678"); + + assertTrue(options.getSSLPorts().contains(5678)); + assertEquals(1, options.getSSLPorts().size()); + assertTrue(options.getPorts().isEmpty()); + } + + public void testSSLPortOverriddenMultiple() + { + BrokerOptions options = startDummyMain("-s 5678 -s 8765"); + + assertTrue(options.getSSLPorts().contains(5678)); + assertTrue(options.getSSLPorts().contains(8765)); + assertEquals(2, options.getSSLPorts().size()); + assertTrue(options.getPorts().isEmpty()); + } + + public void testNonSSLandSSLPortsOverridden() + { + BrokerOptions options = startDummyMain("-p 5678 -s 8765"); + + assertTrue(options.getPorts().contains(5678)); + assertTrue(options.getSSLPorts().contains(8765)); + assertEquals(1, options.getPorts().size()); + assertEquals(1, options.getSSLPorts().size()); + } + + public void testJMXportOverridden() + { + BrokerOptions options = startDummyMain("-m 3456"); + + assertEquals(Integer.valueOf(3456), options.getJmxPort()); + } + + public void testExclude0_10() + { + BrokerOptions options = startDummyMain("-p 3456 --exclude-0-10 3456"); + + assertTrue(options.getPorts().contains(3456)); + assertEquals(1, options.getPorts().size()); + assertTrue(options.getExcludedPorts(ProtocolExclusion.v0_10).contains(3456)); + assertEquals(1, options.getExcludedPorts(ProtocolExclusion.v0_10).size()); + assertEquals(0, options.getExcludedPorts(ProtocolExclusion.v0_9_1).size()); + } + + public void testConfig() + { + BrokerOptions options = startDummyMain("-c abcd/config.xml"); + + assertEquals("abcd/config.xml", options.getConfigFile()); + } + + public void testLogConfig() + { + BrokerOptions options = startDummyMain("-l wxyz/log4j.xml"); + + assertEquals("wxyz/log4j.xml", options.getLogConfigFile()); + } + + public void testLogWatch() + { + BrokerOptions options = startDummyMain("-w 9"); + + assertEquals(9, options.getLogWatchFrequency()); + } + + private BrokerOptions startDummyMain(String commandLine) + { + return (new TestMain(commandLine.split("\\s"))).getOptions(); + } + + private class TestMain extends Main + { + private BrokerOptions _options; + + public TestMain(String[] args) + { + super(args); + } + + @Override + protected void startBroker(BrokerOptions options) + { + _options = options; + } + + public BrokerOptions getOptions() + { + return _options; + } + } +} |
