http://git-wip-us.apache.org/repos/asf/stratos/blob/395be450/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SampleApplicationsTest.java
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SampleApplicationsTest.java
 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SampleApplicationsTest.java
new file mode 100644
index 0000000..b8653af
--- /dev/null
+++ 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SampleApplicationsTest.java
@@ -0,0 +1,419 @@
+/*
+ * 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.stratos.integration.tests.application;
+
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.application.ApplicationBean;
+import org.apache.stratos.common.beans.cartridge.CartridgeGroupBean;
+import org.apache.stratos.common.beans.cartridge.CartridgeGroupReferenceBean;
+import org.apache.stratos.common.beans.cartridge.CartridgeReferenceBean;
+import org.apache.stratos.integration.common.RestConstants;
+import org.apache.stratos.integration.tests.StratosIntegrationTest;
+import org.testng.annotations.Test;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.Assert.*;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Sample application tests with application add, .
+ */
+public class SampleApplicationsTest extends StratosIntegrationTest {
+    private static final Log log = 
LogFactory.getLog(SampleApplicationsTest.class);
+    private static final String RESOURCES_PATH = "/sample-applications-test";
+
+    @Test(timeOut = APPLICATION_TEST_TIMEOUT)
+    public void testApplication() {
+        log.info("-------------------------------Started application test 
case-------------------------------");
+        try {
+            String autoscalingPolicyId = 
"autoscaling-policy-sample-applications-test";
+
+            boolean addedScalingPolicy = restClient.addEntity(RESOURCES_PATH + 
RestConstants.AUTOSCALING_POLICIES_PATH
+                            + "/" + autoscalingPolicyId + ".json",
+                    RestConstants.AUTOSCALING_POLICIES, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(addedScalingPolicy, true);
+
+            boolean addedC1 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c1-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC1, true);
+
+            boolean addedC2 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c2-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC2, true);
+
+            boolean addedC3 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c3-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC3, true);
+
+            boolean addedG1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + 
"cartrdige-nested-sample-applications-test.json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(addedG1, true);
+
+            CartridgeGroupBean beanG1 = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(beanG1.getName(), "G1-sample-applications-test");
+
+            boolean addedN1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            
"network-partition-sample-applications-test-1.json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(addedN1, true);
+
+            boolean addedN2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            
"network-partition-sample-applications-test-2.json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(addedN2, true);
+
+            boolean addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
+                            "deployment-policy-sample-applications-test.json",
+                    RestConstants.DEPLOYMENT_POLICIES, 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(addedDep, true);
+
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATIONS_PATH + "/" +
+                            "g-sc-G123-1-sample-applications-test.json", 
RestConstants.APPLICATIONS,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(added, true);
+
+            ApplicationBean bean = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    "g-sc-G123-1-sample-applications-test", 
ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
+            assertEquals(bean.getApplicationId(), 
"g-sc-G123-1-sample-applications-test");
+
+            CartridgeGroupReferenceBean group1 = 
bean.getComponents().getGroups().get(0);
+            CartridgeGroupReferenceBean group2 = group1.getGroups().get(0);
+            CartridgeGroupReferenceBean group3 = group2.getGroups().get(0);
+            CartridgeReferenceBean c1 = group1.getCartridges().get(0);
+            CartridgeReferenceBean c2 = group2.getCartridges().get(0);
+            CartridgeReferenceBean c3 = group3.getCartridges().get(0);
+
+            assertEquals(group1.getName(), "G1-sample-applications-test");
+            assertEquals(group1.getAlias(), "group1-sample-applications-test");
+            assertEquals(group1.getGroupMaxInstances(), 1);
+            assertEquals(group1.getGroupMinInstances(), 1);
+
+            assertEquals(c1.getType(), "c1-sample-applications-test");
+            assertEquals(c1.getCartridgeMin(), 1);
+            assertEquals(c1.getCartridgeMax(), 2);
+
+            assertEquals(group2.getAlias(), "group2-sample-applications-test");
+            assertEquals(group2.getName(), "G2-sample-applications-test");
+            assertEquals(group2.getGroupMaxInstances(), 1);
+            assertEquals(group2.getGroupMinInstances(), 1);
+
+            assertEquals(c2.getType(), "c2-sample-applications-test");
+            assertEquals(c2.getCartridgeMin(), 1);
+            assertEquals(c2.getCartridgeMax(), 2);
+
+            assertEquals(group3.getAlias(), "group3-sample-applications-test");
+            assertEquals(group3.getName(), "G3-sample-applications-test");
+            assertEquals(group3.getGroupMaxInstances(), 2);
+            assertEquals(group3.getGroupMinInstances(), 1);
+
+            assertEquals(c3.getType(), "c3-sample-applications-test");
+            assertEquals(c3.getCartridgeMin(), 1);
+            assertEquals(c3.getCartridgeMax(), 2);
+
+            boolean updated = restClient.updateEntity(RESOURCES_PATH + 
RestConstants.APPLICATIONS_PATH +
+                            "/g-sc-G123-1-sample-applications-test-v1.json",
+                    RestConstants.APPLICATIONS, 
RestConstants.APPLICATIONS_NAME);
+            assertEquals(updated, true);
+
+            ApplicationBean updatedBean = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    "g-sc-G123-1-sample-applications-test", 
ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
+
+            assertEquals(bean.getApplicationId(), 
"g-sc-G123-1-sample-applications-test");
+
+            group1 = updatedBean.getComponents().getGroups().get(0);
+            group2 = group1.getGroups().get(0);
+            group3 = group2.getGroups().get(0);
+            c1 = group1.getCartridges().get(0);
+            c2 = group2.getCartridges().get(0);
+            c3 = group3.getCartridges().get(0);
+
+            assertEquals(group1.getName(), "G1-sample-applications-test");
+            assertEquals(group1.getAlias(), "group1-sample-applications-test");
+            assertEquals(group1.getGroupMaxInstances(), 1);
+            assertEquals(group1.getGroupMinInstances(), 1);
+
+            assertEquals(c1.getType(), "c1-sample-applications-test");
+            assertEquals(c1.getCartridgeMin(), 2);
+            assertEquals(c1.getCartridgeMax(), 3);
+
+            assertEquals(group2.getAlias(), "group2-sample-applications-test");
+            assertEquals(group2.getName(), "G2-sample-applications-test");
+            assertEquals(group2.getGroupMaxInstances(), 1);
+            assertEquals(group2.getGroupMinInstances(), 1);
+
+            assertEquals(c2.getType(), "c2-sample-applications-test");
+            assertEquals(c2.getCartridgeMin(), 2);
+            assertEquals(c2.getCartridgeMax(), 4);
+
+            assertEquals(group3.getAlias(), "group3-sample-applications-test");
+            assertEquals(group3.getName(), "G3-sample-applications-test");
+            assertEquals(group3.getGroupMaxInstances(), 3);
+            assertEquals(group3.getGroupMinInstances(), 2);
+
+            assertEquals(c3.getType(), "c3-sample-applications-test");
+            assertEquals(c3.getCartridgeMin(), 2);
+            assertEquals(c3.getCartridgeMax(), 3);
+
+
+            boolean removedGroup =
+                    restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                            RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(removedGroup);
+
+            boolean removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertFalse(removedAuto);
+
+            boolean removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-1",
+                    RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertFalse(removedNet);
+
+            boolean removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-sample-applications-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertFalse(removedDep);
+
+            boolean removed =
+                    restClient.removeEntity(RestConstants.APPLICATIONS, 
"g-sc-G123-1-sample-applications-test",
+                            RestConstants.APPLICATIONS_NAME);
+            assertTrue(removed);
+
+            ApplicationBean beanRemoved = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    "g-sc-G123-1-sample-applications-test", 
ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
+            assertNull(beanRemoved);
+
+            removedGroup = 
restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(removedGroup, true);
+
+            boolean removedC1 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c1-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC1, true);
+
+            boolean removedC2 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c2-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC2, true);
+
+            boolean removedC3 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c3-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC3, true);
+
+            removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(removedAuto, true);
+
+            removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-sample-applications-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(removedDep, true);
+
+            removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedNet, true);
+
+            boolean removedN2 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-2", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedN2, true, String.format(
+                    "[Network partition] 
network-partition-sample-applications-test-2 could not be removed for 
[application] g-sc-G123-1-sample-applications-test"));
+            log.info("-------------------------------Ended application test 
case-------------------------------");
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling application test 
case", e);
+            assertTrue("An error occurred while handling application test 
case", false);
+        }
+    }
+
+    @Test(timeOut = APPLICATION_TEST_TIMEOUT)
+    public void testApplicationList() {
+        log.info("-------------------------------Started application listtest 
case-------------------------------");
+        try {
+            String autoscalingPolicyId = 
"autoscaling-policy-sample-applications-test";
+
+            boolean addedScalingPolicy = restClient.addEntity(RESOURCES_PATH + 
RestConstants.AUTOSCALING_POLICIES_PATH
+                            + "/" + autoscalingPolicyId + ".json",
+                    RestConstants.AUTOSCALING_POLICIES, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(addedScalingPolicy, true);
+
+            boolean addedC1 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c1-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC1, true);
+
+            boolean addedC2 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c2-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC2, true);
+
+            boolean addedC3 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c3-sample-applications-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC3, true);
+
+            boolean addedG1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + 
"cartrdige-nested-sample-applications-test.json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(addedG1, true);
+
+            CartridgeGroupBean beanG1 = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(beanG1.getName(), "G1-sample-applications-test");
+
+            boolean addedN1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            
"network-partition-sample-applications-test-1.json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(addedN1, true);
+
+            boolean addedN2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            
"network-partition-sample-applications-test-2.json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(addedN2, true);
+
+            boolean addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
+                            "deployment-policy-sample-applications-test.json",
+                    RestConstants.DEPLOYMENT_POLICIES, 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(addedDep, true);
+
+            String app1 = "sample-applications-test-1";
+            String app2 = "sample-applications-test-2";
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATIONS_PATH + "/" +
+                            app1 + ".json", RestConstants.APPLICATIONS,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(added, true);
+
+            added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATIONS_PATH + "/" +
+                            app2 + ".json", RestConstants.APPLICATIONS,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(added, true);
+
+            Type listType = new TypeToken<ArrayList<ApplicationBean>>() {
+            }.getType();
+
+            List<ApplicationBean> applicationList = (List<ApplicationBean>) 
restClient.
+                    listEntity(RestConstants.APPLICATIONS,
+                            listType, RestConstants.APPLICATIONS_NAME);
+            assertTrue(applicationList.size() >= 2);
+
+
+            ApplicationBean bean1 = null;
+            for (ApplicationBean applicationBean : applicationList) {
+                if (applicationBean.getApplicationId().equals(app1)) {
+                    bean1 = applicationBean;
+                }
+            }
+            assertNotNull(bean1);
+
+            ApplicationBean bean2 = null;
+            for (ApplicationBean applicationBean : applicationList) {
+                if (applicationBean.getApplicationId().equals(app2)) {
+                    bean2 = applicationBean;
+                }
+            }
+            assertNotNull(bean2);
+
+
+            boolean removed = 
restClient.removeEntity(RestConstants.APPLICATIONS, app1,
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(removed);
+
+            ApplicationBean beanRemoved = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    app1, ApplicationBean.class, 
RestConstants.APPLICATIONS_NAME);
+            assertNull(beanRemoved);
+
+            boolean removedGroup =
+                    restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                            RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(removedGroup);
+
+            boolean removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertFalse(removedAuto);
+
+            boolean removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-1",
+                    RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertFalse(removedNet);
+
+            boolean removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-sample-applications-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertFalse(removedDep);
+
+            removed = restClient.removeEntity(RestConstants.APPLICATIONS, app2,
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(removed);
+
+            beanRemoved = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    app2, ApplicationBean.class, 
RestConstants.APPLICATIONS_NAME);
+            assertNull(beanRemoved);
+
+            removedGroup = 
restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
"G1-sample-applications-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(removedGroup, true);
+
+            boolean removedC1 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c1-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC1, true);
+
+            boolean removedC2 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c2-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC2, true);
+
+            boolean removedC3 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c3-sample-applications-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC3, true);
+
+            removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(removedAuto, true);
+
+            removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-sample-applications-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(removedDep, true);
+
+            removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedNet, true);
+
+            boolean removedN2 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-sample-applications-test-2", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedN2, true, String.format(
+                    "[Network partition] 
network-partition-sample-applications-test-2 could not be removed for 
[application] g-sc-G123-1-sample-applications-test"));
+
+            log.info("-------------------------------Ended application test 
case-------------------------------");
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling application test 
case", e);
+            assertTrue("An error occurred while handling application test 
case", false);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/395be450/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SingleClusterScalingTest.java
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SingleClusterScalingTest.java
 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SingleClusterScalingTest.java
new file mode 100644
index 0000000..edf8c0c
--- /dev/null
+++ 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/application/SingleClusterScalingTest.java
@@ -0,0 +1,369 @@
+/*
+ * 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.stratos.integration.tests.application;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.application.ApplicationBean;
+import org.apache.stratos.common.beans.policy.deployment.ApplicationPolicyBean;
+import org.apache.stratos.integration.common.RestConstants;
+import org.apache.stratos.integration.common.TopologyHandler;
+import org.apache.stratos.integration.tests.StratosIntegrationTest;
+import org.apache.stratos.messaging.domain.application.Application;
+import org.apache.stratos.messaging.domain.application.ApplicationStatus;
+import org.apache.stratos.messaging.domain.application.ClusterDataHolder;
+import org.apache.stratos.messaging.domain.instance.ClusterInstance;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.Member;
+import org.apache.stratos.messaging.domain.topology.MemberStatus;
+import org.apache.stratos.messaging.domain.topology.Service;
+import 
org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
+import org.apache.stratos.messaging.message.receiver.topology.TopologyManager;
+import org.testng.annotations.Test;
+
+import java.util.Set;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * This will handle the scale-up and scale-down of a particular cluster 
bursting test cases
+ */
+public class SingleClusterScalingTest extends StratosIntegrationTest {
+    private static final Log log = 
LogFactory.getLog(SampleApplicationsTest.class);
+    private static final String RESOURCES_PATH = 
"/single-cluster-scaling-test";
+    private static final int CLUSTER_SCALE_UP_TIMEOUT = 180000;
+    private static final int CLUSTER_SCALE_DOWN_TIMEOUT = 360000;
+    private int activeInstancesAfterScaleup = 0;
+
+    @Test(timeOut = APPLICATION_TEST_TIMEOUT)
+    public void testDeployApplication() {
+        try {
+            log.info("------------------------Started application Bursting 
test case----------------------");
+            TopologyHandler topologyHandler = TopologyHandler.getInstance();
+            String autoscalingPolicyId = 
"autoscaling-policy-single-cluster-scaling-test";
+
+            boolean addedScalingPolicy = restClient.addEntity(RESOURCES_PATH + 
RestConstants.AUTOSCALING_POLICIES_PATH
+                            + "/" + autoscalingPolicyId + ".json",
+                    RestConstants.AUTOSCALING_POLICIES, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(addedScalingPolicy, true);
+
+            boolean addedC1 = restClient.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + 
"c7-single-cluster-scaling-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertEquals(addedC1, true);
+
+            boolean addedN1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            
"network-partition-single-cluster-scaling-test.json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(addedN1, true);
+
+            boolean addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
+                            
"deployment-policy-single-cluster-scaling-test.json",
+                    RestConstants.DEPLOYMENT_POLICIES, 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(addedDep, true);
+
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATIONS_PATH + "/" +
+                            "single-cluster-scaling-test.json", 
RestConstants.APPLICATIONS,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(added, true);
+
+            ApplicationBean bean = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    "single-cluster-scaling-test", ApplicationBean.class, 
RestConstants.APPLICATIONS_NAME);
+            assertEquals(bean.getApplicationId(), 
"single-cluster-scaling-test");
+
+            boolean addAppPolicy = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                            
"application-policy-single-cluster-scaling-test.json", 
RestConstants.APPLICATION_POLICIES,
+                    RestConstants.APPLICATION_POLICIES_NAME);
+            assertEquals(addAppPolicy, true);
+
+            ApplicationPolicyBean policyBean = (ApplicationPolicyBean) 
restClient.getEntity(
+                    RestConstants.APPLICATION_POLICIES,
+                    "application-policy-single-cluster-scaling-test", 
ApplicationPolicyBean.class,
+                    RestConstants.APPLICATION_POLICIES_NAME);
+
+            //deploy the application
+            String resourcePath = RestConstants.APPLICATIONS + "/" + 
"single-cluster-scaling-test" +
+                    RestConstants.APPLICATIONS_DEPLOY + "/" + 
"application-policy-single-cluster-scaling-test";
+            boolean deployed = restClient.deployEntity(resourcePath,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(deployed, true);
+
+            //Application active handling
+            topologyHandler.assertApplicationStatus(bean.getApplicationId()
+                    , ApplicationStatus.Active);
+
+            //Cluster active handling
+            topologyHandler.assertClusterActivation(bean.getApplicationId());
+
+            //Verifying whether members got created using round robin algorithm
+            assertClusterWithScalingup(bean.getApplicationId());
+
+            //assert scale-down
+            assertClusterWithScaleDown(bean.getApplicationId());
+
+            //Check whether cluster could scale-down upto the minimum
+            assertClusterScaleDownToMinimumCount(bean.getApplicationId());
+
+            boolean removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(removedAuto, false);
+
+            boolean removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-single-cluster-scaling-test",
+                    RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertEquals(removedNet, false);
+
+            boolean removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-single-cluster-scaling-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(removedDep, false);
+
+            //Un-deploying the application
+            String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + 
"single-cluster-scaling-test" +
+                    RestConstants.APPLICATIONS_UNDEPLOY;
+
+            boolean unDeployed = 
restClient.undeployEntity(resourcePathUndeploy,
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(unDeployed, true);
+
+            boolean undeploy = 
topologyHandler.assertApplicationUndeploy("single-cluster-scaling-test");
+            if (!undeploy) {
+                //Need to forcefully undeploy the application
+                log.info("Force undeployment is going to start for the 
[application] " + "single-cluster-scaling-test");
+
+                restClient.undeployEntity(RestConstants.APPLICATIONS + "/" + 
"single-cluster-scaling-test" +
+                        RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", 
RestConstants.APPLICATIONS);
+
+                boolean forceUndeployed = 
topologyHandler.assertApplicationUndeploy("single-cluster-scaling-test");
+                assertEquals(forceUndeployed, true, String.format("Forceful 
undeployment failed for the application %s",
+                        "single-cluster-scaling-test"));
+            }
+
+            boolean removed = 
restClient.removeEntity(RestConstants.APPLICATIONS, 
"single-cluster-scaling-test",
+                    RestConstants.APPLICATIONS_NAME);
+            assertEquals(removed, true);
+
+            ApplicationBean beanRemoved = (ApplicationBean) 
restClient.getEntity(RestConstants.APPLICATIONS,
+                    "single-cluster-scaling-test", ApplicationBean.class, 
RestConstants.APPLICATIONS_NAME);
+            assertEquals(beanRemoved, null);
+
+            boolean removedC1 = 
restClient.removeEntity(RestConstants.CARTRIDGES, 
"c7-single-cluster-scaling-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertEquals(removedC1, true);
+
+
+            removedAuto = 
restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, 
RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertEquals(removedAuto, true);
+
+            removedDep = 
restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-single-cluster-scaling-test", 
RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertEquals(removedDep, true);
+
+            removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-single-cluster-scaling-test", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedNet, false);
+
+
+            boolean removeAppPolicy = 
restClient.removeEntity(RestConstants.APPLICATION_POLICIES,
+                    "application-policy-single-cluster-scaling-test", 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertEquals(removeAppPolicy, true);
+
+            removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-single-cluster-scaling-test", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertEquals(removedNet, true);
+
+            log.info("-------------------------Ended application bursting test 
case-------------------------");
+
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling  application 
bursting", e);
+            assertTrue("An error occurred while handling  application 
bursting", false);
+        }
+    }
+
+    /**
+     * Assert application activation
+     *
+     * @param applicationName
+     */
+    private void assertClusterWithScalingup(String applicationName) {
+        Application application = 
ApplicationManager.getApplications().getApplication(applicationName);
+        assertNotNull(String.format("Application is not found: 
[application-id] %s",
+                applicationName), application);
+        boolean clusterScaleup = false;
+        String clusterId = null;
+        long startTime = System.currentTimeMillis();
+        while (!clusterScaleup) {
+            try {
+                Thread.sleep(1000);
+            }
+            catch (InterruptedException ignore) {
+            }
+            Set<ClusterDataHolder> clusterDataHolderSet = 
application.getClusterDataRecursively();
+            for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) {
+                String serviceName = clusterDataHolder.getServiceType();
+                clusterId = clusterDataHolder.getClusterId();
+                Service service = 
TopologyManager.getTopology().getService(serviceName);
+                assertNotNull(String.format("Service is not found: 
[application-id] %s [service] %s",
+                        applicationName, serviceName), service);
+
+                Cluster cluster = service.getCluster(clusterId);
+                assertNotNull(String.format("Cluster is not found: 
[application-id] %s [service] %s [cluster-id] %s",
+                        applicationName, serviceName, clusterId), cluster);
+                for (ClusterInstance instance : 
cluster.getInstanceIdToInstanceContextMap().values()) {
+                    int activeInstances = 0;
+                    for (Member member : cluster.getMembers()) {
+                        if 
(member.getClusterInstanceId().equals(instance.getInstanceId())) {
+                            if 
(member.getStatus().equals(MemberStatus.Active)) {
+                                activeInstances++;
+                            }
+                        }
+                    }
+
+                    clusterScaleup = activeInstances > 
clusterDataHolder.getMinInstances();
+                    if (clusterScaleup) {
+                        activeInstancesAfterScaleup = activeInstances;
+                        break;
+                    }
+                }
+                application = 
ApplicationManager.getApplications().getApplication(applicationName);
+                if ((System.currentTimeMillis() - startTime) > 
CLUSTER_SCALE_UP_TIMEOUT) {
+                    break;
+                }
+            }
+        }
+        assertEquals(true, clusterScaleup, String.format("Cluster did not get 
scaled up: [cluster-id] %s", clusterId));
+    }
+
+    /**
+     * Assert application activation
+     *
+     * @param applicationName
+     */
+    private void assertClusterWithScaleDown(String applicationName) {
+        Application application = 
ApplicationManager.getApplications().getApplication(applicationName);
+        assertNotNull(String.format("Application is not found: 
[application-id] %s",
+                applicationName), application);
+        boolean clusterScaleDown = false;
+        String clusterId = null;
+        long startTime = System.currentTimeMillis();
+        while (!clusterScaleDown) {
+            try {
+                Thread.sleep(1000);
+            }
+            catch (InterruptedException ignore) {
+            }
+            Set<ClusterDataHolder> clusterDataHolderSet = 
application.getClusterDataRecursively();
+            for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) {
+                String serviceName = clusterDataHolder.getServiceType();
+                clusterId = clusterDataHolder.getClusterId();
+                Service service = 
TopologyManager.getTopology().getService(serviceName);
+                assertNotNull(String.format("Service is not found: 
[application-id] %s [service] %s",
+                        applicationName, serviceName), service);
+
+                Cluster cluster = service.getCluster(clusterId);
+                assertNotNull(String.format("Cluster is not found: 
[application-id] %s [service] %s [cluster-id] %s",
+                        applicationName, serviceName, clusterId), cluster);
+                for (ClusterInstance instance : 
cluster.getInstanceIdToInstanceContextMap().values()) {
+                    int activeInstances = 0;
+                    for (Member member : cluster.getMembers()) {
+                        if 
(member.getClusterInstanceId().equals(instance.getInstanceId())) {
+                            if 
(member.getStatus().equals(MemberStatus.Active)) {
+                                activeInstances++;
+                            }
+                        }
+                    }
+
+                    if (activeInstances > activeInstancesAfterScaleup) {
+                        activeInstancesAfterScaleup = activeInstances;
+                    }
+
+                    clusterScaleDown = activeInstancesAfterScaleup - 1 == 
activeInstances;
+                    if (clusterScaleDown) {
+                        break;
+                    }
+
+                }
+
+                application = 
ApplicationManager.getApplications().getApplication(applicationName);
+                if ((System.currentTimeMillis() - startTime) > 
CLUSTER_SCALE_DOWN_TIMEOUT) {
+                    break;
+                }
+            }
+        }
+        assertEquals(clusterScaleDown, true,
+                String.format("Cluster did not get scaled up: [cluster-id] 
%s", clusterId));
+    }
+
+    /**
+     * Assert application activation
+     *
+     * @param applicationName
+     */
+    private void assertClusterScaleDownToMinimumCount(String applicationName) {
+        Application application = 
ApplicationManager.getApplications().getApplication(applicationName);
+        assertNotNull(String.format("Application is not found: 
[application-id] %s",
+                applicationName), application);
+        boolean clusterScaleDown = false;
+        String clusterId = null;
+        long startTime = System.currentTimeMillis();
+        while (!clusterScaleDown) {
+            try {
+                Thread.sleep(1000);
+            }
+            catch (InterruptedException ignore) {
+            }
+            Set<ClusterDataHolder> clusterDataHolderSet = 
application.getClusterDataRecursively();
+            for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) {
+                String serviceName = clusterDataHolder.getServiceType();
+                clusterId = clusterDataHolder.getClusterId();
+                Service service = 
TopologyManager.getTopology().getService(serviceName);
+                assertNotNull(String.format("Service is not found: 
[application-id] %s [service] %s",
+                        applicationName, serviceName), service);
+
+                Cluster cluster = service.getCluster(clusterId);
+                assertNotNull(String.format("Cluster is not found: 
[application-id] %s [service] %s [cluster-id] %s",
+                        applicationName, serviceName, clusterId), cluster);
+                for (ClusterInstance instance : 
cluster.getInstanceIdToInstanceContextMap().values()) {
+                    int activeInstances = 0;
+                    for (Member member : cluster.getMembers()) {
+                        if 
(member.getClusterInstanceId().equals(instance.getInstanceId())) {
+                            if 
(member.getStatus().equals(MemberStatus.Active)) {
+                                activeInstances++;
+                            }
+                        }
+                    }
+                    clusterScaleDown = activeInstances == 
clusterDataHolder.getMinInstances();
+                    if (clusterScaleDown) {
+                        break;
+                    }
+                }
+                application = 
ApplicationManager.getApplications().getApplication(applicationName);
+                if ((System.currentTimeMillis() - startTime) > 
CLUSTER_SCALE_DOWN_TIMEOUT) {
+                    break;
+                }
+            }
+        }
+        assertEquals(clusterScaleDown, true,
+                String.format("Cluster did not get scaled up: [cluster-id] 
%s", clusterId));
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/395be450/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeGroupTest.java
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeGroupTest.java
 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeGroupTest.java
new file mode 100644
index 0000000..0b0a9d1
--- /dev/null
+++ 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeGroupTest.java
@@ -0,0 +1,272 @@
+/*
+ * 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.stratos.integration.tests.group;
+
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.cartridge.CartridgeGroupBean;
+import org.apache.stratos.integration.common.RestConstants;
+import org.apache.stratos.integration.tests.StratosIntegrationTest;
+import org.testng.annotations.Test;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotNull;
+import static org.testng.AssertJUnit.*;
+
+/**
+ * Test to handle Cartridge group CRUD operations
+ */
+public class CartridgeGroupTest extends StratosIntegrationTest {
+    private static final Log log = LogFactory.getLog(CartridgeGroupTest.class);
+    private static final String RESOURCES_PATH = "/cartridge-group-test";
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testCartridgeGroup() {
+        try {
+            log.info("-------------------------Started Cartridge group test 
case-------------------------");
+
+            boolean addedC1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c4-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c4-cartridge-group-test"), addedC1);
+
+            boolean addedC2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c5-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c5-cartridge-group-test"), addedC2);
+
+            boolean addedC3 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c6-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c6-cartridge-group-test"), addedC3);
+
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + "g4-g5-g6-cartridge-group-test.json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not added: 
[cartridge-group-name] %s",
+                    "g4-g5-g6-cartridge-group-test"), added);
+
+            CartridgeGroupBean bean = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, 
"G4-cartridge-group-test",
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(bean.getName(), "G4-cartridge-group-test",
+                    String.format("Cartridge Group name did not match: 
[cartridge-group-name] %s",
+                            "g4-g5-g6-cartridge-group-test.json"));
+
+            boolean updated = restClient.updateEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + "g4-g5-g6-cartridge-group-test-v1.json",
+                    RestConstants.CARTRIDGE_GROUPS, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not updated: 
[cartridge-group-name] %s",
+                    "g4-g5-g6-cartridge-group-test"), updated);
+
+            CartridgeGroupBean updatedBean = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, 
"G4-cartridge-group-test",
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(updatedBean.getName(), "G4-cartridge-group-test",
+                    String.format("Updated Cartridge Group didn't match: 
[cartridge-group-name] %s",
+                            "g4-g5-g6-cartridge-group-test"));
+
+            boolean removedC1 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c4-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                    "cartridge group: [cartridge-name] %s", 
"c4-cartridge-group-test"), removedC1);
+
+            boolean removedC2 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c5-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                            "cartridge group: [cartridge-name] %s",
+                    "c5-cartridge-group-test"), removedC2);
+
+            boolean removedC3 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c6-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                            "cartridge group: [cartridge-name] %s",
+                    "c6-cartridge-group-test"), removedC3);
+
+            boolean removed = 
restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
"G4-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not removed: 
[cartridge-group-name] %s",
+                    "g4-g5-g6-cartridge-group-test"), removed);
+
+            CartridgeGroupBean beanRemoved = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, 
"G4-cartridge-group-test",
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(beanRemoved, null,
+                    String.format("Cartridge Group did not removed completely: 
[cartridge-group-name] %s",
+                            "g4-g5-g6-cartridge-group-test"));
+
+            removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c4-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c4-cartridge-group-test"), removedC1);
+
+            removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c5-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c5-cartridge-group-test"), removedC2);
+
+            removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c6-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c6-cartridge-group-test"), removedC3);
+
+            log.info("-------------------------Ended Cartridge group test 
case-------------------------");
+
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling Cartridge group test 
case", e);
+            assertFalse("An error occurred while handling Cartridge group test 
case", false);
+        }
+    }
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testCartridgeGroupList() {
+        try {
+            log.info("-------------------------Started Cartridge group list 
test case-------------------------");
+
+            boolean addedC1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c4-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c4-cartridge-group-test"), addedC1);
+
+            boolean addedC2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c5-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c5-cartridge-group-test"), addedC2);
+
+            boolean addedC3 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH +
+                            "/" + "c6-cartridge-group-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(String.format("Cartridge did not added: 
[cartridge-name] %s",
+                    "c6-cartridge-group-test"), addedC3);
+
+            String group1 = "group-1-cartridge-group-test";
+            String group2 = "group-2-cartridge-group-test";
+
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + group1 + ".json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not added: 
[cartridge-group-name] %s",
+                    group1), added);
+
+            added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + group2 + ".json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not added: 
[cartridge-group-name] %s",
+                    group1), added);
+
+            Type listType = new TypeToken<ArrayList<CartridgeGroupBean>>() {
+            }.getType();
+
+            List<CartridgeGroupBean> cartridgeGroupList = 
(List<CartridgeGroupBean>) restClient.
+                    listEntity(RestConstants.CARTRIDGE_GROUPS,
+                            listType, RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(cartridgeGroupList.size() >= 2);
+
+            CartridgeGroupBean bean1 = null;
+            for (CartridgeGroupBean cartridgeGroupBean : cartridgeGroupList) {
+                if (cartridgeGroupBean.getName().equals(group1)) {
+                    bean1 = cartridgeGroupBean;
+                }
+            }
+            assertNotNull(bean1);
+
+            CartridgeGroupBean bean2 = null;
+            for (CartridgeGroupBean cartridgeGroupBean : cartridgeGroupList) {
+                if (cartridgeGroupBean.getName().equals(group2)) {
+                    bean2 = cartridgeGroupBean;
+                }
+            }
+            assertNotNull(bean2);
+
+            boolean removed = 
restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, group1,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not removed: 
[cartridge-group-name] %s",
+                    group1), removed);
+
+            CartridgeGroupBean beanRemoved = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, group1,
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertNull(String.format("Cartridge Group did not removed 
completely: " +
+                            "[cartridge-group-name] %s",
+                    group1), beanRemoved);
+
+            boolean removedC1 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c4-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                    "cartridge group: [cartridge-name] %s", 
"c4-cartridge-group-test"), removedC1);
+
+            boolean removedC2 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c5-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                            "cartridge group: [cartridge-name] %s",
+                    "c5-cartridge-group-test"), removedC2);
+
+            boolean removedC3 = 
restClient.removeEntity(RestConstants.CARTRIDGES, "c6-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(String.format("Cartridge can be removed while it is 
used in " +
+                            "cartridge group: [cartridge-name] %s",
+                    "c6-cartridge-group-test"), removedC3);
+
+            removed = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, 
group2,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge Group did not removed: 
[cartridge-group-name] %s",
+                    group2), removed);
+
+            beanRemoved = (CartridgeGroupBean) restClient.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, group2,
+                            CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertNull(String.format("Cartridge Group did not removed 
completely: " +
+                            "[cartridge-group-name] %s",
+                    group2), beanRemoved);
+
+            removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c4-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c4-cartridge-group-test"), removedC1);
+
+            removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c5-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c5-cartridge-group-test"), removedC2);
+
+            removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, 
"c6-cartridge-group-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(String.format("Cartridge can not be removed : 
[cartridge-name] %s",
+                    "c6-cartridge-group-test"), removedC3);
+
+            log.info("-------------------------Ended Cartridge group list test 
case-------------------------");
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling Cartridge list group 
test case", e);
+            assertFalse("An error occurred while handling Cartridge list group 
test case", false);
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/395be450/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeTest.java
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeTest.java
 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeTest.java
new file mode 100644
index 0000000..5c3db3d
--- /dev/null
+++ 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/group/CartridgeTest.java
@@ -0,0 +1,203 @@
+/*
+ * 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.stratos.integration.tests.group;
+
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.PropertyBean;
+import org.apache.stratos.common.beans.cartridge.CartridgeBean;
+import org.apache.stratos.integration.common.RestConstants;
+import org.apache.stratos.integration.tests.StratosIntegrationTest;
+import org.testng.annotations.Test;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNull;
+import static org.testng.AssertJUnit.assertNotNull;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Test to handle Cartridge CRUD operations
+ */
+public class CartridgeTest extends StratosIntegrationTest {
+    private static final Log log = LogFactory.getLog(CartridgeTest.class);
+    private static final String RESOURCES_PATH = "/cartridge-test";
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testCartridge() {
+        log.info("--------------------Started Cartridge test 
case-----------------------------");
+
+        try {
+            String cartridgeType = "c0-cartridge-test";
+            boolean added = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" +
+                            cartridgeType + ".json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(added);
+            CartridgeBean bean = (CartridgeBean) restClient.
+                    getEntity(RestConstants.CARTRIDGES, cartridgeType,
+                            CartridgeBean.class, 
RestConstants.CARTRIDGES_NAME);
+            assertEquals(bean.getCategory(), "Application");
+            assertEquals(bean.getHost(), "qmog.cisco.com");
+            for (PropertyBean property : bean.getProperty()) {
+                if (property.getName().equals("payload_parameter.CEP_IP")) {
+                    assertEquals(property.getValue(), "octl.qmog.cisco.com");
+                } else if 
(property.getName().equals("payload_parameter.CEP_ADMIN_PASSWORD")) {
+                    assertEquals(property.getValue(), "admin");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_IP")) {
+                    assertEquals(property.getValue(), "octl.qmog.cisco.com");
+                } else if 
(property.getName().equals("payload_parameter.QTCM_NETWORK_COUNT")) {
+                    assertEquals(property.getValue(), "1");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_ADMIN_PASSWORD"))
 {
+                    assertEquals(property.getValue(), "admin");
+                } else if 
(property.getName().equals("payload_parameter.QTCM_DNS_SEGMENT")) {
+                    assertEquals(property.getValue(), "test");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_SECURE_PORT")) {
+                    assertEquals(property.getValue(), "7711");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_PORT")) {
+                    assertEquals(property.getValue(), "7611");
+                } else if 
(property.getName().equals("payload_parameter.CEP_PORT")) {
+                    assertEquals(property.getValue(), "7611");
+                } else if 
(property.getName().equals("payload_parameter.MB_PORT")) {
+                    assertEquals(property.getValue(), "61616");
+                }
+            }
+
+
+            boolean updated = restClient.updateEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" +
+                            cartridgeType + "-v1.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(updated);
+            CartridgeBean updatedBean = (CartridgeBean) restClient.
+                    getEntity(RestConstants.CARTRIDGES, cartridgeType,
+                            CartridgeBean.class, 
RestConstants.CARTRIDGES_NAME);
+            assertEquals(updatedBean.getType(), "c0-cartridge-test");
+            assertEquals(updatedBean.getCategory(), "Data");
+            assertEquals(updatedBean.getHost(), "qmog.cisco.com12");
+            for (PropertyBean property : updatedBean.getProperty()) {
+                if (property.getName().equals("payload_parameter.CEP_IP")) {
+                    assertEquals(property.getValue(), 
"octl.qmog.cisco.com123");
+                } else if 
(property.getName().equals("payload_parameter.CEP_ADMIN_PASSWORD")) {
+                    assertEquals(property.getValue(), "admin123");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_IP")) {
+                    assertEquals(property.getValue(), 
"octl.qmog.cisco.com123");
+                } else if 
(property.getName().equals("payload_parameter.QTCM_NETWORK_COUNT")) {
+                    assertEquals(property.getValue(), "3");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_ADMIN_PASSWORD"))
 {
+                    assertEquals(property.getValue(), "admin123");
+                } else if 
(property.getName().equals("payload_parameter.QTCM_DNS_SEGMENT")) {
+                    assertEquals(property.getValue(), "test123");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_SECURE_PORT")) {
+                    assertEquals(property.getValue(), "7712");
+                } else if 
(property.getName().equals("payload_parameter.MONITORING_SERVER_PORT")) {
+                    assertEquals(property.getValue(), "7612");
+                } else if 
(property.getName().equals("payload_parameter.CEP_PORT")) {
+                    assertEquals(property.getValue(), "7612");
+                } else if 
(property.getName().equals("payload_parameter.MB_PORT")) {
+                    assertEquals(property.getValue(), "61617");
+                }
+            }
+
+            boolean removed = 
restClient.removeEntity(RestConstants.CARTRIDGES, cartridgeType,
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removed);
+
+            CartridgeBean beanRemoved = (CartridgeBean) restClient.
+                    getEntity(RestConstants.CARTRIDGES, cartridgeType,
+                            CartridgeBean.class, 
RestConstants.CARTRIDGES_NAME);
+            assertNull(beanRemoved);
+
+            log.info("---------------------------Ended Cartridge test 
case-------------------------");
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling 
RESTConstants.CARTRIDGES_PATH", e);
+            assertTrue("An error occurred while handling 
RESTConstants.CARTRIDGES_PATH", false);
+        }
+    }
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testCartridgeList() {
+        log.info("--------------------Started Cartridge list test 
case-----------------------------");
+
+        try {
+            String cartridgeType1 = "c1-cartridge-test";
+            String cartridgeType2 = "c2-cartridge-test";
+            boolean added1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" +
+                            cartridgeType1 + ".json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(added1);
+
+            boolean added2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" +
+                            cartridgeType2 + ".json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(added2);
+
+            Type listType = new TypeToken<ArrayList<CartridgeBean>>() {
+            }.getType();
+
+            List<CartridgeBean> cartridgeList = (List<CartridgeBean>) 
restClient.listEntity(RestConstants.CARTRIDGES,
+                    listType, RestConstants.CARTRIDGES_NAME);
+            assertTrue(cartridgeList.size() >= 2);
+
+            CartridgeBean bean1 = null;
+            for (CartridgeBean cartridgeBean : cartridgeList) {
+                if (cartridgeBean.getType().equals(cartridgeType1)) {
+                    bean1 = cartridgeBean;
+                }
+            }
+            assertNotNull(bean1);
+
+            CartridgeBean bean2 = null;
+            for (CartridgeBean cartridgeBean : cartridgeList) {
+                if (cartridgeBean.getType().equals(cartridgeType1)) {
+                    bean2 = cartridgeBean;
+                }
+            }
+            assertNotNull(bean2);
+
+            boolean removed = 
restClient.removeEntity(RestConstants.CARTRIDGES, cartridgeType1,
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removed);
+
+            CartridgeBean beanRemoved = (CartridgeBean) restClient.
+                    getEntity(RestConstants.CARTRIDGES, cartridgeType1,
+                            CartridgeBean.class, 
RestConstants.CARTRIDGES_NAME);
+            assertEquals(beanRemoved, null);
+
+            removed = restClient.removeEntity(RestConstants.CARTRIDGES, 
cartridgeType2,
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removed);
+
+            beanRemoved = (CartridgeBean) restClient.
+                    getEntity(RestConstants.CARTRIDGES, cartridgeType2,
+                            CartridgeBean.class, 
RestConstants.CARTRIDGES_NAME);
+            assertNull(beanRemoved);
+
+            log.info("---------------------------Ended Cartridge list test 
case-------------------------");
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling Cartridges list", e);
+            assertTrue("An error occurred while handling Cartridges list", 
false);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/395be450/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/policies/ApplicationPolicyTest.java
----------------------------------------------------------------------
diff --git 
a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/policies/ApplicationPolicyTest.java
 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/policies/ApplicationPolicyTest.java
new file mode 100644
index 0000000..08d2a7a
--- /dev/null
+++ 
b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/policies/ApplicationPolicyTest.java
@@ -0,0 +1,243 @@
+/*
+ * 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.stratos.integration.tests.policies;
+
+import com.google.gson.reflect.TypeToken;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.common.beans.PropertyBean;
+import org.apache.stratos.common.beans.partition.NetworkPartitionBean;
+import org.apache.stratos.common.beans.policy.deployment.ApplicationPolicyBean;
+import org.apache.stratos.integration.common.RestConstants;
+import org.apache.stratos.integration.tests.StratosIntegrationTest;
+import org.testng.annotations.Test;
+
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.List;
+
+import static org.testng.Assert.*;
+import static org.testng.AssertJUnit.assertFalse;
+import static org.testng.AssertJUnit.assertTrue;
+
+/**
+ * Test to handle Network partition CRUD operations
+ */
+public class ApplicationPolicyTest extends StratosIntegrationTest {
+    private static final Log log = 
LogFactory.getLog(ApplicationPolicyTest.class);
+    private static final String RESOURCES_PATH = "/application-policy-test";
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testApplicationPolicy() {
+        try {
+            String applicationPolicyId = 
"application-policy-application-policy-test";
+            log.info("-------------------------Started Application policy test 
case-------------------------");
+
+            boolean addedN1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            "network-partition-application-policy-test-1" + 
".json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(addedN1);
+
+            boolean addedN2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            "network-partition-application-policy-test-2" + 
".json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(addedN2);
+
+            boolean addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                            applicationPolicyId + ".json",
+                    RestConstants.APPLICATION_POLICIES, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(addedDep);
+
+            ApplicationPolicyBean bean = (ApplicationPolicyBean) restClient.
+                    getEntity(RestConstants.APPLICATION_POLICIES, 
applicationPolicyId,
+                            ApplicationPolicyBean.class, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertEquals(bean.getId(), applicationPolicyId);
+            assertEquals(bean.getAlgorithm(), "one-after-another",
+                    String.format("The expected algorithm %s is not found in 
%s", "one-after-another",
+                            applicationPolicyId));
+            assertEquals(bean.getId(), applicationPolicyId,
+                    String.format("The expected id %s is not found", 
applicationPolicyId));
+            assertEquals(bean.getNetworkPartitions().length, 2,
+                    String.format("The expected networkpartitions size %s is 
not found in %s", 2, applicationPolicyId));
+            assertEquals(bean.getNetworkPartitions()[0], 
"network-partition-application-policy-test-1",
+                    String.format("The first network partition is not %s in 
%s",
+                            "network-partition-application-policy-test-1", 
applicationPolicyId));
+            assertEquals(bean.getNetworkPartitions()[1], 
"network-partition-application-policy-test-2",
+                    String.format("The Second network partition is not %s in 
%s",
+                            "network-partition-application-policy-test-2", 
applicationPolicyId));
+            boolean algoFound = false;
+            for (PropertyBean propertyBean : bean.getProperties()) {
+                if (propertyBean.getName().equals("networkPartitionGroups")) {
+                    assertEquals(propertyBean.getValue(),
+                            
"network-partition-application-policy-test-1,network-partition-application-policy-test-2",
+                            String.format("The networkPartitionGroups 
algorithm %s is not found in %s",
+                                    
"network-partition-application-policy-test-1, 
network-partition-application-policy-test-2",
+                                    applicationPolicyId));
+                    algoFound = true;
+
+                }
+            }
+            if (!algoFound) {
+                assertNull(String.format("The networkPartitionGroups property 
is not found in %s",
+                        applicationPolicyId));
+            }
+
+            boolean removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertFalse(removedNet);
+
+            boolean removedDep = 
restClient.removeEntity(RestConstants.APPLICATION_POLICIES,
+                    applicationPolicyId, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(removedDep);
+
+            ApplicationPolicyBean beanRemovedDep = (ApplicationPolicyBean) 
restClient.
+                    getEntity(RestConstants.APPLICATION_POLICIES, 
applicationPolicyId,
+                            ApplicationPolicyBean.class, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertNull(beanRemovedDep);
+
+            boolean removedN1 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(removedN1);
+
+            NetworkPartitionBean beanRemovedN1 = (NetworkPartitionBean) 
restClient.
+                    getEntity(RestConstants.NETWORK_PARTITIONS, 
"network-partition-application-policy-test-1",
+                            NetworkPartitionBean.class, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertNull(beanRemovedN1);
+
+            boolean removedN2 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-2", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(removedN2);
+
+            NetworkPartitionBean beanRemovedN2 = (NetworkPartitionBean) 
restClient.
+                    getEntity(RestConstants.NETWORK_PARTITIONS, 
"network-partition-application-policy-test-2",
+                            NetworkPartitionBean.class, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertNull(beanRemovedN2);
+
+            log.info("-------------------------Ended deployment policy test 
case-------------------------");
+
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling deployment policy", e);
+            assertTrue("An error occurred while handling deployment policy", 
false);
+        }
+    }
+
+    @Test(timeOut = GLOBAL_TEST_TIMEOUT)
+    public void testApplicationPolicyList() {
+        try {
+            String applicationPolicyId1 = 
"application-policy-application-policy-test-1";
+            String applicationPolicyId2 = 
"application-policy-application-policy-test-2";
+            log.info("-------------------------Started Application policy list 
test case-------------------------");
+
+            boolean addedN1 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            "network-partition-application-policy-test-1" + 
".json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(addedN1);
+
+            boolean addedN2 = restClient.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            "network-partition-application-policy-test-2" + 
".json",
+                    RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(addedN2);
+
+            boolean addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                            applicationPolicyId1 + ".json",
+                    RestConstants.APPLICATION_POLICIES, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(addedDep);
+
+            addedDep = restClient.addEntity(RESOURCES_PATH + 
RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                            applicationPolicyId2 + ".json",
+                    RestConstants.APPLICATION_POLICIES, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(addedDep);
+
+            Type listType = new TypeToken<ArrayList<ApplicationPolicyBean>>() {
+            }.getType();
+
+            List<ApplicationPolicyBean> applicationPolicyList = 
(List<ApplicationPolicyBean>) restClient.
+                    listEntity(RestConstants.APPLICATION_POLICIES,
+                            listType, RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(applicationPolicyList.size() >= 2);
+
+            ApplicationPolicyBean bean1 = null;
+            for (ApplicationPolicyBean applicationPolicyBean : 
applicationPolicyList) {
+                if 
(applicationPolicyBean.getId().equals(applicationPolicyId1)) {
+                    bean1 = applicationPolicyBean;
+                }
+            }
+            assertNotNull(bean1);
+
+            ApplicationPolicyBean bean2 = null;
+            for (ApplicationPolicyBean applicationPolicyBean : 
applicationPolicyList) {
+                if 
(applicationPolicyBean.getId().equals(applicationPolicyId2)) {
+                    bean2 = applicationPolicyBean;
+                }
+            }
+            assertNotNull(bean2);
+
+            boolean removedDep = 
restClient.removeEntity(RestConstants.APPLICATION_POLICIES,
+                    applicationPolicyId1, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(removedDep);
+
+            ApplicationPolicyBean beanRemovedDep = (ApplicationPolicyBean) 
restClient.
+                    getEntity(RestConstants.APPLICATION_POLICIES, 
applicationPolicyId1,
+                            ApplicationPolicyBean.class, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertNull(beanRemovedDep);
+
+            boolean removedNet = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertFalse(removedNet);
+
+            removedDep = 
restClient.removeEntity(RestConstants.APPLICATION_POLICIES,
+                    applicationPolicyId2, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(removedDep);
+
+            beanRemovedDep = (ApplicationPolicyBean) restClient.
+                    getEntity(RestConstants.APPLICATION_POLICIES, 
applicationPolicyId2,
+                            ApplicationPolicyBean.class, 
RestConstants.APPLICATION_POLICIES_NAME);
+            assertNull(beanRemovedDep);
+
+            boolean removedN1 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-1", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(removedN1);
+
+            NetworkPartitionBean beanRemovedN1 = (NetworkPartitionBean) 
restClient.
+                    getEntity(RestConstants.NETWORK_PARTITIONS, 
"network-partition-application-policy-test-1",
+                            NetworkPartitionBean.class, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertNull(beanRemovedN1);
+
+            boolean removedN2 = 
restClient.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-application-policy-test-2", 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(removedN2);
+
+            NetworkPartitionBean beanRemovedN2 = (NetworkPartitionBean) 
restClient.
+                    getEntity(RestConstants.NETWORK_PARTITIONS, 
"network-partition-application-policy-test-2",
+                            NetworkPartitionBean.class, 
RestConstants.NETWORK_PARTITIONS_NAME);
+            assertNull(beanRemovedN2);
+
+            log.info("-------------------------Ended deployment policy test 
case-------------------------");
+
+        }
+        catch (Exception e) {
+            log.error("An error occurred while handling deployment policy", e);
+            assertTrue("An error occurred while handling deployment policy", 
false);
+        }
+    }
+}
\ No newline at end of file

Reply via email to