You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oodt.apache.org by ma...@apache.org on 2017/08/17 15:39:57 UTC
[8/8] oodt git commit: Introduced distributed configuration
management to workflow and resource managers + tests
Introduced distributed configuration management to workflow and resource managers + tests
Project: http://git-wip-us.apache.org/repos/asf/oodt/repo
Commit: http://git-wip-us.apache.org/repos/asf/oodt/commit/fc6311db
Tree: http://git-wip-us.apache.org/repos/asf/oodt/tree/fc6311db
Diff: http://git-wip-us.apache.org/repos/asf/oodt/diff/fc6311db
Branch: refs/heads/feature/zookeeper-config
Commit: fc6311db2ed4e5ccc6129cb88c71bb5428037b98
Parents: 3df0e43
Author: Imesha Sudasingha <im...@gmail.com>
Authored: Wed Aug 16 01:17:42 2017 +0530
Committer: Imesha Sudasingha <im...@gmail.com>
Committed: Wed Aug 16 01:17:42 2017 +0530
----------------------------------------------------------------------
config/pom.xml | 2 +-
.../java/org/apache/oodt/config/Component.java | 3 +-
.../config/ConfigurationManagerFactory.java | 11 +-
.../TestDistributedXmlRpcFileManager.java | 230 -------------------
.../TestDistributedXmlRpcFileManager.java | 230 +++++++++++++++++++
.../distributed/config/cmd-line-actions.xml | 38 ---
.../distributed/config/cmd-line-options.xml | 85 -------
resource/pom.xml | 8 +
.../resource/system/XmlRpcResourceManager.java | 48 ++--
.../system/TestXmlRpcResourceManager.java | 19 +-
.../TestDistributedXmlRpcResourceManager.java | 83 +++++++
.../config/distributed/config-publisher.xml | 40 ++++
.../config/distributed/resource.properties | 75 ++++++
workflow/pom.xml | 8 +
.../workflow/system/XmlRpcWorkflowManager.java | 34 ++-
.../TestDistributedXmlRpcWorkflowManager.java | 136 +++++++++++
.../config/distributed/config-publisher.xml | 56 +++++
.../config/distributed/workflow.properties | 87 +++++++
18 files changed, 792 insertions(+), 401 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/config/pom.xml
----------------------------------------------------------------------
diff --git a/config/pom.xml b/config/pom.xml
index 3380848..3f26499 100644
--- a/config/pom.xml
+++ b/config/pom.xml
@@ -5,7 +5,7 @@
<parent>
<artifactId>oodt-core</artifactId>
<groupId>org.apache.oodt</groupId>
- <version>1.2-SNAPSHOT</version>
+ <version>1.3-SNAPSHOT</version>
<relativePath>../core/pom.xml</relativePath>
</parent>
<modelVersion>4.0.0</modelVersion>
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/config/src/main/java/org/apache/oodt/config/Component.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/oodt/config/Component.java b/config/src/main/java/org/apache/oodt/config/Component.java
index 2c7123e..2c755c1 100644
--- a/config/src/main/java/org/apache/oodt/config/Component.java
+++ b/config/src/main/java/org/apache/oodt/config/Component.java
@@ -25,7 +25,8 @@ package org.apache.oodt.config;
*/
public enum Component {
FILE_MANAGER("filemgr", "FILEMGR_HOME"),
- RESOURCE_MANAGER("resmgr", "RESMGR_HOME");
+ RESOURCE_MANAGER("resmgr", "RESMGR_HOME"),
+ WORKFLOW_MANAGER("wmgr", "WORKFLOW_HOME");
/** Shorthand name of the component. Will be used when creating ZNodes in zookeeper */
String name;
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/config/src/main/java/org/apache/oodt/config/ConfigurationManagerFactory.java
----------------------------------------------------------------------
diff --git a/config/src/main/java/org/apache/oodt/config/ConfigurationManagerFactory.java b/config/src/main/java/org/apache/oodt/config/ConfigurationManagerFactory.java
index f3a5dc5..67591a0 100644
--- a/config/src/main/java/org/apache/oodt/config/ConfigurationManagerFactory.java
+++ b/config/src/main/java/org/apache/oodt/config/ConfigurationManagerFactory.java
@@ -54,12 +54,13 @@ public class ConfigurationManagerFactory {
* @return ConfigurationManager instance to used by the corresponding component.
*/
public static ConfigurationManager getConfigurationManager(Component component, List<String> propertiesFiles) {
- boolean isDistributed = Boolean.getBoolean(ENABLE_DISTRIBUTED_CONFIGURATION);
- if (!isDistributed) {
+ String enableDistributed = System.getProperty(ENABLE_DISTRIBUTED_CONFIGURATION);
+ boolean isDistributed;
+ if (enableDistributed == null) {
String env = System.getenv(Env.ENABLE_DISTRIBUTED_CONFIGURATION);
- if (env != null) {
- isDistributed = Boolean.parseBoolean(env);
- }
+ isDistributed = Boolean.parseBoolean(env);
+ } else {
+ isDistributed = Boolean.parseBoolean(enableDistributed);
}
if (isDistributed) {
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/filemgr/src/test/java/org/apache/oodt/cas/filemgr/config/distributed/TestDistributedXmlRpcFileManager.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/config/distributed/TestDistributedXmlRpcFileManager.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/config/distributed/TestDistributedXmlRpcFileManager.java
deleted file mode 100644
index 19a8e56..0000000
--- a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/config/distributed/TestDistributedXmlRpcFileManager.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * 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.oodt.cas.filemgr.config.distributed;
-
-import org.apache.oodt.cas.filemgr.ingest.StdIngester;
-import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
-import org.apache.oodt.cas.filemgr.metadata.ProductMetKeys;
-import org.apache.oodt.cas.filemgr.structs.Product;
-import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
-import org.apache.oodt.cas.filemgr.system.XmlRpcFileManager;
-import org.apache.oodt.cas.filemgr.system.XmlRpcFileManagerClient;
-import org.apache.oodt.cas.metadata.Metadata;
-import org.apache.oodt.cas.metadata.SerializableMetadata;
-import org.apache.oodt.cas.metadata.util.PathUtils;
-import org.apache.oodt.config.distributed.cli.ConfigPublisher;
-import org.apache.oodt.config.test.AbstractDistributedConfigurationTest;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Collections;
-
-import static org.apache.oodt.config.Constants.Properties.ENABLE_DISTRIBUTED_CONFIGURATION;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-/**
- * Tests the {@link XmlRpcFileManager} with distributed configuration management enabled. This test will first publish
- * the required configuration to zookeeper through {@link ConfigPublisher} and will start the {@link XmlRpcFileManager}
- * which will first download and store published files locally. Then the correct functionality of {@link
- * XmlRpcFileManager} is tested by using those downloaded configuration files for configuration.
- * <p>
- * This class is adapted from {@link org.apache.oodt.cas.filemgr.system.TestXmlRpcFileManager} class
- *
- * @author Imesha Sudasingha
- */
-public class TestDistributedXmlRpcFileManager extends AbstractDistributedConfigurationTest {
-
- private static final int FM_PORT = 9001;
- private static final String CONF_PUBLISHER_XML = "distributed/config/config-publisher.xml";
- private static final String TRANSFER_SERVICE_FACTORY_CLASS = "org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory";
-
- private XmlRpcFileManager fileManager;
-
- @Before
- public void setUpTest() throws Exception {
- System.setProperty("org.apache.oodt.cas.cli.action.spring.config", "src/test/resources/distributed/config/cmd-line-actions.xml");
- System.setProperty("org.apache.oodt.cas.cli.option.spring.config", "src/test/resources/distributed/config/cmd-line-options.xml");
- System.setProperty(ENABLE_DISTRIBUTED_CONFIGURATION, "true");
-
- ConfigPublisher.main(new String[]{
- "-connectString", zookeeper.getConnectString(),
- "-config", CONF_PUBLISHER_XML,
- "-a", "publish"
- });
-
- try {
- fileManager = new XmlRpcFileManager(FM_PORT);
- } catch (Exception e) {
- fail(e.getMessage());
- }
-
- ingestFile();
- }
-
- @Test
- public void testDistributedConfigurationWithFileManager() {
- XmlRpcFileManagerClient fmc = null;
- try {
- fmc = new XmlRpcFileManagerClient(new URL("http://localhost:" + FM_PORT));
- } catch (Exception e) {
- fail(e.getMessage());
- }
-
- Metadata met = null;
- try {
- met = fmc.getMetadata(fmc.getProductByName("test.txt"));
- } catch (CatalogException e) {
- fail(e.getMessage());
- }
-
- assertNotNull(met);
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ID));
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_ID));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_NAME));
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_NAME));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_STRUCTURE));
- assertEquals("Flat", met.getMetadata(ProductMetKeys.PRODUCT_STRUCTURE));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
- assertEquals(Product.STATUS_RECEIVED, met.getMetadata(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
-
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ORIG_REFS));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_DATASTORE_REFS));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_FILE_SIZES));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_MIME_TYPES));
-
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_ORIG_REFS).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_FILE_SIZES).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_MIME_TYPES).size());
-
- URL refUrl = this.getClass().getResource("/ingest/test.txt");
-
- String origPath = null;
- try {
- origPath = new File(refUrl.getFile()).getCanonicalPath();
- } catch (IOException e) {
- fail(e.getMessage());
- }
- assertEquals(origPath, met.getMetadata(ProductMetKeys.PRODUCT_ORIG_REFS));
- assertEquals("/tmp/test.txt/test.txt", met.getMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS));
-
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_FILE_SIZES));
- assertEquals("text/plain", met.getMetadata(ProductMetKeys.PRODUCT_MIME_TYPES));
-
- try {
- met = fmc.getReducedMetadata(fmc.getProductByName("test.txt"), Collections.EMPTY_LIST);
- } catch (CatalogException e) {
- fail(e.getMessage());
- }
-
- assertNotNull(met);
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ID));
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_ID));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_NAME));
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_NAME));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_STRUCTURE));
- assertEquals("Flat", met.getMetadata(ProductMetKeys.PRODUCT_STRUCTURE));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
- assertEquals(Product.STATUS_RECEIVED, met.getMetadata(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
-
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ORIG_REFS));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_DATASTORE_REFS));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_FILE_SIZES));
- assertTrue(met.containsKey(ProductMetKeys.PRODUCT_MIME_TYPES));
-
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_ORIG_REFS).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_FILE_SIZES).size());
- assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_MIME_TYPES).size());
-
- origPath = null;
- try {
- origPath = new File(refUrl.getFile()).getCanonicalPath();
- } catch (IOException e) {
- fail(e.getMessage());
- }
- assertEquals(origPath, met.getMetadata(ProductMetKeys.PRODUCT_ORIG_REFS));
- assertEquals("/tmp/test.txt/test.txt", met.getMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS));
-
- assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_FILE_SIZES));
- assertEquals("text/plain", met.getMetadata(ProductMetKeys.PRODUCT_MIME_TYPES));
- }
-
- private void ingestFile() {
- StdIngester ingester = new StdIngester(TRANSFER_SERVICE_FACTORY_CLASS);
-
- try {
- URL ingestUrl = this.getClass().getResource("/ingest");
- URL refUrl = this.getClass().getResource("/ingest/test.txt");
- URL metUrl = this.getClass().getResource("/ingest/test.txt.met");
- Metadata prodMet = new SerializableMetadata(new FileInputStream(new File(metUrl.getFile())));
-
- // now add the right file location
- prodMet.addMetadata(CoreMetKeys.FILE_LOCATION, new File(ingestUrl.getFile()).getCanonicalPath());
- prodMet.addMetadata(CoreMetKeys.FILENAME, "test.txt");
- prodMet.addMetadata(CoreMetKeys.PRODUCT_TYPE, "GenericFile");
- ingester.ingest(new URL("http://localhost:" + FM_PORT), new File(refUrl.getFile()), prodMet);
- } catch (Exception e) {
- fail(e.getMessage());
- }
- }
-
- @After
- public void tearDownTest() throws Exception {
- if (fileManager != null) {
- fileManager.shutdown();
- }
-
- ConfigPublisher.main(new String[]{
- "-connectString", zookeeper.getConnectString(),
- "-config", CONF_PUBLISHER_XML,
- "-a", "clear"
- });
-
- String luceneIdx = System.getProperty("org.apache.oodt.cas.filemgr.catalog.lucene.idxPath");
- if (luceneIdx != null) {
- luceneIdx = PathUtils.replaceEnvVariables(luceneIdx);
- deleteAllFiles(luceneIdx);
- }
-
- System.clearProperty("org.apache.oodt.cas.cli.action.spring.config");
- System.clearProperty("org.apache.oodt.cas.cli.option.spring.config");
- System.clearProperty(ENABLE_DISTRIBUTED_CONFIGURATION);
- }
-
- private void deleteAllFiles(String startDir) {
- File startDirFile = new File(startDir);
- File[] delFiles = startDirFile.listFiles();
-
- if (delFiles != null && delFiles.length > 0) {
- for (File delFile : delFiles) {
- delFile.delete();
- }
- }
-
- startDirFile.delete();
- }
-}
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/distributed/TestDistributedXmlRpcFileManager.java
----------------------------------------------------------------------
diff --git a/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/distributed/TestDistributedXmlRpcFileManager.java b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/distributed/TestDistributedXmlRpcFileManager.java
new file mode 100644
index 0000000..938a89b
--- /dev/null
+++ b/filemgr/src/test/java/org/apache/oodt/cas/filemgr/system/distributed/TestDistributedXmlRpcFileManager.java
@@ -0,0 +1,230 @@
+/*
+ * 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.oodt.cas.filemgr.system.distributed;
+
+import org.apache.oodt.cas.filemgr.ingest.StdIngester;
+import org.apache.oodt.cas.filemgr.metadata.CoreMetKeys;
+import org.apache.oodt.cas.filemgr.metadata.ProductMetKeys;
+import org.apache.oodt.cas.filemgr.structs.Product;
+import org.apache.oodt.cas.filemgr.structs.exceptions.CatalogException;
+import org.apache.oodt.cas.filemgr.system.XmlRpcFileManager;
+import org.apache.oodt.cas.filemgr.system.XmlRpcFileManagerClient;
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.metadata.SerializableMetadata;
+import org.apache.oodt.cas.metadata.util.PathUtils;
+import org.apache.oodt.config.distributed.cli.ConfigPublisher;
+import org.apache.oodt.config.test.AbstractDistributedConfigurationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.Collections;
+
+import static org.apache.oodt.config.Constants.Properties.ENABLE_DISTRIBUTED_CONFIGURATION;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+/**
+ * Tests the {@link XmlRpcFileManager} with distributed configuration management enabled. This test will first publish
+ * the required configuration to zookeeper through {@link ConfigPublisher} and will start the {@link XmlRpcFileManager}
+ * which will first download and store published files locally. Then the correct functionality of {@link
+ * XmlRpcFileManager} is tested by using those downloaded configuration files for configuration.
+ * <p>
+ * This class is adapted from {@link org.apache.oodt.cas.filemgr.system.TestXmlRpcFileManager} class
+ *
+ * @author Imesha Sudasingha
+ */
+public class TestDistributedXmlRpcFileManager extends AbstractDistributedConfigurationTest {
+
+ private static final int FM_PORT = 9001;
+ private static final String CONF_PUBLISHER_XML = "distributed/config/config-publisher.xml";
+ private static final String TRANSFER_SERVICE_FACTORY_CLASS = "org.apache.oodt.cas.filemgr.datatransfer.LocalDataTransferFactory";
+
+ private XmlRpcFileManager fileManager;
+
+ @Before
+ public void setUpTest() throws Exception {
+ System.setProperty("org.apache.oodt.cas.cli.action.spring.config", "../config/src/main/resources/cmd-line-actions.xml");
+ System.setProperty("org.apache.oodt.cas.cli.option.spring.config", "../config/src/main/resources/cmd-line-options.xml");
+ System.setProperty(ENABLE_DISTRIBUTED_CONFIGURATION, "true");
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "publish"
+ });
+
+ try {
+ fileManager = new XmlRpcFileManager(FM_PORT);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ ingestFile();
+ }
+
+ @Test
+ public void testDistributedConfigurationWithFileManager() {
+ XmlRpcFileManagerClient fmc = null;
+ try {
+ fmc = new XmlRpcFileManagerClient(new URL("http://localhost:" + FM_PORT));
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ Metadata met = null;
+ try {
+ met = fmc.getMetadata(fmc.getProductByName("test.txt"));
+ } catch (CatalogException e) {
+ fail(e.getMessage());
+ }
+
+ assertNotNull(met);
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ID));
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_ID));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_NAME));
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_NAME));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_STRUCTURE));
+ assertEquals("Flat", met.getMetadata(ProductMetKeys.PRODUCT_STRUCTURE));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
+ assertEquals(Product.STATUS_RECEIVED, met.getMetadata(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
+
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ORIG_REFS));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_DATASTORE_REFS));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_FILE_SIZES));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_MIME_TYPES));
+
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_ORIG_REFS).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_FILE_SIZES).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_MIME_TYPES).size());
+
+ URL refUrl = this.getClass().getResource("/ingest/test.txt");
+
+ String origPath = null;
+ try {
+ origPath = new File(refUrl.getFile()).getCanonicalPath();
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ assertEquals(origPath, met.getMetadata(ProductMetKeys.PRODUCT_ORIG_REFS));
+ assertEquals("/tmp/test.txt/test.txt", met.getMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS));
+
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_FILE_SIZES));
+ assertEquals("text/plain", met.getMetadata(ProductMetKeys.PRODUCT_MIME_TYPES));
+
+ try {
+ met = fmc.getReducedMetadata(fmc.getProductByName("test.txt"), Collections.EMPTY_LIST);
+ } catch (CatalogException e) {
+ fail(e.getMessage());
+ }
+
+ assertNotNull(met);
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ID));
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_ID));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_NAME));
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_NAME));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_STRUCTURE));
+ assertEquals("Flat", met.getMetadata(ProductMetKeys.PRODUCT_STRUCTURE));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
+ assertEquals(Product.STATUS_RECEIVED, met.getMetadata(ProductMetKeys.PRODUCT_TRANSFER_STATUS));
+
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_ORIG_REFS));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_DATASTORE_REFS));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_FILE_SIZES));
+ assertTrue(met.containsKey(ProductMetKeys.PRODUCT_MIME_TYPES));
+
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_ORIG_REFS).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_FILE_SIZES).size());
+ assertEquals(1, met.getAllMetadata(ProductMetKeys.PRODUCT_MIME_TYPES).size());
+
+ origPath = null;
+ try {
+ origPath = new File(refUrl.getFile()).getCanonicalPath();
+ } catch (IOException e) {
+ fail(e.getMessage());
+ }
+ assertEquals(origPath, met.getMetadata(ProductMetKeys.PRODUCT_ORIG_REFS));
+ assertEquals("/tmp/test.txt/test.txt", met.getMetadata(ProductMetKeys.PRODUCT_DATASTORE_REFS));
+
+ assertNotNull(met.getMetadata(ProductMetKeys.PRODUCT_FILE_SIZES));
+ assertEquals("text/plain", met.getMetadata(ProductMetKeys.PRODUCT_MIME_TYPES));
+ }
+
+ private void ingestFile() {
+ StdIngester ingester = new StdIngester(TRANSFER_SERVICE_FACTORY_CLASS);
+
+ try {
+ URL ingestUrl = this.getClass().getResource("/ingest");
+ URL refUrl = this.getClass().getResource("/ingest/test.txt");
+ URL metUrl = this.getClass().getResource("/ingest/test.txt.met");
+ Metadata prodMet = new SerializableMetadata(new FileInputStream(new File(metUrl.getFile())));
+
+ // now add the right file location
+ prodMet.addMetadata(CoreMetKeys.FILE_LOCATION, new File(ingestUrl.getFile()).getCanonicalPath());
+ prodMet.addMetadata(CoreMetKeys.FILENAME, "test.txt");
+ prodMet.addMetadata(CoreMetKeys.PRODUCT_TYPE, "GenericFile");
+ ingester.ingest(new URL("http://localhost:" + FM_PORT), new File(refUrl.getFile()), prodMet);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @After
+ public void tearDownTest() throws Exception {
+ if (fileManager != null) {
+ fileManager.shutdown();
+ }
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "clear"
+ });
+
+ String luceneIdx = System.getProperty("org.apache.oodt.cas.filemgr.catalog.lucene.idxPath");
+ if (luceneIdx != null) {
+ luceneIdx = PathUtils.replaceEnvVariables(luceneIdx);
+ deleteAllFiles(luceneIdx);
+ }
+
+ System.clearProperty("org.apache.oodt.cas.cli.action.spring.config");
+ System.clearProperty("org.apache.oodt.cas.cli.option.spring.config");
+ System.clearProperty(ENABLE_DISTRIBUTED_CONFIGURATION);
+ }
+
+ private void deleteAllFiles(String startDir) {
+ File startDirFile = new File(startDir);
+ File[] delFiles = startDirFile.listFiles();
+
+ if (delFiles != null && delFiles.length > 0) {
+ for (File delFile : delFiles) {
+ delFile.delete();
+ }
+ }
+
+ startDirFile.delete();
+ }
+}
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/filemgr/src/test/resources/distributed/config/cmd-line-actions.xml
----------------------------------------------------------------------
diff --git a/filemgr/src/test/resources/distributed/config/cmd-line-actions.xml b/filemgr/src/test/resources/distributed/config/cmd-line-actions.xml
deleted file mode 100644
index 08f5415..0000000
--- a/filemgr/src/test/resources/distributed/config/cmd-line-actions.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
-
- <bean id="publish" class="org.apache.oodt.config.distributed.cli.CLIAction">
- <constructor-arg value="PUBLISH"/>
- <property name="description" value="Publishes configuration to zookeeper"/>
- </bean>
-
- <bean id="verify" class="org.apache.oodt.config.distributed.cli.CLIAction">
- <constructor-arg value="VERIFY"/>
- <property name="description" value="Verifies configuration published to zookeeper"/>
- </bean>
-
- <bean id="clear" class="org.apache.oodt.config.distributed.cli.CLIAction">
- <constructor-arg value="CLEAR"/>
- <property name="description" value="Clears all published configuration from zookeeper"/>
- </bean>
-</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/filemgr/src/test/resources/distributed/config/cmd-line-options.xml
----------------------------------------------------------------------
diff --git a/filemgr/src/test/resources/distributed/config/cmd-line-options.xml b/filemgr/src/test/resources/distributed/config/cmd-line-options.xml
deleted file mode 100644
index 698ad32..0000000
--- a/filemgr/src/test/resources/distributed/config/cmd-line-options.xml
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
-
- <bean id="connectStringOption" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
- <property name="shortOption" value="cs"/>
- <property name="longOption" value="connectString"/>
- <property name="description" value="Connect String to Zookeeper (ip1:port1,ip2:port2,..)"/>
- <property name="hasArgs" value="true"/>
- <property name="requirementRules">
- <list>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="publish" p:relation="REQUIRED"/>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="clear" p:relation="REQUIRED"/>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="verify" p:relation="REQUIRED"/>
- </list>
- </property>
- <property name="handler">
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler">
- <property name="applyToActions">
- <list>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="publish" p:methodName="setConnectString"/>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="verify" p:methodName="setConnectString"/>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="clear" p:methodName="setConnectString"/>
- </list>
- </property>
- </bean>
- </property>
- </bean>
-
- <bean id="publisherXML" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
- <property name="shortOption" value="c"/>
- <property name="longOption" value="config"/>
- <property name="description" value="Configuration publisher spring configuration XML"/>
- <property name="hasArgs" value="true"/>
- <property name="requirementRules">
- <list>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="publish" p:relation="OPTIONAL"/>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="clear" p:relation="OPTIONAL"/>
- <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
- p:actionName="verify" p:relation="OPTIONAL"/>
- </list>
- </property>
- <property name="handler">
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler">
- <property name="applyToActions">
- <list>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="publish" p:methodName="setConfigFile"/>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="verify" p:methodName="setConfigFile"/>
- <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToAction"
- p:actionName="clear" p:methodName="setConfigFile"/>
- </list>
- </property>
- </bean>
- </property>
- </bean>
-</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/pom.xml
----------------------------------------------------------------------
diff --git a/resource/pom.xml b/resource/pom.xml
index d9d23df..a1197b7 100644
--- a/resource/pom.xml
+++ b/resource/pom.xml
@@ -110,6 +110,10 @@ the License.
<artifactId>cas-metadata</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.oodt</groupId>
+ <artifactId>oodt-conf</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.safehaus.jug</groupId>
<artifactId>jug</artifactId>
<classifier>asl</classifier>
@@ -138,6 +142,10 @@ the License.
<value>${basedir}/src/test/resources/test.logging.properties</value>
</property>
</systemProperties>
+ <environmentVariables>
+ <RESMGR_HOME>${project.basedir}</RESMGR_HOME>
+ <OODT_PROJECT>primary</OODT_PROJECT>
+ </environmentVariables>
<forkedProcessTimeoutInSeconds>0</forkedProcessTimeoutInSeconds>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<includes>
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManager.java
----------------------------------------------------------------------
diff --git a/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManager.java b/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManager.java
index 87f6bea..3536607 100644
--- a/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManager.java
+++ b/resource/src/main/java/org/apache/oodt/cas/resource/system/XmlRpcResourceManager.java
@@ -32,13 +32,15 @@ import org.apache.oodt.cas.resource.structs.exceptions.SchedulerException;
import org.apache.oodt.cas.resource.util.GenericResourceManagerObjectFactory;
import org.apache.oodt.cas.resource.util.ResourceNodeComparator;
import org.apache.oodt.cas.resource.util.XmlRpcStructFactory;
+import org.apache.oodt.config.Component;
+import org.apache.oodt.config.ConfigurationManager;
+import org.apache.oodt.config.ConfigurationManagerFactory;
import org.apache.xmlrpc.WebServer;
-import java.io.File;
-import java.io.FileInputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.Hashtable;
@@ -69,16 +71,22 @@ public class XmlRpcResourceManager {
/* our scheduler */
private Scheduler scheduler = null;
+ /** Configuration Manager instance of this instance */
+ private ConfigurationManager configurationManager;
+
public XmlRpcResourceManager(int port) throws IOException {
- // load properties from workflow manager properties file, if specified
+ List<String> propertiesFiles = new ArrayList<>();
+ // set up the configuration, if there is any
if (System.getProperty("org.apache.oodt.cas.resource.properties") != null) {
- String configFile = System
- .getProperty("org.apache.oodt.cas.resource.properties");
- LOG.log(Level.INFO,
- "Loading Resource Manager Configuration Properties from: ["
- + configFile + "]");
- System.getProperties().load(
- new FileInputStream(new File(configFile)));
+ propertiesFiles.add(System.getProperty("org.apache.oodt.cas.resource.properties"));
+ }
+
+ configurationManager = ConfigurationManagerFactory.getConfigurationManager(Component.RESOURCE_MANAGER, propertiesFiles);
+ try {
+ configurationManager.loadConfiguration();
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "Unable to load configuration", e);
+ throw new IOException("Unable to load configuration", e);
}
String schedulerClassStr = System.getProperty(
@@ -323,15 +331,17 @@ public class XmlRpcResourceManager {
public List<String> getQueuesWithNode(String nodeId) {
return new Vector<String>(this.scheduler.getQueueManager().getQueues(nodeId));
}
-
- public boolean shutdown(){
- if (this.webServer != null) {
- this.webServer.shutdown();
- this.webServer = null;
- return true;
- } else {
- return false;
- }
+
+ public boolean shutdown() {
+ configurationManager.clearConfiguration();
+
+ if (this.webServer != null) {
+ this.webServer.shutdown();
+ this.webServer = null;
+ return true;
+ } else {
+ return false;
+ }
}
public String getNodeLoad(String nodeId) throws MonitorException{
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/src/test/java/org/apache/oodt/cas/resource/system/TestXmlRpcResourceManager.java
----------------------------------------------------------------------
diff --git a/resource/src/test/java/org/apache/oodt/cas/resource/system/TestXmlRpcResourceManager.java b/resource/src/test/java/org/apache/oodt/cas/resource/system/TestXmlRpcResourceManager.java
index 342194e..f0358b6 100644
--- a/resource/src/test/java/org/apache/oodt/cas/resource/system/TestXmlRpcResourceManager.java
+++ b/resource/src/test/java/org/apache/oodt/cas/resource/system/TestXmlRpcResourceManager.java
@@ -77,7 +77,6 @@ public class TestXmlRpcResourceManager extends TestCase {
fail(e.getMessage());
}
assertEquals(8, setCapacity);
-
}
/*
@@ -116,7 +115,7 @@ public class TestXmlRpcResourceManager extends TestCase {
}
- private void generateTestConfiguration() throws IOException {
+ private void generateTestConfiguration() throws IOException {
Properties config = new Properties();
String propertiesFile = "." + File.separator + "src" + File.separator +
@@ -131,13 +130,13 @@ public class TestXmlRpcResourceManager extends TestCase {
fail(e.getMessage());
}
for (File policyFile : new File("./src/test/resources/policy")
- .listFiles(new FileFilter() {
+ .listFiles(new FileFilter() {
- @Override
- public boolean accept(File pathname) {
- return pathname.isFile() && pathname.getName().endsWith(".xml");
- }
- })) {
+ @Override
+ public boolean accept(File pathname) {
+ return pathname.isFile() && pathname.getName().endsWith(".xml");
+ }
+ })) {
try {
FileUtils.copyFileToDirectory(policyFile, tmpPolicyDir);
} catch (Exception e) {
@@ -146,9 +145,9 @@ public class TestXmlRpcResourceManager extends TestCase {
}
config.setProperty("org.apache.oodt.cas.resource.nodes.dirs", tmpPolicyDir
- .toURI().toString());
+ .toURI().toString());
config.setProperty("org.apache.oodt.cas.resource.nodetoqueues.dirs",
- tmpPolicyDir.toURI().toString());
+ tmpPolicyDir.toURI().toString());
System.getProperties().putAll(config);
this.tmpPolicyDir = tmpPolicyDir;
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/src/test/java/org/apache/oodt/cas/resource/system/distributed/TestDistributedXmlRpcResourceManager.java
----------------------------------------------------------------------
diff --git a/resource/src/test/java/org/apache/oodt/cas/resource/system/distributed/TestDistributedXmlRpcResourceManager.java b/resource/src/test/java/org/apache/oodt/cas/resource/system/distributed/TestDistributedXmlRpcResourceManager.java
new file mode 100644
index 0000000..0649b44
--- /dev/null
+++ b/resource/src/test/java/org/apache/oodt/cas/resource/system/distributed/TestDistributedXmlRpcResourceManager.java
@@ -0,0 +1,83 @@
+/*
+ * 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.oodt.cas.resource.system.distributed;
+
+import org.apache.oodt.cas.resource.system.TestXmlRpcResourceManager;
+import org.apache.oodt.cas.resource.system.XmlRpcResourceManager;
+import org.apache.oodt.config.distributed.cli.ConfigPublisher;
+import org.apache.oodt.config.test.AbstractDistributedConfigurationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import static org.apache.oodt.config.Constants.Properties.ENABLE_DISTRIBUTED_CONFIGURATION;
+import static org.junit.Assert.fail;
+
+/**
+ * Test the operation of Resource Manager under distributed configuration management enabled
+ *
+ * @author Imesha Sudasingha
+ */
+public class TestDistributedXmlRpcResourceManager extends AbstractDistributedConfigurationTest {
+
+ private static final int RM_PORT = 50001;
+ private static final String CONF_PUBLISHER_XML = "config/distributed/config-publisher.xml";
+
+ private XmlRpcResourceManager resourceManager;
+
+ @Before
+ public void setUpTest() throws Exception {
+ System.setProperty("org.apache.oodt.cas.cli.action.spring.config", "../config/src/main/resources/cmd-line-actions.xml");
+ System.setProperty("org.apache.oodt.cas.cli.option.spring.config", "../config/src/main/resources/cmd-line-options.xml");
+ System.setProperty(ENABLE_DISTRIBUTED_CONFIGURATION, "true");
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "publish"
+ });
+
+ try {
+ resourceManager = new XmlRpcResourceManager(RM_PORT);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ }
+
+ @Test
+ public void testDynSetNodeCapacity() {
+ new TestXmlRpcResourceManager().testDynSetNodeCapacity();
+ }
+
+ @After
+ public void tearDownTest() throws Exception {
+ if (resourceManager != null) {
+ resourceManager.shutdown();
+ }
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "clear"
+ });
+
+ System.clearProperty("org.apache.oodt.cas.cli.action.spring.config");
+ System.clearProperty("org.apache.oodt.cas.cli.option.spring.config");
+ System.clearProperty(ENABLE_DISTRIBUTED_CONFIGURATION);
+ }
+}
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/src/test/resources/config/distributed/config-publisher.xml
----------------------------------------------------------------------
diff --git a/resource/src/test/resources/config/distributed/config-publisher.xml b/resource/src/test/resources/config/distributed/config-publisher.xml
new file mode 100644
index 0000000..ab7a0ce
--- /dev/null
+++ b/resource/src/test/resources/config/distributed/config-publisher.xml
@@ -0,0 +1,40 @@
+<!--
+ ~ 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.
+ -->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+ <bean id="resmgr-config-publisher" class="org.apache.oodt.config.distributed.DistributedConfigurationPublisher">
+ <constructor-arg value="RESOURCE_MANAGER"/>
+
+ <constructor-arg value="primary"/>
+
+ <property name="propertiesFiles">
+ <map key-type="java.lang.String" value-type="java.lang.String">
+ <entry key="src/test/resources/config/distributed/resource.properties" value="target/resmgr/etc/resource.properties"/>
+ <entry key="src/test/resources/test.logging.properties" value="target/resmgr/etc/logging.properties"/>
+ </map>
+ </property>
+ <property name="configFiles">
+ <map key-type="java.lang.String" value-type="java.lang.String">
+ <entry key="src/test/resources/policy/nodes.xml" value="target/resmgr/policy/nodes.xml"/>
+ <entry key="src/test/resources/policy/node-to-queue-mapping.xml" value="target/resmgr/policy/node-to-queue-mapping.xml"/>
+ </map>
+ </property>
+ </bean>
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/resource/src/test/resources/config/distributed/resource.properties
----------------------------------------------------------------------
diff --git a/resource/src/test/resources/config/distributed/resource.properties b/resource/src/test/resources/config/distributed/resource.properties
new file mode 100644
index 0000000..e51fc73
--- /dev/null
+++ b/resource/src/test/resources/config/distributed/resource.properties
@@ -0,0 +1,75 @@
+#
+# 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.
+#
+
+# resource batchmgr factory
+resource.batchmgr.factory = org.apache.oodt.cas.resource.batchmgr.XmlRpcBatchMgrFactory
+
+# resource monitor factory
+resource.monitor.factory = org.apache.oodt.cas.resource.monitor.AssignmentMonitorFactory
+
+# resource scheduler factory
+resource.scheduler.factory = org.apache.oodt.cas.resource.scheduler.LRUSchedulerFactory
+
+# resource jobqueue factory
+resource.jobqueue.factory = org.apache.oodt.cas.resource.jobqueue.JobStackJobQueueFactory
+
+# resource job repository factory
+resource.jobrepo.factory = org.apache.oodt.cas.resource.jobrepo.MemoryJobRepositoryFactory
+
+# node repository factory
+org.apache.oodt.cas.resource.nodes.repo.factory = org.apache.oodt.cas.resource.noderepo.XmlNodeRepositoryFactory
+
+# queue repository factory
+org.apache.oodt.cas.resource.queues.repo.factory = org.apache.oodt.cas.resource.queuerepo.XmlQueueRepositoryFactory
+
+# resource nodes monitor factory
+org.apache.oodt.cas.resource.monitor.factory = org.apache.oodt.cas.resource.monitor.ganglia.GangliaResourceMonitorFactory
+
+# ganglia resource monitor's load calculator factory
+org.apache.oodt.cas.resource.monitor.loadcalc.factory = org.apache.oodt.cas.resource.monitor.ganglia.loadcalc.WeightedAverageLoadCalcFactory
+
+# JobStack JobQueue config properties
+org.apache.oodt.cas.resource.jobqueue.jobstack.maxstacksize=1000
+
+# XML LRUScheduler config properties
+org.apache.oodt.cas.resource.scheduler.wait.seconds=20
+
+# XML-RPC configuration props
+org.apache.oodt.cas.resource.system.xmlrpc.requestTimeout.minutes=20
+org.apache.oodt.cas.resource.system.xmlrpc.connectionTimeout.minutes=60
+
+# XStream JobRepo configuration props
+org.apache.oodt.cas.resource.jobrepo.xstream.working.dir=[RESMGR_HOME]/job-repo
+org.apache.oodt.cas.resource.jobrepo.xstream.max.history=4000
+
+# XML Node Repository config properties
+org.apache.oodt.cas.resource.nodes.dirs=file://[RESMGR_HOME]/target/resmgr/policy
+
+# XML Queue Repository config properties
+org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[RESMGR_HOME]/target/resmgr/policy
+
+# Load calculation weights
+org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadone=1
+org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadfive=5
+org.apache.oodt.cas.resource.monitor.loadcalc.weight.loadfifteen=5
+org.apache.oodt.cas.resource.monitor.loadcalc.weight.memfree=2
+org.apache.oodt.cas.resource.monitor.loadcalc.weight.swapfree=1
+
+#ganglia meta daemon (gmetad) host details
+org.apache.oodt.cas.resource.monitor.ganglia.gemtad.host.address=localhost
+org.apache.oodt.cas.resource.monitor.ganglia.gemtad.host.port=8659
+
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/workflow/pom.xml
----------------------------------------------------------------------
diff --git a/workflow/pom.xml b/workflow/pom.xml
index 50e6743..a6e0c44 100644
--- a/workflow/pom.xml
+++ b/workflow/pom.xml
@@ -138,6 +138,10 @@ the License.
<artifactId>oodt-commons</artifactId>
</dependency>
<dependency>
+ <groupId>org.apache.oodt</groupId>
+ <artifactId>oodt-conf</artifactId>
+ </dependency>
+ <dependency>
<groupId>org.safehaus.jug</groupId>
<artifactId>jug</artifactId>
<classifier>asl</classifier>
@@ -161,6 +165,10 @@ the License.
<value>${basedir}/src/test/resources/test.logging.properties</value>
</property>
</systemProperties>
+ <environmentVariables>
+ <WORKFLOW_HOME>${project.basedir}</WORKFLOW_HOME>
+ <OODT_PROJECT>primary</OODT_PROJECT>
+ </environmentVariables>
<forkedProcessTimeoutInSeconds>0</forkedProcessTimeoutInSeconds>
<redirectTestOutputToFile>true</redirectTestOutputToFile>
<includes>
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
----------------------------------------------------------------------
diff --git a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
index 37b22d3..b0b4591 100644
--- a/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
+++ b/workflow/src/main/java/org/apache/oodt/cas/workflow/system/XmlRpcWorkflowManager.java
@@ -30,6 +30,9 @@ import org.apache.oodt.cas.workflow.structs.exceptions.EngineException;
import org.apache.oodt.cas.workflow.structs.exceptions.InstanceRepositoryException;
import org.apache.oodt.cas.workflow.structs.exceptions.RepositoryException;
import org.apache.oodt.cas.workflow.util.XmlRpcStructFactory;
+import org.apache.oodt.config.Component;
+import org.apache.oodt.config.ConfigurationManager;
+import org.apache.oodt.config.ConfigurationManagerFactory;
import org.apache.xmlrpc.WebServer;
import com.google.common.base.Preconditions;
@@ -41,6 +44,7 @@ import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.UnknownHostException;
+import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
@@ -73,6 +77,8 @@ public class XmlRpcWorkflowManager {
private final WorkflowEngine engine;
private WorkflowRepository repo;
+ private ConfigurationManager configurationManager;
+
public XmlRpcWorkflowManager() {
this(DEFAULT_WEB_SERVER_PORT);
}
@@ -80,6 +86,20 @@ public class XmlRpcWorkflowManager {
public XmlRpcWorkflowManager(int port) {
Preconditions.checkArgument(port > 0, "Must specify a port greater than 0");
+ List<String> propertiesFiles = new ArrayList<>();
+ String configFile = System.getProperty(PROPERTIES_FILE_PROPERTY);
+ if (configFile != null) {
+ propertiesFiles.add(configFile);
+ }
+
+ configurationManager= ConfigurationManagerFactory.getConfigurationManager(Component.WORKFLOW_MANAGER,propertiesFiles);
+ try {
+ configurationManager.loadConfiguration();
+ } catch (Exception e) {
+ LOG.log(Level.SEVERE, "Unable to load configuration", e);
+ throw new IllegalStateException("Unable to load configuration", e);
+ }
+
engine = getWorkflowEngineFromProperty();
engine.setWorkflowManagerUrl(safeGetUrlFromString("http://"
+ getHostname() + ":" + port));
@@ -95,6 +115,8 @@ public class XmlRpcWorkflowManager {
}
public boolean shutdown() {
+ configurationManager.clearConfiguration();
+
if (webServer != null) {
webServer.shutdown();
webServer = null;
@@ -645,7 +667,6 @@ public class XmlRpcWorkflowManager {
System.exit(1);
}
- loadProperties();
new XmlRpcWorkflowManager(portNum);
for (; ; ) {
@@ -656,17 +677,6 @@ public class XmlRpcWorkflowManager {
}
}
- public static void loadProperties() throws IOException {
- String configFile = System.getProperty(PROPERTIES_FILE_PROPERTY);
- if (configFile != null) {
- LOG.log(Level.INFO,
- "Loading Workflow Manager Configuration Properties from: ["
- + configFile + "]");
- System.getProperties().load(new FileInputStream(new File(
- configFile)));
- }
- }
-
private static WorkflowEngine getWorkflowEngineFromProperty() {
return getWorkflowEngineFromClassName(System.getProperty(
WORKFLOW_ENGINE_FACTORY_PROPERTY,
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/workflow/src/test/java/org/apache/oodt/cas/workflow/system/distributed/TestDistributedXmlRpcWorkflowManager.java
----------------------------------------------------------------------
diff --git a/workflow/src/test/java/org/apache/oodt/cas/workflow/system/distributed/TestDistributedXmlRpcWorkflowManager.java b/workflow/src/test/java/org/apache/oodt/cas/workflow/system/distributed/TestDistributedXmlRpcWorkflowManager.java
new file mode 100644
index 0000000..781a7eb
--- /dev/null
+++ b/workflow/src/test/java/org/apache/oodt/cas/workflow/system/distributed/TestDistributedXmlRpcWorkflowManager.java
@@ -0,0 +1,136 @@
+/*
+ * 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.oodt.cas.workflow.system.distributed;
+
+import org.apache.oodt.cas.metadata.Metadata;
+import org.apache.oodt.cas.metadata.util.PathUtils;
+import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManager;
+import org.apache.oodt.cas.workflow.system.XmlRpcWorkflowManagerClient;
+import org.apache.oodt.config.distributed.cli.ConfigPublisher;
+import org.apache.oodt.config.test.AbstractDistributedConfigurationTest;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.URL;
+import java.util.List;
+
+import static org.apache.oodt.config.Constants.Properties.ENABLE_DISTRIBUTED_CONFIGURATION;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.fail;
+
+public class TestDistributedXmlRpcWorkflowManager extends AbstractDistributedConfigurationTest {
+
+ private static final int WM_PORT = 50002;
+ private static final String CONF_PUBLISHER_XML = "config/distributed/config-publisher.xml";
+
+ private XmlRpcWorkflowManager workflowManager;
+
+ @Before
+ public void setUpTest() throws Exception {
+ System.setProperty("org.apache.oodt.cas.cli.action.spring.config", "../config/src/main/resources/cmd-line-actions.xml");
+ System.setProperty("org.apache.oodt.cas.cli.option.spring.config", "../config/src/main/resources/cmd-line-options.xml");
+ System.setProperty(ENABLE_DISTRIBUTED_CONFIGURATION, "true");
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "publish"
+ });
+
+ try {
+ workflowManager = new XmlRpcWorkflowManager(WM_PORT);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ startWorkflow();
+ }
+
+ private void startWorkflow() {
+ XmlRpcWorkflowManagerClient client = null;
+ try {
+ client = new XmlRpcWorkflowManagerClient(new URL("http://localhost:" + WM_PORT));
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+
+ try {
+ client.sendEvent("long", new Metadata());
+ } catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+
+ }
+
+ @Test
+ public void testGetWorkflowInstances() {
+ List workflowInsts = null;
+ int numInsts = -1;
+ while (numInsts != 2) {
+ try {
+ workflowInsts = workflowManager.getWorkflowInstances();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ assertNotNull(workflowInsts);
+ numInsts = workflowInsts.size();
+ }
+
+ assertEquals(2, workflowInsts.size());
+ }
+
+ private void deleteAllFiles(String startDir) {
+ File startDirFile = new File(startDir);
+ File[] delFiles = startDirFile.listFiles();
+
+ if (delFiles != null && delFiles.length > 0) {
+ for (File delFile : delFiles) {
+ delFile.delete();
+ }
+ }
+
+ startDirFile.delete();
+ }
+
+ @After
+ public void tearDownTest() throws Exception {
+ if (workflowManager != null) {
+ workflowManager.shutdown();
+ }
+
+ ConfigPublisher.main(new String[]{
+ "-connectString", zookeeper.getConnectString(),
+ "-config", CONF_PUBLISHER_XML,
+ "-a", "clear"
+ });
+
+ System.clearProperty("org.apache.oodt.cas.cli.action.spring.config");
+ System.clearProperty("org.apache.oodt.cas.cli.option.spring.config");
+ System.clearProperty(ENABLE_DISTRIBUTED_CONFIGURATION);
+
+ String luceneIdx = System.getProperty("org.apache.oodt.cas.workflow.instanceRep.lucene.idxPath");
+ if (luceneIdx != null) {
+ luceneIdx = PathUtils.replaceEnvVariables(luceneIdx);
+ deleteAllFiles(luceneIdx);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/workflow/src/test/resources/config/distributed/config-publisher.xml
----------------------------------------------------------------------
diff --git a/workflow/src/test/resources/config/distributed/config-publisher.xml b/workflow/src/test/resources/config/distributed/config-publisher.xml
new file mode 100644
index 0000000..f9b8115
--- /dev/null
+++ b/workflow/src/test/resources/config/distributed/config-publisher.xml
@@ -0,0 +1,56 @@
+<!--
+ ~ 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.
+ -->
+
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+ <bean id="workflowmgr-config-publisher" class="org.apache.oodt.config.distributed.DistributedConfigurationPublisher">
+ <constructor-arg value="WORKFLOW_MANAGER"/>
+ <constructor-arg value="primary"/>
+
+ <property name="propertiesFiles">
+ <map key-type="java.lang.String" value-type="java.lang.String">
+ <entry key="src/test/resources/config/distributed/workflow.properties" value="target/workflow/etc/resource.properties"/>
+ <entry key="src/test/resources/test.logging.properties" value="target/workflow/etc/logging.properties"/>
+ </map>
+ </property>
+ <property name="configFiles">
+ <map key-type="java.lang.String" value-type="java.lang.String">
+ <entry key="src/main/resources/examples/workflow-lifecycle.xml" value="target/workflow/policy/workflow-lifecycle.xml"/>
+ <entry key="src/main/resources/examples/workflow-instance-met.xml" value="target/workflow/policy/workflow-instance-met.xml"/>
+ <entry key="src/main/resources/examples/timeout.workflow.xml" value="target/workflow/policy/timeout.workflow.xml"/>
+ <entry key="src/main/resources/examples/testWorkflow.workflow.xml" value="target/workflow/policy/testWorkflow.workflow.xml"/>
+ <entry key="src/main/resources/examples/testStatusUpdate.workflow.xml" value="target/workflow/policy/testStatusUpdate.workflow.xml"/>
+ <entry key="src/main/resources/examples/testMetError.workflow.xml" value="target/workflow/policy/testMetError.workflow.xml"/>
+ <entry key="src/main/resources/examples/testMetadataUpdate.workflow.xml" value="target/workflow/policy/testMetadataUpdate.workflow.xml"/>
+ <entry key="src/main/resources/examples/tasks.xml" value="target/workflow/policy/tasks.xml"/>
+ <entry key="src/main/resources/examples/optional.workflow.xml" value="target/workflow/policy/optional.workflow.xml"/>
+ <entry key="src/main/resources/examples/mailWorkflow.workflow.xml" value="target/workflow/policy/mailWorkflow.workflow.xml"/>
+ <entry key="src/main/resources/examples/longWorkflow.workflow.xml" value="target/workflow/policy/longWorkflow.workflow.xml"/>
+ <entry key="src/main/resources/examples/externalScript.workflow.xml" value="target/workflow/policy/externalScript.workflow.xml"/>
+ <entry key="src/main/resources/examples/events.xml" value="target/workflow/policy/events.xml"/>
+ <entry key="src/main/resources/examples/conditions.xml" value="target/workflow/policy/conditions.xml"/>
+ <entry key="src/main/resources/examples/condition.workflow.xml" value="target/workflow/policy/condition.workflow.xml"/>
+
+ <entry key="src/main/resources/examples/wengine/GranuleMaps.xml" value="target/workflow/policy/wengine/condition.workflow.xml"/>
+ <entry key="src/main/resources/examples/wengine/hello-goodbye.xml" value="target/workflow/policy/wengine/hello-goodbye.xml"/>
+ <entry key="src/main/resources/examples/wengine/wengine-lifecycle.xml" value="target/workflow/policy/wengine/wengine-lifecycle.xml"/>
+ </map>
+ </property>
+ </bean>
+</beans>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/oodt/blob/fc6311db/workflow/src/test/resources/config/distributed/workflow.properties
----------------------------------------------------------------------
diff --git a/workflow/src/test/resources/config/distributed/workflow.properties b/workflow/src/test/resources/config/distributed/workflow.properties
new file mode 100644
index 0000000..ced0b21
--- /dev/null
+++ b/workflow/src/test/resources/config/distributed/workflow.properties
@@ -0,0 +1,87 @@
+#
+# 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.
+#
+
+# workflow repository factory
+workflow.repo.factory = org.apache.oodt.cas.workflow.repository.XMLWorkflowRepositoryFactory
+
+# workflow engine factory
+workflow.engine.factory = org.apache.oodt.cas.workflow.engine.ThreadPoolWorkflowEngineFactory
+
+# workflow instance repository factory
+workflow.engine.instanceRep.factory = org.apache.oodt.cas.workflow.instrepo.LuceneWorkflowInstanceRepositoryFactory
+
+# engine runner factory
+workflow.wengine.runner.factory=org.apache.oodt.cas.workflow.engine.runner.AsynchronousLocalEngineRunnerFactory
+
+# thread pool workflow engine properties
+org.apache.oodt.cas.workflow.engine.queueSize=
+org.apache.oodt.cas.workflow.engine.maxPoolSize=
+org.apache.oodt.cas.workflow.engine.minPoolSize=6
+org.apache.oodt.cas.workflow.engine.threadKeepAlive.minutes=5
+org.apache.oodt.cas.workflow.engine.unlimitedQueue=true
+org.apache.oodt.cas.workflow.engine.preConditionWaitTime=10
+
+# set this if you want the workflow manager to submit jobs through the resource mgr
+org.apache.oodt.cas.workflow.engine.resourcemgr.url=
+
+# if you use the resource mgr submission, you can specify how many seconds the
+# workflow manager should wait inbetween checking to see if a job is complete
+org.apache.oodt.cas.workflow.engine.resourcemgr.pollingWaitTime=10
+
+# wengine properties
+# define workflow prioritizer class to use for sorting workflow tasks
+org.apache.oodt.cas.workflow.wengine.prioritizer=org.apache.oodt.cas.workflow.structs.FILOPrioritySorter
+# the default amount of time (in seconds) that the task querier waits before dispositioning processors
+org.apache.oodt.cas.workflow.wengine.taskquerier.waitSeconds=2
+
+# the maximum number of threads to be used by the asynchronous engine runner
+org.apache.oodt.cas.workflow.wengine.asynchronous.runner.num.threads=25
+
+# workflow instance repository general properties
+# default page size to page through WorkflowInstances with
+org.apache.oodt.cas.workflow.instanceRep.pageSize=20
+
+# lucene workflow instance repository properties
+org.apache.oodt.cas.workflow.instanceRep.lucene.idxPath=[WORKFLOW_HOME]/target/tmp
+
+# data source workflow instance repository properties
+org.apache.oodt.cas.workflow.instanceRep.datasource.jdbc.url=jdbc:url
+org.apache.oodt.cas.workflow.instanceRep.datasource.jdbc.user=user
+org.apache.oodt.cas.workflow.instanceRep.datasource.jdbc.pass=pass
+org.apache.oodt.cas.workflow.instanceRep.datasource.jdbc.driver=your.jdbc.Driver
+org.apache.oodt.cas.workflow.instanceRep.datasource.quoteFields=false
+
+# XML workflow repository properties
+org.apache.oodt.cas.workflow.repo.dirs=file://[WORKFLOW_HOME]/target/workflow/policy
+# uncomment the following line and set the value to true to recursively parse repository directories
+#org.apache.oodt.cas.workflow.repo.dirs.recursive=false
+
+# wengine-style packaged workflow repo properties
+org.apache.oodt.cas.workflow.wengine.packagedRepo.dir.path = /path/to/wengine/workflow/files
+
+# data source workflow repository properties
+org.apache.oodt.cas.workflow.repo.datasource.jdbc.url=jdbc:url
+org.apache.oodt.cas.workflow.repo.datasource.jdbc.user=user
+org.apache.oodt.cas.workflow.repo.datasource.jdbc.pass=pass
+org.apache.oodt.cas.workflow.repo.datasource.jdbc.driver=your.jdbc.Driver
+
+# Spring command line option and action store properties
+#org.apache.oodt.cas.cli.action.spring.config=src/main/resources/cmd-line-actions.xml
+#org.apache.oodt.cas.cli.option.spring.config=src/main/resources/cmd-line-options.xml
+
+# workflow lifecycle Manager
+org.apache.oodt.cas.workflow.lifecycle.filePath=[WORKFLOW_HOME]/target/workflow/policy/workflow-lifecycle.xml