Add fallback default hazelcast.xml
- This enables running mvn test without running ./onos.sh setup.
- Specify HC_CONF value as JVM option to datagrid and datastore.
- Renamed method name to loadHazelcastConfig(), which better explain actual behavior.
Change-Id: Ib7d3d6a461dc60395b1f93e876f72428701c2347
diff --git a/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java b/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
index 7d2b7f3..5758b38 100644
--- a/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
+++ b/src/main/java/net/onrc/onos/core/datagrid/HazelcastDatagrid.java
@@ -33,6 +33,7 @@
private IRestApiService restApi;
static final String HAZELCAST_CONFIG_FILE = "datagridConfig";
+ private static final String HAZELCAST_DEFAULT_XML = "conf/hazelcast.default.xml";
private HazelcastInstance hazelcastInstance;
private Config hazelcastConfig;
@@ -44,11 +45,11 @@
private final Map<String, IEventChannel<?, ?>> eventChannels = new HashMap<>();
/**
- * Initialize the Hazelcast Datagrid operation.
+ * Load the Hazelcast Datagrid configuration file.
*
* @param configFilename the configuration filename.
*/
- public void init(String configFilename) {
+ public void loadHazelcastConfig(String configFilename) {
/*
System.setProperty("hazelcast.socket.receive.buffer.size", "32");
System.setProperty("hazelcast.socket.send.buffer.size", "32");
@@ -60,6 +61,16 @@
hazelcastConfig = new FileSystemXmlConfig(configFilename);
} catch (FileNotFoundException e) {
log.error("Error opening Hazelcast XML configuration. File not found: " + configFilename, e);
+
+ // Fallback mechanism to support running unit test without setup.
+ log.error("Falling back to default Hazelcast XML {}", HAZELCAST_DEFAULT_XML);
+ try {
+ hazelcastConfig = new FileSystemXmlConfig(HAZELCAST_DEFAULT_XML);
+ } catch (FileNotFoundException e2) {
+ log.error("Error opening fall back Hazelcast XML configuration. "
+ + "File not found: " + HAZELCAST_DEFAULT_XML, e2);
+ // XXX probably should throw some exception to kill ONOS instead.
+ }
}
/*
hazelcastConfig.setProperty(GroupProperties.PROP_IO_THREAD_COUNT, "1");
@@ -145,7 +156,7 @@
// Get the configuration file name and configure the Datagrid
Map<String, String> configMap = context.getConfigParams(this);
String configFilename = configMap.get(HAZELCAST_CONFIG_FILE);
- this.init(configFilename);
+ this.loadHazelcastConfig(configFilename);
}
/**
diff --git a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
index 2b319a1..d3c303f 100644
--- a/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
+++ b/src/main/java/net/onrc/onos/core/datastore/hazelcast/HZClient.java
@@ -41,6 +41,7 @@
// make this path configurable
private static final String BASE_CONFIG_FILENAME = System.getProperty("net.onrc.onos.core.datastore.hazelcast.baseConfig", "conf/hazelcast.xml");
+ private static final String HAZELCAST_DEFAULT_XML = "conf/hazelcast.default.xml";
private static boolean useClientMode = Boolean.parseBoolean(System.getProperty("net.onrc.onos.core.datastore.hazelcast.clientMode", "true"));
// Note: xml configuration will overwrite this value if present
@@ -64,7 +65,18 @@
baseHzConfig = new FileSystemXmlConfig(hazelcastConfigFileName);
} catch (FileNotFoundException e) {
log.error("Error opening Hazelcast XML configuration. File not found: " + hazelcastConfigFileName, e);
- throw new Error("Cannot find Hazelcast configuration: " + hazelcastConfigFileName, e);
+ // Fallback mechanism to support running unit test without setup.
+ log.error("Falling back to default Hazelcast XML {}", HAZELCAST_DEFAULT_XML);
+ try {
+ baseHzConfig = new FileSystemXmlConfig(HAZELCAST_DEFAULT_XML);
+ } catch (FileNotFoundException e2) {
+ log.error("Error opening fall back Hazelcast XML configuration. "
+ + "File not found: " + HAZELCAST_DEFAULT_XML, e2);
+
+ // intentionally throwing Exception "e" thrown from non-fallback
+ // Hazelcast configuration loading.
+ throw new Error("Cannot find Hazelcast configuration: " + hazelcastConfigFileName, e);
+ }
}
// use xml config if present, if not use System.property