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 <[email protected]> Authored: Thu Aug 20 10:39:06 2015 +0530 Committer: reka <[email protected]> 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>
