blob: 29566f650168de8c069d9acfa3b4e47125e2cbe5 [file] [log] [blame]
/*
* 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, .
*/
@Test(groups = { "application" })
public class SampleApplicationsTestCase extends StratosIntegrationTest {
private static final Log log = LogFactory.getLog(SampleApplicationsTestCase.class);
private static final String RESOURCES_PATH = "/sample-applications-test";
long startTime;
@Test(timeOut = DEFAULT_APPLICATION_TEST_TIMEOUT,
priority = 1)
public void testApplication() throws Exception {
startTime = System.currentTimeMillis();
log.info("Running SampleApplicationsTestCase.testApplication test method...");
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 +
"/" + "cartridge-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,
"[Network partition] network-partition-sample-applications-test-2 could not be removed for "
+ "[application] g-sc-G123-1-sample-applications-test");
}
@Test(timeOut = DEFAULT_APPLICATION_TEST_TIMEOUT,
priority = 2)
public void testApplicationList() throws Exception {
log.info("Running SampleApplicationsTestCase.testApplicationList test method...");
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 +
"/" + "cartridge-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 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, app1, RestConstants.APPLICATIONS_NAME);
assertTrue(removed);
ApplicationBean beanRemoved = (ApplicationBean) restClient
.getEntity(RestConstants.APPLICATIONS, app1, ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
assertNull(beanRemoved);
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,
"[Network partition] network-partition-sample-applications-test-2 could not be removed for "
+ "[application] g-sc-G123-1-sample-applications-test");
long duration = System.currentTimeMillis() - startTime;
log.info(String.format("SampleApplicationsTestCase completed in [duration] %s ms", duration));
}
}