Repository: stratos
Updated Branches:
  refs/heads/tenant-isolation 7575faa30 -> 2f2debf5b


.


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

Branch: refs/heads/tenant-isolation
Commit: 3ab657aad60b599309101539745ed147e6f4ccf8
Parents: 7575faa
Author: reka <[email protected]>
Authored: Tue Aug 18 17:06:11 2015 +0530
Committer: gayangunarathne <[email protected]>
Committed: Thu Aug 20 20:42:35 2015 +0530

----------------------------------------------------------------------
 .../common/threading/StratosThreadPool.java     | 10 +--
 .../iaas/services/impl/MockIaasServiceImpl.java |  2 +-
 extensions/das/pom.xml                          |  2 +-
 .../integration/tests/TopologyHandler.java      | 19 ++++--
 .../application/GroupStartupOrderTest.java      | 34 ++++++++++-
 .../GroupTerminationBehaviorTest.java           | 64 ++++++++++++++------
 6 files changed, 99 insertions(+), 32 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
index c0ae8ae..c72499f 100644
--- 
a/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
+++ 
b/components/org.apache.stratos.common/src/main/java/org/apache/stratos/common/threading/StratosThreadPool.java
@@ -24,10 +24,7 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
 import java.util.Map;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.*;
 
 /**
  * Utility class for Stratos thread pool
@@ -53,7 +50,10 @@ public class StratosThreadPool {
         if (executorService == null) {
             synchronized (executorServiceMapLock) {
                 if (executorService == null) {
-                    executorService = 
Executors.newFixedThreadPool(threadPoolSize);
+                    final BlockingQueue<Runnable> queue = new 
ArrayBlockingQueue(threadPoolSize);
+                    executorService =new ThreadPoolExecutor(threadPoolSize, 
1000,
+                            0L, TimeUnit.MILLISECONDS,
+                            queue);// 
Executors.newFixedThreadPool(threadPoolSize);
                     executorServiceMap.put(identifier, executorService);
                     log.info(String.format("Thread pool created: [type] 
Executor Service [id] %s [size] %d", identifier, threadPoolSize));
                 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockIaasServiceImpl.java
----------------------------------------------------------------------
diff --git 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockIaasServiceImpl.java
 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockIaasServiceImpl.java
index 81cbfbe..4d2ff12 100644
--- 
a/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockIaasServiceImpl.java
+++ 
b/components/org.apache.stratos.mock.iaas/src/main/java/org/apache/stratos/mock/iaas/services/impl/MockIaasServiceImpl.java
@@ -102,7 +102,7 @@ public class MockIaasServiceImpl implements MockIaasService 
{
             }
 
             // Generate instance id
-            String instanceId = UUID.randomUUID().toString();
+            String instanceId = mockInstanceContext.getMemberId();
             mockInstanceContext.setInstanceId(instanceId);
 
             MockInstance mockInstance = new MockInstance(mockInstanceContext);

http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/extensions/das/pom.xml
----------------------------------------------------------------------
diff --git a/extensions/das/pom.xml b/extensions/das/pom.xml
index d21d1be..5231674 100644
--- a/extensions/das/pom.xml
+++ b/extensions/das/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <artifactId>stratos-extensions</artifactId>
         <groupId>org.apache.stratos</groupId>
-        <version>4.1.1-SNAPSHOT</version>
+        <version>4.1.0-SNAPSHOT</version>
     </parent>
     <modelVersion>4.0.0</modelVersion>
 

http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/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 ee29b94..a8e516f 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
@@ -58,9 +58,11 @@ import static junit.framework.Assert.*;
 public class TopologyHandler {
     private static final Log log = LogFactory.getLog(TopologyHandler.class);
 
+
     public static final int APPLICATION_ACTIVATION_TIMEOUT = 400000;
     public static final int APPLICATION_UNDEPLOYMENT_TIMEOUT = 60000;
     public static final int APPLICATION_TOPOLOGY_TIMEOUT = 60000;
+
     public static final String APPLICATION_STATUS_CREATED = "Created";
     public static final String APPLICATION_STATUS_UNDEPLOYING = "Undeploying";
     private ApplicationsEventReceiver applicationsEventReceiver;
@@ -183,6 +185,10 @@ public class TopologyHandler {
                 status, application.getStatus());
     }
 
+    public Application getApplication(String applicationName, int tenantId) {
+        return 
ApplicationManager.getApplications().getApplicationByTenant(applicationName, 
tenantId);
+    }
+
     public void assertApplicationForNonAvailability(String applicationName,  
int tenantId) {
 
         Application application = 
ApplicationManager.getApplications().getApplicationByTenant(applicationName, 
tenantId);
@@ -257,6 +263,7 @@ public class TopologyHandler {
      * @param tenantId
      * @param applicationName
      */
