oodt-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mattm...@apache.org
Subject [11/52] [abbrv] oodt git commit: Created test cases for distributed configuration manager and publisher
Date Wed, 30 Aug 2017 16:39:40 GMT
http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/cmd-line-actions.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/cmd-line-actions.xml b/config/src/main/resources/examples/resmgr/cmd-line-actions.xml
new file mode 100755
index 0000000..04919e9
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/cmd-line-actions.xml
@@ -0,0 +1,92 @@
+<?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.
+
+  Author: bfoster (Brian Foster)
+-->
+<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="addNode"
+		class="org.apache.oodt.cas.resource.cli.action.AddNodeCliAction">
+		<property name="description" value="Adds a ResourceNode" />
+	</bean>
+	<bean id="addNodeToQueue"
+		class="org.apache.oodt.cas.resource.cli.action.AddNodeToQueueCliAction">
+		<property name="description" value="Adds a ResourceNode to a Queue" />
+	</bean>
+	<bean id="addQueue"
+		class="org.apache.oodt.cas.resource.cli.action.AddQueueCliAction">
+		<property name="description" value="Adds a queue" />
+	</bean>
+	<bean id="getExecNode"
+		class="org.apache.oodt.cas.resource.cli.action.GetExecNodeCliAction">
+		<property name="description" value="Get execution node for a job" />
+	</bean>
+	<bean id="getJobInfo"
+		class="org.apache.oodt.cas.resource.cli.action.GetJobInfoCliAction">
+		<property name="description" value="Gets information about a job" />
+	</bean>
+	<bean id="getNodeById"
+		class="org.apache.oodt.cas.resource.cli.action.GetNodeByIdCliAction">
+		<property name="description" value="Gets information about a node" />
+	</bean>
+	<bean id="getNodeLoad"
+		class="org.apache.oodt.cas.resource.cli.action.GetNodeLoadCliAction">
+		<property name="description" value="Gets the current job load of a node" />
+	</bean>
+	<bean id="getNodes"
+		class="org.apache.oodt.cas.resource.cli.action.GetNodesCliAction">
+		<property name="description" value="Gets a list of managed nodes" />
+	</bean>
+	<bean id="getNodesInQueue"
+		class="org.apache.oodt.cas.resource.cli.action.GetNodesInQueueCliAction">
+		<property name="description"
+			value="Gets list of nodes which belong to given queue" />
+	</bean>
+	<bean id="getQueues"
+		class="org.apache.oodt.cas.resource.cli.action.GetQueuesCliAction">
+		<property name="description" value="Gets list of queues" />
+	</bean>
+	<bean id="getQueuesWithNode"
+		class="org.apache.oodt.cas.resource.cli.action.GetQueuesWithNodeCliAction">
+		<property name="description" value="Gets list of queues which contain given node" />
+	</bean>
+	<bean id="kill" class="org.apache.oodt.cas.resource.cli.action.KillCliAction">
+		<property name="description" value="Kills a job" />
+	</bean>
+	<bean id="removeNode"
+		class="org.apache.oodt.cas.resource.cli.action.RemoveNodeCliAction">
+		<property name="description" value="Removes given node from managed nodes" />
+	</bean>
+	<bean id="removeNodeFromQueue"
+		class="org.apache.oodt.cas.resource.cli.action.RemoveNodeFromQueueCliAction">
+		<property name="description" value="Removes given node from given queue" />
+	</bean>
+	<bean id="removeQueue"
+		class="org.apache.oodt.cas.resource.cli.action.RemoveQueueCliAction">
+		<property name="description" value="Removes a queue" />
+	</bean>
+	<bean id="setNodeCapacity"
+		class="org.apache.oodt.cas.resource.cli.action.SetNodeCapacityCliAction">
+		<property name="description" value="Changes a nodes capacity" />
+	</bean>
+	<bean id="submitJob"
+		class="org.apache.oodt.cas.resource.cli.action.SubmitJobCliAction">
+		<property name="description" value="Submits a job for execution" />
+	</bean>
+</beans>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/cmd-line-options.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/cmd-line-options.xml b/config/src/main/resources/examples/resmgr/cmd-line-options.xml
new file mode 100755
index 0000000..a7a1fde
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/cmd-line-options.xml
@@ -0,0 +1,601 @@
+<?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.
+
+  Author: bfoster (Brian Foster)
+-->
+<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="url" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="u" />
+		<property name="longOption" value="url" />
+		<property name="description" value="Resource Manager URL" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="url" />
+		<property name="required" value="true" />
+		<property name="handler">
+			<bean
+				class="org.apache.oodt.cas.cli.option.handler.SetJavaPropertiesHandler">
+				<property name="propertyNames">
+					<list>
+						<value>org.apache.oodt.cas.resource.url</value>
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+
+	<bean id="operation" class="org.apache.oodt.cas.cli.option.GroupCmdLineOption">
+		<property name="shortOption" value="op" />
+		<property name="longOption" value="operation" />
+		<property name="description"
+			value="Declare that you wish to present an operation" />
+		<property name="hasArgs" value="false" />
+		<property name="required" value="true" />
+		<property name="subOptions">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getNodeById" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getNodes" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getQueues" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="addNode" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="removeNode" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="setNodeCapacity" p:required="false" />
+        <bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+          p:option-ref="getExecNode" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="addQueue" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="removeQueue" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="addNodeToQueue" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getNodesInQueue" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getQueuesWithNode" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="removeNodeFromQueue" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getNodeLoad" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="submitJob" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="getJobInfo" p:required="false" />
+				<bean class="org.apache.oodt.cas.cli.option.GroupSubOption"
+					p:option-ref="kill" p:required="false" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetNodeById Options -->
+	<bean id="getNodeById" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="nbyid" />
+		<property name="longOption" value="getNodeById" />
+		<property name="description" value="Triggers getNodeById Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getNodeById</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodeById" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetNodes Options -->
+	<bean id="getNodes" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="nodes" />
+		<property name="longOption" value="getNodes" />
+		<property name="description" value="Triggers getNodes Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getNodes</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodes" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetQueues Options -->
+	<bean id="getQueues" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="queues" />
+		<property name="longOption" value="getQueues" />
+		<property name="description" value="Triggers getQueues Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getQueues</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getQueues" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- AddNode Options -->
+	<bean id="addNode" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="an" />
+		<property name="longOption" value="addNode" />
+		<property name="description" value="Triggers addNode Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>addNode</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNode" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<bean id="ipAddr" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="addr" />
+		<property name="longOption" value="ipAddr" />
+		<property name="description" value="Node IP Address" />
+		<property name="type" value="java.net.URL" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="ip-addr" />
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNode" 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="addNode" p:methodName="setNodeUrl" />
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+
+	<!-- RemoveNode Options -->
+	<bean id="removeNode" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="rn" />
+		<property name="longOption" value="removeNode" />
+		<property name="description" value="Triggers removeNode Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>removeNode</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeNode" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- SetNodeCapacity Options -->
+	<bean id="setNodeCapacity" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="sncap" />
+		<property name="longOption" value="setNodeCapacity" />
+		<property name="description" value="Triggers setNodeCapacity Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>setNodeCapacity</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="setNodeCapacity" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+  <!-- SetNodeCapacity Options -->
+  <bean id="getExecNode" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+    p:isSubOption="true">
+    <property name="shortOption" value="exeNode" />
+    <property name="longOption" value="getExecNode" />
+    <property name="description" value="Triggers getExecNode Action" />
+    <property name="hasArgs" value="false" />
+    <property name="staticArgs">
+      <list>
+        <value>getExecNode</value>
+      </list>
+    </property>
+    <property name="requirementRules">
+      <list>
+        <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+          p:actionName="getExecNode" p:relation="REQUIRED" />
+      </list>
+    </property>
+  </bean>
+
+	<!-- AddQueue Options -->
+	<bean id="addQueue" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="aq" />
+		<property name="longOption" value="addQueue" />
+		<property name="description" value="Triggers addQueue Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>addQueue</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- RemoveQueue Options -->
+	<bean id="removeQueue" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="rq" />
+		<property name="longOption" value="removeQueue" />
+		<property name="description" value="Triggers removeQueue Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>removeQueue</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- AddNodeToQueue Options -->
+	<bean id="addNodeToQueue" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="antq" />
+		<property name="longOption" value="addNodeToQueue" />
+		<property name="description" value="Triggers addNodeToQueue Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>addNodeToQueue</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNodeToQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetNodesInQueue Options -->
+	<bean id="getNodesInQueue" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="ninq" />
+		<property name="longOption" value="getNodesInQueue" />
+		<property name="description" value="Triggers getNodesInQueue Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getNodesInQueue</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodesInQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetQueuesWithNode Options -->
+	<bean id="getQueuesWithNode" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="qwn" />
+		<property name="longOption" value="getQueuesWithNode" />
+		<property name="description" value="Triggers getQueuesWithNode Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getQueuesWithNode</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getQueuesWithNode" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- RemoveNodeFromQueue Options -->
+	<bean id="removeNodeFromQueue" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="rnfq" />
+		<property name="longOption" value="removeNodeFromQueue" />
+		<property name="description" value="Triggers removeNodeFromQueue Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>removeNodeFromQueue</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeNodeFromQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- GetNodeLoad Options -->
+	<bean id="getNodeLoad" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="load" />
+		<property name="longOption" value="getNodeLoad" />
+		<property name="description" value="Triggers getNodeLoad Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getNodeLoad</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodeLoad" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- SubmitJob Options -->
+	<bean id="submitJob" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="submit" />
+		<property name="longOption" value="submitJob" />
+		<property name="description" value="Triggers submitJob Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>submitJob</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="submitJob" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<bean id="def" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="d" />
+		<property name="longOption" value="def" />
+		<property name="description" value="Job Definition File" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="xml-file" />
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="submitJob" 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="submitJob" p:methodName="setJobDefinitionFile" />
+					</list>
+				</property>
+			</bean>
+		</property>
+	</bean>
+
+  <bean id="nodeUrl" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+    <property name="shortOption" value="nu" />
+    <property name="longOption" value="nodeUrl" />
+    <property name="description" value="Node URL" />
+    <property name="type" value="java.net.URL" />
+    <property name="hasArgs" value="true" />
+    <property name="argsDescription" value="url" />
+    <property name="requirementRules">
+      <list>
+        <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+          p:actionName="submitJob" 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="submitJob" p:methodName="setUrl" />
+          </list>
+        </property>
+      </bean>
+    </property>
+  </bean>
+
+	<!-- GetJobInfo Options -->
+	<bean id="getJobInfo" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="info" />
+		<property name="longOption" value="getJobInfo" />
+		<property name="description" value="Triggers getJobInfo Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>getJobInfo</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getJobInfo" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- Kill Options -->
+	<bean id="kill" class="org.apache.oodt.cas.cli.option.ActionCmdLineOption"
+		p:isSubOption="true">
+		<property name="shortOption" value="k" />
+		<property name="longOption" value="kill" />
+		<property name="description" value="Triggers kill Action" />
+		<property name="hasArgs" value="false" />
+		<property name="staticArgs">
+			<list>
+				<value>kill</value>
+			</list>
+		</property>
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="kill" p:relation="REQUIRED" />
+			</list>
+		</property>
+	</bean>
+
+	<!-- Options used for multiple Actions -->
+	<bean id="nodeId" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="nid" />
+		<property name="longOption" value="nodeId" />
+		<property name="description" value="Node ID" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="node-id" />
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodeById" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNode" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeNode" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="setNodeCapacity" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNodeToQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getQueuesWithNode" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeNodeFromQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodeLoad" p:relation="REQUIRED" />
+			</list>
+		</property>
+		<property name="handler">
+			<bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler" />
+		</property>
+	</bean>
+
+	<bean id="capacity" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="cap" />
+		<property name="longOption" value="capacity" />
+		<property name="description" value="Node Capacity" />
+		<property name="type" value="int" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="capacity" />
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNode" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="setNodeCapacity" p:relation="REQUIRED" />
+			</list>
+		</property>
+		<property name="handler">
+			<bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler" />
+		</property>
+	</bean>
+
+	<bean id="queueName" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+		<property name="shortOption" value="qn" />
+		<property name="longOption" value="queueName" />
+		<property name="description" value="Queue name" />
+		<property name="hasArgs" value="true" />
+		<property name="argsDescription" value="queue-name" />
+		<property name="requirementRules">
+			<list>
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="addNodeToQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="getNodesInQueue" p:relation="REQUIRED" />
+				<bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+					p:actionName="removeNodeFromQueue" p:relation="REQUIRED" />
+			</list>
+		</property>
+		<property name="handler">
+			<bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler" />
+		</property>
+	</bean>
+
+  <bean id="jobId" class="org.apache.oodt.cas.cli.option.AdvancedCmdLineOption">
+    <property name="shortOption" value="jid" />
+    <property name="longOption" value="jobId" />
+    <property name="description" value="Job ID" />
+    <property name="hasArgs" value="true" />
+    <property name="argsDescription" value="job-id" />
+    <property name="requirementRules">
+      <list>
+        <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+          p:actionName="getJobInfo" p:relation="REQUIRED" />
+        <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+          p:actionName="getExecNode" p:relation="REQUIRED" />
+        <bean class="org.apache.oodt.cas.cli.option.require.ActionDependencyRule"
+          p:actionName="kill" p:relation="REQUIRED" />
+      </list>
+    </property>
+    <property name="handler">
+      <bean class="org.apache.oodt.cas.cli.option.handler.ApplyToActionHandler" />
+    </property>
+  </bean>
+</beans>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/jobs/exJob.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/jobs/exJob.xml b/config/src/main/resources/examples/resmgr/jobs/exJob.xml
new file mode 100755
index 0000000..bbe0def
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/jobs/exJob.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+<cas:job xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas" id="abcd"
+	name="TestJob">
+	<instanceClass
+		name="org.apache.oodt.cas.resource.examples.HelloWorldJob" />
+	<inputClass
+		name="org.apache.oodt.cas.resource.structs.NameValueJobInput">
+		<properties>
+			<property name="user.name" value="Homer!" />
+		</properties>
+	</inputClass>
+	<queue>quick</queue>
+	<load>1</load>
+</cas:job>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/jobs/exLongJob.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/jobs/exLongJob.xml b/config/src/main/resources/examples/resmgr/jobs/exLongJob.xml
new file mode 100755
index 0000000..3cbeb29
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/jobs/exLongJob.xml
@@ -0,0 +1,30 @@
+<?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.
+-->
+<cas:job xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas" id="abcd"
+	name="TestJob">
+	<instanceClass
+		name="org.apache.oodt.cas.resource.examples.LongJob" />
+	<inputClass
+		name="org.apache.oodt.cas.resource.structs.NameValueJobInput">
+		<properties>
+			<property name="wait" value="60" />
+		</properties>
+	</inputClass>
+	<queue>quick</queue>
+	<load>1</load>
+</cas:job>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/logging.properties
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/logging.properties b/config/src/main/resources/examples/resmgr/logging.properties
new file mode 100755
index 0000000..8785c8b
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/logging.properties
@@ -0,0 +1,67 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE.txt 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.    
+#
+
+# Specify the handlers to create in the root logger
+# (all loggers are children of the root logger)
+# The following creates two handlers
+handlers = java.util.logging.ConsoleHandler, java.util.logging.FileHandler
+
+# Set the default logging level for the root logger
+.level = ALL
+    
+# Set the default logging level for new ConsoleHandler instances
+java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.FileHandler.level = ALL
+        
+# Set the default formatter for new ConsoleHandler instances
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+# default file output is in user's home directory.
+java.util.logging.FileHandler.pattern = ../logs/cas_resource%g.log
+java.util.logging.FileHandler.limit = 50000
+java.util.logging.FileHandler.count = 5
+java.util.logging.FileHandler.append = true
+java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
+    
+# Set the default logging level for the subsystems
+
+# batchmgr subsystem
+org.apache.oodt.cas.resource.batchmgr.level = INFO
+
+# monitor subsystem
+org.apache.oodt.cas.resource.monitor.level = INFO
+
+# jobqueue subsystem
+org.apache.oodt.cas.resource.jobqueue.level = INFO
+
+# scheduler subsystem
+org.apache.oodt.cas.resource.scheduler.level = INFO
+
+# system subsystem
+org.apache.oodt.cas.resource.system.level = FINE
+
+# control the underlying commons-httpclient transport layer for xmlrpc 
+org.apache.commons.httpclient.level = INFO
+httpclient.wire.header.level = INFO
+httpclient.wire.level = INFO
+
+# spring framework logging
+org.springframework.beans.level = SEVERE
+org.springframework.core.level = SEVERE
+org.springframework.level = SEVERE
+org.springframework.beans.factory.level = SEVERE
+org.springframework.beans.factory.config.level = SEVERE
+org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.level = SEVERE

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/node-to-queue-mapping.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/node-to-queue-mapping.xml b/config/src/main/resources/examples/resmgr/node-to-queue-mapping.xml
new file mode 100755
index 0000000..73b0eba
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/node-to-queue-mapping.xml
@@ -0,0 +1,26 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements.  See the NOTICE.txt 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.
+-->
+<cas:node-to-queue-mapping xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
+	<node id="localhost">
+		<queues>
+			<queue name="high"/>
+			<queue name="quick"/>
+			<queue name="long"/>
+		</queues>
+	</node>	
+</cas:node-to-queue-mapping>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/nodes.xml
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/nodes.xml b/config/src/main/resources/examples/resmgr/nodes.xml
new file mode 100755
index 0000000..d3d415d
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/nodes.xml
@@ -0,0 +1,23 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one or more contributor
+license agreements.  See the NOTICE.txt 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.
+-->
+<cas:resourcenodes xmlns:cas="http://oodt.jpl.nasa.gov/1.0/cas">
+	<node nodeId="localhost" ip="http://localhost:2001" capacity="8"/>
+	<!-- EnvReplace Example 
+	<node nodeId="somehost" ip="http://somehost:[BATCH_STUB_PORT]" capacity="8" envReplace="true"/>
+	-->
+</cas:resourcenodes>

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/main/resources/examples/resmgr/resource.properties
----------------------------------------------------------------------
diff --git a/config/src/main/resources/examples/resmgr/resource.properties b/config/src/main/resources/examples/resmgr/resource.properties
new file mode 100755
index 0000000..5520c7b
--- /dev/null
+++ b/config/src/main/resources/examples/resmgr/resource.properties
@@ -0,0 +1,61 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE.txt 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.    
+#
+#
+# Properties required to configure the Resource Manager
+
+# 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
+
+# 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=[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]/policy
+
+# XML Queue Repository config properties
+org.apache.oodt.cas.resource.nodetoqueues.dirs=file://[RESMGR_HOME]/policy
+
+
+

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/test/java/org/apache/oodt/config/distributed/AbstractTestCase.java
----------------------------------------------------------------------
diff --git a/config/src/test/java/org/apache/oodt/config/distributed/AbstractTestCase.java b/config/src/test/java/org/apache/oodt/config/distributed/AbstractTestCase.java
new file mode 100644
index 0000000..5bd0651
--- /dev/null
+++ b/config/src/test/java/org/apache/oodt/config/distributed/AbstractTestCase.java
@@ -0,0 +1,49 @@
+/*
+ * 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.config.distributed;
+
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.test.TestingServer;
+import org.apache.oodt.config.distributed.utils.CuratorUtils;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+
+import static org.apache.oodt.config.Constants.Properties.ZK_CONNECT_STRING;
+
+public abstract class AbstractTestCase {
+
+    protected static TestingServer zookeeper;
+    protected static CuratorFramework client;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        zookeeper = new TestingServer();
+        zookeeper.start();
+
+        System.setProperty(ZK_CONNECT_STRING, zookeeper.getConnectString());
+
+        client = CuratorUtils.newCuratorFrameworkClient(zookeeper.getConnectString());
+        client.start();
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        client.close();
+        zookeeper.stop();
+    }
+}

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationManagerTest.java
----------------------------------------------------------------------
diff --git a/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationManagerTest.java b/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationManagerTest.java
new file mode 100644
index 0000000..5a75ff6
--- /dev/null
+++ b/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationManagerTest.java
@@ -0,0 +1,122 @@
+/*
+ * 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.config.distributed;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.oodt.config.ConfigurationManager;
+import org.apache.oodt.config.distributed.cli.DistributedConfigurationPublisher;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+
+import static org.apache.oodt.config.Constants.CONFIG_PUBLISHER_XML;
+import static org.apache.oodt.config.Constants.SEPARATOR;
+
+/**
+ * Testing the {@link DistributedConfigurationManager} whether it is downloading and storing the configuration correctly
+ * in local files
+ *
+ * @author Imesha Sudasingha
+ */
+public class DistributedConfigurationManagerTest extends AbstractTestCase {
+
+    private static List<DistributedConfigurationPublisher> publishers;
+
+    @BeforeClass
+    public static void setUp() throws Exception {
+        AbstractTestCase.setUp();
+
+        DistributedConfigurationPublisher.main(new String[]{
+                "-connectString", zookeeper.getConnectString(),
+                "-publish"
+        });
+
+        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(CONFIG_PUBLISHER_XML);
+        Map distributedConfigurationPublishers = applicationContext.getBeansOfType(DistributedConfigurationPublisher.class);
+
+        publishers = new ArrayList<>(distributedConfigurationPublishers.values().size());
+        for (Object bean : distributedConfigurationPublishers.values()) {
+            DistributedConfigurationPublisher publisher = (DistributedConfigurationPublisher) bean;
+            publishers.add(publisher);
+            ConfigurationManager configurationManager = new DistributedConfigurationManager(publisher.getComponentName());
+            configurationManager.loadConfiguration();
+        }
+    }
+
+    @Test
+    public void loadConfigurationTest() throws Exception {
+        for (DistributedConfigurationPublisher publisher : publishers) {
+            ConfigurationManager configurationManager = new DistributedConfigurationManager(publisher.getComponentName());
+            configurationManager.loadConfiguration();
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getPropertiesFiles().entrySet()) {
+                File file = new File(entry.getKey());
+                Properties properties = new Properties();
+                try (InputStream in = new FileInputStream(file)) {
+                    properties.load(in);
+                }
+
+                for (String key : properties.stringPropertyNames()) {
+                    Assert.assertEquals(properties.getProperty(key), System.getProperty(key));
+                }
+            }
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
+                String fileName = entry.getValue();
+                fileName = fileName.startsWith(SEPARATOR) ? fileName.substring(1) : fileName;
+                File file = new File(fileName);
+                Assert.assertTrue(file.exists());
+            }
+        }
+    }
+
+    @AfterClass
+    public static void tearDown() throws Exception {
+        for (DistributedConfigurationPublisher publisher : publishers) {
+            publisher.destroy();
+
+            for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
+                String fileName = entry.getValue();
+                fileName = fileName.startsWith(SEPARATOR) ? fileName.substring(1) : fileName;
+                String confDir = fileName.split(SEPARATOR)[0];
+                File dir = new File(confDir);
+                FileUtils.deleteDirectory(dir);
+            }
+        }
+
+        DistributedConfigurationPublisher.main(new String[]{
+                "-connectString", zookeeper.getConnectString(),
+                "-clear"
+        });
+
+        AbstractTestCase.tearDown();
+    }
+}

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationPublisherTest.java
----------------------------------------------------------------------
diff --git a/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationPublisherTest.java b/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationPublisherTest.java
index 21aef23..fbccbc7 100644
--- a/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationPublisherTest.java
+++ b/config/src/test/java/org/apache/oodt/config/distributed/DistributedConfigurationPublisherTest.java
@@ -17,59 +17,96 @@
 
 package org.apache.oodt.config.distributed;
 
