diff --git a/pom.xml b/pom.xml
index c5a72f839734..00d2d540f6c9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,6 +116,16 @@
commons-io
2.0.1
+
+ com.github.joschi
+ jadconfig
+ 0.2
+
+
+ org.slf4j
+ slf4j-log4j12
+ 1.6.1
+
diff --git a/src/main/java/org/graylog2/Configuration.java b/src/main/java/org/graylog2/Configuration.java
index 2e8f7204d9e8..393a02b83388 100644
--- a/src/main/java/org/graylog2/Configuration.java
+++ b/src/main/java/org/graylog2/Configuration.java
@@ -20,6 +20,13 @@
package org.graylog2;
+import com.github.joschi.jadconfig.Parameter;
+import com.github.joschi.jadconfig.ValidationException;
+import com.github.joschi.jadconfig.ValidatorMethod;
+import com.github.joschi.jadconfig.converters.StringListConverter;
+import com.github.joschi.jadconfig.validators.InetPortValidator;
+import com.github.joschi.jadconfig.validators.PositiveIntegerValidator;
+import com.github.joschi.jadconfig.validators.PositiveLongValidator;
import com.mongodb.ServerAddress;
import org.apache.log4j.Logger;
import org.graylog2.messagehandlers.amqp.AMQPSubscribedQueue;
@@ -29,7 +36,6 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Properties;
/**
* Helper class to hold configuration of Graylog2
@@ -41,58 +47,169 @@ public class Configuration {
private static final Logger LOG = Logger.getLogger(Configuration.class);
- // Define required configuration fields.
- private static final String[] requiredProperties = {
- "syslog_listen_port",
- "syslog_protocol",
- "mongodb_useauth",
- "mongodb_user",
- "mongodb_password",
- "mongodb_database",
- "mongodb_port",
- "messages_collection_size",
- "use_gelf",
- "gelf_listen_port",
- };
-
- private static final String[] allowedSyslogProtocols = { "tcp", "udp" };
- private static final String[] deprecatedProperties = { "rrd_storage_dir" };
- private static final String[] numericalPositiveProperties = {
- "mongodb_port",
- "mongodb_max_connections",
- "mongodb_threads_allowed_to_block_multiplier",
- "messages_collection_size",
- "gelf_listen_port",
- "syslog_listen_port",
- "amqp_port",
- "forwarder_loggly_timeout",
- };
-
-
- private Properties properties;
-
- public Configuration(Properties properties) {
-
- if(properties == null) {
- throw new IllegalArgumentException("Properties must not be null");
- }
+ @Parameter(value = "syslog_listen_port", required = true, validator = InetPortValidator.class)
+ private int syslogListenPort = 514;
+
+ @Parameter(value = "syslog_protocol", required = true)
+ private String syslogProtocol = "udp";
+
+ @Parameter(value = "mongodb_useauth", required = true)
+ private boolean mongoUseAuth = false;
+
+ @Parameter(value = "mongodb_user", required = true)
+ private String mongoUser;
+
+ @Parameter(value = "mongodb_password", required = true)
+ private String mongoPassword;
+
+ @Parameter(value = "mongodb_database", required = true)
+ private String mongoDatabase = "graylog2";
+
+ @Parameter(value = "mongodb_host", required = true)
+ private String mongoHost = "localhost";
+
+ @Parameter(value = "mongodb_port", required = true, validator = InetPortValidator.class)
+ private int mongoPort = 27017;
+
+ @Parameter(value = "mongodb_max_connections", validator = PositiveIntegerValidator.class)
+ private int mongoMaxConnections = 1000;
+
+ @Parameter(value = "mongodb_threads_allowed_to_block_multiplier", validator = PositiveIntegerValidator.class)
+ private int mongoThreadsAllowedToBlockMultiplier = 5;
+
+ @Parameter(value = "mongodb_replica_set", converter = StringListConverter.class)
+ private List mongoReplicaSet;
+
+ @Parameter(value = "messages_collection_size", required = true, validator = PositiveLongValidator.class)
+ private long messagesCollectionSize = 50*1000*1000;
+
+ @Parameter(value = "use_gelf", required = true)
+ private boolean useGELF = false;
+
+ @Parameter(value = "gelf_listen_port", required = true, validator = InetPortValidator.class)
+ private int gelfListenPort = 12201;
+
+ @Parameter("amqp_enabled")
+ private boolean amqpEnabled = false;
+
+ @Parameter("amqp_host")
+ private String amqpHost = "localhost";
+
+ @Parameter(value = "amqp_port", validator = InetPortValidator.class)
+ private int amqpPort = 5672;
+
+ @Parameter(value = "amqp_subscribed_queues", converter = StringListConverter.class)
+ private List amqpSubscribedQueues;
+
+ @Parameter("amqp_username")
+ private String amqpUsername = "guest";
+
+ @Parameter("amqp_password")
+ private String amqpPassword = "guest";
+
+ @Parameter("amqp_virtualhost")
+ private String amqpVirtualhost = "/";
+
+ @Parameter(value = "forwarder_loggly_timeout", validator = PositiveIntegerValidator.class)
+ private int forwarderLogglyTimeout = 3;
+
+ @Parameter("rules_file")
+ private String droolsRulesFile;
+
+ public int getSyslogListenPort() {
+ return syslogListenPort;
+ }
+
+ public String getSyslogProtocol() {
+ return syslogProtocol;
+ }
+
+ public boolean isMongoUseAuth() {
+ return mongoUseAuth;
+ }
+
+ public String getMongoUser() {
+ return mongoUser;
+ }
+
+ public String getMongoPassword() {
+ return mongoPassword;
+ }
+
+ public String getMongoDatabase() {
+ return mongoDatabase;
+ }
+
+ public int getMongoPort() {
+ return mongoPort;
+ }
+
+ public String getMongoHost() {
+ return mongoHost;
+ }
+
+ public int getMongoMaxConnections() {
+ return mongoMaxConnections;
+ }
+
+ public int getMongoThreadsAllowedToBlockMultiplier() {
+ return mongoThreadsAllowedToBlockMultiplier;
+ }
+
+ public long getMessagesCollectionSize() {
+ return messagesCollectionSize;
+ }
+
+ public boolean isUseGELF() {
+ return useGELF;
+ }
+
+ public int getGelfListenPort() {
+ return gelfListenPort;
+ }
- this.properties = properties;
+ public boolean isAmqpEnabled() {
+ return amqpEnabled;
}
- public List getMongoDBReplicaSetServers() {
+ public String getAmqpHost() {
+ return amqpHost;
+ }
+
+ public int getAmqpPort() {
+ return amqpPort;
+ }
+
+ public String getAmqpUsername() {
+ return amqpUsername;
+ }
+
+ public String getAmqpPassword() {
+ return amqpPassword;
+ }
+
+ public String getAmqpVirtualhost() {
+ return amqpVirtualhost;
+ }
+
+ public int getForwarderLogglyTimeout() {
+ return forwarderLogglyTimeout*1000;
+ }
+
+ public String getDroolsRulesFile() {
+ return droolsRulesFile;
+ }
+
+ public List getMongoReplicaSet() {
List replicaServers = new ArrayList();
- String rawSet = get("mongodb_replica_set");
+ List rawSet = mongoReplicaSet;
if (rawSet == null || rawSet.isEmpty()) {
return null;
}
- // Get every host:port pair
- String[] hosts = rawSet.split(",");
-
- for (String host : hosts) {
+ for (String host : rawSet) {
// Split host:port.
String[] replicaTarget = host.split(":");
@@ -114,33 +231,17 @@ public List getMongoDBReplicaSetServers() {
return replicaServers;
}
- public int getMaximumMongoDBConnections() {
- return getInteger("mongodb_max_connections", 1000);
- }
-
-
- public int getThreadsAllowedToBlockMultiplier() {
- return getInteger("mongodb_threads_allowed_to_block_multiplier", 5);
- }
-
- public int getLogglyTimeout() {
- int timeout = getInteger("forwarder_loggly_timeout", 3);
-
- return timeout*1000;
- }
-
- public List getAMQPSubscribedQueues() {
+ public List getAmqpSubscribedQueues() {
List queueList = new ArrayList();
- String rawQueues = get("amqp_subscribed_queues");
+ List rawQueues = amqpSubscribedQueues;
if (rawQueues == null || rawQueues.isEmpty()) {
return null;
}
// Get every queue.
- String[] queues = rawQueues.split(",");
- for (String queue : queues) {
+ for (String queue : rawQueues) {
String[] queueDefinition = queue.split(":");
// Check if valid.
@@ -159,88 +260,12 @@ public List getAMQPSubscribedQueues() {
return queueList;
}
- public void validate() throws ConfigurationException {
-
- for (String requiredProperty : requiredProperties) {
- String value = get(requiredProperty);
-
- if (value == null || value.isEmpty()) {
- throw new ConfigurationException("Mandatory configuration option " + requiredProperty + " not set.");
- }
- }
-
- // Check if numerical properties are positive
- for (String property : numericalPositiveProperties) {
-
- int value = getInteger(property, 0);
-
- if (value < 0) {
- throw new ConfigurationException("Configuration option " + property + " must be a positive integer.");
- }
- }
-
- // Check if a MongoDB replica set or host is defined.
- if (!contains("mongodb_host") && !contains("mongodb_replica_set")) {
- throw new ConfigurationException("Neither MongoDB host (mongodb_host) nor replica set (mongodb_replica_set) has been defined.");
- }
+ @ValidatorMethod
+ public void validate() throws ValidationException {
// Is the syslog_procotol valid?
- if(!Arrays.asList(allowedSyslogProtocols).contains(get("syslog_protocol"))) {
- throw new ConfigurationException("Invalid syslog_protocol: " + get("syslog_protocol"));
+ if(!Arrays.asList("tcp", "udp").contains(getSyslogProtocol())) {
+ throw new ValidationException("Invalid syslog_protocol: " + getSyslogProtocol());
}
-
- // Print out a deprecation warning if any deprecated configuration option is set.
- for (String deprecatedProperty : deprecatedProperties) {
-
- if (get(deprecatedProperty) != null) {
- LOG.warn("Configuration option " + deprecatedProperty + " has been deprecated.");
- }
- }
- }
-
- public String get(String property) {
-
- return properties.getProperty(property);
- }
-
- public int getInteger(String property, int defaultValue) {
-
- String value = get(property);
- int result = defaultValue;
-
- if(value != null) {
- try {
- result = Integer.parseInt(value);
- } catch (NumberFormatException ex) {
- LOG.warn("Couldn't convert configuration property " + property + " to Integer", ex);
- }
- }
-
- return result;
- }
-
- public long getLong(String property, long defaultValue) {
-
- String value = get(property);
- long result = defaultValue;
-
- if(value != null) {
- try {
- result = Long.parseLong(value);
- } catch (NumberFormatException ex) {
- LOG.warn("Couldn't convert configuration property " + property + " to Long", ex);
- }
- }
-
- return result;
- }
-
- public boolean contains(String property) {
- return properties.containsKey(property);
- }
-
- public boolean getBoolean(String property) {
-
- return Boolean.parseBoolean(get(property));
}
}
\ No newline at end of file
diff --git a/src/main/java/org/graylog2/Main.java b/src/main/java/org/graylog2/Main.java
index 50a9e9467e1f..e977201d01a6 100644
--- a/src/main/java/org/graylog2/Main.java
+++ b/src/main/java/org/graylog2/Main.java
@@ -21,11 +21,16 @@
package org.graylog2;
import com.beust.jcommander.JCommander;
+import com.github.joschi.jadconfig.JadConfig;
+import com.github.joschi.jadconfig.RepositoryException;
+import com.github.joschi.jadconfig.ValidationException;
+import com.github.joschi.jadconfig.repositories.PropertiesRepository;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.graylog2.database.MongoConnection;
import org.graylog2.forwarders.forwarders.LogglyForwarder;
+import org.graylog2.indexer.Indexer;
import org.graylog2.messagehandlers.amqp.AMQPBroker;
import org.graylog2.messagehandlers.amqp.AMQPSubscribedQueue;
import org.graylog2.messagehandlers.amqp.AMQPSubscriberThread;
@@ -33,16 +38,12 @@
import org.graylog2.messagehandlers.syslog.SyslogServerThread;
import org.graylog2.periodical.ChunkedGELFClientManagerThread;
import org.graylog2.periodical.HostCounterCacheWriterThread;
+import org.graylog2.periodical.MessageCountWriterThread;
-import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
-import java.io.Reader;
import java.io.Writer;
import java.util.List;
-import java.util.Properties;
-import org.graylog2.indexer.Indexer;
-import org.graylog2.periodical.MessageCountWriterThread;
/**
* Main class of Graylog2.
@@ -90,13 +91,17 @@ public static void main(String[] args) {
String configFile = commandLineArguments.getConfigFile();
LOG.info("Using config file: " + configFile);
- Configuration configuration = new Configuration(loadProperties(configFile));
+ Configuration configuration = new Configuration();
+ JadConfig jadConfig = new JadConfig(new PropertiesRepository(configFile), configuration);
- LOG.info("Checking configuration");
+ LOG.info("Loading configuration");
try {
- configuration.validate();
- } catch (Exception e) {
- LOG.fatal("Invalid configuration: " + e.getMessage(), e);
+ jadConfig.process();
+ } catch (RepositoryException e) {
+ LOG.fatal("Couldn't load configuration file " + configFile, e);
+ System.exit(1);
+ } catch (ValidationException e) {
+ LOG.fatal("Invalid configuration", e);
System.exit(1);
}
@@ -128,45 +133,29 @@ public static void main(String[] args) {
// Statically set timeout for LogglyForwarder.
// TODO: This is a code smell and needs to be fixed.
- LogglyForwarder.setTimeout(configuration.getInteger("forwarder_loggly_timeout", 3));
+ LogglyForwarder.setTimeout(configuration.getForwarderLogglyTimeout());
initializeMongoConnection(configuration);
- initializeRulesEngine(configuration.get("rules_file"));
- initializeSyslogServer(configuration.get("syslog_protocol"), configuration.getInteger("syslog_listen_port", 514));
+ initializeRulesEngine(configuration.getDroolsRulesFile());
+ initializeSyslogServer(configuration.getSyslogProtocol(), configuration.getSyslogListenPort());
initializeHostCounterCache();
// Start message counter thread.
initializeMessageCounters();
// Start GELF threads
- if (configuration.getBoolean("use_gelf")) {
- initializeGELFThreads(configuration.getInteger("gelf_listen_port", 12201));
+ if (configuration.isUseGELF()) {
+ initializeGELFThreads(configuration.getGelfListenPort());
}
// Initialize AMQP Broker if enabled
- if (configuration.getBoolean("amqp_enabled")) {
+ if (configuration.isAmqpEnabled()) {
initializeAMQP(configuration);
}
LOG.info("Graylog2 up and running.");
}
- private static Properties loadProperties(String configFile) {
- Reader configFileReader = null;
- Properties properties = new Properties();
-
- try {
- configFileReader = new FileReader(configFile);
- properties.load(configFileReader);
- } catch(java.io.IOException e) {
- LOG.error("Could not read configuration file: " + e.getMessage(), e);
- } finally {
- IOUtils.closeQuietly(configFileReader);
- }
-
- return properties;
- }
-
private static void initializeHostCounterCache() {
HostCounterCacheWriterThread hostCounterCacheWriterThread = new HostCounterCacheWriterThread();
hostCounterCacheWriterThread.start();
@@ -223,16 +212,16 @@ private static void initializeRulesEngine(String rulesFilePath) {
private static void initializeMongoConnection(Configuration configuration) {
try {
MongoConnection.getInstance().connect(
- configuration.get("mongodb_user"),
- configuration.get("mongodb_password"),
- configuration.get("mongodb_host"),
- configuration.get("mongodb_database"),
- configuration.getInteger("mongodb_port", 0),
- configuration.get("mongodb_useauth"),
- configuration.getMaximumMongoDBConnections(),
- configuration.getThreadsAllowedToBlockMultiplier(),
- configuration.getMongoDBReplicaSetServers(),
- configuration.getLong("messages_collection_size", 50000000)
+ configuration.getMongoUser(),
+ configuration.getMongoPassword(),
+ configuration.getMongoHost(),
+ configuration.getMongoDatabase(),
+ configuration.getMongoPort(),
+ configuration.isMongoUseAuth(),
+ configuration.getMongoMaxConnections(),
+ configuration.getMongoThreadsAllowedToBlockMultiplier(),
+ configuration.getMongoReplicaSet(),
+ configuration.getMessagesCollectionSize()
);
} catch (Exception e) {
LOG.fatal("Could not create MongoDB connection: " + e.getMessage(), e);
@@ -244,14 +233,14 @@ private static void initializeAMQP(Configuration configuration) {
// Connect to AMQP broker.
AMQPBroker amqpBroker = new AMQPBroker(
- configuration.get("amqp_host"),
- configuration.getInteger("amqp_port", 0),
- configuration.get("amqp_username"),
- configuration.get("amqp_password"),
- configuration.get("amqp_virtualhost")
+ configuration.getAmqpHost(),
+ configuration.getAmqpPort(),
+ configuration.getAmqpUsername(),
+ configuration.getAmqpPassword(),
+ configuration.getAmqpVirtualhost()
);
- List amqpQueues = configuration.getAMQPSubscribedQueues();
+ List amqpQueues = configuration.getAmqpSubscribedQueues();
if (amqpQueues != null) {
// Start AMQP subscriber thread for each queue to listen on.
diff --git a/src/main/java/org/graylog2/database/MongoConnection.java b/src/main/java/org/graylog2/database/MongoConnection.java
index 09b9038b5acb..a26ba04290be 100644
--- a/src/main/java/org/graylog2/database/MongoConnection.java
+++ b/src/main/java/org/graylog2/database/MongoConnection.java
@@ -71,7 +71,7 @@ public synchronized static MongoConnection getInstance() {
*
* @throws Exception
*/
- public void connect(String username, String password, String hostname, String database, int port, String useAuth,
+ public void connect(String username, String password, String hostname, String database, int port, boolean useAuth,
int maxConnections, int threadsAllowedToBlockForConnectionMultiplier,
List replicaServers, long messagesCollSize) throws Exception {
MongoOptions options = new MongoOptions();
@@ -93,7 +93,7 @@ public void connect(String username, String password, String hostname, String da
db = m.getDB(database);
// Try to authenticate if configured.
- if (useAuth.equals("true")) {
+ if (useAuth) {
if(!db.authenticate(username, password.toCharArray())) {
throw new Exception("Could not authenticate to database '" + database + "' with user '" + username + "'.");
}
diff --git a/src/test/java/org/graylog2/ConfigurationTest.java b/src/test/java/org/graylog2/ConfigurationTest.java
index 8741c4ddd76f..f3be1faf91d2 100644
--- a/src/test/java/org/graylog2/ConfigurationTest.java
+++ b/src/test/java/org/graylog2/ConfigurationTest.java
@@ -1,10 +1,16 @@
package org.graylog2;
+import com.github.joschi.jadconfig.JadConfig;
+import com.github.joschi.jadconfig.ParameterException;
+import com.github.joschi.jadconfig.RepositoryException;
+import com.github.joschi.jadconfig.ValidationException;
+import com.github.joschi.jadconfig.repositories.InMemoryRepository;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
-import java.util.Properties;
+import java.util.HashMap;
+import java.util.Map;
/**
* Unit tests for {@link Configuration} class
@@ -13,298 +19,179 @@
*/
public class ConfigurationTest {
- Properties validProperties;
+ Map validProperties;
@Before
public void setUp() {
- validProperties = new Properties();
+ validProperties = new HashMap();
// Required properties
- validProperties.setProperty("syslog_listen_port", "514");
- validProperties.setProperty("syslog_protocol", "udp");
- validProperties.setProperty("mongodb_useauth", "true");
- validProperties.setProperty("mongodb_user", "user");
- validProperties.setProperty("mongodb_password", "pass");
- validProperties.setProperty("mongodb_database", "test");
- validProperties.setProperty("mongodb_host", "localhost");
- validProperties.setProperty("mongodb_port", "27017");
- validProperties.setProperty("messages_collection_size", "1000");
- validProperties.setProperty("use_gelf", "true");
- validProperties.setProperty("gelf_listen_port", "12201");
+ validProperties.put("syslog_listen_port", "514");
+ validProperties.put("syslog_protocol", "udp");
+ validProperties.put("mongodb_useauth", "true");
+ validProperties.put("mongodb_user", "user");
+ validProperties.put("mongodb_password", "pass");
+ validProperties.put("mongodb_database", "test");
+ validProperties.put("mongodb_host", "localhost");
+ validProperties.put("mongodb_port", "27017");
+ validProperties.put("messages_collection_size", "1000");
+ validProperties.put("use_gelf", "true");
+ validProperties.put("gelf_listen_port", "12201");
// Additional numerical properties
- validProperties.setProperty("mongodb_max_connections", "100");
- validProperties.setProperty("mongodb_threads_allowed_to_block_multiplier", "50");
- validProperties.setProperty("amqp_port", "5672");
- validProperties.setProperty("forwarder_loggly_timeout", "3");
+ validProperties.put("mongodb_max_connections", "100");
+ validProperties.put("mongodb_threads_allowed_to_block_multiplier", "50");
+ validProperties.put("amqp_port", "5672");
+ validProperties.put("forwarder_loggly_timeout", "3");
}
- @Test(expected = IllegalArgumentException.class)
- public void testPropertiesNull() {
+ @Test(expected = ParameterException.class)
+ public void testValidateRequiredPropertiesMissing() throws RepositoryException, ValidationException {
- new Configuration(null);
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(), configuration).process();
}
- @Test
- public void testContains() {
-
- Properties properties = new Properties();
- properties.setProperty("thisIsNotNull", "notNull");
- properties.setProperty("thisIsEmpty", "");
-
- Configuration configuration = new Configuration(properties);
-
- Assert.assertTrue(configuration.contains("thisIsNotNull"));
- Assert.assertTrue(configuration.contains("thisIsEmpty"));
- Assert.assertFalse(configuration.contains("thisDoesNotExist"));
- }
-
- @Test
- public void testGet() {
-
- Properties properties = new Properties();
- properties.setProperty("thisIsNotNull", "notNull");
- properties.setProperty("thisIsEmpty", "");
-
- Configuration configuration = new Configuration(properties);
-
- Assert.assertEquals("notNull", configuration.get("thisIsNotNull"));
- Assert.assertEquals("", configuration.get("thisIsEmpty"));
- Assert.assertNull(configuration.get("thisIsNull"));
- }
+ @Test(expected = ValidationException.class)
+ public void testValidateSyslogProtocol() throws RepositoryException, ValidationException {
- @Test
- public void testGetInteger() {
-
- Properties properties = new Properties();
- properties.setProperty("thisIsEmpty", "");
- properties.setProperty("testString", "invalidInteger");
- properties.setProperty("testInteger", "12345");
- properties.setProperty("MIN_VALUE", String.valueOf(Integer.MIN_VALUE));
- properties.setProperty("MAX_VALUE", String.valueOf(Integer.MAX_VALUE));
- properties.setProperty("tooSmall", "-2147483649");
- properties.setProperty("tooBig", "2147483648");
-
- Configuration configuration = new Configuration(properties);
-
- Assert.assertEquals(123, configuration.getInteger("thisIsNull", 123));
- Assert.assertEquals(123, configuration.getInteger("thisIsEmpty", 123));
- Assert.assertEquals(123, configuration.getInteger("testString", 123));
- Assert.assertEquals(12345, configuration.getInteger("testInteger", 123));
- Assert.assertEquals(Integer.MIN_VALUE, configuration.getInteger("MIN_VALUE", 123));
- Assert.assertEquals(Integer.MAX_VALUE, configuration.getInteger("MAX_VALUE", 123));
- Assert.assertEquals(123, configuration.getInteger("tooSmall", 123));
- Assert.assertEquals(123, configuration.getInteger("tooBig", 123));
- }
+ validProperties.put("syslog_protocol", "noValidProtocol");
- @Test
- public void testGetLong() {
-
- Properties properties = new Properties();
- properties.setProperty("thisIsEmpty", "");
- properties.setProperty("testString", "invalidLong");
- properties.setProperty("testInteger", "12345");
- properties.setProperty("testLong", "12345");
- properties.setProperty("MIN_VALUE", String.valueOf(Long.MIN_VALUE));
- properties.setProperty("MAX_VALUE", String.valueOf(Long.MAX_VALUE));
- properties.setProperty("tooSmall", "-9223372036854775809");
- properties.setProperty("tooBig", "9223372036854775808");
-
- Configuration configuration = new Configuration(properties);
-
- Assert.assertEquals(123L, configuration.getLong("thisIsNull", 123L));
- Assert.assertEquals(123L, configuration.getLong("thisIsEmpty", 123L));
- Assert.assertEquals(123L, configuration.getLong("testString", 123L));
- Assert.assertEquals(12345L, configuration.getLong("testInteger", 123L));
- Assert.assertEquals(12345L, configuration.getLong("testLong", 123L));
- Assert.assertEquals(Long.MIN_VALUE, configuration.getLong("MIN_VALUE", 123L));
- Assert.assertEquals(Long.MAX_VALUE, configuration.getLong("MAX_VALUE", 123L));
- Assert.assertEquals(123L, configuration.getLong("tooSmall", 123L));
- Assert.assertEquals(123L, configuration.getLong("tooBig", 123L));
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
}
@Test
- public void testGetBoolean() {
- Properties properties = new Properties();
- properties.setProperty("thisIsEmpty", "");
- properties.setProperty("thisIsNotBoolean", "1");
- properties.setProperty("thisIsTrue1", "true");
- properties.setProperty("thisIsTrue2", "TRUE");
- properties.setProperty("thisIsTrue3", "tRuE");
-
- Configuration configuration = new Configuration(properties);
-
- Assert.assertFalse(configuration.getBoolean("thisIsEmpty"));
- Assert.assertFalse(configuration.getBoolean("thisIsNotBoolean"));
- Assert.assertTrue(configuration.getBoolean("thisIsTrue1"));
- Assert.assertTrue(configuration.getBoolean("thisIsTrue2"));
- Assert.assertTrue(configuration.getBoolean("thisIsTrue3"));
- }
+ public void testGetMaximumMongoDBConnections() throws RepositoryException, ValidationException {
- @Test(expected = ConfigurationException.class)
- public void testValidateRequiredPropertiesMissing() throws ConfigurationException {
+ validProperties.put("mongodb_max_connections", "12345");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Properties properties = new Properties();
- Configuration configuration = new Configuration(properties);
- configuration.validate();
+ Assert.assertEquals(12345, configuration.getMongoMaxConnections());
}
@Test
- public void testValidateNumericalProperties() throws ConfigurationException {
-
- validProperties.setProperty("mongodb_port", "NotANumber");
- Configuration configuration = new Configuration(validProperties);
- configuration.validate();
-
- Assert.assertTrue(configuration.contains("mongodb_port"));
- }
-
- @Test(expected = ConfigurationException.class)
- public void testValidateNeitherMongoDbHostNorReplicaSet() throws ConfigurationException {
-
- validProperties.remove("mongodb_host");
- Configuration configuration = new Configuration(validProperties);
- configuration.validate();
- }
-
- @Test
- public void testValidateNoMongoDbHost() throws ConfigurationException {
-
- validProperties.remove("mongodb_host");
- validProperties.setProperty("mongodb_replica_set", "localhost");
-
- Configuration configuration = new Configuration(validProperties);
- configuration.validate();
-
- Assert.assertTrue(configuration.contains("mongodb_replica_set"));
- Assert.assertFalse(configuration.contains("mongodb_host"));
- }
-
- @Test(expected = ConfigurationException.class)
- public void testValidateSyslogProtocol() throws ConfigurationException {
-
- validProperties.setProperty("syslog_protocol", "noValidProtocol");
-
- Configuration configuration = new Configuration(validProperties);
- configuration.validate();
- }
-
- @Test
- public void testGetMaximumMongoDBConnections() {
-
- validProperties.setProperty("mongodb_max_connections", "12345");
- Configuration configuration = new Configuration(validProperties);
-
- Assert.assertEquals(12345, configuration.getMaximumMongoDBConnections());
- }
-
- @Test
- public void testGetMaximumMongoDBConnectionsDefault() {
+ public void testGetMaximumMongoDBConnectionsDefault() throws RepositoryException, ValidationException {
validProperties.remove("mongodb_max_connections");
- Configuration configuration = new Configuration(validProperties);
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(1000, configuration.getMaximumMongoDBConnections());
+ Assert.assertEquals(1000, configuration.getMongoMaxConnections());
}
@Test
- public void testGetThreadsAllowedToBlockMultiplier() {
+ public void testGetThreadsAllowedToBlockMultiplier() throws RepositoryException, ValidationException {
- validProperties.setProperty("mongodb_threads_allowed_to_block_multiplier", "12345");
- Configuration configuration = new Configuration(validProperties);
+ validProperties.put("mongodb_threads_allowed_to_block_multiplier", "12345");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(12345, configuration.getThreadsAllowedToBlockMultiplier());
+ Assert.assertEquals(12345, configuration.getMongoThreadsAllowedToBlockMultiplier());
}
@Test
- public void testGetThreadsAllowedToBlockMultiplierDefault() {
+ public void testGetThreadsAllowedToBlockMultiplierDefault() throws RepositoryException, ValidationException {
validProperties.remove("mongodb_threads_allowed_to_block_multiplier");
- Configuration configuration = new Configuration(validProperties);
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(5, configuration.getThreadsAllowedToBlockMultiplier());
+ Assert.assertEquals(5, configuration.getMongoThreadsAllowedToBlockMultiplier());
}
@Test
- public void testGetLogglyTimeout() {
+ public void testGetLogglyTimeout() throws RepositoryException, ValidationException {
- validProperties.setProperty("forwarder_loggly_timeout", "5");
- Configuration configuration = new Configuration(validProperties);
+ validProperties.put("forwarder_loggly_timeout", "5");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(5000, configuration.getLogglyTimeout());
+ Assert.assertEquals(5000, configuration.getForwarderLogglyTimeout());
}
@Test
- public void testGetLogglyTimeoutDefault() {
+ public void testGetLogglyTimeoutDefault() throws RepositoryException, ValidationException {
validProperties.remove("forwarder_loggly_timeout");
- Configuration configuration = new Configuration(validProperties);
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(3000, configuration.getLogglyTimeout());
+ Assert.assertEquals(3000, configuration.getForwarderLogglyTimeout());
}
@Test
- public void testGetAMQPSubscribedQueuesEmpty() {
- validProperties.setProperty("amqp_subscribed_queues", "");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetAMQPSubscribedQueuesEmpty() throws RepositoryException, ValidationException {
+ validProperties.put("amqp_subscribed_queues", "");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getAMQPSubscribedQueues());
+ Assert.assertNull(configuration.getAmqpSubscribedQueues());
}
@Test
- public void testGetAMQPSubscribedQueuesMalformed() {
- validProperties.setProperty("amqp_subscribed_queues", "queue-invalid");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetAMQPSubscribedQueuesMalformed() throws RepositoryException, ValidationException {
+ validProperties.put("amqp_subscribed_queues", "queue-invalid");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getAMQPSubscribedQueues());
+ Assert.assertNull(configuration.getAmqpSubscribedQueues());
}
@Test
- public void testGetAMQPSubscribedQueuesInvalidQueueType() {
- validProperties.setProperty("amqp_subscribed_queues", "queue1:gelf,queue2:invalid");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetAMQPSubscribedQueuesInvalidQueueType() throws RepositoryException, ValidationException {
+ validProperties.put("amqp_subscribed_queues", "queue1:gelf,queue2:invalid");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getAMQPSubscribedQueues());
+ Assert.assertNull(configuration.getAmqpSubscribedQueues());
}
@Test
- public void testGetAMQPSubscribedQueues() {
- validProperties.setProperty("amqp_subscribed_queues", "queue1:gelf,queue2:syslog");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetAMQPSubscribedQueues() throws RepositoryException, ValidationException {
+ validProperties.put("amqp_subscribed_queues", "queue1:gelf,queue2:syslog");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(2, configuration.getAMQPSubscribedQueues().size());
+ Assert.assertEquals(2, configuration.getAmqpSubscribedQueues().size());
}
@Test
- public void testGetMongoDBReplicaSetServersEmpty() {
- validProperties.setProperty("mongodb_replica_set", "");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetMongoDBReplicaSetServersEmpty() throws RepositoryException, ValidationException {
+ validProperties.put("mongodb_replica_set", "");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getMongoDBReplicaSetServers());
+ Assert.assertNull(configuration.getMongoReplicaSet());
}
@Test
- public void testGetMongoDBReplicaSetServersMalformed() {
- validProperties.setProperty("mongodb_replica_set", "malformed");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetMongoDBReplicaSetServersMalformed() throws RepositoryException, ValidationException {
+ validProperties.put("mongodb_replica_set", "malformed");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getMongoDBReplicaSetServers());
+ Assert.assertNull(configuration.getMongoReplicaSet());
}
@Test
- public void testGetMongoDBReplicaSetServersUnknownHost() {
- validProperties.setProperty("mongodb_replica_set", "this-host-hopefully-does-not-exist:27017");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetMongoDBReplicaSetServersUnknownHost() throws RepositoryException, ValidationException {
+ validProperties.put("mongodb_replica_set", "this-host-hopefully-does-not-exist:27017");
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertNull(configuration.getMongoDBReplicaSetServers());
+ Assert.assertNull(configuration.getMongoReplicaSet());
}
@Test
- public void testGetMongoDBReplicaSetServers() {
- validProperties.setProperty("mongodb_replica_set", "localhost:27017,localhost:27018");
- Configuration configuration = new Configuration(validProperties);
+ public void testGetMongoDBReplicaSetServers() throws RepositoryException, ValidationException {
+ validProperties.put("mongodb_replica_set", "localhost:27017,localhost:27018");
+
+ Configuration configuration = new Configuration();
+ new JadConfig(new InMemoryRepository(validProperties), configuration).process();
- Assert.assertEquals(2, configuration.getMongoDBReplicaSetServers().size());
+ Assert.assertEquals(2, configuration.getMongoReplicaSet().size());
}
}