You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ga...@apache.org on 2015/08/17 05:50:16 UTC

[1/3] stratos git commit: Adding GroupTerminationBehaviorTest class

Repository: stratos
Updated Branches:
  refs/heads/tenant-isolation 01eafd733 -> eea557e58


Adding GroupTerminationBehaviorTest class


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/68a483ab
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/68a483ab
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/68a483ab

Branch: refs/heads/tenant-isolation
Commit: 68a483abaab33a8b09e38d8e52d5908d6e352eda
Parents: 01eafd7
Author: Gayan Gunarathne <ga...@wso2.com>
Authored: Sun Aug 16 16:57:16 2015 +0530
Committer: Gayan Gunarathne <ga...@wso2.com>
Committed: Sun Aug 16 16:57:16 2015 +0530

----------------------------------------------------------------------
 .../integration/tests/TopologyHandler.java      | 112 +++++-
 .../GroupTerminationBehaviorTest.java           | 351 +++++++++++++++++++
 2 files changed, 456 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/68a483ab/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
index e6764dc..0a0d80b 100644
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
@@ -33,9 +33,8 @@ import org.apache.stratos.messaging.domain.topology.Member;
 import org.apache.stratos.messaging.domain.topology.MemberStatus;
 import org.apache.stratos.messaging.domain.topology.Service;
 import org.apache.stratos.messaging.event.Event;
-import org.apache.stratos.messaging.event.application.GroupInstanceCreatedEvent;
-import org.apache.stratos.messaging.event.topology.ClusterInstanceCreatedEvent;
-import org.apache.stratos.messaging.event.topology.MemberTerminatedEvent;
+import org.apache.stratos.messaging.event.application.*;
+import org.apache.stratos.messaging.event.topology.*;
 import org.apache.stratos.messaging.listener.application.*;
 import org.apache.stratos.messaging.listener.topology.*;
 import org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