-import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.framework.CuratorFrameworkFactory;
-import org.apache.curator.retry.RetryNTimes;
-import org.apache.curator.test.TestingServer;
+import org.apache.commons.io.FileUtils;
 import org.apache.oodt.config.distributed.cli.DistributedConfigurationPublisher;
-import org.junit.AfterClass;
 import org.junit.Assert;
-import org.junit.BeforeClass;
 import org.junit.Test;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.support.ClassPathXmlApplicationContext;
 
-import java.io.IOException;
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
-public class DistributedConfigurationPublisherTest {
+import static org.apache.oodt.config.Constants.CONFIG_PUBLISHER_XML;
 
-    private static final String DISTRIBUTED_CONFIG_PUBLISHER_SPRING_CONFIG = "etc/config-publisher.xml";
-
-    private static TestingServer zookeeper;
-    private static CuratorFramework client;
-
-    @BeforeClass
-    public static void setUp() throws Exception {
-        zookeeper = new TestingServer();
-        zookeeper.start();
-
-        client = CuratorFrameworkFactory.builder()
-                .connectString(zookeeper.getConnectString())
-                .retryPolicy(new RetryNTimes(3, 1000))
-                .build();
-        client.start();
-    }
+/**
+ * Testing the functionality of {@link DistributedConfigurationPublisher} and its CLI
+ *
+ * @author Imesha Sudasingha
+ */
+public class DistributedConfigurationPublisherTest extends AbstractTestCase{
 
     @Test
     public void publishConfigurationTest() throws Exception {
+        // Publishing configuration through CLI and verifying whether they were stored correctly
         DistributedConfigurationPublisher.main(new String[]{
                 "-connectString", zookeeper.getConnectString(),
-                "-publish"
+                "-publish",
+                "-verify"
         });
 
-        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(DISTRIBUTED_CONFIG_PUBLISHER_SPRING_CONFIG);
+        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(CONFIG_PUBLISHER_XML);
         Map distributedConfigurationPublishers = applicationContext.getBeansOfType(DistributedConfigurationPublisher.class);
 
+        List<DistributedConfigurationPublisher> publishers = new ArrayList<>(distributedConfigurationPublishers.values().size());
         for (Object bean : distributedConfigurationPublishers.values()) {
-            DistributedConfigurationPublisher publisher = (DistributedConfigurationPublisher) bean;
+            publishers.add((DistributedConfigurationPublisher) bean);
+        }
+
+        for (DistributedConfigurationPublisher publisher : publishers) {
             Assert.assertTrue(publisher.verifyPublishedConfiguration());
+
+            ZNodePaths zNodePaths = publisher.getZNodePaths();
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getPropertiesFiles().entrySet()) {
+                String zNodePath = zNodePaths.getPropertiesZNodePath(entry.getValue());
+                Assert.assertNotNull(client.checkExists().forPath(zNodePath));
+
+                String storedContent = new String(client.getData().forPath(zNodePath));
+                String fileContent = FileUtils.readFileToString(new File(entry.getKey()));
+                Assert.assertEquals(fileContent, storedContent);
+            }
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
+                String zNodePath = zNodePaths.getConfigurationZNodePath(entry.getValue());
+                Assert.assertNotNull(client.checkExists().forPath(zNodePath));
+
+                String storedContent = new String(client.getData().forPath(zNodePath));
+                String fileContent = FileUtils.readFileToString(new File(entry.getKey()));
+                Assert.assertEquals(fileContent, storedContent);
+            }
         }
-    }
 
