You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by re...@apache.org on 2015/08/20 10:31:10 UTC
[1/4] stratos git commit: fixing monitors getting executed in order
to satisfy the minimum count when the application is undeploying
Repository: stratos
Updated Branches:
refs/heads/master bee0d764a -> d1a5ce4ae
fixing monitors getting executed in order to satisfy the minimum count when the application is undeploying
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/2f6a191a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/2f6a191a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/2f6a191a
Branch: refs/heads/master
Commit: 2f6a191a806709d78a87ae83055589be58563c65
Parents: e59a6e1
Author: reka <rt...@gmail.com>
Authored: Thu Aug 20 12:25:06 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Aug 20 14:00:28 2015 +0530
----------------------------------------------------------------------
.../monitor/component/ApplicationMonitor.java | 21 ++--
.../monitor/component/GroupMonitor.java | 108 ++++++++++---------
2 files changed, 69 insertions(+), 60 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/2f6a191a/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 41b6e1f..70ee9d4 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
@@ -147,20 +147,21 @@ public class ApplicationMonitor extends ParentComponentMonitor {
new ConcurrentHashMap<String, ScalingUpBeyondMaxEvent>());
}
}
-
- Application application = ApplicationHolder.getApplications().getApplication(appId);
- if (application != null) {
- List<String> defaultNetworkPartitions = getDefaultNetworkPartitions(application);
- //Checking for whether minimum application instances are there.
- if (defaultNetworkPartitions != null) {
- checkForMinimumApplicationInstances(application, defaultNetworkPartitions);
- }
+ //When the application is getting un-deployed, need to avoid
+ // checking the minimum count sanctification
+ if (!isTerminating()) {
+ Application application = ApplicationHolder.getApplications().getApplication(appId);
+ if (application != null) {
+ List<String> defaultNetworkPartitions = getDefaultNetworkPartitions(application);
+ //Checking for whether minimum application instances are there.
+ if (defaultNetworkPartitions != null) {
+ checkForMinimumApplicationInstances(application, defaultNetworkPartitions);
+ }
/*//Checking for whether any application instances need to be terminated.
checkForApplicationInstanceTermination(application, defaultNetworkPartitions);*/
+ }
}
-
-
}
};
executorService.execute(monitoringRunnable);
http://git-wip-us.apache.org/repos/asf/stratos/blob/2f6a191a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
index c3e89ee..bc3052a 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/monitor/component/GroupMonitor.java
@@ -155,65 +155,73 @@ public class GroupMonitor extends ParentComponentMonitor {
}
}
- Collection<Instance> parentInstances = parent.getInstances();
-
- for (Instance parentInstance : parentInstances) {
- if (parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) {
- int nonTerminatedInstancesCount = networkPartitionContext.
- getNonTerminatedInstancesCount(parentInstance.getInstanceId());
- int minInstances = networkPartitionContext.
- getMinInstanceCount();
- int maxInstances = networkPartitionContext.
- getMaxInstanceCount();
- int activeInstances = networkPartitionContext.
- getActiveInstancesCount(parentInstance.getInstanceId());
-
- if (nonTerminatedInstancesCount < minInstances) {
- int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
- for (int i = 0; i < instancesToBeCreated; i++) {
- for (InstanceContext parentInstanceContext : parent.
- getNetworkPartitionContext(networkPartitionContext.getId()).
- getInstanceIdToInstanceContextMap().values()) {
- //keep on scale-up/scale-down only if the application is active
- ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
- getAppMonitor(appId);
- int activeAppInstances = appMonitor.
+ ApplicationMonitor applicationMonitor = AutoscalerContext.getInstance().
+ getAppMonitor(appId);
+
+ //When the application is getting un-deployed, need to avoid
+ // checking the minimum count sanctification
+ if (!applicationMonitor.isTerminating()) {
+ Collection<Instance> parentInstances = parent.getInstances();
+
+ for (Instance parentInstance : parentInstances) {
+ if (parentInstance.getNetworkPartitionId().equals(networkPartitionContext.getId())) {
+ int nonTerminatedInstancesCount = networkPartitionContext.
+ getNonTerminatedInstancesCount(parentInstance.getInstanceId());
+ int minInstances = networkPartitionContext.
+ getMinInstanceCount();
+ int maxInstances = networkPartitionContext.
+ getMaxInstanceCount();
+ int activeInstances = networkPartitionContext.
+ getActiveInstancesCount(parentInstance.getInstanceId());
+
+ if (nonTerminatedInstancesCount < minInstances) {
+ int instancesToBeCreated = minInstances - nonTerminatedInstancesCount;
+ for (int i = 0; i < instancesToBeCreated; i++) {
+ for (InstanceContext parentInstanceContext : parent.
getNetworkPartitionContext(networkPartitionContext.getId()).
- getActiveInstancesCount();
- if (activeAppInstances > 0) {
- //Creating new group instance based on the existing parent instances
- log.info("Creating a group instance of [application] "
- + appId + " [group] " + id +
- " as the the minimum required instances are not met");
-
- createInstanceOnDemand(parentInstanceContext.getId());
+ getInstanceIdToInstanceContextMap().values()) {
+ //keep on scale-up/scale-down only if the application is active
+ ApplicationMonitor appMonitor = AutoscalerContext.getInstance().
+ getAppMonitor(appId);
+ int activeAppInstances = appMonitor.
+ getNetworkPartitionContext(networkPartitionContext.getId()).
+ getActiveInstancesCount();
+ if (activeAppInstances > 0) {
+ //Creating new group instance based on the existing parent instances
+ log.info("Creating a group instance of [application] "
+ + appId + " [group] " + id +
+ " as the the minimum required instances are not met");
+
+ createInstanceOnDemand(parentInstanceContext.getId());
+ }
}
- }
+ }
}
- }
- //If the active instances are higher than the max instances,
- // the group instance has to get terminated
- if (activeInstances > maxInstances) {
- int instancesToBeTerminated = activeInstances - maxInstances;
- List<InstanceContext> contexts =
- networkPartitionContext.getInstanceIdToInstanceContextMap(
- parentInstance.getInstanceId());
- List<InstanceContext> contextList = new ArrayList<InstanceContext>(contexts);
- for (int i = 0; i < instancesToBeTerminated; i++) {
- InstanceContext instanceContext = contextList.get(i);
- //scale down only when extra instances found
- log.info("Terminating a group instance of [application] "
- + appId + " [group] " + id + " as it exceeded the " +
- "maximum no of instances by " + instancesToBeTerminated);
-
- handleScalingDownBeyondMin((ParentInstanceContext) instanceContext,
- networkPartitionContext, true);
+ //If the active instances are higher than the max instances,
+ // the group instance has to get terminated
+ if (activeInstances > maxInstances) {
+ int instancesToBeTerminated = activeInstances - maxInstances;
+ List<InstanceContext> contexts =
+ networkPartitionContext.getInstanceIdToInstanceContextMap(
+ parentInstance.getInstanceId());
+ List<InstanceContext> contextList = new ArrayList<InstanceContext>(contexts);
+ for (int i = 0; i < instancesToBeTerminated; i++) {
+ InstanceContext instanceContext = contextList.get(i);
+ //scale down only when extra instances found
+ log.info("Terminating a group instance of [application] "
+ + appId + " [group] " + id + " as it exceeded the " +
+ "maximum no of instances by " + instancesToBeTerminated);
+
+ handleScalingDownBeyondMin((ParentInstanceContext) instanceContext,
+ networkPartitionContext, true);
+ }
}
}
}
}
+
}
}
};
[3/4] stratos git commit: fixing the application deployment
unnecessary wait time
Posted by re...@apache.org.
fixing the application deployment unnecessary wait time
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/0c794b09
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/0c794b09
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/0c794b09
Branch: refs/heads/master
Commit: 0c794b098e1f28414cc9330eb68fe6aa12231ead
Parents: 2f6a191
Author: reka <rt...@gmail.com>
Authored: Thu Aug 20 13:47:19 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Aug 20 14:00:29 2015 +0530
----------------------------------------------------------------------
.../AutoscalerTopologyEventReceiver.java | 69 +++++++++-----------
.../services/impl/AutoscalerServiceImpl.java | 12 ++--
2 files changed, 37 insertions(+), 44 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/0c794b09/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
index 3a8c457..2573991 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/event/receiver/topology/AutoscalerTopologyEventReceiver.java
@@ -132,47 +132,38 @@ public class AutoscalerTopologyEventReceiver {
ApplicationClustersCreatedEvent applicationClustersCreatedEvent =
(ApplicationClustersCreatedEvent) event;
String appId = applicationClustersCreatedEvent.getAppId();
- boolean appMonitorCreationTriggered = false;
- int retries = 30;
- while (!appMonitorCreationTriggered && retries > 0) {
- try {
- //acquire read lock
- ApplicationHolder.acquireReadLock();
- //start the application monitor
- ApplicationContext applicationContext = AutoscalerContext.getInstance().
- getApplicationContext(appId);
- if (applicationContext != null &&
- applicationContext.getStatus().
- equals(ApplicationContext.STATUS_DEPLOYED)) {
- if (!AutoscalerContext.getInstance().
- containsApplicationPendingMonitor(appId)) {
- appMonitorCreationTriggered = true;
- AutoscalerUtil.getInstance().startApplicationMonitor(appId);
- break;
- }
+ try {
+ //acquire read lock
+ ApplicationHolder.acquireReadLock();
+ //start the application monitor
+ ApplicationContext applicationContext = AutoscalerContext.getInstance().
+ getApplicationContext(appId);
+ if (applicationContext != null &&
+ applicationContext.getStatus().
+ equals(ApplicationContext.STATUS_DEPLOYED)) {
+ if (!AutoscalerContext.getInstance().
+ containsApplicationPendingMonitor(appId)) {
+ AutoscalerUtil.getInstance().startApplicationMonitor(appId);
}
- } catch (Exception e) {
- String msg = "Error processing event " + e.getLocalizedMessage();
- log.error(msg, e);
- } finally {
- //release read lock
- ApplicationHolder.releaseReadLock();
- }
-
- try {
- retries--;
- Thread.sleep(1000);
- } catch (InterruptedException e) {
+ } else {
+ String status;
+ if(applicationContext == null) {
+ status = null;
+ } else {
+ status = applicationContext.getStatus();
+ }
+ log.error("Error while creating the application monitor due to " +
+ "in-consistent persistence of [application] " +
+ applicationClustersCreatedEvent.getAppId() + ", " +
+ "the [application-context] " + applicationContext +
+ " status of [application-context] " + status);
}
- }
-
- // Reason is to re-try 5 time is because application status might not become "deployed" yet, refer deployApplication API for more information.
- // Reason why not throwing error after 5 times is because this not the only place we trigger app-monitor creation.
- if (!appMonitorCreationTriggered) {
- String msg = String.format("Application monitor creation is not triggered on application "
- + "clusters created event even after 5 retries [application-id] %s. "
- + "Possible cause is either application context is null or application status didn't become %s yet.", appId, ApplicationContext.STATUS_DEPLOYED);
- log.warn(msg);
+ } catch (Exception e) {
+ String msg = "Error processing event " + e.getLocalizedMessage();
+ log.error(msg, e);
+ } finally {
+ //release read lock
+ ApplicationHolder.releaseReadLock();
}
} catch (ClassCastException e) {
String msg = "Error while casting the event " + e.getLocalizedMessage();
http://git-wip-us.apache.org/repos/asf/stratos/blob/0c794b09/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
index f75fbc5..f0e797f 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/services/impl/AutoscalerServiceImpl.java
@@ -245,10 +245,6 @@ public class AutoscalerServiceImpl implements AutoscalerService {
// validating application policy against the application
AutoscalerUtil.validateApplicationPolicyAgainstApplication(applicationId, applicationPolicyId);
- // Create application clusters in cloud controller and send application created event
- ApplicationBuilder.handleApplicationDeployment(application,
- applicationContext.getComponents().getApplicationClusterContexts());
-
// Setting application policy id in application object
try {
ApplicationHolder.acquireWriteLock();
@@ -272,7 +268,13 @@ public class AutoscalerServiceImpl implements AutoscalerService {
applicationContext.setStatus(ApplicationContext.STATUS_DEPLOYED);
AutoscalerContext.getInstance().updateApplicationContext(applicationContext);
- log.info("Waiting for application clusters to be created: [application-id] " + applicationId);
+ // Create application clusters in cloud controller and send application created event
+ ApplicationBuilder.handleApplicationDeployment(application,
+ applicationContext.getComponents().getApplicationClusterContexts());
+
+ log.info("Waiting for application clusters to be created: [application-id] " +
+ applicationId);
+
return true;
} catch (Exception e) {
ApplicationContext applicationContext = RegistryManager.getInstance().
[4/4] stratos git commit: code formatting
Posted by re...@apache.org.
code formatting
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/d1a5ce4a
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/d1a5ce4a
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/d1a5ce4a
Branch: refs/heads/master
Commit: d1a5ce4ae00370fe9150a0c9c71ef6bb296678e2
Parents: 0c794b0
Author: reka <rt...@gmail.com>
Authored: Thu Aug 20 13:47:42 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Aug 20 14:00:29 2015 +0530
----------------------------------------------------------------------
.../integration/tests/application/GroupStartupOrderTest.java | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/d1a5ce4a/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 dd30def..4b68695 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
@@ -27,8 +27,6 @@ import org.apache.stratos.integration.tests.TopologyHandler;
import org.apache.stratos.messaging.domain.application.ApplicationStatus;
import org.testng.annotations.Test;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Map;
import static junit.framework.Assert.*;
@@ -313,7 +311,7 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
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)) {
+ while (!activeMembers.containsKey(firstNodeId)) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
@@ -325,7 +323,7 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
}
assertTrue(activeMembers.containsKey(firstNodeId));
- while(!createdMembers.containsKey(secondNodeId)) {
+ while (!createdMembers.containsKey(secondNodeId)) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
@@ -347,7 +345,7 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
Map<String, Long> createdMembers = TopologyHandler.getInstance().getCreatedMembers();
//Active member should be available at the time cluster is started to create.
- while(!(createdMembers.containsKey(firstNodeId) && createdMembers.containsKey(firstNodeId))) {
+ while (!(createdMembers.containsKey(firstNodeId) && createdMembers.containsKey(firstNodeId))) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
[2/4] stratos git commit: fixing startup order test cases issues
Posted by re...@apache.org.
fixing startup order test cases issues
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/e59a6e1c
Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/e59a6e1c
Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/e59a6e1c
Branch: refs/heads/master
Commit: e59a6e1c791908101e330042e7f6c6d3790af974
Parents: bee0d76
Author: reka <rt...@gmail.com>
Authored: Thu Aug 20 10:39:06 2015 +0530
Committer: reka <rt...@gmail.com>
Committed: Thu Aug 20 14:00:28 2015 +0530
----------------------------------------------------------------------
.../application/GroupStartupOrderTest.java | 207 +++++++++----------
...ication-policy-group-startup-order-test.json | 7 +-
.../applications/group-startup-order-test.json | 82 +++++---
.../esb-php-group-startup-order-test.json | 19 --
.../group8-group-startup-order-test.json | 2 +-
.../src/test/resources/stratos-testing.xml | 10 +-
6 files changed, 152 insertions(+), 175 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/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 d565e4f..dd30def 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
@@ -27,6 +27,7 @@ import org.apache.stratos.integration.tests.TopologyHandler;
import org.apache.stratos.messaging.domain.application.ApplicationStatus;
import org.testng.annotations.Test;
+import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -39,6 +40,7 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
private static final Log log = LogFactory.getLog(SampleApplicationsTest.class);
private static final String RESOURCES_PATH = "/group-startup-order-test";
private static final int GROUP_ACTIVE_TIMEOUT = 300000;
+ private static final int NODES_START_PARALLEL_TIMEOUT = 30000;
@Test
@@ -82,11 +84,6 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
assertTrue(addedC8);
- boolean addedG1 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGE_GROUPS_PATH +
- "/" + "esb-php-group-startup-order-test.json", RestConstants.CARTRIDGE_GROUPS,
- RestConstants.CARTRIDGE_GROUPS_NAME);
- assertTrue(addedG1);
-
boolean addedG2 = restClient.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGE_GROUPS_PATH +
"/" + "group6-group-startup-order-test.json", RestConstants.CARTRIDGE_GROUPS,
RestConstants.CARTRIDGE_GROUPS_NAME);
@@ -128,60 +125,83 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
RestConstants.APPLICATIONS_NAME);
assertTrue(deployed);
- //Application active handling
- topologyHandler.assertApplicationStatus(bean.getApplicationId(),
- ApplicationStatus.Active);
- String groupId = topologyHandler.generateId(bean.getApplicationId(),
- "g-G1-1x0-group-startup-order-test", bean.getApplicationId() + "-1");
+ String group6 = topologyHandler.generateId(bean.getApplicationId(),
+ "my-group6-group-startup-order-test", bean.getApplicationId() + "-1");
- String clusterIdC3 = topologyHandler.
+ String group8 = topologyHandler.generateId(bean.getApplicationId(),
+ "my-group8-group-startup-order-test", bean.getApplicationId() + "-1");
+
+ String lb = topologyHandler.
getClusterIdFromAlias(bean.getApplicationId(),
- "c3-1x0-group-startup-order-test");
+ "my-stratos-lb-group-startup-order-test");
- String clusterIdC4 = topologyHandler.
+ String tomcat = topologyHandler.
getClusterIdFromAlias(bean.getApplicationId(),
- "c4-1x0-group-startup-order-test");
+ "my-tomcat-group-startup-order-test");
+
+ assertCreationOfNodes(lb, tomcat);
+
+ assertCreationOfNodes(tomcat, group6);
+
+ assertCreationOfNodesInParallel(group6, group8);
+
+ assertCreationOfNodes(tomcat, group8);
- String clusterIdC2 = topologyHandler.
+ String group7 = topologyHandler.generateId(bean.getApplicationId(),
+ "my-group7-group-startup-order-test", bean.getApplicationId() + "-1");
+
+ String groupTom2 = topologyHandler.generateId(bean.getApplicationId(),
+ "my-group6-group-tom2-group-startup-order-test", bean.getApplicationId() + "-1");
+
+ assertCreationOfNodesInParallel(group7, groupTom2);
+
+ String group7Tomcat = topologyHandler.
getClusterIdFromAlias(bean.getApplicationId(),
- "c2-1x0-group-startup-order-test");
+ "my-group7-tomcat-group-startup-order-test");
- /*assertCreationOfNodes(groupId, clusterIdC2);
- assertCreationOfNodes(clusterIdC3, clusterIdC4);
+ String group7Tomcat1 = topologyHandler.
+ getClusterIdFromAlias(bean.getApplicationId(),
+ "my-group7-tomcat1-group-startup-order-test");
- //Group active handling
- topologyHandler.assertGroupActivation(bean.getApplicationId());
+ assertCreationOfNodes(group7Tomcat, group7Tomcat1);
- //Cluster active handling
- topologyHandler.assertClusterActivation(bean.getApplicationId());
+ String groupTom2Tomcat2 = topologyHandler.
+ getClusterIdFromAlias(bean.getApplicationId(),
+ "my-group-tom2-tomcat2-group-startup-order-test");
- List<String> clusterIds = new ArrayList<String>();
- clusterIds.add(clusterIdC3);
- clusterIds.add(clusterIdC4);
- clusterIds.add(clusterIdC2);
+ String groupTom2Tomcat3 = topologyHandler.
+ getClusterIdFromAlias(bean.getApplicationId(),
+ "my-group-tom2-tomcat3-group-startup-order-test");
- assertGroupInactive(groupId, clusterIdC3);
+ assertCreationOfNodes(groupTom2Tomcat2, groupTom2Tomcat3);
- assertTerminatingOfNodes(groupId, clusterIds);
+ String group8Tomcat2 = topologyHandler.
+ getClusterIdFromAlias(bean.getApplicationId(),
+ "my-tomcat2-group8-group-startup-order-test");
- assertTerminationOfNodes(groupId, clusterIds);
+ String group8Tomcat = topologyHandler.
+ getClusterIdFromAlias(bean.getApplicationId(),
+ "my-tomcat-group8-group-startup-order-test");
+
+ assertCreationOfNodesInParallel(group8Tomcat2, group8Tomcat);
//Application active handling
topologyHandler.assertApplicationStatus(bean.getApplicationId(),
ApplicationStatus.Active);
- assertCreationOfNodes(groupId, clusterIdC2);
-
- assertCreationOfNodes(clusterIdC3, clusterIdC4);
-
//Group active handling
topologyHandler.assertGroupActivation(bean.getApplicationId());
//Cluster active handling
- topologyHandler.assertClusterActivation(bean.getApplicationId());*/
+ topologyHandler.assertClusterActivation(bean.getApplicationId());
boolean removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS,
- "g-sc-G4-group-startup-order-test",
+ "group6-group-startup-order-test",
+ RestConstants.CARTRIDGE_GROUPS_NAME);
+ assertFalse(removedGroup);
+
+ removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS,
+ "group8-group-startup-order-test",
RestConstants.CARTRIDGE_GROUPS_NAME);
assertFalse(removedGroup);
@@ -230,26 +250,35 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
assertNull(beanRemoved);
removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS,
- "g-sc-G4-group-startup-order-test",
+ "group6-group-startup-order-test",
+ RestConstants.CARTRIDGE_GROUPS_NAME);
+ assertTrue(removedGroup);
+
+ removedGroup = restClient.removeEntity(RestConstants.CARTRIDGE_GROUPS,
+ "group8-group-startup-order-test",
RestConstants.CARTRIDGE_GROUPS_NAME);
assertTrue(removedGroup);
- boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, "c1-group-startup-order-test",
+ boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, "stratos-lb-group-startup-order-test",
RestConstants.CARTRIDGES_NAME);
assertTrue(removedC1);
- boolean removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, "c2-group-startup-order-test",
+ boolean removedC2 = restClient.removeEntity(RestConstants.CARTRIDGES, "tomcat-group-startup-order-test",
RestConstants.CARTRIDGES_NAME);
assertTrue(removedC2);
- boolean removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, "c3-group-startup-order-test",
+ boolean removedC3 = restClient.removeEntity(RestConstants.CARTRIDGES, "tomcat1-group-startup-order-test",
RestConstants.CARTRIDGES_NAME);
assertTrue(removedC3);
- boolean removedC4 = restClient.removeEntity(RestConstants.CARTRIDGES, "c4-group-startup-order-test",
+ boolean removedC4 = restClient.removeEntity(RestConstants.CARTRIDGES, "tomcat2-group-startup-order-test",
RestConstants.CARTRIDGES_NAME);
assertTrue(removedC4);
+ boolean removedC5 = restClient.removeEntity(RestConstants.CARTRIDGES, "tomcat3-group-startup-order-test",
+ RestConstants.CARTRIDGES_NAME);
+ assertTrue(removedC5);
+
removedAuto = restClient.removeEntity(RestConstants.AUTOSCALING_POLICIES,
autoscalingPolicyId, RestConstants.AUTOSCALING_POLICIES_NAME);
assertTrue(removedAuto);
@@ -278,108 +307,58 @@ public class GroupStartupOrderTest extends StratosTestServerManager {
}
}
- private void assertGroupInactive(String groupId, String clusterId) {
+ private void assertCreationOfNodes(String firstNodeId, String secondNodeId) {
+ //group1 started first, then cluster started later
long startTime = System.currentTimeMillis();
- Map<String, Long> inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
-
- while (!inActiveMap.containsKey(clusterId)) {
+ 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 ignore) {
+ } catch (InterruptedException e) {
}
- inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
+ activeMembers = TopologyHandler.getInstance().getActivateddMembers();
if ((System.currentTimeMillis() - startTime) > GROUP_ACTIVE_TIMEOUT) {
break;
}
}
- assertTrue(inActiveMap.containsKey(clusterId));
+ assertTrue(activeMembers.containsKey(firstNodeId));
- while (!inActiveMap.containsKey(groupId)) {
+ while(!createdMembers.containsKey(secondNodeId)) {
try {
Thread.sleep(1000);
- } catch (InterruptedException ignore) {
+ } catch (InterruptedException e) {
}
- inActiveMap = TopologyHandler.getInstance().getInActiveMembers();
+ createdMembers = TopologyHandler.getInstance().getCreatedMembers();
if ((System.currentTimeMillis() - startTime) > GROUP_ACTIVE_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_ACTIVE_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_ACTIVE_TIMEOUT) {
- break;
- }
- }
- assertTrue(terminatingMembers.containsKey(groupId));
+ assertTrue(createdMembers.containsKey(secondNodeId));
+ assertTrue(createdMembers.get(secondNodeId) > activeMembers.get(firstNodeId));
}
- private void assertTerminationOfNodes(String groupId, List<String> clusterIds) {
+ private void assertCreationOfNodesInParallel(String firstNodeId, String secondNodeId) {
+ //group1 started first, then cluster started later
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_ACTIVE_TIMEOUT) {
- break;
- }
- }
- assertTrue(terminatedMembers.containsKey(clusterId));
- }
+ Map<String, Long> createdMembers = TopologyHandler.getInstance().getCreatedMembers();
+ //Active member should be available at the time cluster is started to create.
- while (!terminatedMembers.containsKey(groupId)) {
+ while(!(createdMembers.containsKey(firstNodeId) && createdMembers.containsKey(firstNodeId))) {
try {
Thread.sleep(1000);
- } catch (InterruptedException ignore) {
+ } catch (InterruptedException e) {
}
- terminatedMembers = TopologyHandler.getInstance().getTerminatedMembers();
- if ((System.currentTimeMillis() - startTime) > GROUP_ACTIVE_TIMEOUT) {
+ createdMembers = TopologyHandler.getInstance().getCreatedMembers();
+ if ((System.currentTimeMillis() - startTime) > NODES_START_PARALLEL_TIMEOUT) {
break;
}
}
+ assertTrue(createdMembers.containsKey(firstNodeId));
+ assertTrue(createdMembers.containsKey(firstNodeId));
- 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));
}
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/products/stratos/modules/integration/src/test/resources/group-startup-order-test/application-policies/application-policy-group-startup-order-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/application-policies/application-policy-group-startup-order-test.json b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/application-policies/application-policy-group-startup-order-test.json
index 7bc9c2d..e7d80a5 100644
--- a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/application-policies/application-policy-group-startup-order-test.json
+++ b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/application-policies/application-policy-group-startup-order-test.json
@@ -2,15 +2,10 @@
"id": "application-policy-group-startup-order-test",
"algorithm": "one-after-another",
"networkPartitions": [
- "network-partition-group-startup-order-test-1",
- "network-partition-group-startup-order-test-2"
+ "network-partition-group-startup-order-test-1"
],
"properties": [
{
- "name": "networkPartitionGroups",
- "value": "network-partition-group-startup-order-test-1|network-partition-group-startup-order-test-2"
- },
- {
"name": "key-2",
"value": "value-2"
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/products/stratos/modules/integration/src/test/resources/group-startup-order-test/applications/group-startup-order-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/applications/group-startup-order-test.json b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/applications/group-startup-order-test.json
index 156553f..60ed310 100644
--- a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/applications/group-startup-order-test.json
+++ b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/applications/group-startup-order-test.json
@@ -8,11 +8,11 @@
"alias": "my-group6-group-startup-order-test",
"groupMinInstances": 1,
"groupMaxInstances": 1,
- "deploymentPolicy": "deployment-policy-group-startup-order-test",
"groups": [
{
"name": "group7-group-startup-order-test",
"alias": "my-group7-group-startup-order-test",
+ "deploymentPolicy": "deployment-policy-group-startup-order-test",
"groupMinInstances": 1,
"groupMaxInstances": 1,
"cartridges": [
@@ -47,38 +47,45 @@
}
}
]
- }
- ],
- "cartridges": [
- {
- "type": "tomcat2-group-startup-order-test",
- "cartridgeMin": 1,
- "cartridgeMax": 2,
- "subscribableInfo": {
- "alias": "my-group-tom2-tomcat2-group-startup-order-test",
- "autoscalingPolicy": "autoscaling-policy-group-startup-order-test",
- "artifactRepository": {
- "privateRepo": false,
- "repoUrl": "https://github.com/imesh/stratos-tomcat2-applications.git",
- "repoUsername": "",
- "repoPassword": ""
- }
- }
},
{
- "type": "tomcat3-group-startup-order-test",
- "cartridgeMin": 1,
- "cartridgeMax": 2,
- "subscribableInfo": {
- "alias": "my-group-tom2-tomcat3-group-startup-order-test",
- "autoscalingPolicy": "autoscaling-policy-group-startup-order-test",
- "artifactRepository": {
- "privateRepo": false,
- "repoUrl": "https://github.com/imesh/stratos-tomcat2-applications.git",
- "repoUsername": "",
- "repoPassword": ""
+ "name": "group-tom2-group-startup-order-test",
+ "alias": "my-group6-group-tom2-group-startup-order-test",
+ "deploymentPolicy": "deployment-policy-group-startup-order-test",
+ "groupMinInstances": 1,
+ "groupMaxInstances": 1,
+ "cartridges": [
+ {
+ "type": "tomcat2-group-startup-order-test",
+ "cartridgeMin": 1,
+ "cartridgeMax": 2,
+ "subscribableInfo": {
+ "alias": "my-group-tom2-tomcat2-group-startup-order-test",
+ "autoscalingPolicy": "autoscaling-policy-group-startup-order-test",
+ "artifactRepository": {
+ "privateRepo": false,
+ "repoUrl": "https://github.com/imesh/stratos-tomcat2-applications.git",
+ "repoUsername": "",
+ "repoPassword": ""
+ }
+ }
+ },
+ {
+ "type": "tomcat3-group-startup-order-test",
+ "cartridgeMin": 1,
+ "cartridgeMax": 2,
+ "subscribableInfo": {
+ "alias": "my-group-tom2-tomcat3-group-startup-order-test",
+ "autoscalingPolicy": "autoscaling-policy-group-startup-order-test",
+ "artifactRepository": {
+ "privateRepo": false,
+ "repoUrl": "https://github.com/imesh/stratos-tomcat2-applications.git",
+ "repoUsername": "",
+ "repoPassword": ""
+ }
+ }
}
- }
+ ]
}
]
},
@@ -128,6 +135,21 @@
"repoPassword": ""
}
}
+ },
+ {
+ "type": "tomcat-group-startup-order-test",
+ "cartridgeMin": 1,
+ "cartridgeMax": 2,
+ "subscribableInfo": {
+ "alias": "my-tomcat-group8-group-startup-order-test",
+ "autoscalingPolicy": "autoscaling-policy-group-startup-order-test",
+ "artifactRepository": {
+ "privateRepo": false,
+ "repoUrl": "https://github.com/imesh/stratos-tomcat2-applications.git",
+ "repoUsername": "",
+ "repoPassword": ""
+ }
+ }
}
]
}
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/esb-php-group-startup-order-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/esb-php-group-startup-order-test.json b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/esb-php-group-startup-order-test.json
deleted file mode 100644
index 0079c66..0000000
--- a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/esb-php-group-startup-order-test.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "name": "esb-php-group-startup-order-test",
- "cartridges": [
- "esb-group-startup-order-test",
- "php-group-startup-order-test"
- ],
- "dependencies": {
- "startupOrders": [
- {
- "aliases": [
- "cartridge.my-esb-group-startup-order-test",
- "cartridge.my-php-group-startup-order-test"
- ]
- }
- ],
- "terminationBehaviour": "terminate-none"
- }
-}
-
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/group8-group-startup-order-test.json
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/group8-group-startup-order-test.json b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/group8-group-startup-order-test.json
index 9bd63d9..c83b1ce 100644
--- a/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/group8-group-startup-order-test.json
+++ b/products/stratos/modules/integration/src/test/resources/group-startup-order-test/cartridges-groups/group8-group-startup-order-test.json
@@ -9,7 +9,7 @@
}
],
"cartridges": [
- "tomcat2-group-startup-order-test"
+ "tomcat2-group-startup-order-test","tomcat-group-startup-order-test"
],
"dependencies": {
"terminationBehaviour": "terminate-all"
http://git-wip-us.apache.org/repos/asf/stratos/blob/e59a6e1c/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 0680485..23f3766 100644
--- a/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
+++ b/products/stratos/modules/integration/src/test/resources/stratos-testing.xml
@@ -76,14 +76,14 @@
<class name="org.apache.stratos.integration.tests.application.PartitionRoundRobinClusterTest" />
</classes>
</test>
- <test name="GroupTerminationBehaviorTest">
+ <test name="GroupStartupOrderTest">
<classes>
- <class name="org.apache.stratos.integration.tests.application.GroupTerminationBehaviorTest" />
+ <class name="org.apache.stratos.integration.tests.application.GroupStartupOrderTest" />
</classes>
</test>
- <!--test name="GroupStartupOrderTest">
+ <test name="GroupTerminationBehaviorTest">
<classes>
- <class name="org.apache.stratos.integration.tests.application.GroupStartupOrderTest" />
+ <class name="org.apache.stratos.integration.tests.application.GroupTerminationBehaviorTest" />
</classes>
- </test-->
+ </test>
</suite>