@@ -69,8 +68,10 @@ public class TopologyHandler {
     public static TopologyHandler topologyHandler;
     private Map<String, Map<String, Long>> terminatedNodes = new ConcurrentHashMap<String, Map<String, Long>>();
     private Map<String, Long> terminatedMembers = new ConcurrentHashMap<String, Long>();
-    private Map<String, Map<String, Long>> createdNodes = new ConcurrentHashMap<String, Map<String, Long>>();
-    private Map<String, Map<String, Long>> activeNodes = new ConcurrentHashMap<String, Map<String, Long>>();
+    private Map<String, Long> terminatingMembers = new ConcurrentHashMap<String, Long>();
+    private Map<String, Long> createdMembers = new ConcurrentHashMap<String, Long>();
+    private Map<String, Long> inActiveMembers = new ConcurrentHashMap<String, Long>();
+    private Map<String, Long> activateddMembers = new ConcurrentHashMap<String, Long>();
 
     private TopologyHandler() {
         // Set jndi.properties.dir system property for initializing event receivers
@@ -81,6 +82,7 @@ public class TopologyHandler {
         assertApplicationTopologyInitialized();
         assertTopologyInitialized();
         addTopologyEventListeners();
+        addApplicationEventListeners();
     }
 
     public static TopologyHandler getInstance() {
@@ -532,22 +534,118 @@ public class TopologyHandler {
         applicationsEventReceiver.addEventListener(new GroupInstanceActivatedEventListener() {
             @Override
             protected void onEvent(Event event) {
-
+                GroupInstanceActivatedEvent event1 = (GroupInstanceActivatedEvent) event;
+                String appId = event1.getAppId();
+                String groupId = event1.getGroupId();
+                String instanceId = event1.getInstanceId();
+                String id = generateId(appId, groupId, instanceId);
+                getActivateddMembers().put(id, System.currentTimeMillis());
             }
         });
 
         applicationsEventReceiver.addEventListener(new GroupInstanceInactivateEventListener() {
             @Override
             protected void onEvent(Event event) {
-
+                GroupInstanceInactivatedEvent event1 = (GroupInstanceInactivatedEvent) event;
+                String appId = event1.getAppId();
+                String groupId = event1.getGroupId();
+                String instanceId = event1.getInstanceId();
+                String id = generateId(appId, groupId, instanceId);
+                getInActiveMembers().put(id, System.currentTimeMillis());
             }
         });
 
         applicationsEventReceiver.addEventListener(new GroupInstanceTerminatedEventListener() {
             @Override
             protected void onEvent(Event event) {
+                GroupInstanceTerminatedEvent event1 = (GroupInstanceTerminatedEvent) event;
+                String appId = event1.getAppId();
+                String groupId = event1.getGroupId();
+                String instanceId = event1.getInstanceId();
+                String id = generateId(appId, groupId, instanceId);
+                getTerminatedMembers().put(id, System.currentTimeMillis());
+            }
+        });
 
+        applicationsEventReceiver.addEventListener(new GroupInstanceTerminatingEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+                GroupInstanceTerminatingEvent event1 = (GroupInstanceTerminatingEvent) event;
+                String appId = event1.getAppId();
+                String groupId = event1.getGroupId();
+                String instanceId = event1.getInstanceId();
+                String id = generateId(appId, groupId, instanceId);
+                getTerminatingMembers().put(id, System.currentTimeMillis());
             }
         });
     }
+
+    public String generateId(String appId, String groupId, String instanceId) {
+        return appId + "-" + groupId + "-" + instanceId;
+    }
+
+    public String getClusterIdFromAlias(String applicationId, String alias) {
+        Application application = ApplicationManager.getApplications().getApplication(applicationId);
+        assertNotNull(application);
+
+        ClusterDataHolder dataHolder = application.getClusterDataHolderRecursivelyByAlias(alias);
+        assertNotNull(dataHolder);
+
+        return dataHolder.getClusterId();
+    }
+
+
+    public void removeMembersFromMaps(String applicationId) {
+        for(Map.Entry<String, Long> entry: getActivateddMembers().entrySet()) {
+            if(entry.getKey().contains(applicationId)) {
+                getActivateddMembers().remove(entry.getKey());
+            }
+        }
+
+        for(Map.Entry<String, Long> entry: getTerminatedMembers().entrySet()) {
+            if(entry.getKey().contains(applicationId)) {
+                getTerminatedMembers().remove(entry.getKey());
+            }
+        }
+    }
+
+    public Map<String, Long> getTerminatedMembers() {
+        return terminatedMembers;
+    }
+
+    public void setTerminatedMembers(Map<String, Long> terminatedMembers) {
+        this.terminatedMembers = terminatedMembers;
+    }
+
+    public Map<String, Long> getTerminatingMembers() {
+        return terminatingMembers;
+    }
+
+    public void setTerminatingMembers(Map<String, Long> terminatingMembers) {
+        this.terminatingMembers = terminatingMembers;
+    }
+
+    public Map<String, Long> getCreatedMembers() {
+        return createdMembers;
+    }
+
+    public void setCreatedMembers(Map<String, Long> createdMembers) {
+        this.createdMembers = createdMembers;
+    }
+
+    public Map<String, Long> getInActiveMembers() {
+        return inActiveMembers;
+    }
+
+    public void setInActiveMembers(Map<String, Long> inActiveMembers) {
+        this.inActiveMembers = inActiveMembers;
+    }
+
+    public Map<String, Long> getActivateddMembers() {
+        return activateddMembers;
+    }
+
+    public void setActivateddMembers(Map<String, Long> activateddMembers) {
+        this.activateddMembers = activateddMembers;
+    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/68a483ab/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
index b86d674..a62abc5 100644
--- 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
@@ -18,10 +18,361 @@
  */
 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.Application;
+import org.apache.stratos.messaging.domain.application.ApplicationStatus;
+import org.apache.stratos.messaging.domain.application.Group;
+import org.apache.stratos.messaging.message.receiver.application.ApplicationManager;
+import org.testng.annotations.Test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import static junit.framework.Assert.*;
 
 /**
  * Handling the termination behavior of the group
  */
 public class GroupTerminationBehaviorTest extends StratosTestServerManager {
+    private static final Log log = LogFactory.getLog(GroupTerminationBehaviorTest.class);
+    private static final String RESOURCES_PATH = "/group-termination-behavior-test";
+    private static final int GROUP_INACTIVE_TIMEOUT = 300000;
+
+    @Test
+    public void testTerminationBehavior() {
+        try {
+            log.info("-------------------------------Started application termination behavior test case-------------------------------");
+
+            String autoscalingPolicyId = "autoscaling-policy-group-termination-behavior-test";
+            TopologyHandler topologyHandler = TopologyHandler.getInstance();
+
+            boolean addedScalingPolicy = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.AUTOSCALING_POLICIES_PATH
+                            + "/" + autoscalingPolicyId + ".json",
+                    RestConstants.AUTOSCALING_POLICIES, RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertTrue(addedScalingPolicy);
+
+            boolean addedC1 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c1-group-termination-behavior-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC1);
+
+            boolean addedC2 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c2-group-termination-behavior-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC2);
+
+            boolean addedC3 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c3-group-termination-behavior-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC3);
+
+            boolean addedC4 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "c4-group-termination-behavior-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC4);
+
+            boolean addedG1 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + "cartridge-groups-group-termination-behavior-test.json", RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(addedG1);
+
+            CartridgeGroupBean beanG1 = (CartridgeGroupBean) restClientTenant1.
+                    getEntity(RestConstants.CARTRIDGE_GROUPS, "g-sc-G4-group-termination-behavior-test",
+                            CartridgeGroupBean.class, RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertEquals(beanG1.getName(), "g-sc-G4-group-termination-behavior-test");
+
+            boolean addedN1 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" +
+                            "network-partition-group-termination-behavior-test-1.json",
+                    RestConstants.NETWORK_PARTITIONS, RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(addedN1);
+
+            boolean addedDep = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
+                            "deployment-policy-group-termination-behavior-test.json",
+                    RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertTrue(addedDep);
+
+            boolean added = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" +
+                            "group-termination-behavior-test.json", RestConstants.APPLICATIONS,
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(added);
+
+            ApplicationBean bean = (ApplicationBean) restClientTenant1.getEntity(RestConstants.APPLICATIONS,
+                    "group-termination-behavior-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
+            assertEquals(bean.getApplicationId(), "group-termination-behavior-test");
+
+            boolean addAppPolicy = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                            "application-policy-group-termination-behavior-test.json", RestConstants.APPLICATION_POLICIES,
+                    RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(addAppPolicy);
+
+            ApplicationPolicyBean policyBean = (ApplicationPolicyBean) restClientTenant1.getEntity(
+                    RestConstants.APPLICATION_POLICIES,
+                    "application-policy-group-termination-behavior-test", ApplicationPolicyBean.class,
+                    RestConstants.APPLICATION_POLICIES_NAME);
+
+            //deploy the application
+            String resourcePath = RestConstants.APPLICATIONS + "/" + "group-termination-behavior-test" +
+                    RestConstants.APPLICATIONS_DEPLOY + "/" + "application-policy-group-termination-behavior-test";
+            boolean deployed = restClientTenant1.deployEntity(resourcePath,
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(deployed);
+
+            //Application active handling
+            topologyHandler.assertApplicationStatus(bean.getApplicationId(),
+                    ApplicationStatus.Active,tenant1Id);
+            String groupId = topologyHandler.generateId(bean.getApplicationId(),
+                    "g-G1-1x0-group-termination-behavior-test", bean.getApplicationId() + "-1");
+
+            String clusterIdC3 = topologyHandler.
+                    getClusterIdFromAlias(bean.getApplicationId(),
+                            "c3-1x0-group-termination-behavior-test");
+
+            String clusterIdC4 = topologyHandler.
+                    getClusterIdFromAlias(bean.getApplicationId(),
+                            "c4-1x0-group-termination-behavior-test");
+
+            String clusterIdC2 = topologyHandler.
+                    getClusterIdFromAlias(bean.getApplicationId(),
+                            "c2-1x0-group-termination-behavior-test");
+
+            assertCreationOfNodes(groupId, clusterIdC2);
+            assertCreationOfNodes(clusterIdC3, clusterIdC4);
+
+            //Group active handling
+            topologyHandler.assertGroupActivation(bean.getApplicationId(),tenant1Id);
+
+            //Cluster active handling
+            topologyHandler.assertClusterActivation(bean.getApplicationId(),tenant1Id);
+
+            List<String> clusterIds = new ArrayList<String>();
+            clusterIds.add(clusterIdC3);
+            clusterIds.add(clusterIdC4);
+            clusterIds.add(clusterIdC2);
+
+            assertGroupInactive(groupId, clusterIdC3);
+
+            assertTerminatingOfNodes(groupId, clusterIds);
+
+            assertTerminationOfNodes(groupId, clusterIds);
+
+            //Application active handling
+            topologyHandler.assertApplicationStatus(bean.getApplicationId(),
+                    ApplicationStatus.Active,tenant1Id);
+
+            assertCreationOfNodes(groupId, clusterIdC2);
+            assertCreationOfNodes(clusterIdC3, clusterIdC4);
+
+            //Group active handling
+            topologyHandler.assertGroupActivation(bean.getApplicationId(),tenant1Id);
+
+            //Cluster active handling
+            topologyHandler.assertClusterActivation(bean.getApplicationId(),tenant1Id);
+
+            boolean removedGroup = restClientTenant1.removeEntity(RestConstants.CARTRIDGE_GROUPS,
+                    "g-sc-G4-group-termination-behavior-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertFalse(removedGroup);
+
+            boolean removedAuto = restClientTenant1.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertFalse(removedAuto);
+
+            boolean removedNet = restClientTenant1.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-group-termination-behavior-test-1",
+                    RestConstants.NETWORK_PARTITIONS_NAME);
+            //Trying to remove the used network partition
+            assertFalse(removedNet);
+
+            boolean removedDep = restClientTenant1.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-group-termination-behavior-test", RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertFalse(removedDep);
+
+            //Un-deploying the application
+            String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + "group-termination-behavior-test" +
+                    RestConstants.APPLICATIONS_UNDEPLOY;
+
+            boolean unDeployed = restClientTenant1.undeployEntity(resourcePathUndeploy,
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(unDeployed);
+
+            boolean undeploy = topologyHandler.assertApplicationUndeploy("group-termination-behavior-test",tenant1Id);
+            if (!undeploy) {
+                //Need to forcefully undeploy the application
+                log.info("Force undeployment is going to start for the [application] " + "group-termination-behavior-test");
+
+                restClientTenant1.undeployEntity(RestConstants.APPLICATIONS + "/" + "group-termination-behavior-test" +
+                        RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS);
+
+                boolean forceUndeployed = topologyHandler.assertApplicationUndeploy("group-termination-behavior-test",tenant1Id);
+                assertTrue(String.format("Forceful undeployment failed for the application %s",
+                        "group-termination-behavior-test"), forceUndeployed);
+
+            }
+
+            boolean removed = restClientTenant1.removeEntity(RestConstants.APPLICATIONS, "group-termination-behavior-test",
+                    RestConstants.APPLICATIONS_NAME);
+            assertTrue(removed);
+
+            ApplicationBean beanRemoved = (ApplicationBean) restClientTenant1.getEntity(RestConstants.APPLICATIONS,
+                    "group-termination-behavior-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
+            assertNull(beanRemoved);
+
+            removedGroup = restClientTenant1.removeEntity(RestConstants.CARTRIDGE_GROUPS,
+                    "g-sc-G4-group-termination-behavior-test",
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(removedGroup);
+
+            boolean removedC1 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "c1-group-termination-behavior-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removedC1);
+
+            boolean removedC2 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "c2-group-termination-behavior-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removedC2);
+
+            boolean removedC3 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "c3-group-termination-behavior-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removedC3);
+
+            boolean removedC4 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "c4-group-termination-behavior-test",
+                    RestConstants.CARTRIDGES_NAME);
+            assertTrue(removedC4);
+
+            removedAuto = restClientTenant1.removeEntity(RestConstants.AUTOSCALING_POLICIES,
+                    autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME);
+            assertTrue(removedAuto);
+
+            removedDep = restClientTenant1.removeEntity(RestConstants.DEPLOYMENT_POLICIES,
+                    "deployment-policy-group-termination-behavior-test", RestConstants.DEPLOYMENT_POLICIES_NAME);
+            assertTrue(removedDep);
+
+            removedNet = restClientTenant1.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-group-termination-behavior-test-1", RestConstants.NETWORK_PARTITIONS_NAME);
+            assertFalse(removedNet);
+
+            boolean removeAppPolicy = restClientTenant1.removeEntity(RestConstants.APPLICATION_POLICIES,
+                    "application-policy-group-termination-behavior-test", RestConstants.APPLICATION_POLICIES_NAME);
+            assertTrue(removeAppPolicy);
+
+            removedNet = restClientTenant1.removeEntity(RestConstants.NETWORK_PARTITIONS,
+                    "network-partition-group-termination-behavior-test-1", RestConstants.NETWORK_PARTITIONS_NAME);
+            assertTrue(removedNet);
+
+            log.info("-------------------------------Ended application termination behavior test case-------------------------------");
+
+        } catch (Exception e) {
+            log.error("An error occurred while handling  application termination behavior", e);
+            assertTrue("An error occurred while handling  application termination behavior", false);
+        }
+    }
+
+    private void assertGroupInactive(String groupId, String clusterId) {
+        long startTime = System.currentTimeMillis();
+        Map<String, Long> inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
+
+        while(!inActiveMap.containsKey(clusterId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException ignore) {
+            }
+            inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
+            if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
+        assertTrue(inActiveMap.containsKey(clusterId));
+
+        while(!inActiveMap.containsKey(groupId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException ignore) {
+            }
+            inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
+            if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
+        assertTrue(inActiveMap.containsKey(groupId));
+
+    }
+
+    private void assertTerminatingOfNodes(String groupId, List<String> clusterIds) {
+        Map<String, Long> terminatingMembers = TopologyHandler.getInstance().getTerminatingMembers();
+        for(String clusterId : clusterIds) {
+            long startTime = System.currentTimeMillis();
+            while(!terminatingMembers.containsKey(clusterId)) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException ignore) {
+                }
+                terminatingMembers = TopologyHandler.getInstance().getTerminatingMembers();
+                if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                    break;
+                }
+            }
+            assertTrue(terminatingMembers.containsKey(groupId));
+        }
+        long startTime = System.currentTimeMillis();
+        while(!terminatingMembers.containsKey(groupId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException ignore) {
+            }
+            terminatingMembers = TopologyHandler.getInstance().getTerminatingMembers();
+            if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
+        assertTrue(terminatingMembers.containsKey(groupId));
+
+    }
+
+    private void assertTerminationOfNodes(String groupId, List<String> clusterIds) {
+        long startTime = System.currentTimeMillis();
+        Map<String, Long> terminatedMembers = TopologyHandler.getInstance().getTerminatedMembers();
+
+        for(String clusterId : clusterIds) {
+            while(!terminatedMembers.containsKey(clusterId)) {
+                try {
+                    Thread.sleep(1000);
+                } catch (InterruptedException ignore) {
+                }
+                terminatedMembers = TopologyHandler.getInstance().getTerminatedMembers();
+                if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                    break;
+                }
+            }
+            assertTrue(terminatedMembers.containsKey(clusterId));
+        }
+
+        while(!terminatedMembers.containsKey(groupId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException ignore) {
+            }
+            terminatedMembers = TopologyHandler.getInstance().getTerminatedMembers();
+            if ((System.currentTimeMillis() - startTime) > GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
+
+        assertTrue(terminatedMembers.containsKey(groupId));
+    }
+
+    private void assertCreationOfNodes(String firstNodeId, String secondNodeId) {
+        //group1 started first, then cluster started later
+
+        Map<String, Long> activeMembers = TopologyHandler.getInstance().getActivateddMembers();
+        Map<String, Long> createdMembers = TopologyHandler.getInstance().getCreatedMembers();
+        //Active member should be available at the time cluster is started to create.
+        assertTrue(activeMembers.containsKey(firstNodeId));
+        assertTrue(createdMembers.containsKey(secondNodeId));
+
+        assertTrue(createdMembers.get(secondNodeId) > activeMembers.get(firstNodeId));
+    }
 }
+


[2/3] stratos git commit: Adding GroupTerminationBehaviorTest class

Posted by ga...@apache.org.
Adding GroupTerminationBehaviorTest class


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f03aaa84
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f03aaa84
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f03aaa84

Branch: refs/heads/tenant-isolation
Commit: f03aaa845779a941aa6f767807e5eb3879ba22a1
Parents: 68a483a
Author: Gayan Gunarathne <ga...@wso2.com>
Authored: Sun Aug 16 22:38:24 2015 +0530
Committer: Gayan Gunarathne <ga...@wso2.com>
Committed: Sun Aug 16 22:38:24 2015 +0530

----------------------------------------------------------------------
 .../integration/tests/TopologyHandler.java      | 48 ++++++++++----------
 .../GroupTerminationBehaviorTest.java           | 17 +++----
 ...cation-policy-application-bursting-test.json | 17 -------
 ...-policy-group-termination-behavior-test.json | 17 +++++++
 .../group-termination-behavior-test.json        |  4 +-
 ...caling-policy-application-bursting-test.json | 14 ------
 ...-policy-group-termination-behavior-test.json | 14 ++++++
 ...-groups-group-termination-behavior-test.json |  4 +-
 ...-policy-group-termination-behavior-test.json | 18 ++++++++
 ...oyment-policy-termination-behavior-test.json | 22 ---------
 ...k-partition-application-bursting-test-1.json | 15 ------
 ...ition-group-termination-behavior-test-1.json | 15 ++++++
 .../src/test/resources/mock-iaas.xml            | 20 ++++++++
 .../src/test/resources/stratos-testing.xml      |  5 ++
 14 files changed, 127 insertions(+), 103 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
index 0a0d80b..554bb04 100644
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/TopologyHandler.java
@@ -66,7 +66,6 @@ public class TopologyHandler {
     private ApplicationsEventReceiver applicationsEventReceiver;
     private TopologyEventReceiver topologyEventReceiver;
     public static TopologyHandler topologyHandler;
-    private Map<String, Map<String, Long>> terminatedNodes = new ConcurrentHashMap<String, Map<String, Long>>();
     private Map<String, Long> terminatedMembers = new ConcurrentHashMap<String, Long>();
     private Map<String, Long> terminatingMembers = new ConcurrentHashMap<String, Long>();
     private Map<String, Long> createdMembers = new ConcurrentHashMap<String, Long>();
@@ -464,30 +463,27 @@ public class TopologyHandler {
             @Override
             protected void onEvent(Event event) {
                 MemberTerminatedEvent memberTerminatedEvent = (MemberTerminatedEvent) event;
-                terminatedMembers.put(memberTerminatedEvent.getMemberId(), System.currentTimeMillis());
+                getTerminatedMembers().put(memberTerminatedEvent.getMemberId(), System.currentTimeMillis());
 
             }
         });
 
-        topologyEventReceiver.addEventListener(new MemberCreatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-
-            }
-        });
 
         topologyEventReceiver.addEventListener(new ClusterInstanceCreatedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 ClusterInstanceCreatedEvent event1 = (ClusterInstanceCreatedEvent) event;
-
+                String clusterId = event1.getClusterId();
+                getCreatedMembers().put(clusterId, System.currentTimeMillis());
             }
         });
 
         topologyEventReceiver.addEventListener(new ClusterInstanceActivatedEventListener() {
             @Override
             protected void onEvent(Event event) {
+                ClusterInstanceActivatedEvent event1 = (ClusterInstanceActivatedEvent) event;
+                String clusterId = event1.getClusterId();
+                getActivateddMembers().put(clusterId, System.currentTimeMillis());
 
             }
         });
@@ -495,14 +491,27 @@ public class TopologyHandler {
         topologyEventReceiver.addEventListener(new ClusterInstanceInactivateEventListener() {
             @Override
             protected void onEvent(Event event) {
-
+                ClusterInstanceInactivateEvent event1 = (ClusterInstanceInactivateEvent) event;
+                String clusterId = event1.getClusterId();
+                getInActiveMembers().put(clusterId, System.currentTimeMillis());
             }
         });
 
         topologyEventReceiver.addEventListener(new ClusterInstanceTerminatedEventListener() {
             @Override
             protected void onEvent(Event event) {
+                ClusterInstanceTerminatedEvent event1 = (ClusterInstanceTerminatedEvent) event;
+                String clusterId = event1.getClusterId();
+                getTerminatedMembers().put(clusterId, System.currentTimeMillis());
+            }
+        });
 
+        topologyEventReceiver.addEventListener(new ClusterInstanceTerminatingEventListener() {
+            @Override
+            protected void onEvent(Event event) {
+                ClusterInstanceTerminatingEvent event1 = (ClusterInstanceTerminatingEvent) event;
+                String clusterId = event1.getClusterId();
+                getTerminatingMembers().put(clusterId, System.currentTimeMillis());
             }
         });
 
@@ -510,27 +519,20 @@ public class TopologyHandler {
     }
 
     private void addApplicationEventListeners() {
-        applicationsEventReceiver.addEventListener(new ApplicationInstanceCreatedEventListener() {
-            @Override
-            protected void onEvent(Event event) {
-
-
-            }
-        });
 
         applicationsEventReceiver.addEventListener(new GroupInstanceCreatedEventListener() {
             @Override
             protected void onEvent(Event event) {
                 GroupInstanceCreatedEvent event1 = (GroupInstanceCreatedEvent) event;
                 String appId = event1.getAppId();
-                String id = event1.getGroupId();
+                String groupId = event1.getGroupId();
                 String instanceId = event1.getGroupInstance().getInstanceId();
+                String id = generateId(appId, groupId, instanceId);
+                getCreatedMembers().put(id, System.currentTimeMillis());
 
             }
         });
 
-
-
         applicationsEventReceiver.addEventListener(new GroupInstanceActivatedEventListener() {
             @Override
             protected void onEvent(Event event) {
@@ -584,8 +586,8 @@ public class TopologyHandler {
         return appId + "-" + groupId + "-" + instanceId;
     }
 
-    public String getClusterIdFromAlias(String applicationId, String alias) {
-        Application application = ApplicationManager.getApplications().getApplication(applicationId);
+    public String getClusterIdFromAlias(String applicationId, String alias,int tenantId) {
+        Application application = ApplicationManager.getApplications().getApplicationByTenant(applicationId,tenantId);
         assertNotNull(application);
 
         ClusterDataHolder dataHolder = application.getClusterDataHolderRecursivelyByAlias(alias);

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/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
index a62abc5..9873f05 100644
--- 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
@@ -124,20 +124,21 @@ public class GroupTerminationBehaviorTest extends StratosTestServerManager {
             //Application active handling
             topologyHandler.assertApplicationStatus(bean.getApplicationId(),
                     ApplicationStatus.Active,tenant1Id);
-            String groupId = topologyHandler.generateId(bean.getApplicationId(),
-                    "g-G1-1x0-group-termination-behavior-test", bean.getApplicationId() + "-1");
+            Application application = ApplicationManager.getApplications().getApplicationByTenant(bean.getApplicationId(), tenant1Id);
+            String groupId = topologyHandler.generateId(application.getUniqueIdentifier(),
+                    "g-G1-1x0-group-termination-behavior-test", application.getUniqueIdentifier() + "-1");
 
             String clusterIdC3 = topologyHandler.
                     getClusterIdFromAlias(bean.getApplicationId(),
-                            "c3-1x0-group-termination-behavior-test");
+                            "c3-1x0-group-termination-behavior-test",tenant1Id);
 
             String clusterIdC4 = topologyHandler.
                     getClusterIdFromAlias(bean.getApplicationId(),
-                            "c4-1x0-group-termination-behavior-test");
+                            "c4-1x0-group-termination-behavior-test",tenant1Id);
 
             String clusterIdC2 = topologyHandler.
                     getClusterIdFromAlias(bean.getApplicationId(),
-                            "c2-1x0-group-termination-behavior-test");
+                            "c2-1x0-group-termination-behavior-test",tenant1Id);
 
             assertCreationOfNodes(groupId, clusterIdC2);
             assertCreationOfNodes(clusterIdC3, clusterIdC4);
@@ -153,11 +154,11 @@ public class GroupTerminationBehaviorTest extends StratosTestServerManager {
             clusterIds.add(clusterIdC4);
             clusterIds.add(clusterIdC2);
 
-            assertGroupInactive(groupId, clusterIdC3);
+           // assertGroupInactive(groupId, clusterIdC3);
 
-            assertTerminatingOfNodes(groupId, clusterIds);
+           // assertTerminatingOfNodes(groupId, clusterIds);
 
-            assertTerminationOfNodes(groupId, clusterIds);
+           // assertTerminationOfNodes(groupId, clusterIds);
 
             //Application active handling
             topologyHandler.assertApplicationStatus(bean.getApplicationId(),

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-application-bursting-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-application-bursting-test.json
deleted file mode 100644
index 15e757b..0000000
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-application-bursting-test.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
-    "id": "application-policy-group-termination-behavior-test",
-    "algorithm": "one-after-another",
-    "networkPartitions": [
-        "network-partition-group-termination-behavior-test-1"
-    ],
-    "properties": [
-        {
-            "name": "networkPartitionGroups",
-            "value": "network-partition-group-termination-behavior-test-1"
-        },
-        {
-            "name": "key-2",
-            "value": "value-2"
-        }
-    ]
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-group-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-group-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-group-termination-behavior-test.json
new file mode 100644
index 0000000..15e757b
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/application-policies/application-policy-group-termination-behavior-test.json
@@ -0,0 +1,17 @@
+{
+    "id": "application-policy-group-termination-behavior-test",
+    "algorithm": "one-after-another",
+    "networkPartitions": [
+        "network-partition-group-termination-behavior-test-1"
+    ],
+    "properties": [
+        {
+            "name": "networkPartitionGroups",
+            "value": "network-partition-group-termination-behavior-test-1"
+        },
+        {
+            "name": "key-2",
+            "value": "value-2"
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/applications/group-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/applications/group-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/applications/group-termination-behavior-test.json
index 0ce09a8..70432ae 100644
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/applications/group-termination-behavior-test.json
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/applications/group-termination-behavior-test.json
@@ -61,9 +61,9 @@
                                     {
                                         "cartridgeMin": 1,
                                         "cartridgeMax": 1,
-                                        "type": "c4",
+                                        "type": "c4-group-termination-behavior-test",
                                         "subscribableInfo": {
-                                            "alias": "c4-1x0",
+                                            "alias": "c4-1x0-group-termination-behavior-test",
                                             "deploymentPolicy": "deployment-policy-group-termination-behavior-test",
                                             "artifactRepository": {
                                                 "repoUsername": "user",

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json
deleted file mode 100644
index fd81d17..0000000
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-application-bursting-test.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-    "id": "autoscaling-policy-group-termination-behavior-test",
-    "loadThresholds": {
-        "requestsInFlight": {
-            "threshold": 35
-        },
-        "memoryConsumption": {
-            "threshold": 45
-        },
-        "loadAverage": {
-            "threshold": 25
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-group-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-group-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-group-termination-behavior-test.json
new file mode 100644
index 0000000..fd81d17
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/autoscaling-policies/autoscaling-policy-group-termination-behavior-test.json
@@ -0,0 +1,14 @@
+{
+    "id": "autoscaling-policy-group-termination-behavior-test",
+    "loadThresholds": {
+        "requestsInFlight": {
+            "threshold": 35
+        },
+        "memoryConsumption": {
+            "threshold": 45
+        },
+        "loadAverage": {
+            "threshold": 25
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/cartridges-groups/cartridge-groups-group-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/cartridges-groups/cartridge-groups-group-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/cartridges-groups/cartridge-groups-group-termination-behavior-test.json
index 52ce80f..2d69021 100644
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/cartridges-groups/cartridge-groups-group-termination-behavior-test.json
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/cartridges-groups/cartridge-groups-group-termination-behavior-test.json
@@ -46,8 +46,8 @@
                   ]
               },
               "cartridges": [
-                  "c4",
-                  "c5"
+                  "c3-group-termination-behavior-test",
+                  "c4-group-termination-behavior-test"
               ],
               "groups": [
               ]

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-group-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-group-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-group-termination-behavior-test.json
new file mode 100644
index 0000000..035ad73
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-group-termination-behavior-test.json
@@ -0,0 +1,18 @@
+{
+    "id": "deployment-policy-group-termination-behavior-test",
+    "networkPartitions": [
+        {
+            "id": "network-partition-group-termination-behavior-test-1",
+            "partitionAlgo": "one-after-another",
+            "partitions": [
+                {
+                    "id": "partition-1",
+                    "partitionMax": 4
+                }
+            ]
+        }
+    ]
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-termination-behavior-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-termination-behavior-test.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-termination-behavior-test.json
deleted file mode 100644
index 9209573..0000000
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/deployment-policies/deployment-policy-termination-behavior-test.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-    "id": "deployment-policy-group-termination-behavior-test",
-    "networkPartitions": [
-        {
-            "id": "network-partition-group-termination-behavior-test-1",
-            "partitionAlgo": "one-after-another",
-            "partitions": [
-                {
-                    "id": "network-partition-10-partition-1",
-                    "partitionMax": 4
-                },
-                {
-                    "id": "network-partition-10-partition-2",
-                    "partitionMax": 4
-                }
-            ]
-        }
-    ]
-}
-
-
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-application-bursting-test-1.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-application-bursting-test-1.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-application-bursting-test-1.json
deleted file mode 100644
index 13abc47..0000000
--- a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-application-bursting-test-1.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
-    "id": "network-partition-group-termination-behavior-test-1",
-    "provider": "mock",
-    "partitions": [
-        {
-            "id": "partition-1",
-            "property": [
-                {
-                    "name": "region",
-                    "value": "default"
-                }
-            ]
-        }
-    ]
-}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-group-termination-behavior-test-1.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-group-termination-behavior-test-1.json b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-group-termination-behavior-test-1.json
new file mode 100644
index 0000000..13abc47
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/group-termination-behavior-test/network-partitions/mock/network-partition-group-termination-behavior-test-1.json
@@ -0,0 +1,15 @@
+{
+    "id": "network-partition-group-termination-behavior-test-1",
+    "provider": "mock",
+    "partitions": [
+        {
+            "id": "partition-1",
+            "property": [
+                {
+                    "name": "region",
+                    "value": "default"
+                }
+            ]
+        }
+    ]
+}

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
index a0f1066..37051b6 100644
--- a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
+++ b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
@@ -79,6 +79,26 @@
                 <sampleDuration>30</sampleDuration>
             </pattern>
         </cartridge>
+        <cartridge type="c3-group-termination-behavior-test">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+        </cartridge>
         <cartridge type="php">
             <!-- factor:memory-consumption|load-average|requests-in-flight-->
             <!-- mode:loop|continue|stop -->

http://git-wip-us.apache.org/repos/asf/stratos/blob/f03aaa84/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/stratos-testing.xml b/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
index cd65ade..ede5ff3 100644
--- a/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
+++ b/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
@@ -80,4 +80,9 @@
        </classes>
    </test>
 
+    <test name="GroupTerminationBehaviorTest">
+        <classes>
+            <class name="org.apache.stratos.integration.tests.application.GroupTerminationBehaviorTest" />
+        </classes>
+    </test>
 </suite>


[3/3] stratos git commit: Refactor with uuid

Posted by ga...@apache.org.
Refactor with uuid


Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/eea557e5
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/eea557e5
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/eea557e5

Branch: refs/heads/tenant-isolation
Commit: eea557e584f8b193224436c845be9aa2f08420d9
Parents: f03aaa8
Author: Gayan Gunarathne <ga...@wso2.com>
Authored: Sun Aug 16 23:40:16 2015 +0530
Committer: Gayan Gunarathne <ga...@wso2.com>
Committed: Sun Aug 16 23:40:16 2015 +0530

----------------------------------------------------------------------
 .../applications/topic/ApplicationBuilder.java  | 20 ++++++++++----------
 .../monitor/component/ApplicationMonitor.java   |  8 ++++----
 .../domain/application/Application.java         |  4 ++--
 .../domain/application/ParentComponent.java     |  4 ++--
 .../tests/StratosTestServerManager.java         |  2 +-
 5 files changed, 19 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/eea557e5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
index 3ca1148..f865d4b 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/applications/topic/ApplicationBuilder.java
@@ -80,10 +80,10 @@ public class ApplicationBuilder {
         ApplicationsEventPublisher.sendApplicationCreatedEvent(application);
     }
 
-    public static ApplicationInstance handleApplicationInstanceCreatedEvent(String appId,
-                                                                            String networkPartitionId) {
+    public static ApplicationInstance handleApplicationInstanceCreatedEvent(String appUuid,
+                                                                            String networkPartitionUuid) {
         if (log.isDebugEnabled()) {
-            log.debug("Handling application instance creation event: [application-id] " + appId);
+            log.debug("Handling application instance creation event: [application-id] " + appUuid);
         }
         ApplicationInstance applicationInstance = null;
         //acquiring write lock to add the required instances
@@ -91,26 +91,26 @@ public class ApplicationBuilder {
         try {
 
             Applications applications = ApplicationHolder.getApplications();
-            Application application = applications.getApplication(appId);
+            Application application = applications.getApplication(appUuid);
             //update the status of the Group
             if (application == null) {
                 log.warn(String.format("Application does not exist: [application-id] %s",
-                        appId));
+                        appUuid));
                 return null;
             }
-            String instanceId = application.getNextInstanceId(appId);
+            String instanceId = application.getNextInstanceId(appUuid);
 
             if (!application.containsInstanceContext(instanceId)) {
                 //setting the status, persist and publish
-                applicationInstance = new ApplicationInstance(appId, instanceId);
-                applicationInstance.setNetworkPartitionUuid(networkPartitionId);
+                applicationInstance = new ApplicationInstance(appUuid, instanceId);
+                applicationInstance.setNetworkPartitionUuid(networkPartitionUuid);
                 application.addInstance(instanceId, applicationInstance);
                 //updateApplicationMonitor(appId, status);
                 ApplicationHolder.persistApplication(application);
-                ApplicationsEventPublisher.sendApplicationInstanceCreatedEvent(appId, applicationInstance);
+                ApplicationsEventPublisher.sendApplicationInstanceCreatedEvent(appUuid, applicationInstance);
             } else {
                 log.warn(String.format("Application Instance Context already exists" +
-                        " [appId] %s [ApplicationInstanceId] %s", appId, instanceId));
+                        " [appId] %s [ApplicationInstanceId] %s", appUuid, instanceId));
             }
         } finally {
             ApplicationHolder.releaseWriteLock();

http://git-wip-us.apache.org/repos/asf/stratos/blob/eea557e5/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
index dad15e9..8638dcb 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/ApplicationMonitor.java
@@ -454,9 +454,9 @@ public class ApplicationMonitor extends ParentComponentMonitor {
                 return false;
             }
 
-            for (String networkPartitionIds : nextNetworkPartitions) {
+            for (String networkPartitionUuids : nextNetworkPartitions) {
                 ParentLevelNetworkPartitionContext context =
-                        new ParentLevelNetworkPartitionContext(networkPartitionIds);
+                        new ParentLevelNetworkPartitionContext(networkPartitionUuids);
                 //If application instances found in the ApplicationsTopology,
                 // then have to add them first before creating new one
                 ApplicationInstance appInstance = (ApplicationInstance) application.
@@ -471,8 +471,8 @@ public class ApplicationMonitor extends ParentComponentMonitor {
 
                 }
                 instanceIds.add(instanceId);
-                log.info("Application instance has been added for the [network partition] " +
-                        networkPartitionIds + " [appInstanceId] " + instanceId);
+                log.info("Application instance has been added for the [network partition uuid] " +
+                        networkPartitionUuids + " [appInstanceId] " + instanceId);
             }
 
             //Find whether any other instances exists in cluster

http://git-wip-us.apache.org/repos/asf/stratos/blob/eea557e5/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
index 77c80aa..c9ccc91 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/Application.java
@@ -151,14 +151,14 @@ public class Application extends ParentComponent<ApplicationInstance> {
         return uuid.hashCode();
     }
 
-    public Instance getInstanceByNetworkPartitionId(String networkPartitionId) {
+    public Instance getInstanceByNetworkPartitionId(String networkPartitionUuid) {
         // if map is empty, return null
         if (getInstanceIdToInstanceContextMap().isEmpty()) {
             return null;
         }
 
         for (Instance instance : getInstanceIdToInstanceContextMap().values()) {
-            if (instance.getNetworkPartitionUuid().equals(networkPartitionId)) {
+            if (instance.getNetworkPartitionUuid().equals(networkPartitionUuid)) {
                 return instance;
             }
         }

http://git-wip-us.apache.org/repos/asf/stratos/blob/eea557e5/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/ParentComponent.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/ParentComponent.java b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/ParentComponent.java
index fdd83ef..4a54028 100644
--- a/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/ParentComponent.java
+++ b/components/org.apache.stratos.messaging/src/main/java/org/apache/stratos/messaging/domain/application/ParentComponent.java
@@ -428,9 +428,9 @@ public abstract class ParentComponent<T extends Instance> implements Serializabl
         this.deploymentPolicy = deploymentPolicy;
     }
 
-    public String getNextInstanceId(String alias) {
+    public String getNextInstanceId(String appUuid) {
         int nextSequence = instanceIdSequence.incrementAndGet();
-        String instanceId = alias + "-" + nextSequence;
+        String instanceId = appUuid + "-" + nextSequence;
         return instanceId;
     }
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/eea557e5/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
index 2a1d32a..1670a66 100755
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
@@ -62,7 +62,7 @@ public class StratosTestServerManager extends TestServerManager {
     protected RestClient restClientAdmin;
     protected RestClient restClientTenant1;
     protected RestClient restClientTenant2;
-    private String endpoint = "https://localhost:9443";
+    private String endpoint = "http://localhost:9763";
 
     private BrokerService broker = new BrokerService();
     private TestLogAppender testLogAppender = new TestLogAppender();