-    @AfterClass
-    public static void tearDown() throws IOException {
-        client.close();
-        zookeeper.stop();
+        // Clearing configuration through CLI and checking whether the configuration has actually been gone
+        DistributedConfigurationPublisher.main(new String[]{
+                "-connectString", zookeeper.getConnectString(),
+                "-clear"
+        });
+
+        for (DistributedConfigurationPublisher publisher : publishers) {
+            Assert.assertFalse(publisher.verifyPublishedConfiguration());
+
+            ZNodePaths zNodePaths = publisher.getZNodePaths();
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getPropertiesFiles().entrySet()) {
+                String zNodePath = zNodePaths.getPropertiesZNodePath(entry.getValue());
+                Assert.assertNull(client.checkExists().forPath(zNodePath));
+            }
+
+            // Checking for configuration files
+            for (Map.Entry<String, String> entry : publisher.getConfigFiles().entrySet()) {
+                String zNodePath = zNodePaths.getConfigurationZNodePath(entry.getValue());
+                Assert.assertNull(client.checkExists().forPath(zNodePath));
+            }
+        }
+
+        for (DistributedConfigurationPublisher publisher : publishers) {
+            publisher.destroy();
+        }
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/oodt/blob/a973c531/config/src/test/resources/etc/config-publisher.xml
----------------------------------------------------------------------
diff --git a/config/src/test/resources/etc/config-publisher.xml b/config/src/test/resources/etc/config-publisher.xml
index 109f48f..f779f14 100644
--- a/config/src/test/resources/etc/config-publisher.xml
+++ b/config/src/test/resources/etc/config-publisher.xml
@@ -23,12 +23,17 @@
         <constructor-arg value="filemgr"/>
         <property name="propertiesFiles">
             <map key-type="java.lang.String" value-type="java.lang.String">