+
     public void terminateMemberFromCluster(String cartridgeName, String 
applicationName, IntegrationMockClient mockIaasApiClient, int tenantId) {
         Application application = 
ApplicationManager.getApplications().getApplicationByTenant(applicationName, 
tenantId);
         assertNotNull(String.format("Application is not found: 
[application-id] %s",
@@ -264,16 +271,16 @@ public class TopologyHandler {
 
         Set<ClusterDataHolder> clusterDataHolderSet = 
application.getClusterDataRecursively();
         for (ClusterDataHolder clusterDataHolder : clusterDataHolderSet) {
-            String serviceName = clusterDataHolder.getServiceType();
-            if(cartridgeName.equals(serviceName)) {
+            String serviceUuid = clusterDataHolder.getServiceUuid();
+            if(cartridgeName.equals(serviceUuid)) {
                 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);
+                Service service = 
TopologyManager.getTopology().getService(serviceUuid);
+                assertNotNull(String.format("Service is not found: 
[application-id] %s [service uuid] %s",
+                        applicationName, serviceUuid), 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);
+                        applicationName, serviceUuid, clusterId), cluster);
                 boolean memberTerminated = false;
 
                 for (ClusterInstance instance : 
cluster.getInstanceIdToInstanceContextMap().values()) {

http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/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
index c8dd1cc..07af23d 100644
--- 
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
@@ -29,9 +29,13 @@ 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
  */
@@ -63,8 +67,25 @@ public class GroupStartupOrderTest extends 
StratosTestServerManager {
                     RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
             assertEquals(addedC3, true);
 
+
+            boolean addedC5 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" + "tomcat1-group-startup-order-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC5);
+
+            boolean addedC6 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" + "tomcat2-group-startup-order-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC6);
+
+            boolean addedC7 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" + "tomcat3-group-startup-order-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC7);
+
+            boolean addedC8 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGES_PATH + "/" + "tomcat-group-startup-order-test.json",
+                    RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
+            assertTrue(addedC8);
+
             boolean addedG1 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
-                            "/" + 
"esb-php-group-application-bursting-test.json", RestConstants.CARTRIDGE_GROUPS,
+                            "/" + "esb-php-group-startup-order-test.json", 
RestConstants.CARTRIDGE_GROUPS,
                     RestConstants.CARTRIDGE_GROUPS_NAME);
             assertEquals(addedG1, true);
 
@@ -73,11 +94,22 @@ public class GroupStartupOrderTest extends 
StratosTestServerManager {
                             CartridgeGroupBean.class, 
RestConstants.CARTRIDGE_GROUPS_NAME);
             assertEquals(beanG1.getName(), 
"esb-php-group-application-bursting-test");
 
+            boolean addedG2 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + "group6-group-startup-order-test.json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(addedG2);
+
+            boolean addedG3 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.CARTRIDGE_GROUPS_PATH +
+                            "/" + "group8-group-startup-order-test.json", 
RestConstants.CARTRIDGE_GROUPS,
+                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            assertTrue(addedG3);
+
             boolean addedN1 = restClientTenant1.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 = restClientTenant1.addEntity(RESOURCES_PATH + 
RestConstants.NETWORK_PARTITIONS_PATH + "/" +
                             
"network-partition-application-bursting-test-2.json",
                     RestConstants.NETWORK_PARTITIONS, 
RestConstants.NETWORK_PARTITIONS_NAME);

http://git-wip-us.apache.org/repos/asf/stratos/blob/3ab657aa/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 9873f05..cbc5a65 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
@@ -28,8 +28,6 @@ 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;
@@ -124,9 +122,10 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
             //Application active handling
             topologyHandler.assertApplicationStatus(bean.getApplicationId(),
                     ApplicationStatus.Active,tenant1Id);
-            Application application = 
ApplicationManager.getApplications().getApplicationByTenant(bean.getApplicationId(),
 tenant1Id);
-            String groupId = 
topologyHandler.generateId(application.getUniqueIdentifier(),
-                    "g-G1-1x0-group-termination-behavior-test", 
application.getUniqueIdentifier() + "-1");
+
+            Application depApplication= 
topologyHandler.getApplication(bean.getApplicationId(), tenant1Id);
+            String groupId = 
topologyHandler.generateId(depApplication.getUniqueIdentifier(),
+                    "g-G1-1x0-group-termination-behavior-test", 
depApplication.getUniqueIdentifier() + "-1");
 
             String clusterIdC3 = topologyHandler.
                     getClusterIdFromAlias(bean.getApplicationId(),
@@ -143,28 +142,36 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
             assertCreationOfNodes(groupId, clusterIdC2);
             assertCreationOfNodes(clusterIdC3, clusterIdC4);
 
+
             //Group active handling
             
topologyHandler.assertGroupActivation(bean.getApplicationId(),tenant1Id);
 
             //Cluster active handling
             
topologyHandler.assertClusterActivation(bean.getApplicationId(),tenant1Id);
 
+            //Terminate one member in the cluster
+            TopologyHandler.getInstance().terminateMemberFromCluster(
+                    "c3-group-termination-behavior-test",
+                    bean.getApplicationId(),
+                    mockIaasApiClient,tenant1Id);
+
             List<String> clusterIds = new ArrayList<String>();
             clusterIds.add(clusterIdC3);
             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(),
                     ApplicationStatus.Active,tenant1Id);
 
             assertCreationOfNodes(groupId, clusterIdC2);
+
             assertCreationOfNodes(clusterIdC3, clusterIdC4);
 
             //Group active handling
@@ -275,7 +282,7 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
         long startTime = System.currentTimeMillis();
         Map<String, Long> inActiveMap = 
TopologyHandler.getInstance().getInActiveMembers();
 
-        while(!inActiveMap.containsKey(clusterId)) {
+        while (!inActiveMap.containsKey(clusterId)) {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException ignore) {
@@ -287,7 +294,7 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
         }
         assertTrue(inActiveMap.containsKey(clusterId));
 
-        while(!inActiveMap.containsKey(groupId)) {
+        while (!inActiveMap.containsKey(groupId)) {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException ignore) {
@@ -303,9 +310,9 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
 
     private void assertTerminatingOfNodes(String groupId, List<String> 
clusterIds) {
         Map<String, Long> terminatingMembers = 
TopologyHandler.getInstance().getTerminatingMembers();
-        for(String clusterId : clusterIds) {
+        for (String clusterId : clusterIds) {
             long startTime = System.currentTimeMillis();
-            while(!terminatingMembers.containsKey(clusterId)) {
+            while (!terminatingMembers.containsKey(clusterId)) {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException ignore) {
@@ -318,7 +325,7 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
             assertTrue(terminatingMembers.containsKey(groupId));
         }
         long startTime = System.currentTimeMillis();
-        while(!terminatingMembers.containsKey(groupId)) {
+        while (!terminatingMembers.containsKey(groupId)) {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException ignore) {
@@ -336,8 +343,8 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
         long startTime = System.currentTimeMillis();
         Map<String, Long> terminatedMembers = 
TopologyHandler.getInstance().getTerminatedMembers();
 
-        for(String clusterId : clusterIds) {
-            while(!terminatedMembers.containsKey(clusterId)) {
+        for (String clusterId : clusterIds) {
+            while (!terminatedMembers.containsKey(clusterId)) {
                 try {
                     Thread.sleep(1000);
                 } catch (InterruptedException ignore) {
@@ -350,7 +357,7 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
             assertTrue(terminatedMembers.containsKey(clusterId));
         }
 
-        while(!terminatedMembers.containsKey(groupId)) {
+        while (!terminatedMembers.containsKey(groupId)) {
             try {
                 Thread.sleep(1000);
             } catch (InterruptedException ignore) {
@@ -366,14 +373,35 @@ public class GroupTerminationBehaviorTest extends 
StratosTestServerManager {
 
     private void assertCreationOfNodes(String firstNodeId, String 
secondNodeId) {
         //group1 started first, then cluster started later
-
+        long startTime = System.currentTimeMillis();
         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.
+        while(!activeMembers.containsKey(firstNodeId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+            }
+            activeMembers = 
TopologyHandler.getInstance().getActivateddMembers();
+            if ((System.currentTimeMillis() - startTime) > 
GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
         assertTrue(activeMembers.containsKey(firstNodeId));
+
+        while(!createdMembers.containsKey(secondNodeId)) {
+            try {
+                Thread.sleep(1000);
+            } catch (InterruptedException e) {
+            }
+            createdMembers = TopologyHandler.getInstance().getCreatedMembers();
+            if ((System.currentTimeMillis() - startTime) > 
GROUP_INACTIVE_TIMEOUT) {
+                break;
+            }
+        }
+
         assertTrue(createdMembers.containsKey(secondNodeId));
 
         assertTrue(createdMembers.get(secondNodeId) > 
activeMembers.get(firstNodeId));
     }
 }
-

Reply via email to