You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by is...@apache.org on 2014/10/13 08:03:02 UTC

git commit: adding parsing tests for applicaitons with groups

Repository: stratos
Updated Branches:
  refs/heads/4.0.0-grouping a456b4e22 -> c063ac59f


adding parsing tests for applicaitons with groups


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

Branch: refs/heads/4.0.0-grouping
Commit: c063ac59fedd7362f0d49f8319971301eed811c8
Parents: a456b4e
Author: Isuru Haththotuwa <is...@apache.org>
Authored: Mon Oct 13 11:30:05 2014 +0530
Committer: Isuru Haththotuwa <is...@apache.org>
Committed: Mon Oct 13 11:30:05 2014 +0530

----------------------------------------------------------------------
 .../application/parser/ParserUtils.java         |   4 +-
 .../CompositeApplicationParseTest.java          | 209 +++++++++++++++++++
 2 files changed, 211 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c063ac59/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
index edc0486..23b0bab 100644
--- a/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
+++ b/components/org.apache.stratos.cloud.controller/src/main/java/org/apache/stratos/cloud/controller/application/parser/ParserUtils.java
@@ -49,8 +49,8 @@ public class ParserUtils {
 
         for (String startupOrder : Arrays.asList(commaSeparatedStartupOrder.split(","))) {
             startupOrder = startupOrder.trim();
-            if (!startupOrder.startsWith("cartridge.")) {
-                throw new ApplicationDefinitionException("Incorrect Startup Order specified, should start with 'cartridge.'");
+            if (!startupOrder.startsWith("cartridge.") && !startupOrder.startsWith("group.")) {
+                throw new ApplicationDefinitionException("Incorrect Startup Order specified, should start with 'cartridge.' or 'group.'");
             }
 
             startupOrders.add(startupOrder);

http://git-wip-us.apache.org/repos/asf/stratos/blob/c063ac59/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/stratos/cloud/controller/application/CompositeApplicationParseTest.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/stratos/cloud/controller/application/CompositeApplicationParseTest.java b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/stratos/cloud/controller/application/CompositeApplicationParseTest.java
index 1859c72..d6f7928 100644
--- a/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/stratos/cloud/controller/application/CompositeApplicationParseTest.java
+++ b/components/org.apache.stratos.cloud.controller/src/test/java/org/apache/stratos/cloud/controller/application/CompositeApplicationParseTest.java
@@ -285,6 +285,215 @@ public class CompositeApplicationParseTest {
         applicationParser.parse(simpleAppCtxt);
     }
 
+    @Test
+    public void testAppWithOneCartridgeAndOneGroup () throws ApplicationDefinitionException {
+
+        ApplicationParser applicationParser = new DefaultApplicationParser();
+        ApplicationContext simpleAppCtxt = new ApplicationContext();
+        // app id
+        simpleAppCtxt.setApplicationId("simpleApp");
+        simpleAppCtxt.setAlias("simpleAppAlias");
+        // tenant info
+        simpleAppCtxt.setTenantId(-1234);
+        // components
+        ComponentContext simpleAppComponentCtxt = new ComponentContext();
+        // top level cartridges
+        SubscribableContext simpleAppSubscribableContext = new SubscribableContext();
+        simpleAppSubscribableContext.setType("php");
+        simpleAppSubscribableContext.setAlias("myphp");
+        simpleAppComponentCtxt.setSubscribableContexts(new SubscribableContext[]{simpleAppSubscribableContext});
+        // top level group
+        GroupContext simpleGroupContext = new GroupContext();
+        simpleGroupContext.setName("group1");
+        simpleGroupContext.setAlias("mygroup1");
+        simpleGroupContext.setAutoscalingPolicy("group_autoscaling_policy_1");
+        simpleGroupContext.setDeploymentPolicy("group_deployment_policy_1");
+        SubscribableContext groupSubscribableCtxt = new SubscribableContext();
+        groupSubscribableCtxt.setType("mysql");
+        groupSubscribableCtxt.setAlias("mygroup1mysql");
+        simpleGroupContext.setSubscribableContexts(new SubscribableContext[]{groupSubscribableCtxt});
+        simpleAppComponentCtxt.setGroupContexts(new GroupContext[]{simpleGroupContext});
+        simpleAppCtxt.setComponents(simpleAppComponentCtxt);
+        // subscribable information
+        SubscribableInfoContext simpleAppSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppSubscribableInfoCtxt.setAlias("myphp");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("deployment_policy_1");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("autoscale_policy_1");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("www.mygit.com/myphp.git");
+        simpleAppSubscribableInfoCtxt.setPrivateRepo(true);
+        simpleAppSubscribableInfoCtxt.setRepoUsername("admin");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("admin123");
+
+        SubscribableInfoContext simpleAppGroupSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppGroupSubscribableInfoCtxt.setAlias("mygroup1mysql");
+        simpleAppGroupSubscribableInfoCtxt.setAutoscalingPolicy("mysql_autoscaling_policy");
+        simpleAppGroupSubscribableInfoCtxt.setDeploymentPolicy("mysql_deployment_policy");
+
+        simpleAppCtxt.setSubscribableInfoContext(new SubscribableInfoContext[]{simpleAppSubscribableInfoCtxt,
+                simpleAppGroupSubscribableInfoCtxt});
+
+        // parse
+        applicationParser.parse(simpleAppCtxt);
+    }
+
+    @Test
+    public void testAppWithOneCartridgeAndOneGroupWithDependencies () throws ApplicationDefinitionException {
+
+        ApplicationParser applicationParser = new DefaultApplicationParser();
+        ApplicationContext simpleAppCtxt = new ApplicationContext();
+        // app id
+        simpleAppCtxt.setApplicationId("simpleApp");
+        simpleAppCtxt.setAlias("simpleAppAlias");
+        // tenant info
+        simpleAppCtxt.setTenantId(-1234);
+        // components
+        ComponentContext simpleAppComponentCtxt = new ComponentContext();
+        // top level cartridges
+        SubscribableContext simpleAppSubscribableContext = new SubscribableContext();
+        simpleAppSubscribableContext.setType("php");
+        simpleAppSubscribableContext.setAlias("myphp");
+        simpleAppComponentCtxt.setSubscribableContexts(new SubscribableContext[]{simpleAppSubscribableContext});
+        // top level group
+        GroupContext simpleGroupContext = new GroupContext();
+        simpleGroupContext.setName("group1");
+        simpleGroupContext.setAlias("mygroup1");
+        simpleGroupContext.setAutoscalingPolicy("group_autoscaling_policy_1");
+        simpleGroupContext.setDeploymentPolicy("group_deployment_policy_1");
+        SubscribableContext groupSubscribableCtxt = new SubscribableContext();
+        groupSubscribableCtxt.setType("mysql");
+        groupSubscribableCtxt.setAlias("mygroup1mysql");
+        simpleGroupContext.setSubscribableContexts(new SubscribableContext[]{groupSubscribableCtxt});
+        simpleAppComponentCtxt.setGroupContexts(new GroupContext[]{simpleGroupContext});
+        simpleAppCtxt.setComponents(simpleAppComponentCtxt);
+        // dependencies
+        DependencyContext simpleAppDependecyCtxt = new DependencyContext();
+        simpleAppDependecyCtxt.setKillBehaviour("kill-dependents");
+        simpleAppDependecyCtxt.setStartupOrdersContexts(new String[]{"group.group1,cartridge.myphp"});
+        simpleAppComponentCtxt.setDependencyContext(simpleAppDependecyCtxt);
+        // subscribable information
+        SubscribableInfoContext simpleAppSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppSubscribableInfoCtxt.setAlias("myphp");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("deployment_policy_1");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("autoscale_policy_1");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("www.mygit.com/myphp.git");
+        simpleAppSubscribableInfoCtxt.setPrivateRepo(true);
+        simpleAppSubscribableInfoCtxt.setRepoUsername("admin");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("admin123");
+
+        SubscribableInfoContext simpleAppGroupSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppGroupSubscribableInfoCtxt.setAlias("mygroup1mysql");
+        simpleAppGroupSubscribableInfoCtxt.setAutoscalingPolicy("mysql_autoscaling_policy");
+        simpleAppGroupSubscribableInfoCtxt.setDeploymentPolicy("mysql_deployment_policy");
+
+        simpleAppCtxt.setSubscribableInfoContext(new SubscribableInfoContext[]{simpleAppSubscribableInfoCtxt,
+                simpleAppGroupSubscribableInfoCtxt});
+
+        // parse
+        applicationParser.parse(simpleAppCtxt);
+    }
+
+    @Test (expected = ApplicationDefinitionException.class)
+    public void testAppWithOneCartridgeAndOneGroupWithInvalidDependencies () throws ApplicationDefinitionException {
+
+        ApplicationParser applicationParser = new DefaultApplicationParser();
+        ApplicationContext simpleAppCtxt = new ApplicationContext();
+        // app id
+        simpleAppCtxt.setApplicationId("simpleApp");
+        simpleAppCtxt.setAlias("simpleAppAlias");
+        // tenant info
+        simpleAppCtxt.setTenantId(-1234);
+        // components
+        ComponentContext simpleAppComponentCtxt = new ComponentContext();
+        // top level cartridges
+        SubscribableContext simpleAppSubscribableContext = new SubscribableContext();
+        simpleAppSubscribableContext.setType("php");
+        simpleAppSubscribableContext.setAlias("myphp");
+        simpleAppComponentCtxt.setSubscribableContexts(new SubscribableContext[]{simpleAppSubscribableContext});
+        // top level group
+        GroupContext simpleGroupContext = new GroupContext();
+        simpleGroupContext.setName("group1");
+        simpleGroupContext.setAlias("mygroup1");
+        simpleGroupContext.setAutoscalingPolicy("group_autoscaling_policy_1");
+        simpleGroupContext.setDeploymentPolicy("group_deployment_policy_1");
+        SubscribableContext groupSubscribableCtxt = new SubscribableContext();
+        groupSubscribableCtxt.setType("mysql");
+        groupSubscribableCtxt.setAlias("mygroup1mysql");
+        simpleGroupContext.setSubscribableContexts(new SubscribableContext[]{groupSubscribableCtxt});
+        simpleAppComponentCtxt.setGroupContexts(new GroupContext[]{simpleGroupContext});
+        simpleAppCtxt.setComponents(simpleAppComponentCtxt);
+        // dependencies
+        DependencyContext simpleAppDependecyCtxt = new DependencyContext();
+        simpleAppDependecyCtxt.setKillBehaviour("kill-dependents");
+        // invalid startup order, starting with 'group1'
+        simpleAppDependecyCtxt.setStartupOrdersContexts(new String[]{"group1.group1,cartridge.myphp"});
+        simpleAppComponentCtxt.setDependencyContext(simpleAppDependecyCtxt);
+        // subscribable information
+        SubscribableInfoContext simpleAppSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppSubscribableInfoCtxt.setAlias("myphp");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("deployment_policy_1");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("autoscale_policy_1");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("www.mygit.com/myphp.git");
+        simpleAppSubscribableInfoCtxt.setPrivateRepo(true);
+        simpleAppSubscribableInfoCtxt.setRepoUsername("admin");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("admin123");
+
+        SubscribableInfoContext simpleAppGroupSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppGroupSubscribableInfoCtxt.setAlias("mygroup1mysql");
+        simpleAppGroupSubscribableInfoCtxt.setAutoscalingPolicy("mysql_autoscaling_policy");
+        simpleAppGroupSubscribableInfoCtxt.setDeploymentPolicy("mysql_deployment_policy");
+
+        simpleAppCtxt.setSubscribableInfoContext(new SubscribableInfoContext[]{simpleAppSubscribableInfoCtxt,
+                simpleAppGroupSubscribableInfoCtxt});
+
+        // parse
+        applicationParser.parse(simpleAppCtxt);
+    }
+
+    @Test (expected = ApplicationDefinitionException.class)
+    public void testAppWithOneCartridgeAndOneGroupWithNoSubcribableInfoForGroup () throws ApplicationDefinitionException {
+
+        ApplicationParser applicationParser = new DefaultApplicationParser();
+        ApplicationContext simpleAppCtxt = new ApplicationContext();
+        // app id
+        simpleAppCtxt.setApplicationId("simpleApp");
+        simpleAppCtxt.setAlias("simpleAppAlias");
+        // tenant info
+        simpleAppCtxt.setTenantId(-1234);
+        // components
+        ComponentContext simpleAppComponentCtxt = new ComponentContext();
+        // top level cartridges
+        SubscribableContext simpleAppSubscribableContext = new SubscribableContext();
+        simpleAppSubscribableContext.setType("php");
+        simpleAppSubscribableContext.setAlias("myphp");
+        simpleAppComponentCtxt.setSubscribableContexts(new SubscribableContext[]{simpleAppSubscribableContext});
+        // top level group
+        GroupContext simpleGroupContext = new GroupContext();
+        simpleGroupContext.setName("group1");
+        simpleGroupContext.setAlias("mygroup1");
+        simpleGroupContext.setAutoscalingPolicy("group_autoscaling_policy_1");
+        simpleGroupContext.setDeploymentPolicy("group_deployment_policy_1");
+        SubscribableContext groupSubscribableCtxt = new SubscribableContext();
+        groupSubscribableCtxt.setType("mysql");
+        groupSubscribableCtxt.setAlias("mygroup1mysql");
+        simpleGroupContext.setSubscribableContexts(new SubscribableContext[]{groupSubscribableCtxt});
+        simpleAppComponentCtxt.setGroupContexts(new GroupContext[]{simpleGroupContext});
+        simpleAppCtxt.setComponents(simpleAppComponentCtxt);
+        // subscribable information
+        SubscribableInfoContext simpleAppSubscribableInfoCtxt = new SubscribableInfoContext();
+        simpleAppSubscribableInfoCtxt.setAlias("myphp");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("deployment_policy_1");
+        simpleAppSubscribableInfoCtxt.setAutoscalingPolicy("autoscale_policy_1");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("www.mygit.com/myphp.git");
+        simpleAppSubscribableInfoCtxt.setPrivateRepo(true);
+        simpleAppSubscribableInfoCtxt.setRepoUsername("admin");
+        simpleAppSubscribableInfoCtxt.setRepoUrl("admin123");
+
+        simpleAppCtxt.setSubscribableInfoContext(new SubscribableInfoContext[]{simpleAppSubscribableInfoCtxt});
+
+        // parse
+        applicationParser.parse(simpleAppCtxt);
+    }
+
     @AfterClass
     public static void tearDownAfterClass() {