-                <entry key="src/main/resources/examples/filemgr.properties" value="/etc/filemgr.properties"/>
+                <entry key="src/main/resources/examples/filemgr/filemgr.properties" value="/etc/filemgr.properties"/>
             </map>
         </property>
         <property name="configFiles">
             <map key-type="java.lang.String" value-type="java.lang.String">
-                <entry key="src/main/resources/examples/mime-types.xml" value="/etc/mime-types.xml"/>
+                <entry key="src/main/resources/examples/filemgr/mime-types.xml" value="/etc/mime-types.xml"/>
+                <entry key="src/main/resources/examples/filemgr/cmd-line-actions.xml" value="/policy/cmd-line-actions.xml"/>
+                <entry key="src/main/resources/examples/filemgr/cmd-line-options.xml" value="/policy/cmd-line-options.xml"/>
+                <entry key="src/main/resources/examples/filemgr/oodt/elements.xml" value="/policy/oodt/elements.xml"/>
+                <entry key="src/main/resources/examples/filemgr/oodt/product-types.xml" value="/policy/oodt/product-types.xml"/>
+                <entry key="src/main/resources/examples/filemgr/oodt/product-type-element-map.xml" value="/policy/oodt/product-type-element-map.xml"/>
             </map>
         </property>
     </bean>
