Merge the latest changes of integration test from master branch
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/7fae8a72 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/7fae8a72 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/7fae8a72 Branch: refs/heads/tenant-isolation Commit: 7fae8a72eebd6bf6bf49fec4aa1748f4680361fb Parents: 6c6f4cc Author: Gayan Gunarathne <[email protected]> Authored: Wed Aug 12 17:46:54 2015 +0530 Committer: Gayan Gunarathne <[email protected]> Committed: Wed Aug 12 17:46:54 2015 +0530 ---------------------------------------------------------------------- .../application/ApplicationUpdateTest.java | 243 ++++ .../application/GroupStartupOrderTest.java | 226 ++++ .../GroupTerminationBehaviorTest.java | 27 + .../PartitionOneAfterAnotherClusterTest.java | 298 +++++ .../PartitionRoundRobinClusterTest.java | 305 +++++ .../tests/rest/IntegrationMockClient.java | 105 ++ .../application-policy-3.json.orig | 18 + ...cation-policy-application-bursting-test.json | 18 + ...caling-policy-application-bursting-test.json | 14 + ...esb-php-group-application-bursting-test.json | 19 + .../mock/esb-application-bursting-test.json | 50 + .../mock/php-application-bursting-test.json | 51 + .../mock/tomcat-application-bursting-test.json | 53 + ...oyment-policy-application-bursting-test.json | 32 + ...k-partition-application-bursting-test-1.json | 15 + ...k-partition-application-bursting-test-2.json | 24 + ...lication-policy-application-policy-test.json | 18 + ...ork-partition-application-policy-test-1.json | 24 + ...ork-partition-application-policy-test-2.json | 15 + ...lication-policy-application-update-test.json | 18 + .../g-sc-G123-1-application-update-test-v1.json | 86 ++ ...-G123-1-application-update-test-v1.json.orig | 91 ++ .../g-sc-G123-1-application-update-test.json | 86 ++ ...oscaling-policy-application-update-test.json | 14 + ...rdige-nested-application-update-test-v1.json | 50 + ...artrdige-nested-application-update-test.json | 50 + .../mock/c1-application-update-test.json | 45 + .../mock/c2-application-update-test.json | 45 + .../mock/c3-application-update-test.json | 45 + ...yment-policy-application-update-test-v1.json | 36 + ...ployment-policy-application-update-test.json | 32 + ...-partition-application-update-test-1-v1.json | 28 + ...ork-partition-application-update-test-1.json | 15 + ...ork-partition-application-update-test-2.json | 24 + ...aling-policy-autoscaling-policy-test-v1.json | 14 + ...oscaling-policy-autoscaling-policy-test.json | 14 + .../g4-g5-g6-cartridge-group-test-v1.json | 50 + .../g4-g5-g6-cartridge-group-test.json | 50 + .../mock/c4-cartridge-group-test.json | 45 + .../mock/c5-cartridge-group-test.json | 124 +++ .../mock/c6-cartridge-group-test.json | 45 + .../cartridges/mock/c0-cartridge-test-v1.json | 124 +++ .../cartridges/mock/c0-cartridge-test.json | 124 +++ ...oyment-policy-deployment-policy-test-v1.json | 36 + ...eployment-policy-deployment-policy-test.json | 32 + ...k-partition-deployment-policy-test-1-v1.json | 28 + ...work-partition-deployment-policy-test-1.json | 15 + ...work-partition-deployment-policy-test-2.json | 24 + ...cation-policy-application-bursting-test.json | 18 + .../app-bursting-single-cartriddge-group.json | 70 ++ ...caling-policy-application-bursting-test.json | 14 + ...esb-php-group-application-bursting-test.json | 19 + .../mock/esb-application-bursting-test.json | 50 + .../mock/php-application-bursting-test.json | 51 + .../mock/tomcat-application-bursting-test.json | 53 + ...oyment-policy-application-bursting-test.json | 32 + ...k-partition-application-bursting-test-1.json | 15 + ...k-partition-application-bursting-test-2.json | 24 + .../RegionOne.json | 17 + .../application-martin.json | 100 ++ .../application-policy-1.json | 17 + .../application-s-g-c1-c2-c3-s.json | 130 +++ .../application.json | 108 ++ .../application.json.orig | 89 ++ .../startup-order-termination-behavior/c1.json | 45 + .../startup-order-termination-behavior/c2.json | 45 + .../startup-order-termination-behavior/c3.json | 45 + .../startup-order-termination-behavior/c4.json | 45 + .../startup-order-termination-behavior/c5.json | 132 +++ .../cartridge-groups-s-g-c1-c2-c3-s.json | 26 + .../cartridge-groups-working.json | 34 + .../cartridge-groups.json | 77 ++ .../cartridge-groups.json.back | 53 + .../deploy.sh | 43 + .../economy-policy.json | 15 + .../static-1.json | 17 + .../wso2carbon 2.log | 992 +++++++++++++++++ .../wso2carbon-working 2.log | 1053 ++++++++++++++++++ .../wso2carbon-working.log | 1053 ++++++++++++++++++ .../wso2carbon.log | 992 +++++++++++++++++ ...cation-policy-application-bursting-test.json | 17 + .../group-termination-behavior-test.json | 101 ++ ...caling-policy-application-bursting-test.json | 14 + ...-groups-group-termination-behavior-test.json | 58 + .../c1-group-termination-behavior-test.json | 45 + .../c2-group-termination-behavior-test.json | 45 + .../c3-group-termination-behavior-test.json | 45 + .../c4-group-termination-behavior-test.json | 45 + ...oyment-policy-termination-behavior-test.json | 22 + ...k-partition-application-bursting-test-1.json | 15 + ...ork-partition-network-partition-test-v1.json | 28 + ...etwork-partition-network-partition-test.json | 15 + ...ation-policy-partition-round-robin-test.json | 13 + .../partition-round-robin-test.json | 28 + ...aling-policy-partition-round-robin-test.json | 14 + .../mock/c7-partition-round-robin-test.json | 45 + ...yment-policy-partition-round-robin-test.json | 22 + ...rk-partition-partition-round-robin-test.json | 24 + ...ication-policy-sample-applications-test.json | 18 + ...g-sc-G123-1-sample-applications-test-v1.json | 86 ++ .../g-sc-G123-1-sample-applications-test.json | 86 ++ ...scaling-policy-sample-applications-test.json | 14 + ...dige-nested-sample-applications-test-v1.json | 50 + ...rtrdige-nested-sample-applications-test.json | 50 + .../mock/c1-sample-applications-test.json | 45 + .../mock/c2-sample-applications-test.json | 45 + .../mock/c3-sample-applications-test.json | 45 + ...ment-policy-sample-applications-test-v1.json | 36 + ...loyment-policy-sample-applications-test.json | 32 + ...partition-sample-applications-test-1-v1.json | 28 + ...rk-partition-sample-applications-test-1.json | 15 + ...rk-partition-sample-applications-test-2.json | 24 + ...tion-policy-single-cluster-scaling-test.json | 13 + .../single-cluster-scaling-test.json | 28 + ...ling-policy-single-cluster-scaling-test.json | 14 + .../mock/c7-single-cluster-scaling-test.json | 45 + ...ment-policy-single-cluster-scaling-test.json | 22 + ...k-partition-single-cluster-scaling-test.json | 24 + 118 files changed, 9735 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationUpdateTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationUpdateTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationUpdateTest.java new file mode 100644 index 0000000..c9e64b2 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationUpdateTest.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.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.cartridge.CartridgeGroupBean; +import org.apache.stratos.common.beans.policy.deployment.ApplicationPolicyBean; +import org.apache.stratos.integration.tests.RestConstants; +import org.apache.stratos.integration.tests.StratosTestServerManager; +import org.apache.stratos.integration.tests.TopologyHandler; +import org.apache.stratos.messaging.domain.application.ApplicationStatus; +import org.testng.annotations.Test; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +/** + * Sample application tests with application add, . + */ +public class ApplicationUpdateTest extends StratosTestServerManager { + private static final Log log = LogFactory.getLog(ApplicationUpdateTest.class); + private static final String RESOURCES_PATH = "/application-update-test"; + + @Test + public void testDeployApplication() { + try { + log.info("-------------------------Started application runtime update test case-------------------------"); + + String autoscalingPolicyId = "autoscaling-policy-application-update-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-application-update-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC1, true); + + boolean addedC2 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c2-application-update-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC2, true); + + boolean addedC3 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c3-application-update-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC3, true); + + boolean addedG1 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGE_GROUPS_PATH + + "/" + "cartrdige-nested-application-update-test.json", RestConstants.CARTRIDGE_GROUPS, + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(addedG1, true); + + CartridgeGroupBean beanG1 = (CartridgeGroupBean) restClient. + getEntity(RestConstants.CARTRIDGE_GROUPS, "G1-application-update-test", + CartridgeGroupBean.class, RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(beanG1.getName(), "G1-application-update-test"); + + boolean addedN1 = restClient.addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + + "network-partition-application-update-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-application-update-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-application-update-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-application-update-test.json", RestConstants.APPLICATIONS, + RestConstants.APPLICATIONS_NAME); + assertEquals(added, true); + + ApplicationBean bean = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "g-sc-G123-1-application-update-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(bean.getApplicationId(), "g-sc-G123-1-application-update-test"); + + boolean addAppPolicy = restClient.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" + + "application-policy-application-update-test.json", RestConstants.APPLICATION_POLICIES, + RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(addAppPolicy, true); + + ApplicationPolicyBean policyBean = (ApplicationPolicyBean) restClient.getEntity( + RestConstants.APPLICATION_POLICIES, + "application-policy-application-update-test", ApplicationPolicyBean.class, + RestConstants.APPLICATION_POLICIES_NAME); + + //deploy the application + String resourcePath = RestConstants.APPLICATIONS + "/" + "g-sc-G123-1-application-update-test" + + RestConstants.APPLICATIONS_DEPLOY + "/" + "application-policy-application-update-test"; + boolean deployed = restClient.deployEntity(resourcePath, + RestConstants.APPLICATIONS_NAME); + assertEquals(deployed, true); + + //Application active handling + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Active); + + //Group active handling + TopologyHandler.getInstance().assertGroupActivation(bean.getApplicationId()); + + //Cluster active handling + TopologyHandler.getInstance().assertClusterActivation(bean.getApplicationId()); + + //Updating application + boolean updated = restClient.updateEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" + + "g-sc-G123-1-application-update-test-v1.json", RestConstants.APPLICATIONS, + RestConstants.APPLICATIONS_NAME); + assertEquals(updated, true); + + TopologyHandler.getInstance().assertGroupInstanceCount(bean.getApplicationId(), "group3-application-update-test", 2); + + TopologyHandler.getInstance().assertClusterMinMemberCount(bean.getApplicationId(), 2); + + ApplicationBean updatedBean = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "g-sc-G123-1-application-update-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(updatedBean.getApplicationId(), "g-sc-G123-1-application-update-test"); + + boolean removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, "G1-application-update-test", + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(removedGroup, false); + + boolean removedAuto = restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES, + autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME); + assertEquals(removedAuto, false); + + boolean removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-update-test-1", + RestConstants.NETWORK_PARTITIONS_NAME); + //Trying to remove the used network partition + assertEquals(removedNet, false); + + boolean removedDep = restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES, + "deployment-policy-application-update-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, false); + + //Un-deploying the application + String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + "g-sc-G123-1-application-update-test" + + RestConstants.APPLICATIONS_UNDEPLOY; + + boolean unDeployed = restClient.undeployEntity(resourcePathUndeploy, + RestConstants.APPLICATIONS_NAME); + assertEquals(unDeployed, true); + + boolean undeploy = TopologyHandler.getInstance().assertApplicationUndeploy("g-sc-G123-1-application-update-test"); + if (!undeploy) { + //Need to forcefully undeploy the application + log.info("Force undeployment is going to start for the [application] " + "g-sc-G123-1-application-update-test"); + + restClient.undeployEntity(RestConstants.APPLICATIONS + "/" + "g-sc-G123-1-application-update-test" + + RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS); + + boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy("g-sc-G123-1-application-update-test"); + assertEquals(String.format("Forceful undeployment failed for the application %s", + "g-sc-G123-1-application-update-test"), forceUndeployed, true); + + } + + boolean removed = restClient.removeEntity(RestConstants.APPLICATIONS, "g-sc-G123-1-application-update-test", + RestConstants.APPLICATIONS_NAME); + assertEquals(removed, true); + + ApplicationBean beanRemoved = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "g-sc-G123-1-application-update-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(beanRemoved, null); + + removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, "G1-application-update-test", + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(removedGroup, true); + + boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, "c1-application-update-test", + RestConstants.CARTRIDGES_NAME); + assertEquals(removedC1, true); + + boolean removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, "c2-application-update-test", + RestConstants.CARTRIDGES_NAME); + assertEquals(removedC2, true); + + boolean removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, "c3-application-update-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-application-update-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-update-test-1", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, false); + + boolean removedN2 = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-update-test-2", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedN2, false); + + boolean removeAppPolicy = restClient.removeEntity(RestConstants.APPLICATION_POLICIES, + "application-policy-application-update-test", RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(removeAppPolicy, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-update-test-1", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, true); + + removedN2 = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-update-test-2", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedN2, true); + + log.info("-------------------------Ended application runtime update test case-------------------------"); + + } catch (Exception e) { + log.error("An error occurred while handling application deployment/undeployment and update", e); + assertTrue("An error occurred while handling application deployment/undeployment and update", false); + } + } + + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupStartupOrderTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupStartupOrderTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupStartupOrderTest.java new file mode 100644 index 0000000..1f3aa56 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupStartupOrderTest.java @@ -0,0 +1,226 @@ +/* + * 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.cartridge.CartridgeGroupBean; +import org.apache.stratos.common.beans.policy.deployment.ApplicationPolicyBean; +import org.apache.stratos.integration.tests.RestConstants; +import org.apache.stratos.integration.tests.StratosTestServerManager; +import org.apache.stratos.integration.tests.TopologyHandler; +import org.apache.stratos.messaging.domain.application.ApplicationStatus; +import org.testng.annotations.Test; + +import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertTrue; + +/** + * Handling the startup order of the group + */ +public class GroupStartupOrderTest extends StratosTestServerManager { + private static final Log log = LogFactory.getLog(SampleApplicationsTest.class); + private static final String RESOURCES_PATH = "/application-bursting-test"; + + @Test + public void testApplicationBusting() { + try { + log.info("-------------------------------Started application Bursting test case-------------------------------"); + + String autoscalingPolicyId = "autoscaling-policy-application-bursting-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 + "/" + "esb-application-bursting-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC1, true); + + boolean addedC2 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "php-application-bursting-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC2, true); + + boolean addedC3 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "tomcat-application-bursting-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC3, true); + + boolean addedG1 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGE_GROUPS_PATH + + "/" + "esb-php-group-application-bursting-test.json", RestConstants.CARTRIDGE_GROUPS, + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(addedG1, true); + + CartridgeGroupBean beanG1 = (CartridgeGroupBean) restClient. + getEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test", + CartridgeGroupBean.class, RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(beanG1.getName(), "esb-php-group-application-bursting-test"); + + boolean addedN1 = restClient.addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + + "network-partition-application-bursting-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-application-bursting-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-application-bursting-test.json", + RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(addedDep, true); + + boolean added = restClient.addEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" + + "app-bursting-single-cartriddge-group.json", RestConstants.APPLICATIONS, + RestConstants.APPLICATIONS_NAME); + assertEquals(added, true); + + ApplicationBean bean = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "application-bursting-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(bean.getApplicationId(), "application-bursting-test"); + + boolean addAppPolicy = restClient.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" + + "application-policy-application-bursting-test.json", RestConstants.APPLICATION_POLICIES, + RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(addAppPolicy, true); + + ApplicationPolicyBean policyBean = (ApplicationPolicyBean) restClient.getEntity( + RestConstants.APPLICATION_POLICIES, + "application-policy-application-bursting-test", ApplicationPolicyBean.class, + RestConstants.APPLICATION_POLICIES_NAME); + + //deploy the application + String resourcePath = RestConstants.APPLICATIONS + "/" + "application-bursting-test" + + RestConstants.APPLICATIONS_DEPLOY + "/" + "application-policy-application-bursting-test"; + boolean deployed = restClient.deployEntity(resourcePath, + RestConstants.APPLICATIONS_NAME); + assertEquals(deployed, true); + + //Application active handling + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Active); + + //Group active handling + TopologyHandler.getInstance().assertGroupActivation(bean.getApplicationId()); + + //Cluster active handling + TopologyHandler.getInstance().assertClusterActivation(bean.getApplicationId()); + + boolean removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test", + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(removedGroup, false); + + boolean removedAuto = restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES, + autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME); + assertEquals(removedAuto, false); + + boolean removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-bursting-test-1", + RestConstants.NETWORK_PARTITIONS_NAME); + //Trying to remove the used network partition + assertEquals(removedNet, false); + + boolean removedDep = restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES, + "deployment-policy-application-bursting-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, false); + + //Un-deploying the application + String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + "application-bursting-test" + + RestConstants.APPLICATIONS_UNDEPLOY; + + boolean unDeployed = restClient.undeployEntity(resourcePathUndeploy, + RestConstants.APPLICATIONS_NAME); + assertEquals(unDeployed, true); + + boolean undeploy = TopologyHandler.getInstance().assertApplicationUndeploy("application-bursting-test"); + if (!undeploy) { + //Need to forcefully undeploy the application + log.info("Force undeployment is going to start for the [application] " + "application-bursting-test"); + + restClient.undeployEntity(RestConstants.APPLICATIONS + "/" + "application-bursting-test" + + RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS); + + boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy("application-bursting-test"); + assertEquals(String.format("Forceful undeployment failed for the application %s", + "application-bursting-test"), forceUndeployed, true); + + } + + boolean removed = restClient.removeEntity(RestConstants.APPLICATIONS, "application-bursting-test", + RestConstants.APPLICATIONS_NAME); + assertEquals(removed, true); + + ApplicationBean beanRemoved = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "application-bursting-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(beanRemoved, null); + + removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test", + RestConstants.CARTRIDGE_GROUPS_NAME); + assertEquals(removedGroup, true); + + boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, "esb-application-bursting-test", + RestConstants.CARTRIDGES_NAME); + assertEquals(removedC1, true); + + boolean removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, "php-application-bursting-test", + RestConstants.CARTRIDGES_NAME); + assertEquals(removedC2, true); + + boolean removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, "tomcat-application-bursting-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-application-bursting-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-bursting-test-1", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, false); + + boolean removedN2 = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-bursting-test-2", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedN2, false); + + boolean removeAppPolicy = restClient.removeEntity(RestConstants.APPLICATION_POLICIES, + "application-policy-application-bursting-test", RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(removeAppPolicy, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-bursting-test-1", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, true); + + removedN2 = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-application-bursting-test-2", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedN2, 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); + } + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupTerminationBehaviorTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupTerminationBehaviorTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupTerminationBehaviorTest.java new file mode 100644 index 0000000..b86d674 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/GroupTerminationBehaviorTest.java @@ -0,0 +1,27 @@ +/* + * 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.stratos.integration.tests.StratosTestServerManager; + +/** + * Handling the termination behavior of the group + */ +public class GroupTerminationBehaviorTest extends StratosTestServerManager { +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionOneAfterAnotherClusterTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionOneAfterAnotherClusterTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionOneAfterAnotherClusterTest.java new file mode 100644 index 0000000..d8f6965 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionOneAfterAnotherClusterTest.java @@ -0,0 +1,298 @@ +/* + * 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.tests.RestConstants; +import org.apache.stratos.integration.tests.StratosTestServerManager; +import org.apache.stratos.integration.tests.TopologyHandler; +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.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.*; + +import static junit.framework.Assert.*; + +/** + * This will handle the scale-up and scale-down of a particular cluster bursting test cases + */ +public class PartitionOneAfterAnotherClusterTest extends StratosTestServerManager { + private static final Log log = LogFactory.getLog(SampleApplicationsTest.class); + private static final String RESOURCES_PATH = "/partition-round-robin-cluster-test"; + + + @Test + public void testDeployApplication() { + try { + log.info("-------------------------------Started Partition One after another test case-------------------------------"); + + String autoscalingPolicyId = "autoscaling-policy-3"; + + 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.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC1, true); + + boolean addedN1 = restClient.addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + + "network-partition-11.json", + RestConstants.NETWORK_PARTITIONS, RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(addedN1, true); + + boolean addedDep = restClient.addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" + + "deployment-policy-5.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-4.json", RestConstants.APPLICATION_POLICIES, + RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(addAppPolicy, true); + + ApplicationPolicyBean policyBean = (ApplicationPolicyBean) restClient.getEntity( + RestConstants.APPLICATION_POLICIES, + "application-policy-4", ApplicationPolicyBean.class, + RestConstants.APPLICATION_POLICIES_NAME); + + //deploy the application + String resourcePath = RestConstants.APPLICATIONS + "/" + "single-cluster-scaling-test" + + RestConstants.APPLICATIONS_DEPLOY + "/" + "application-policy-4"; + boolean deployed = restClient.deployEntity(resourcePath, + RestConstants.APPLICATIONS_NAME); + assertEquals(deployed, true); + + //Application active handling + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Active); + + //Cluster active handling + TopologyHandler.getInstance().assertClusterActivation(bean.getApplicationId()); + + //Verifying whether members got created using round robin algorithm + assertClusterWithRoundRobinAlgorithm(bean.getApplicationId()); + + //Removing one member from cluster and check for auto healing + + + boolean removedAuto = restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES, + autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME); + assertEquals(removedAuto, false); + + boolean removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-11", + RestConstants.NETWORK_PARTITIONS_NAME); + //Trying to remove the used network partition + assertEquals(removedNet, false); + + boolean removedDep = restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES, + "deployment-policy-5", 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.getInstance().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.getInstance().assertApplicationUndeploy("single-cluster-scaling-test"); + assertEquals(String.format("Forceful undeployment failed for the application %s", + "single-cluster-scaling-test"), forceUndeployed, true); + + } + + 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", + 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-5", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-11", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, false); + + + boolean removeAppPolicy = restClient.removeEntity(RestConstants.APPLICATION_POLICIES, + "application-policy-4", RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(removeAppPolicy, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-11", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, true); + + log.info("-------------------------------Ended Partition one after another 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 assertClusterWithRoundRobinAlgorithm(String applicationName) { + Application application = ApplicationManager.getApplications().getApplication(applicationName); + assertNotNull(String.format("Application is not found: [application-id] %s", + applicationName), application); + + Set<ClusterDataHolder> clusterDataHolderSet = application.getClusterDataRecursively(); + for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) { + String serviceName = clusterDataHolder.getServiceType(); + String 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()) { + List<String> partitionsUsedInMembers = new ArrayList<String>(); + Map<String, List<Long>> partitionIdToMembersMap = new HashMap<String, List<Long>>(); + for (Member member : cluster.getMembers()) { + String partitionId = member.getPartitionId(); + if (!partitionIdToMembersMap.containsKey(partitionId)) { + List<Long> members = new ArrayList<Long>(); + members.add(member.getInitTime()); + partitionIdToMembersMap.put(partitionId, members); + } else { + partitionIdToMembersMap.get(partitionId).add(member.getInitTime()); + } + if (!partitionsUsedInMembers.contains(partitionId)) { + partitionsUsedInMembers.add(partitionId); + } + } + String p1 = "network-partition-11-partition-1"; + String p2 = "network-partition-11-partition-2"; + List<Long> p1InitTime = partitionIdToMembersMap.get(p1); + Collections.sort(p1InitTime); + + List<Long> p2InitTime = partitionIdToMembersMap.get(p2); + Collections.sort(p2InitTime); + + List<Long> allInitTime = new ArrayList<Long>(); + allInitTime.addAll(p1InitTime); + allInitTime.addAll(p2InitTime); + Collections.sort(allInitTime); + + int p1Index = -1; + int p2Index = -1; + String previousPartition = null; + for (int i = 0; i < allInitTime.size(); i++) { + if (previousPartition == null) { + if (p1InitTime.get(0) == allInitTime.get(i)) { + previousPartition = p1; + p1Index++; + } else if (p2InitTime.get(0) == allInitTime.get(i)) { + previousPartition = p2; + p2Index++; + + } + } else if (previousPartition.equals(p1)) { + p2Index++; + previousPartition = p2; + assertEquals("Partition-2 doesn't not contain correct values in current " + + "iteration", allInitTime.get(i), p2InitTime.get(p2Index)); + if (p1Index >= 0) { + assertEquals("Partition-1 doesn't not contain correct values in the " + + "previous iteration", allInitTime.get(i - 1), p1InitTime.get(p1Index)); + if (p1Index + 1 <= (p1InitTime.size() - 1) && i + 1 <= (allInitTime.size() - 1)) { + assertEquals("Partition-1 doesn't not contain correct " + + "values in the next iteration", + allInitTime.get(i + 1), p1InitTime.get(p1Index + 1)); + + } + } + } else { + p1Index++; + previousPartition = p1; + assertEquals("Partition-1 doesn't not contain correct values in current " + + "iteration", allInitTime.get(i), p1InitTime.get(p1Index)); + if (p2Index >= 0) { + assertEquals("Partition-2 doesn't not contain correct values " + + "in the previous iteration", allInitTime.get(i - 1), p2InitTime.get(p2Index)); + if ((p2Index + 1) <= (p2InitTime.size() - 1) && (i + 1) <= (allInitTime.size() - 1)) { + assertEquals("Partition-2 doesn't not contain correct values " + + "in the next iteration", + allInitTime.get(i + 1), p2InitTime.get(p2Index + 1)); + } + } + } + + } + + + } + + } + + + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionRoundRobinClusterTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionRoundRobinClusterTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionRoundRobinClusterTest.java new file mode 100644 index 0000000..ab7d592 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/PartitionRoundRobinClusterTest.java @@ -0,0 +1,305 @@ +/* + * 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.tests.RestConstants; +import org.apache.stratos.integration.tests.StratosTestServerManager; +import org.apache.stratos.integration.tests.TopologyHandler; +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.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.*; + +import static junit.framework.Assert.*; + +/** + * This will handle the scale-up and scale-down of a particular cluster bursting test cases + */ +public class PartitionRoundRobinClusterTest extends StratosTestServerManager { + private static final Log log = LogFactory.getLog(SampleApplicationsTest.class); + private static final String RESOURCES_PATH = "/partition-round-robin-cluster-test"; + + + @Test + public void testDeployApplication() { + try { + log.info("-------------------------------Started application Bursting test case-------------------------------"); + + String autoscalingPolicyId = "autoscaling-policy-partition-round-robin-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-partition-round-robin-test.json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); + assertEquals(addedC1, true); + + boolean addedN1 = restClient.addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + + "network-partition-partition-round-robin-test.json", + RestConstants.NETWORK_PARTITIONS, RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(addedN1, true); + + boolean addedDep = restClient.addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" + + "deployment-policy-partition-round-robin-test.json", + RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(addedDep, true); + + boolean added = restClient.addEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" + + "partition-round-robin-test.json", RestConstants.APPLICATIONS, + RestConstants.APPLICATIONS_NAME); + assertEquals(added, true); + + ApplicationBean bean = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "partition-round-robin-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(bean.getApplicationId(), "partition-round-robin-test"); + + boolean addAppPolicy = restClient.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" + + "application-policy-partition-round-robin-test.json", RestConstants.APPLICATION_POLICIES, + RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(addAppPolicy, true); + + //deploy the application + String resourcePath = RestConstants.APPLICATIONS + "/" + "partition-round-robin-test" + + RestConstants.APPLICATIONS_DEPLOY + "/" + "application-policy-partition-round-robin-test"; + boolean deployed = restClient.deployEntity(resourcePath, + RestConstants.APPLICATIONS_NAME); + assertEquals(deployed, true); + + + //Application active handling + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Active); + + //Cluster active handling + TopologyHandler.getInstance().assertClusterActivation(bean.getApplicationId()); + + //Verifying whether members got created using round robin algorithm + assertClusterWithRoundRobinAlgorithm(bean.getApplicationId()); + + //Application in-active handling + log.info("Waiting for the faulty member detection from " + + "CEP as the statistics are stopped..."); + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Inactive); + + //Application active handling after application becomes active again + TopologyHandler.getInstance().assertApplicationStatus(bean.getApplicationId(), + ApplicationStatus.Active); + + //Cluster active handling + TopologyHandler.getInstance().assertClusterActivation(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-partition-round-robin-test", + RestConstants.NETWORK_PARTITIONS_NAME); + //Trying to remove the used network partition + assertEquals(removedNet, false); + + boolean removedDep = restClient.removeEntity(RestConstants.DEPLOYMENT_POLICIES, + "deployment-policy-partition-round-robin-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, false); + + //Un-deploying the application + String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + "partition-round-robin-test" + + RestConstants.APPLICATIONS_UNDEPLOY; + + boolean unDeployed = restClient.undeployEntity(resourcePathUndeploy, + RestConstants.APPLICATIONS_NAME); + assertEquals(unDeployed, true); + + boolean undeploy = TopologyHandler.getInstance().assertApplicationUndeploy("partition-round-robin-test"); + if (!undeploy) { + //Need to forcefully undeploy the application + log.info("Force undeployment is going to start for the [application] " + "partition-round-robin-test"); + + restClient.undeployEntity(RestConstants.APPLICATIONS + "/" + "partition-round-robin-test" + + RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS); + + boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy("partition-round-robin-test"); + assertEquals(String.format("Forceful undeployment failed for the application %s", + "partition-round-robin-test"), forceUndeployed, true); + + } + + boolean removed = restClient.removeEntity(RestConstants.APPLICATIONS, "partition-round-robin-test", + RestConstants.APPLICATIONS_NAME); + assertEquals(removed, true); + + ApplicationBean beanRemoved = (ApplicationBean) restClient.getEntity(RestConstants.APPLICATIONS, + "partition-round-robin-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME); + assertEquals(beanRemoved, null); + + boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, "c7-partition-round-robin-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-partition-round-robin-test", RestConstants.DEPLOYMENT_POLICIES_NAME); + assertEquals(removedDep, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-partition-round-robin-test", RestConstants.NETWORK_PARTITIONS_NAME); + assertEquals(removedNet, false); + + + boolean removeAppPolicy = restClient.removeEntity(RestConstants.APPLICATION_POLICIES, + "application-policy-partition-round-robin-test", RestConstants.APPLICATION_POLICIES_NAME); + assertEquals(removeAppPolicy, true); + + removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, + "network-partition-partition-round-robin-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 assertClusterWithRoundRobinAlgorithm(String applicationName) { + Application application = ApplicationManager.getApplications().getApplication(applicationName); + assertNotNull(String.format("Application is not found: [application-id] %s", + applicationName), application); + + Set<ClusterDataHolder> clusterDataHolderSet = application.getClusterDataRecursively(); + for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) { + String serviceName = clusterDataHolder.getServiceType(); + String 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()) { + List<String> partitionsUsedInMembers = new ArrayList<String>(); + Map<String, List<Long>> partitionIdToMembersMap = new HashMap<String, List<Long>>(); + for (Member member : cluster.getMembers()) { + String partitionId = member.getPartitionId(); + if (!partitionIdToMembersMap.containsKey(partitionId)) { + List<Long> members = new ArrayList<Long>(); + members.add(member.getInitTime()); + partitionIdToMembersMap.put(partitionId, members); + } else { + partitionIdToMembersMap.get(partitionId).add(member.getInitTime()); + } + if (!partitionsUsedInMembers.contains(partitionId)) { + partitionsUsedInMembers.add(partitionId); + } + } + String p1 = "network-partition-11-partition-1"; + String p2 = "network-partition-11-partition-2"; + List<Long> p1InitTime = partitionIdToMembersMap.get(p1); + Collections.sort(p1InitTime); + + List<Long> p2InitTime = partitionIdToMembersMap.get(p2); + Collections.sort(p2InitTime); + + List<Long> allInitTime = new ArrayList<Long>(); + allInitTime.addAll(p1InitTime); + allInitTime.addAll(p2InitTime); + Collections.sort(allInitTime); + + int p1Index = -1; + int p2Index = -1; + String previousPartition = null; + for (int i = 0; i < allInitTime.size(); i++) { + if (previousPartition == null) { + if (p1InitTime.get(0) == allInitTime.get(i)) { + previousPartition = p1; + p1Index++; + } else if (p2InitTime.get(0) == allInitTime.get(i)) { + previousPartition = p2; + p2Index++; + + } + } else if (previousPartition.equals(p1)) { + p2Index++; + previousPartition = p2; + assertEquals("Partition-2 doesn't not contain correct values in current " + + "iteration", allInitTime.get(i), p2InitTime.get(p2Index)); + if (p1Index >= 0) { + assertEquals("Partition-1 doesn't not contain correct values in the " + + "previous iteration", allInitTime.get(i - 1), p1InitTime.get(p1Index)); + if (p1Index + 1 <= (p1InitTime.size() - 1) && i + 1 <= (allInitTime.size() - 1)) { + assertEquals("Partition-1 doesn't not contain correct " + + "values in the next iteration", + allInitTime.get(i + 1), p1InitTime.get(p1Index + 1)); + + } + } + } else { + p1Index++; + previousPartition = p1; + assertEquals("Partition-1 doesn't not contain correct values in current " + + "iteration", allInitTime.get(i), p1InitTime.get(p1Index)); + if (p2Index >= 0) { + assertEquals("Partition-2 doesn't not contain correct values " + + "in the previous iteration", allInitTime.get(i - 1), p2InitTime.get(p2Index)); + if ((p2Index + 1) <= (p2InitTime.size() - 1) && (i + 1) <= (allInitTime.size() - 1)) { + assertEquals("Partition-2 doesn't not contain correct values " + + "in the next iteration", + allInitTime.get(i + 1), p2InitTime.get(p2Index + 1)); + } + } + } + + } + + + } + + } + + + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/rest/IntegrationMockClient.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/rest/IntegrationMockClient.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/rest/IntegrationMockClient.java new file mode 100644 index 0000000..2b094a4 --- /dev/null +++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/rest/IntegrationMockClient.java @@ -0,0 +1,105 @@ +/* + * 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.rest; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.http.client.methods.HttpDelete; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.client.utils.URIBuilder; +import org.apache.http.impl.client.DefaultHttpClient; +import org.apache.http.impl.conn.PoolingClientConnectionManager; +import org.apache.stratos.mock.iaas.client.MockIaasApiClient; +import org.apache.stratos.mock.iaas.client.rest.*; +import org.apache.stratos.mock.iaas.client.rest.HttpResponse; +import org.apache.stratos.mock.iaas.client.rest.HttpResponseHandler; +import org.apache.stratos.mock.iaas.client.rest.RestClient; +import org.apache.stratos.mock.iaas.domain.*; + +import java.net.URI; + +/** + * Mock client + */ +public class IntegrationMockClient extends MockIaasApiClient { + private static final Log log = LogFactory.getLog(IntegrationMockClient.class); + private static final String INSTANCES_CONTEXT = "/instances/"; + private DefaultHttpClient httpClient; + private String endpoint; + + public IntegrationMockClient(String endpoint) { + super(endpoint); + this.endpoint = endpoint; + PoolingClientConnectionManager cm = new PoolingClientConnectionManager(); + // Increase max total connection to 200 + cm.setMaxTotal(200); + // Increase default max connection per route to 50 + cm.setDefaultMaxPerRoute(50); + + httpClient = new DefaultHttpClient(cm); + httpClient = (DefaultHttpClient) WebClientWrapper.wrapClient(httpClient); + } + + public void terminateInstance(String instanceId) { + try { + if (log.isDebugEnabled()) { + log.debug(String.format("Terminate instance: [instance-id] %s", instanceId)); + } + URI uri = new URIBuilder(endpoint + INSTANCES_CONTEXT + instanceId).build(); + org.apache.stratos.mock.iaas.client.rest.HttpResponse response = doDelete(uri); + if (response != null) { + if ((response.getStatusCode() >= 200) && (response.getStatusCode() < 300)) { + return; + } else { + GsonBuilder gsonBuilder = new GsonBuilder(); + Gson gson = gsonBuilder.create(); + ErrorResponse errorResponse = gson.fromJson(response.getContent(), ErrorResponse.class); + if (errorResponse != null) { + throw new RuntimeException(errorResponse.getErrorMessage()); + } + } + } + throw new RuntimeException("An unknown error occurred"); + } catch (Exception e) { + String message = "Could not start mock instance"; + throw new RuntimeException(message, e); + } + } + + public HttpResponse doDelete(URI resourcePath) throws Exception { + HttpDelete httpDelete = null; + try { + httpDelete = new HttpDelete(resourcePath); + httpDelete.addHeader("Content-Type", "application/json"); + + return httpClient.execute(httpDelete, new HttpResponseHandler()); + } finally { + releaseConnection(httpDelete); + } + } + + private void releaseConnection(HttpRequestBase request) { + if (request != null) { + request.releaseConnection(); + } + } + +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-3.json.orig ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-3.json.orig b/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-3.json.orig new file mode 100644 index 0000000..a461844 --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-3.json.orig @@ -0,0 +1,18 @@ +{ + "id": "application-policy-3", + "algorithm": "one-after-another", + "networkPartitions": [ + "network-partition-9", + "network-partition-10" + ], + "properties": [ + { + "name": "key-1", + "value": "network-partition-9|network-partition-10" + }, + { + "name": "key-2", + "value": "value-2" + } + ] +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-application-bursting-test.json new file mode 100644 index 0000000..4d1d35f --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/application-policies/application-policy-application-bursting-test.json @@ -0,0 +1,18 @@ +{ + "id": "application-policy-application-bursting-test", + "algorithm": "one-after-another", + "networkPartitions": [ + "network-partition-application-bursting-test-1", + "network-partition-application-bursting-test-2" + ], + "properties": [ + { + "name": "networkPartitionGroups", + "value": "network-partition-application-bursting-test-1|network-partition-application-bursting-test-2" + }, + { + "name": "key-2", + "value": "value-2" + } + ] +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json new file mode 100644 index 0000000..697cb70 --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json @@ -0,0 +1,14 @@ +{ + "id": "autoscaling-policy-application-bursting-test", + "loadThresholds": { + "requestsInFlight": { + "threshold": 35 + }, + "memoryConsumption": { + "threshold": 45 + }, + "loadAverage": { + "threshold": 25 + } + } +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges-groups/esb-php-group-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges-groups/esb-php-group-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges-groups/esb-php-group-application-bursting-test.json new file mode 100644 index 0000000..8fbab89 --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges-groups/esb-php-group-application-bursting-test.json @@ -0,0 +1,19 @@ +{ + "name": "esb-php-group-application-bursting-test", + "cartridges": [ + "esb-application-bursting-test", + "php-application-bursting-test" + ], + "dependencies": { + "startupOrders": [ + { + "aliases": [ + "cartridge.my-esb-application-bursting-test", + "cartridge.my-php-application-bursting-test" + ] + } + ], + "terminationBehaviour": "terminate-none" + } +} + http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/esb-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/esb-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/esb-application-bursting-test.json new file mode 100755 index 0000000..d97f9ff --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/esb-application-bursting-test.json @@ -0,0 +1,50 @@ +{ + "type": "esb-application-bursting-test", + "provider": "apache", + "host": "stratos.apache.org", + "category": "framework", + "displayName": "esb-application-bursting-test", + "description": "esb-application-bursting-test Cartridge", + "version": "7", + "multiTenant": "false", + "portMapping": [ + { + "name": "http-22", + "protocol": "http", + "port": "22", + "proxyPort": "8280" + } + ], + "deployment": { + }, + "iaasProvider": [ + { + "type": "mock", + "imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e", + "networkInterfaces": [ + { + "networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e" + } + ], + "property": [ + { + "name": "instanceType", + "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594" + }, + { + "name": "keyPair", + "value": "vishanth-key" + }, + { + "name": "securityGroups", + "value": "default" + } + ] + } + ], + "metadataKeys": [ + "server_ip", + "username", + "password" + ] +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/php-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/php-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/php-application-bursting-test.json new file mode 100755 index 0000000..02d0d9d --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/php-application-bursting-test.json @@ -0,0 +1,51 @@ +{ + "type": "php-application-bursting-test", + "provider": "apache", + "category": "framework", + "host": "php.stratos.org", + "displayName": "php-application-bursting-test", + "description": "php-application-bursting-test Cartridge", + "version": "7", + "multiTenant": "false", + "portMapping": [ + { + "name": "http-80", + "protocol": "http", + "port": "8080", + "proxyPort": "8280" + }, + { + "name": "http-22", + "protocol": "tcp", + "port": "22", + "proxyPort": "8222" + } + ], + "deployment": { + }, + "iaasProvider": [ + { + "type": "mock", + "imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e", + "networkInterfaces": [ + { + "networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e" + } + ], + "property": [ + { + "name": "instanceType", + "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594" + }, + { + "name": "keyPair", + "value": "reka" + }, + { + "name": "securityGroups", + "value": "default" + } + ] + } + ] +} http://git-wip-us.apache.org/repos/asf/stratos/blob/7fae8a72/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/tomcat-application-bursting-test.json ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/tomcat-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/tomcat-application-bursting-test.json new file mode 100755 index 0000000..b63d568 --- /dev/null +++ b/products/stratos/modules/integration/src/test/resources/application-bursting-test/cartridges/mock/tomcat-application-bursting-test.json @@ -0,0 +1,53 @@ +{ + "type": "tomcat-application-bursting-test", + "provider": "apache", + "host": "tomcat.stratos.org", + "category": "framework", + "displayName": "tomcat-application-bursting-test", + "description": "tomcat-application-bursting-test Cartridge", + "version": "7", + "multiTenant": "false", + "portMapping": [ + { + "name": "http-22", + "protocol": "http", + "port": "22", + "proxyPort": "8280" + }, + { + "protocol": "http", + "port": "8080", + "proxyPort": "80" + } + ], + "deployment": { + }, + "iaasProvider": [ + { + "type": "mock", + "imageId": "RegionOne/b4ca55e3-58ab-4937-82ce-817ebd10240e", + "networkInterfaces": [ + { + "networkUuid": "b55f009a-1cc6-4b17-924f-4ae0ee18db5e" + } + ], + "property": [ + { + "name": "instanceType", + "value": "RegionOne/aa5f45a2-c6d6-419d-917a-9dd2e3888594" + }, + { + "name": "keyPair", + "value": "vishanth-key" + }, + { + "name": "securityGroups", + "value": "default" + } + ] + } + ], + "metadataKeys": [ + "url" + ] +}