@@ -37,12 +42,18 @@
         <constructor-arg value="resmgr"/>
         <property name="propertiesFiles">
             <map key-type="java.lang.String" value-type="java.lang.String">
-                <entry key="src/main/resources/examples/filemgr.properties" value="/etc/resmgr.properties"/>
+                <entry key="src/main/resources/examples/resmgr/resource.properties" value="/etc/resource.properties"/>
+                <entry key="src/main/resources/examples/resmgr/logging.properties" value="/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/mime-types.xml" value="/etc/mime-types.xml"/>
+                <entry key="src/main/resources/examples/resmgr/cmd-line-actions.xml" value="/policy/cmd-line-actions.xml"/>
+                <entry key="src/main/resources/examples/resmgr/cmd-line-options.xml" value="/policy/cmd-line-options.xml"/>
+                <entry key="src/main/resources/examples/resmgr/nodes.xml" value="/policy/nodes.xml"/>
+                <entry key="src/main/resources/examples/resmgr/node-to-queue-mapping.xml" value="/policy/node-to-queue-mapping.xml"/>
+                <entry key="src/main/resources/examples/resmgr/jobs/exJob.xml" value="/policy/jobs/exJob.xml"/>
+                <entry key="src/main/resources/examples/resmgr/jobs/exLongJob.xml" value="/policy/jobs/exLongJob.xml"/>
             </map>
         </property>
     </bean>


Mime
View raw message