You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by ra...@apache.org on 2015/09/02 08:01:30 UTC

[1/3] stratos git commit: Removing scaling.drl from integration test, resolving conflicts for RuleTasksDelegator.java in AS

Repository: stratos
Updated Branches:
  refs/heads/master 93960edf3 -> f2beacc71


Removing scaling.drl from integration test, resolving conflicts for RuleTasksDelegator.java in AS


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

Branch: refs/heads/master
Commit: f2beacc719cf8dd520e4a027672124d738f99a3e
Parents: c9de1b2
Author: Akila Perera <ra...@gmail.com>
Authored: Wed Sep 2 11:26:38 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Wed Sep 2 11:30:23 2015 +0530

----------------------------------------------------------------------
 .../autoscaler/rule/RuleTasksDelegator.java     |  2 +-
 .../tests/StratosTestServerManager.java         | 55 +++++++++++---------
 2 files changed, 31 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/f2beacc7/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
index 296c661..d221286 100644
--- a/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
+++ b/components/org.apache.stratos.autoscaler/src/main/java/org/apache/stratos/autoscaler/rule/RuleTasksDelegator.java
@@ -402,4 +402,4 @@ public class RuleTasksDelegator {
             return 0;
         }
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/f2beacc7/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
index 84ef2c3..52293ba 100755
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
@@ -39,19 +39,19 @@ import org.wso2.carbon.integration.framework.utils.TestUtil;
 
 import java.io.File;
 import java.io.IOException;
-import java.net.URL;
 import java.util.Properties;
 
+import static org.junit.Assert.assertTrue;
 import static org.testng.Assert.assertEquals;
-import static org.testng.Assert.assertNotNull;
 
 /**
  * Prepare activemq, Stratos server for tests, enables mock iaas, starts servers and stop them after the tests.
  */
 public class StratosTestServerManager extends TestServerManager {
     private static final Log log = LogFactory.getLog(StratosTestServerManager.class);
-    private static Properties integrationProperties;
-    public static final String BASE_PATH = StratosTestServerManager.class.getResource("/").getPath();
+    public static final String PATH_SEP = File.separator;
+    public static final String BASE_PATH = StratosTestServerManager.class.getResource(PATH_SEP).getPath();
+    public static final String CARBON_CONF_PATH = "repository" + PATH_SEP + "conf";
     public static final String STRATOS_DISTRIBUTION_NAME = "distribution.path";
     public final static String PORT_OFFSET = "carbon.port.offset";
     public static final String ACTIVEMQ_BIND_ADDRESS = "activemq.bind.address";
@@ -62,11 +62,13 @@ public class StratosTestServerManager extends TestServerManager {
     private static final String TENANT1_PASSWD = "stratos.tenant1.password";
     private static final String TENANT2_USER_NAME = "stratos.tenant2.username";
     private static final String TENANT2_PASSWD = "stratos.tenant2.password";
-    public static final String MOCK_IAAS_XML_FILE = "mock-iaas.xml";
-    public static final String SCALING_DROOL_FILE = "scaling.drl";
-    public static final String JNDI_PROPERTIES_FILE = "jndi.properties";
-    public static final String JMS_OUTPUT_ADAPTER_FILE = "JMSOutputAdaptor.xml";
+    public static final String MOCK_IAAS_XML_FILENAME = "mock-iaas.xml";
+    public static final String SCALING_DROOL_FILENAME = "scaling.drl";
+    public static final String JNDI_PROPERTIES_FILENAME = "jndi.properties";
+    public static final String JMS_OUTPUT_ADAPTER_FILENAME = "JMSOutputAdaptor.xml";
+    private static final String LOG4J_PROPERTIES_FILENAME = "log4j.properties";
 
+    private static Properties integrationProperties;
     protected String distributionName;
     protected int portOffset;
     protected String adminUsername;
@@ -81,7 +83,6 @@ public class StratosTestServerManager extends TestServerManager {
     private BrokerService broker = new BrokerService();
     private TestLogAppender testLogAppender = new TestLogAppender();
     private ServerUtils serverUtils;
-    private String carbonHome;
     protected IntegrationMockClient mockIaasApiClient;
     protected RestClient restClientTenant1;
     protected RestClient restClientTenant2;
@@ -158,7 +159,7 @@ public class StratosTestServerManager extends TestServerManager {
             if (carbonZip == null) {
                 throw new IllegalArgumentException("carbon zip file is null");
             } else {
-                carbonHome = this.serverUtils.setUpCarbonHome(carbonZip);
+                String carbonHome = this.serverUtils.setUpCarbonHome(carbonZip);
                 TestUtil.copySecurityVerificationService(carbonHome);
                 this.copyArtifacts(carbonHome);
                 log.info("Stratos server setup completed");
@@ -236,24 +237,28 @@ public class StratosTestServerManager extends TestServerManager {
     }
 
     protected void copyArtifacts(String carbonHome) throws IOException {
-        copyConfigFile(carbonHome, MOCK_IAAS_XML_FILE);
-        copyConfigFile(carbonHome, JNDI_PROPERTIES_FILE);
-        copyConfigFile(carbonHome, SCALING_DROOL_FILE, "repository/conf/drools");
-        copyConfigFile(carbonHome, JMS_OUTPUT_ADAPTER_FILE, "repository/deployment/server/outputeventadaptors");
+        String commonResourcesPath = BASE_PATH + PATH_SEP + ".." + PATH_SEP + ".." + PATH_SEP + "src" + PATH_SEP +
+                "test" + PATH_SEP + "resources" + PATH_SEP + "common";
+        copyConfigFile(carbonHome, commonResourcesPath, MOCK_IAAS_XML_FILENAME, CARBON_CONF_PATH);
+        copyConfigFile(carbonHome, commonResourcesPath, JNDI_PROPERTIES_FILENAME, CARBON_CONF_PATH);
+        copyConfigFile(carbonHome, commonResourcesPath, LOG4J_PROPERTIES_FILENAME, CARBON_CONF_PATH);
+        //copyConfigFile(carbonHome, commonResourcesPath, SCALING_DROOL_FILENAME, CARBON_CONF_PATH + PATH_SEP +
+        //      "drools");
+        copyConfigFile(carbonHome, commonResourcesPath, JMS_OUTPUT_ADAPTER_FILENAME,
+                "repository" + PATH_SEP + "deployment" + PATH_SEP + "server" + PATH_SEP + "outputeventadaptors");
     }
 
-    private void copyConfigFile(String carbonHome, String sourceFilePath) throws IOException {
-        copyConfigFile(carbonHome, sourceFilePath, "repository/conf");
-    }
+    private void copyConfigFile(String carbonHome, String filePath, String fileName, String destinationFolder)
+            throws
+            IOException {
 
-    private void copyConfigFile(String carbonHome, String sourceFilePath, String destinationFolder) throws IOException {
-        log.info("Copying file: " + sourceFilePath);
-        URL fileURL = getClass().getResource("/" + sourceFilePath);
-        assertNotNull(fileURL);
-        File srcFile = new File(fileURL.getFile());
-        File destFile = new File(carbonHome + "/" + destinationFolder + "/" + sourceFilePath);
+        String fileAbsPath = filePath + PATH_SEP + fileName;
+        log.info("Copying file: " + fileAbsPath);
+        File srcFile = new File(fileAbsPath);
+        assertTrue(srcFile.exists());
+        File destFile = new File(carbonHome + PATH_SEP + destinationFolder + PATH_SEP + fileName);
         FileUtils.copyFile(srcFile, destFile);
-        log.info(sourceFilePath + " file copied");
+        log.info("Copying file [source] " + srcFile.getAbsolutePath() + " to [dest] " + destFile.getAbsolutePath());
     }
 
     private boolean serverStopped() {
@@ -274,4 +279,4 @@ public class StratosTestServerManager extends TestServerManager {
         }
         return false;
     }
-}
+}
\ No newline at end of file


[3/3] stratos git commit: Fixing Stratos hanging at integration tests issue

Posted by ra...@apache.org.
Fixing Stratos hanging at integration tests issue


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

Branch: refs/heads/master
Commit: c9de1b2b084ebba700b51afa1863b9f9b2612df7
Parents: 93960ed
Author: Akila Perera <ra...@gmail.com>
Authored: Wed Sep 2 00:18:16 2015 +0530
Committer: Akila Perera <ra...@gmail.com>
Committed: Wed Sep 2 11:30:23 2015 +0530

----------------------------------------------------------------------
 .../modules/distribution/src/assembly/bin.xml   |   2 +-
 products/stratos/modules/integration/pom.xml    |  13 +-
 .../tests/StratosTestServerManager.java         | 134 +++++---
 .../application/ApplicationBurstingTest.java    |  72 +++--
 .../src/test/resources/JMSOutputAdaptor.xml     |  30 --
 .../test/resources/common/JMSOutputAdaptor.xml  |  30 ++
 .../src/test/resources/common/jndi.properties   |  22 ++
 .../src/test/resources/common/log4j.properties  | 206 ++++++++++++
 .../src/test/resources/common/mock-iaas.xml     | 123 ++++++++
 .../src/test/resources/common/scaling.drl       | 311 +++++++++++++++++++
 .../src/test/resources/jndi.properties          |  22 --
 .../src/test/resources/mock-iaas.xml            | 123 --------
 .../integration/src/test/resources/scaling.drl  | 311 -------------------
 .../test-conf/integration-test.properties       |   6 +-
 14 files changed, 841 insertions(+), 564 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/distribution/src/assembly/bin.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/distribution/src/assembly/bin.xml b/products/stratos/modules/distribution/src/assembly/bin.xml
index 8349917..64c5b3e 100755
--- a/products/stratos/modules/distribution/src/assembly/bin.xml
+++ b/products/stratos/modules/distribution/src/assembly/bin.xml
@@ -435,7 +435,7 @@
         <!-- cep -->
         <!--creating an empty input event adaptors directory-->
         <fileSet>
-            <directory>../../../../extensions/modules/cep/artifacts/inputeventadaptors</directory>
+            <directory>../../../../extensions/cep/modules/artifacts/inputeventadaptors</directory>
             <outputDirectory>${stratos.distribution.name}-${project.version}/repository/deployment/server/inputeventadaptors
             </outputDirectory>
         </fileSet>

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/pom.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/pom.xml b/products/stratos/modules/integration/pom.xml
index 5475846..7020370 100755
--- a/products/stratos/modules/integration/pom.xml
+++ b/products/stratos/modules/integration/pom.xml
@@ -117,6 +117,17 @@
                 <filtering>true</filtering>
             </resource>
         </resources>
+        <testResources>
+            <testResource>
+                <directory>src/test/resources/common</directory>
+                <includes>
+                    <include>**/jndi.properties</include>
+                </includes>
+            </testResource>
+            <testResource>
+                <directory>src/test/resources</directory>
+            </testResource>
+        </testResources>
         <plugins>
             <plugin>
                 <artifactId>maven-surefire-plugin</artifactId>
@@ -178,4 +189,4 @@
             </plugin>
         </plugins>
     </build>
-</project>
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
index a03cc54..84ef2c3 100755
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/StratosTestServerManager.java
@@ -26,7 +26,6 @@ import org.apache.commons.logging.LogFactory;
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.stratos.common.test.TestLogAppender;
-import org.apache.stratos.integration.tests.application.SampleApplicationsTest;
 import org.apache.stratos.integration.tests.rest.IntegrationMockClient;
 import org.apache.stratos.integration.tests.rest.RestClient;
 import org.apache.stratos.messaging.domain.tenant.Tenant;
@@ -41,6 +40,7 @@ import org.wso2.carbon.integration.framework.utils.TestUtil;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+import java.util.Properties;
 
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.assertNotNull;
@@ -49,44 +49,80 @@ import static org.testng.Assert.assertNotNull;
  * Prepare activemq, Stratos server for tests, enables mock iaas, starts servers and stop them after the tests.
  */
 public class StratosTestServerManager extends TestServerManager {
-
     private static final Log log = LogFactory.getLog(StratosTestServerManager.class);
+    private static Properties integrationProperties;
+    public static final String BASE_PATH = StratosTestServerManager.class.getResource("/").getPath();
+    public static final String STRATOS_DISTRIBUTION_NAME = "distribution.path";
+    public final static String PORT_OFFSET = "carbon.port.offset";
+    public static final String ACTIVEMQ_BIND_ADDRESS = "activemq.bind.address";
+    public static final String STRATOS_ENDPOINT = "stratos.endpoint";
+    public static final String ADMIN_USERNAME = "stratos.admin.username";
+    public static final String ADMIN_PASSWORD = "stratos.admin.password";
+    private static final String TENANT1_USER_NAME = "stratos.tenant1.username";
+    private static final String TENANT1_PASSWD = "stratos.tenant1.password";
+    private static final String TENANT2_USER_NAME = "stratos.tenant2.username";
+    private static final String TENANT2_PASSWD = "stratos.tenant2.password";
+    public static final String MOCK_IAAS_XML_FILE = "mock-iaas.xml";
+    public static final String SCALING_DROOL_FILE = "scaling.drl";
+    public static final String JNDI_PROPERTIES_FILE = "jndi.properties";
+    public static final String JMS_OUTPUT_ADAPTER_FILE = "JMSOutputAdaptor.xml";
 
-    private final static String CARBON_ZIP = SampleApplicationsTest.class.getResource("/").getPath() +
-            "/../../../distribution/target/apache-stratos-4.2.0-SNAPSHOT.zip";
-    private final static int PORT_OFFSET = 0;
-    private static final String ACTIVEMQ_BIND_ADDRESS = "tcp://localhost:61617";
-    private static final String MOCK_IAAS_XML_FILE = "mock-iaas.xml";
-    private static final String JNDI_PROPERTIES_FILE = "jndi.properties";
-    private static final String JMS_OUTPUT_ADAPTER_FILE = "JMSOutputAdaptor.xml";
-    private static final String SUPER_ADMIN_USERNAME = "admin";
-    private static final String SUPER_ADMIN_PASSWD = "admin";
-    private static final String TENANT1_USER_NAME = "admin@test1.com";
-    private static final String TENANT1_PASSWD = "admin123";
-    private static final String TENANT2_USER_NAME = "admin@test2.com";
-    private static final String TENANT2_PASSWD = "admin123";
-
+    protected String distributionName;
+    protected int portOffset;
+    protected String adminUsername;
+    protected String adminPassword;
+    protected String tenant1UserName;
+    protected String tenant1Password;
+    protected String tenant2UserName;
+    protected String tenant2Password;
+    protected String stratosEndpoint;
+    protected String activemqBindAddress;
     protected RestClient restClientAdmin;
-    protected RestClient restClientTenant1;
-    protected RestClient restClientTenant2;
-    private String endpoint = "http://localhost:9763";
-
     private BrokerService broker = new BrokerService();
     private TestLogAppender testLogAppender = new TestLogAppender();
     private ServerUtils serverUtils;
     private String carbonHome;
     protected IntegrationMockClient mockIaasApiClient;
+    protected RestClient restClientTenant1;
+    protected RestClient restClientTenant2;
     protected int tenant1Id;
     protected int tenant2Id;
 
     public StratosTestServerManager() {
-        super(CARBON_ZIP, PORT_OFFSET);
+        super(BASE_PATH + getIntegrationTestProperty(STRATOS_DISTRIBUTION_NAME),
+                Integer.parseInt(getIntegrationTestProperty(PORT_OFFSET)));
+
+        distributionName = integrationProperties.getProperty(STRATOS_DISTRIBUTION_NAME);
+        portOffset = Integer.parseInt(integrationProperties.getProperty(PORT_OFFSET));
+        adminUsername = integrationProperties.getProperty(ADMIN_USERNAME);
+        adminPassword = integrationProperties.getProperty(ADMIN_PASSWORD);
+        tenant1UserName = integrationProperties.getProperty(TENANT1_USER_NAME);
+        tenant1Password = integrationProperties.getProperty(TENANT1_PASSWD);
+        tenant2UserName = integrationProperties.getProperty(TENANT2_USER_NAME);
+        tenant2Password = integrationProperties.getProperty(TENANT2_PASSWD);
+        stratosEndpoint = integrationProperties.getProperty(STRATOS_ENDPOINT);
+        activemqBindAddress = integrationProperties.getProperty(ACTIVEMQ_BIND_ADDRESS);
         serverUtils = new ServerUtils();
-        restClientAdmin=new RestClient(endpoint, SUPER_ADMIN_USERNAME, SUPER_ADMIN_PASSWD);
-        restClientTenant1 = new RestClient(endpoint, TENANT1_USER_NAME, TENANT1_PASSWD);
-        restClientTenant2 = new RestClient(endpoint, TENANT2_USER_NAME, TENANT2_PASSWD);
-        mockIaasApiClient = new IntegrationMockClient(endpoint + "/mock-iaas/api");
+        mockIaasApiClient = new IntegrationMockClient(stratosEndpoint + "/mock-iaas/api");
+        restClientAdmin = new RestClient(stratosEndpoint, adminUsername, adminPassword);
+        restClientTenant1 = new RestClient(stratosEndpoint, tenant1UserName, tenant1Password);
+        restClientTenant2 = new RestClient(stratosEndpoint, tenant2UserName, tenant2Password);
+    }
 
+    private static String getIntegrationTestProperty(String key) {
+        if (integrationProperties == null) {
+            integrationProperties = new Properties();
+            try {
+                integrationProperties
+                        .load(StratosTestServerManager.class.getResourceAsStream("/integration-test.properties"));
+                log.info("Stratos integration properties: " + integrationProperties.toString());
+            }
+            catch (IOException e) {
+                log.error("Error loading integration-test.properties file from classpath. Please make sure that file " +
+                        "exists in classpath.", e);
+            }
+        }
+        return integrationProperties.getProperty(key);
     }
 
     @Override
@@ -102,7 +138,7 @@ public class StratosTestServerManager extends TestServerManager {
             broker.setDataDirectory(StratosTestServerManager.class.getResource("/").getPath() +
                     File.separator + ".." + File.separator + "activemq-data");
             broker.setBrokerName("testBroker");
-            broker.addConnector(ACTIVEMQ_BIND_ADDRESS);
+            broker.addConnector(activemqBindAddress);
             broker.start();
             long time2 = System.currentTimeMillis();
             log.info(String.format("ActiveMQ started in %d sec", (time2 - time1) / 1000));
@@ -128,7 +164,7 @@ public class StratosTestServerManager extends TestServerManager {
                 log.info("Stratos server setup completed");
 
                 log.info("Starting Stratos server...");
-                this.serverUtils.startServerUsingCarbonHome(carbonHome, carbonHome, "stratos", PORT_OFFSET, null);
+                this.serverUtils.startServerUsingCarbonHome(carbonHome, carbonHome, "stratos", portOffset, null);
                 FrameworkSettings.init();
 
                 while (!serverStarted()) {
@@ -143,7 +179,7 @@ public class StratosTestServerManager extends TestServerManager {
 
                 long time4 = System.currentTimeMillis();
                 log.info(String.format("Stratos server started in %d sec", (time4 - time3) / 1000));
-                tenantCreation();
+                createTenants();
                 return carbonHome;
             }
         }
@@ -152,6 +188,29 @@ public class StratosTestServerManager extends TestServerManager {
         }
     }
 
+    private void createTenants() {
+        log.info("Added tenants to the testing suit");
+        boolean addedTenant1 = restClientAdmin
+                .addEntity(RestConstants.TENANT1_RESOURCE, RestConstants.TENANT_API, RestConstants.TENANTS_NAME);
+        assertEquals(addedTenant1, true);
+        boolean addedTenant2 = restClientAdmin
+                .addEntity(RestConstants.TENANT2_RESOURCE, RestConstants.TENANT_API, RestConstants.TENANTS_NAME);
+        assertEquals(addedTenant2, true);
+    }
+
+
+    @BeforeClass
+    public void getTenantDetails() {
+        Tenant tenant1 = (Tenant) restClientAdmin
+                .getEntity(RestConstants.TENANT_API, RestConstants.TENANT1_GET_RESOURCE, Tenant.class,
+                        RestConstants.TENANTS_NAME);
+        tenant1Id = tenant1.getTenantId();
+        Tenant tenant2 = (Tenant) restClientAdmin
+                .getEntity(RestConstants.TENANT_API, RestConstants.TENANT2_GET_RESOURCE, Tenant.class,
+                        RestConstants.TENANTS_NAME);
+        tenant2Id = tenant2.getTenantId();
+    }
+
     private boolean mockServiceStarted() {
         for (String message : testLogAppender.getMessages()) {
             if (message.contains("Mock IaaS service component activated")) {
@@ -179,6 +238,7 @@ public class StratosTestServerManager extends TestServerManager {
     protected void copyArtifacts(String carbonHome) throws IOException {
         copyConfigFile(carbonHome, MOCK_IAAS_XML_FILE);
         copyConfigFile(carbonHome, JNDI_PROPERTIES_FILE);
+        copyConfigFile(carbonHome, SCALING_DROOL_FILE, "repository/conf/drools");
         copyConfigFile(carbonHome, JMS_OUTPUT_ADAPTER_FILE, "repository/deployment/server/outputeventadaptors");
     }
 
@@ -214,22 +274,4 @@ public class StratosTestServerManager extends TestServerManager {
         }
         return false;
     }
-
-
-    private void tenantCreation(){
-        log.info("Added tenants to the testing suit");
-        boolean addedTenant1=restClientAdmin.addEntity(RestConstants.TENANT1_RESOURCE,RestConstants.TENANT_API,RestConstants.TENANTS_NAME);
-        assertEquals(addedTenant1,true);
-        boolean addedTenant2=restClientAdmin.addEntity(RestConstants.TENANT2_RESOURCE,RestConstants.TENANT_API,RestConstants.TENANTS_NAME);
-        assertEquals(addedTenant2,true);
-
-    }
-
-    @BeforeClass
-    public void getTenantDetails(){
-        Tenant tenant1=(Tenant)restClientAdmin.getEntity(RestConstants.TENANT_API,RestConstants.TENANT1_GET_RESOURCE,Tenant.class,RestConstants.TENANTS_NAME);
-        tenant1Id=tenant1.getTenantId();
-        Tenant tenant2=(Tenant)restClientAdmin.getEntity(RestConstants.TENANT_API,RestConstants.TENANT2_GET_RESOURCE,Tenant.class,RestConstants.TENANTS_NAME);
-        tenant2Id=tenant2.getTenantId();
-    }
 }

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationBurstingTest.java
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationBurstingTest.java b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationBurstingTest.java
index 4ff15ba..f210b12 100644
--- a/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationBurstingTest.java
+++ b/products/stratos/modules/integration/src/test/java/org/apache/stratos/integration/tests/application/ApplicationBurstingTest.java
@@ -43,24 +43,28 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
     @Test
     public void testApplicationBusting() {
         try {
-            log.info("-------------------------------Started application Bursting test case-------------------------------");
+            log.info("----------------------------Started application Bursting test case----------------------------");
 
             String autoscalingPolicyId = "autoscaling-policy-application-bursting-test";
 
-            boolean addedScalingPolicy = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.AUTOSCALING_POLICIES_PATH
-                            + "/" + autoscalingPolicyId + ".json",
-                    RestConstants.AUTOSCALING_POLICIES, RestConstants.AUTOSCALING_POLICIES_NAME);
+            boolean addedScalingPolicy =
+                    restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.AUTOSCALING_POLICIES_PATH
+                                    + "/" + autoscalingPolicyId + ".json",
+                            RestConstants.AUTOSCALING_POLICIES, RestConstants.AUTOSCALING_POLICIES_NAME);
             assertEquals(addedScalingPolicy, true);
 
-            boolean addedC1 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "esb-application-bursting-test.json",
+            boolean addedC1 = restClientTenant1.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "esb-application-bursting-test.json",
                     RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
             assertEquals(addedC1, true);
 
-            boolean addedC2 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "php-application-bursting-test.json",
+            boolean addedC2 = restClientTenant1.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "php-application-bursting-test.json",
                     RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
             assertEquals(addedC2, true);
 
-            boolean addedC3 = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "tomcat-application-bursting-test.json",
+            boolean addedC3 = restClientTenant1.addEntity(
+                    RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + "tomcat-application-bursting-test.json",
                     RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME);
             assertEquals(addedC3, true);
 
@@ -84,9 +88,10 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                     RestConstants.NETWORK_PARTITIONS, RestConstants.NETWORK_PARTITIONS_NAME);
             assertEquals(addedN2, true);
 
-            boolean addedDep = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
-                            "deployment-policy-application-bursting-test.json",
-                    RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME);
+            boolean addedDep =
+                    restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" +
+                                    "deployment-policy-application-bursting-test.json",
+                            RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME);
             assertEquals(addedDep, true);
 
             boolean added = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" +
@@ -98,9 +103,11 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                     "application-bursting-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
             assertEquals(bean.getApplicationId(), "application-bursting-test");
 
-            boolean addAppPolicy = restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" +
-                            "application-policy-application-bursting-test.json", RestConstants.APPLICATION_POLICIES,
-                    RestConstants.APPLICATION_POLICIES_NAME);
+            boolean addAppPolicy =
+                    restClientTenant1.addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" +
+                                    "application-policy-application-bursting-test.json",
+                            RestConstants.APPLICATION_POLICIES,
+                            RestConstants.APPLICATION_POLICIES_NAME);
             assertEquals(addAppPolicy, true);
 
             ApplicationPolicyBean policyBean = (ApplicationPolicyBean) restClientTenant1.getEntity(
@@ -125,8 +132,9 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
             //Cluster active handling
             TopologyHandler.getInstance().assertClusterActivation(bean.getApplicationId(), tenant1Id);
 
-            boolean removedGroup = restClientTenant1.removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test",
-                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            boolean removedGroup = restClientTenant1
+                    .removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test",
+                            RestConstants.CARTRIDGE_GROUPS_NAME);
             assertEquals(removedGroup, false);
 
             boolean removedAuto = restClientTenant1.removeEntity(RestConstants.AUTOSCALING_POLICIES,
@@ -151,7 +159,8 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                     RestConstants.APPLICATIONS_NAME);
             assertEquals(unDeployed, true);
 
-            boolean undeploy = TopologyHandler.getInstance().assertApplicationUndeploy("application-bursting-test", tenant1Id);
+            boolean undeploy = TopologyHandler.getInstance().assertApplicationUndeploy("application-bursting-test",
+                    tenant1Id);
             if (!undeploy) {
                 //Need to forcefully undeploy the application
                 log.info("Force undeployment is going to start for the [application] " + "application-bursting-test");
@@ -159,7 +168,8 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                 restClientTenant1.undeployEntity(RestConstants.APPLICATIONS + "/" + "application-bursting-test" +
                         RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS);
 
-                boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy("application-bursting-test", tenant1Id);
+                boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy(
+                        "application-bursting-test", tenant1Id);
                 assertEquals(String.format("Forceful undeployment failed for the application %s",
                         "application-bursting-test"), forceUndeployed, true);
 
@@ -173,20 +183,24 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                     "application-bursting-test", ApplicationBean.class, RestConstants.APPLICATIONS_NAME);
             assertEquals(beanRemoved, null);
 
-            removedGroup = restClientTenant1.removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test",
-                    RestConstants.CARTRIDGE_GROUPS_NAME);
+            removedGroup = restClientTenant1
+                    .removeEntity(RestConstants.CARTRIDGE_GROUPS, "esb-php-group-application-bursting-test",
+                            RestConstants.CARTRIDGE_GROUPS_NAME);
             assertEquals(removedGroup, true);
 
-            boolean removedC1 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "esb-application-bursting-test",
-                    RestConstants.CARTRIDGES_NAME);
+            boolean removedC1 =
+                    restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "esb-application-bursting-test",
+                            RestConstants.CARTRIDGES_NAME);
             assertEquals(removedC1, true);
 
-            boolean removedC2 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "php-application-bursting-test",
-                    RestConstants.CARTRIDGES_NAME);
+            boolean removedC2 =
+                    restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "php-application-bursting-test",
+                            RestConstants.CARTRIDGES_NAME);
             assertEquals(removedC2, true);
 
-            boolean removedC3 = restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "tomcat-application-bursting-test",
-                    RestConstants.CARTRIDGES_NAME);
+            boolean removedC3 =
+                    restClientTenant1.removeEntity(RestConstants.CARTRIDGES, "tomcat-application-bursting-test",
+                            RestConstants.CARTRIDGES_NAME);
             assertEquals(removedC3, true);
 
             removedAuto = restClientTenant1.removeEntity(RestConstants.AUTOSCALING_POLICIES,
@@ -217,12 +231,12 @@ public class ApplicationBurstingTest extends StratosTestServerManager {
                     "network-partition-application-bursting-test-2", RestConstants.NETWORK_PARTITIONS_NAME);
             assertEquals(removedN2, true);
 
-            log.info("-------------------------------Ended application bursting test case-------------------------------");
+            log.info("----------------------------Ended application bursting test case----------------------------");
 
-        } catch (Exception e) {
+        }
+        catch (Exception e) {
             log.error("An error occurred while handling  application bursting", e);
             assertTrue("An error occurred while handling  application bursting", false);
         }
     }
-}
-
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml b/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
deleted file mode 100755
index a6a2cff..0000000
--- a/products/stratos/modules/integration/src/test/resources/JMSOutputAdaptor.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-   http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
--->
-
-<outputEventAdaptor name="JMSOutputAdaptor" statistics="disable"
-  trace="enable" type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
-  <!--property name="java.naming.provider.url">CEP_HOME/repository/conf/jndi.properties</property-->
-  <property name="java.naming.provider.url">tcp://localhost:61617</property>
-  <property name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
-  <property name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</property>
-  <property name="transport.jms.DestinationType">topic</property>
-</outputEventAdaptor>

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/common/JMSOutputAdaptor.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/common/JMSOutputAdaptor.xml b/products/stratos/modules/integration/src/test/resources/common/JMSOutputAdaptor.xml
new file mode 100755
index 0000000..a6a2cff
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/common/JMSOutputAdaptor.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements.  See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership.  The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License.  You may obtain a copy of the License at
+
+   http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied.  See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+<outputEventAdaptor name="JMSOutputAdaptor" statistics="disable"
+  trace="enable" type="jms" xmlns="http://wso2.org/carbon/eventadaptormanager">
+  <!--property name="java.naming.provider.url">CEP_HOME/repository/conf/jndi.properties</property-->
+  <property name="java.naming.provider.url">tcp://localhost:61617</property>
+  <property name="java.naming.factory.initial">org.apache.activemq.jndi.ActiveMQInitialContextFactory</property>
+  <property name="transport.jms.ConnectionFactoryJNDIName">TopicConnectionFactory</property>
+  <property name="transport.jms.DestinationType">topic</property>
+</outputEventAdaptor>

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/common/jndi.properties
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/common/jndi.properties b/products/stratos/modules/integration/src/test/resources/common/jndi.properties
new file mode 100644
index 0000000..beefe3c
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/common/jndi.properties
@@ -0,0 +1,22 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#  http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+connectionfactoryName=TopicConnectionFactory
+java.naming.provider.url=tcp://localhost:61617
+java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/common/log4j.properties
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/common/log4j.properties b/products/stratos/modules/integration/src/test/resources/common/log4j.properties
new file mode 100644
index 0000000..72ad1c4
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/common/log4j.properties
@@ -0,0 +1,206 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+#
+# This is the log4j configuration file used by Stratos
+#
+
+log4j.rootLogger=INFO, CARBON_CONSOLE, CARBON_LOGFILE, CARBON_MEMORY, CARBON_SYS_LOG
+
+log4j.logger.AUDIT_LOG=INFO, AUDIT_LOGFILE
+log4j.logger.org.apache.axis2.wsdl.codegen.writer.PrettyPrinter=ERROR, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.axis2.clustering=INFO
+log4j.logger.org.apache=INFO
+log4j.logger.org.apache.catalina=WARN
+log4j.logger.org.apache.tomcat=WARN
+log4j.logger.org.wso2.carbon.apacheds=WARN
+log4j.logger.org.apache.directory.server.ldap=WARN
+log4j.logger.org.apache.directory.server.core.event=WARN
+log4j.logger.com.atomikos=INFO,ATOMIKOS
+log4j.logger.org.quartz=WARN
+log4j.logger.org.apache.jackrabbit.webdav=WARN
+log4j.logger.org.apache.juddi=ERROR
+log4j.logger.org.apache.commons.digester.Digester=WARN
+log4j.logger.org.apache.jasper.compiler.TldLocationsCache=WARN
+log4j.logger.org.apache.qpid=WARN
+log4j.logger.org.apache.qpid.server.Main=INFO
+log4j.logger.qpid.message=WARN
+log4j.logger.qpid.message.broker.listening=INFO
+log4j.logger.org.apache.tiles=WARN
+log4j.logger.org.apache.commons.httpclient=ERROR
+log4j.logger.org.apache.coyote=WARN
+log4j.logger.org.apache.solr=ERROR
+log4j.logger.org.infinispan=WARN
+log4j.logger.org.jgroups=ERROR
+log4j.logger.me.prettyprint.cassandra.hector.TimingLogger=ERROR
+log4j.logger.org.wso2=INFO
+
+# Apache Stratos logging configuration
+log4j.logger.org.apache.stratos.manager=INFO
+log4j.logger.org.apache.stratos.autoscaler=INFO
+log4j.logger.org.apache.stratos.messaging=INFO
+log4j.logger.org.apache.stratos.cloud.controller=INFO
+log4j.logger.org.wso2.andes.client=ERROR
+# Autoscaler rule logs
+log4j.logger.org.apache.stratos.autoscaler.rule.RuleLog=INFO
+
+# Apache jclouds
+#log4j.logger.jclouds.wire=DEBUG
+#log4j.logger.jclouds.headers=DEBUG
+#log4j.logger.org.jclouds=DEBUG
+
+# CEP Window processors
+#log4j.logger.org.apache.stratos.cep.extension.FaultHandlingWindowProcessor=DEBUG
+
+log4j.logger.org.apache.axis2.enterprise=FATAL, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.opensaml.xml=WARN, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.shared.ldap=WARN, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.server.ldap.handlers=WARN, CARBON_LOGFILE, CARBON_MEMORY 
+
+# Following are to remove false error messages from startup (IS)
+log4j.logger.org.apache.directory.shared.ldap.entry.DefaultServerAttribute=FATAL, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.server.core.DefaultDirectoryService=ERROR, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.shared.ldap.ldif.LdifReader=ERROR, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.server.ldap.LdapProtocolHandler=ERROR, CARBON_LOGFILE, CARBON_MEMORY
+log4j.logger.org.apache.directory.server.core=ERROR, CARBON_LOGFILE, CARBON_MEMORY
+
+# Hive logging configuration
+log4j.logger.DataNucleus=ERROR
+log4j.logger.Datastore=ERROR
+log4j.logger.Datastore.Schema=ERROR
+log4j.logger.JPOX.Datastore=ERROR
+log4j.logger.JPOX.Plugin=ERROR
+log4j.logger.JPOX.MetaData=ERROR
+log4j.logger.JPOX.Query=ERROR
+log4j.logger.JPOX.General=ERROR
+log4j.logger.JPOX.Enhancer=ERROR
+log4j.logger.org.apache.hadoop.hive=WARN
+log4j.logger.hive=WARN
+log4j.logger.ExecMapper=WARN
+log4j.logger.ExecReducer=WARN
+log4j.logger.net.sf.ehcache.config.ConfigurationFactory=ERROR
+log4j.logger.org.apache.axis2.clustering.tribes.Axis2GroupChannel=FATAL
+
+log4j.logger.trace.messages=TRACE,CARBON_TRACE_LOGFILE
+
+log4j.additivity.org.apache.axis2.clustering=false
+log4j.additivity.com.atomikos=false
+
+# CARBON_CONSOLE is set to be a ConsoleAppender using a PatternLayout.
+log4j.appender.CARBON_CONSOLE=org.apache.log4j.ConsoleAppender
+log4j.appender.CARBON_CONSOLE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
+# ConversionPattern will be overridden by the configuration setting in the DB
+log4j.appender.CARBON_CONSOLE.layout.ConversionPattern=[%d] %P%5p {%c} - %x %m%n
+log4j.appender.CARBON_CONSOLE.layout.TenantPattern=%U%@%D[%T]
+log4j.appender.CARBON_CONSOLE.threshold=DEBUG
+
+# CARBON_MEMORY is set to be a MemoryAppender using a PatternLayout.
+log4j.appender.CARBON_MEMORY=org.wso2.carbon.logging.appenders.MemoryAppender
+log4j.appender.CARBON_MEMORY.layout=org.apache.log4j.PatternLayout
+log4j.appender.CARBON_MEMORY.bufferSize=200
+# ConversionPattern will be overridden by the configuration setting in the DB
+#log4j.appender.CARBON_MEMORY.layout.ConversionPattern=[%d] %5p - %x %m {%c}%n
+log4j.appender.CARBON_MEMORY.layout.ConversionPattern=[%d] %5p {%c} - %x %m%n
+log4j.appender.CARBON_MEMORY.threshold=DEBUG
+
+
+# CARBON_LOGFILE is set to be a DailyRollingFileAppender using a PatternLayout.
+log4j.appender.CARBON_LOGFILE=org.apache.log4j.RollingFileAppender
+log4j.appender.CARBON_LOGFILE.MaxFileSize=10000KB
+log4j.appender.CARBON_LOGFILE.MaxBackupIndex=10
+# Log file will be overridden by the configuration setting in the DB
+# This path should be relative to WSO2 Carbon Home
+log4j.appender.CARBON_LOGFILE.File=${carbon.home}/repository/logs/${instance.log}/wso2carbon${instance.log}.log
+log4j.appender.CARBON_LOGFILE.Append=true
+log4j.appender.CARBON_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
+# ConversionPattern will be overridden by the configuration setting in the DB
+log4j.appender.CARBON_LOGFILE.layout.ConversionPattern=TID: [%T] [%S] [%d] %P%5p {%c} - %x %m%n
+log4j.appender.CARBON_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S]
+log4j.appender.CARBON_LOGFILE.threshold=DEBUG
+
+log4j.appender.CARBON_SYS_LOG = org.apache.log4j.net.SyslogAppender
+log4j.appender.CARBON_SYS_LOG.layout=org.apache.log4j.PatternLayout
+log4j.appender.CARBON_SYS_LOG.layout.ConversionPattern=[%d] %5p {%c} - %x %m%n
+log4j.appender.CARBON_SYS_LOG.SyslogHost=localhost
+log4j.appender.CARBON_SYS_LOG.Facility=USER
+log4j.appender.CARBON_SYS_LOG.threshold=DEBUG
+
+# LOGEVENT is set to be a LogEventAppender using a PatternLayout to send logs to LOGEVENT 
+log4j.appender.LOGEVENT=org.wso2.carbon.logging.appender.LogEventAppender
+log4j.appender.LOGEVENT.url=tcp://10.100.3.103:7611
+log4j.appender.LOGEVENT.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
+log4j.appender.LOGEVENT.columnList=%T,%S,%A,%d,%c,%p,%m,%H,%I,%Stacktrace
+log4j.appender.LOGEVENT.userName=admin
+log4j.appender.LOGEVENT.password=admin
+
+# Appender config to CARBON_TRACE_LOGFILE
+log4j.appender.CARBON_TRACE_LOGFILE=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.CARBON_TRACE_LOGFILE.File=${carbon.home}/repository/logs/${instance.log}/wso2carbon-trace-messages${instance.log}.log
+log4j.appender.CARBON_TRACE_LOGFILE.Append=true
+log4j.appender.CARBON_TRACE_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
+log4j.appender.CARBON_TRACE_LOGFILE.layout.ConversionPattern=[%d] %P%5p {%c} - %x %m%n
+log4j.appender.CARBON_TRACE_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S]
+log4j.appender.CARBON_TRACE_LOGFILE.threshold=TRACE
+log4j.additivity.trace.messages=false
+
+# Appender config to AUDIT_LOGFILE
+log4j.appender.AUDIT_LOGFILE=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.AUDIT_LOGFILE.File=${carbon.home}/repository/logs/audit.log
+log4j.appender.AUDIT_LOGFILE.Append=true
+log4j.appender.AUDIT_LOGFILE.layout=org.wso2.carbon.utils.logging.TenantAwarePatternLayout
+log4j.appender.AUDIT_LOGFILE.layout.ConversionPattern=[%d] %P%5p - %x %m %n
+log4j.appender.AUDIT_LOGFILE.layout.TenantPattern=%U%@%D [%T] [%S]
+log4j.appender.AUDIT_LOGFILE.threshold=INFO
+log4j.additivity.AUDIT_LOG=false
+
+# The event trace logger dumps enough information @INFO level.
+# Writes events received by DataBridge
+log4j.category.LOG_AGGREGATOR_LOGGER=INFO, LOG_AGGREGATOR_FILE_APPENDER
+log4j.additivity.LOG_AGGREGATOR_LOGGER=false
+log4j.appender.LOG_AGGREGATOR_FILE_APPENDER=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.LOG_AGGREGATOR_FILE_APPENDER.File=${carbon.home}/repository/logs/${instance.log}/aggregate${instance.log}.log
+log4j.appender.LOG_AGGREGATOR_FILE_APPENDER.Append=true
+log4j.appender.LOG_AGGREGATOR_FILE_APPENDER.layout=org.apache.log4j.PatternLayout
+log4j.appender.LOG_AGGREGATOR_FILE_APPENDER.layout.ConversionPattern=%m%n
+
+# The event trace logger dumps enough information @INFO level, but maybe pushed upto TRACE.
+# Writes only run-time/event processing time tracing/debug messages for event passing through trace
+# enabled transport adapters event formatters, builders and processors. Enabling event tracing on these has a performance impact
+log4j.category.EVENT_TRACE_LOGGER=INFO, EVENT_TRACE_APPENDER
+log4j.additivity.EVENT_TRACE_LOGGER=false
+log4j.appender.EVENT_TRACE_APPENDER=org.apache.log4j.DailyRollingFileAppender
+log4j.appender.EVENT_TRACE_APPENDER.File=${carbon.home}/repository/logs/${instance.log}/wso2-cep-trace${instance.log}.log
+log4j.appender.EVENT_TRACE_APPENDER.Append=true
+log4j.appender.EVENT_TRACE_APPENDER.layout=org.apache.log4j.PatternLayout
+log4j.appender.EVENT_TRACE_APPENDER.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%X{ip}-%X{host}] [%t] %5p %c{1} %m%n
+
+# Appender config to send Atomikos transaction logs to new log file tm.out.
+log4j.appender.ATOMIKOS = org.apache.log4j.RollingFileAppender
+log4j.appender.ATOMIKOS.File = repository/logs/tm.out
+log4j.appender.ATOMIKOS.Append = true
+log4j.appender.ATOMIKOS.layout = org.apache.log4j.PatternLayout
+log4j.appender.ATOMIKOS.layout.ConversionPattern=%p %t %c - %m%n
+
+# This file is used to override the default logger settings, and is used to remove unwanted logs from Shindig appearing on the console.
+
+# Specification of Handler used by Console Logger
+handlers=java.util.logging.ConsoleHandler
+
+# Replacing default INFO level with SEVERE
+java.util.logging.ConsoleHandler.level=SEVERE

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/common/mock-iaas.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/common/mock-iaas.xml b/products/stratos/modules/integration/src/test/resources/common/mock-iaas.xml
new file mode 100644
index 0000000..0f6b206
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/common/mock-iaas.xml
@@ -0,0 +1,123 @@
+<!--
+  ~ Licensed to the Apache Software Foundation (ASF) under one
+  ~ or more contributor license agreements.  See the NOTICE file
+  ~ distributed with this work for additional information
+  ~ regarding copyright ownership.  The ASF licenses this file
+  ~ to you under the Apache License, Version 2.0 (the
+  ~ "License"); you may not use this file except in compliance
+  ~ with the License.  You may obtain a copy of the License at
+  ~
+  ~  http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing,
+  ~ software distributed under the License is distributed on an
+  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  ~ KIND, either express or implied.  See the License for the
+  ~ specific language governing permissions and limitations
+  ~ under the License.
+  -->
+
+<mock-iaas enabled="true">
+    <health-statistics>
+        <cartridge type="tomcat">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>20,30,40,50,60,70,50,40,30,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+        </cartridge>
+        <cartridge type="c7-single-cluster-scaling-test">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>60,70,80,90,90,90,40,60,50,60</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>70,70,70</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+        </cartridge>
+        <cartridge type="c7-partition-round-robin-test">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>30</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>30</sampleDuration>
+            </pattern>
+        </cartridge>
+        <cartridge type="c3-group-termination-behavior-test">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="stop">
+                <!-- Sample values -->
+                <sampleValues>20,20,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+        </cartridge>
+        <cartridge type="php">
+            <!-- factor:memory-consumption|load-average|requests-in-flight-->
+            <!-- mode:loop|continue|stop -->
+            <!-- Mode defines the action needs to be taken after the last sample value:
+                 loop: start from beginning
+                 continue: continue the last sample value
+                 stop: stop publishing statistics -->
+            <pattern factor="memory-consumption" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>20,30,40,50,60,70,50,40,30,20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+            <pattern factor="load-average" mode="continue">
+                <!-- Sample values -->
+                <sampleValues>20</sampleValues>
+                <!-- Duration of each sample value in seconds -->
+                <sampleDuration>60</sampleDuration>
+            </pattern>
+        </cartridge>
+    </health-statistics>
+</mock-iaas>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/common/scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/common/scaling.drl b/products/stratos/modules/integration/src/test/resources/common/scaling.drl
new file mode 100644
index 0000000..69d9111
--- /dev/null
+++ b/products/stratos/modules/integration/src/test/resources/common/scaling.drl
@@ -0,0 +1,311 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.stratos.autoscaler
+
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.autoscaler.context.AutoscalerContext;
+import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
+import org.apache.stratos.autoscaler.util.AutoscalerConstants;
+import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext;
+import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.RequestsInFlight;
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadThresholds;
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption;
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage;
+import org.apache.stratos.autoscaler.algorithms.PartitionAlgorithm;
+import org.apache.stratos.autoscaler.algorithms.partition.OneAfterAnother;
+import org.apache.stratos.autoscaler.algorithms.partition.RoundRobin;
+import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
+import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
+import org.apache.stratos.cloud.controller.stub.domain.Partition;
+import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
+import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
+
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage
+import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption
+
+global org.apache.stratos.autoscaler.rule.RuleLog log;
+global org.apache.stratos.autoscaler.rule.RuleTasksDelegator delegator;
+global org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy autoscalePolicy;
+global java.lang.String applicationId;
+global java.lang.String clusterId;
+global java.lang.Boolean rifReset;
+global java.lang.Boolean mcReset;
+global java.lang.Boolean laReset;
+global java.lang.Boolean arspiReset;
+global java.lang.String algorithmName;
+
+rule "Scaling Rule"
+dialect "mvel"
+	when
+       clusterInstanceContext : ClusterInstanceContext ()
+
+        loadThresholds : LoadThresholds() from  autoscalePolicy.getLoadThresholds()
+        partitionAlgorithm : PartitionAlgorithm() from  delegator.getPartitionAlgorithm(algorithmName)
+
+        eval(log.debug("Running scale up rule: [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
+            " [cluster] " + clusterId))
+        eval(log.debug("[scaling] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster] "
+            + clusterId + " Algorithm name: " + algorithmName))
+
+	
+        rifThreshold : Float() from  loadThresholds.getRequestsInFlightThreshold()
+
+        rifAverage : Float() from  clusterInstanceContext.getAverageRequestsInFlight()
+        rifGradient : Float() from  clusterInstanceContext.getRequestsInFlightGradient()
+        rifSecondDerivative : Float() from  clusterInstanceContext.getRequestsInFlightSecondDerivative()
+	    rifPredictedValue : Double() from delegator.getPredictedValueForNextMinute(rifAverage, rifGradient, rifSecondDerivative, 1)
+
+        mcThreshold : Float() from  loadThresholds.getMemoryConsumptionThreshold()
+
+        mcPredictedValue : Double() from delegator.getMemoryConsumptionPredictedValue(clusterInstanceContext)
+
+        laThreshold : Float() from  loadThresholds.getLoadAverageThreshold()
+
+        laPredictedValue : Double() from delegator.getLoadAveragePredictedValue(clusterInstanceContext)
+
+        activeInstancesCount : Integer() from clusterInstanceContext.getActiveMemberCount()
+        maxInstancesCount : Integer() from clusterInstanceContext.getMaxInstanceCount()
+        minInstancesCount : Integer() from clusterInstanceContext.getMinInstanceCount()
+        requestsServedPerInstance : Float() from  clusterInstanceContext.getRequestsServedPerInstance()
+        averageRequestsServedPerInstance : Float() from  clusterInstanceContext.getAverageRequestsServedPerInstance()
+
+        numberOfInstancesReuquiredBasedOnRif : Integer() from delegator.getNumberOfInstancesRequiredBasedOnRif(
+            rifPredictedValue, rifThreshold)
+        numberOfInstancesReuquiredBasedOnMemoryConsumption : Integer() from
+            delegator.getNumberOfInstancesRequiredBasedOnMemoryConsumption(mcThreshold, mcPredictedValue, minInstancesCount,
+            maxInstancesCount)
+        numberOfInstancesReuquiredBasedOnLoadAverage : Integer() from
+            delegator.getNumberOfInstancesRequiredBasedOnLoadAverage(laThreshold, laPredictedValue, minInstancesCount)
+
+        numberOfRequiredInstances : Integer() from delegator.getMaxNumberOfInstancesRequired(
+            numberOfInstancesReuquiredBasedOnRif, numberOfInstancesReuquiredBasedOnMemoryConsumption, mcReset,
+            numberOfInstancesReuquiredBasedOnLoadAverage, laReset)
+
+
+
+        scaleUp : Boolean() from (activeInstancesCount < numberOfRequiredInstances)
+        scaleDown : Boolean() from (activeInstancesCount > numberOfRequiredInstances || (numberOfRequiredInstances == 1 && activeInstancesCount == 1))
+
+
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF Resetted?: " + rifReset))
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF predicted value: " + rifPredictedValue))
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF threshold: " + rifThreshold))
+
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " MC predicted value: " + mcPredictedValue))
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " MC threshold: " + mcThreshold))
+
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " LA predicted value: " + laPredictedValue))
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " LA threshold: " + laThreshold))
+
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " Scale-up action: " + scaleUp))
+        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " Scale-down action: " + scaleDown))
+
+	then
+
+	    log.debug("[scaling] Number of required instances based on stats: " + numberOfRequiredInstances + " " +
+	        "[active instances count] " + activeInstancesCount + " [network-partition] " +
+	        clusterInstanceContext.getNetworkPartitionId() + " [cluster] " + clusterId);
+
+        int nonTerminatedMembers = clusterInstanceContext.getNonTerminatedMemberCount();
+        if(scaleUp){
+
+            int clusterMaxMembers = clusterInstanceContext.getMaxInstanceCount();
+            if (nonTerminatedMembers < clusterMaxMembers) {
+
+                int additionalInstances = 0;
+                if(clusterMaxMembers < numberOfRequiredInstances){
+
+                    additionalInstances = clusterMaxMembers - nonTerminatedMembers;
+                    log.info("[scale-up] Required member count based on stat based scaling is higher than max, hence"
+                            + " notifying to parent for possible group scaling or app bursting. [cluster] " + clusterId
+                            + " [instance id]" + clusterInstanceContext.getId() + " [max] " + clusterMaxMembers
+                            + " [number of required instances] " + numberOfRequiredInstances
+                            + " [additional instances to be created] " + additionalInstances);
+                    delegator.delegateScalingOverMaxNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
+                        clusterInstanceContext.getId());
+                } else {
+
+                    additionalInstances = numberOfRequiredInstances - nonTerminatedMembers;
+                }
+
+                clusterInstanceContext.resetScaleDownRequestsCount();
+
+                log.debug("[scale-up] " + " [has scaling dependents] " + clusterInstanceContext.hasScalingDependants() +
+                    " [cluster] " + clusterId );
+                if(clusterInstanceContext.hasScalingDependants()) {
+
+                    log.debug("[scale-up] Notifying dependencies [cluster] " + clusterId);
+                    delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
+                        clusterInstanceContext.getId(), numberOfRequiredInstances, clusterInstanceContext.getMinInstanceCount());
+                } else {
+
+                    boolean partitionsAvailable = true;
+                    int count = 0;
+
+                    while(count != additionalInstances && partitionsAvailable){
+
+                        ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext) partitionAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
+                        if(partitionContext != null){
+
+                            log.info("[scale-up] Partition available, hence trying to spawn an instance to scale up! " +
+                                " [application id] " + applicationId +
+                                " [cluster] " + clusterId + " [instance id] " + clusterInstanceContext.getId() +
+                                " [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
+                                " [partition] " + partitionContext.getPartitionId() +
+                                " scaleup due to RIF: " + (rifReset && (rifPredictedValue > rifThreshold)) +
+                                " [rifPredictedValue] " + rifPredictedValue + " [rifThreshold] " + rifThreshold +
+                                " scaleup due to MC: " + (mcReset && (mcPredictedValue > mcThreshold)) +
+                                " [mcPredictedValue] " + mcPredictedValue + " [mcThreshold] " + mcThreshold +
+                                " scaleup due to LA: " + (laReset && (laPredictedValue > laThreshold)) +
+                                " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold);
+
+                            log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
+                            delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId());
+                            count++;
+                        } else {
+
+                            log.warn("[scale-up] No more partition available even though " +
+                             "cartridge-max is not reached!, [cluster] " + clusterId +
+                            " Please update deployment-policy with new partitions or with higher " +
+                             "partition-max");
+                            partitionsAvailable = false;
+                        }
+                    }
+                }
+            } else {
+                log.info("[scale-up] Trying to scale up over max, hence not scaling up cluster itself and
+                        notifying to parent for possible group scaling or app bursting.
+                        [cluster] " + clusterId + " [instance id]" + clusterInstanceContext.getId() +
+                        " [max] " + clusterMaxMembers);
+                delegator.delegateScalingOverMaxNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
+                    clusterInstanceContext.getId());
+            }
+        } else if(scaleDown){
+
+            if(nonTerminatedMembers > clusterInstanceContext.getMinInstanceCount){
+
+                log.debug("[scale-down] Decided to Scale down [cluster] " + clusterId);
+                if(clusterInstanceContext.getScaleDownRequestsCount() >= 0 ){
+
+                    log.debug("[scale-down] Reached scale down requests threshold [cluster] " + clusterId + " Count " +
+                        clusterInstanceContext.getScaleDownRequestsCount());
+
+                    if(clusterInstanceContext.hasScalingDependants()) {
+
+                        log.debug("[scale-up] Notifying dependencies [cluster] " + clusterId);
+                        delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
+                            clusterInstanceContext.getId(), numberOfRequiredInstances, clusterInstanceContext.getMinInstanceCount());
+                    } else{
+
+                        MemberStatsContext selectedMemberStatsContext = null;
+                        double lowestOverallLoad = 0.0;
+                        boolean foundAValue = false;
+                        ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext) partitionAlgorithm.getNextScaleDownPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
+                        if(partitionContext != null) {
+                            log.info("[scale-down] Partition available to scale down " +
+                                " [application id] " + applicationId +
+                                " [cluster] " + clusterId + " [instance id] " + clusterInstanceContext.getId() +
+                                " [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
+                                " [partition] " + partitionContext.getPartitionId() +
+                                " scaledown due to RIF: " + (rifReset && (rifPredictedValue < rifThreshold)) +
+                                " [rifPredictedValue] " + rifPredictedValue + " [rifThreshold] " + rifThreshold +
+                                " scaledown due to MC: " + (mcReset && (mcPredictedValue < mcThreshold)) +
+                                " [mcPredictedValue] " + mcPredictedValue + " [mcThreshold] " + mcThreshold +
+                                " scaledown due to LA: " + (laReset && (laPredictedValue < laThreshold)) +
+                                " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold
+                            );
+
+
+                            for(MemberStatsContext memberStatsContext: partitionContext.getMemberStatsContexts().values()){
+
+                                LoadAverage loadAverage = memberStatsContext.getLoadAverage();
+                                log.debug("[scale-down] " + " [cluster] "
+                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Load average: " + loadAverage);
+
+                                MemoryConsumption memoryConsumption = memberStatsContext.getMemoryConsumption();
+                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
+                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Memory consumption: " +
+                                    memoryConsumption);
+
+                                double predictedCpu = delegator.getPredictedValueForNextMinute(loadAverage.getAverage(),
+                                    loadAverage.getGradient(),loadAverage.getSecondDerivative(), 1);
+                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
+                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Predicted CPU: " + predictedCpu);
+
+                                double predictedMemoryConsumption = delegator.getPredictedValueForNextMinute(
+                                    memoryConsumption.getAverage(),memoryConsumption.getGradient(),memoryConsumption.getSecondDerivative(), 1);
+                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
+                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Predicted memory consumption: " +
+                                        predictedMemoryConsumption);
+
+                                double overallLoad = (predictedCpu + predictedMemoryConsumption) / 2;
+                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
+                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Overall load: " + overallLoad);
+
+                                if(!foundAValue){
+                                    foundAValue = true;
+                                    selectedMemberStatsContext = memberStatsContext;
+                                    lowestOverallLoad = overallLoad;
+                                } else if(overallLoad < lowestOverallLoad){
+                                    selectedMemberStatsContext = memberStatsContext;
+                                    lowestOverallLoad = overallLoad;
+                                }
+
+                            }
+                            if(selectedMemberStatsContext != null) {
+                                log.info("[scale-down] Trying to terminating an instace to scale down!" );
+                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
+                                    + clusterId + " Member with lowest overall load: " + selectedMemberStatsContext.getMemberId());
+
+                                delegator.delegateTerminate(partitionContext, selectedMemberStatsContext.getMemberId());
+                            }
+                        } else {
+                            log.warn("Partition is not available to scale-down..!!!!");
+                        }
+                    }
+                } else{
+                     log.debug("[scale-down] Not reached scale down requests threshold. " + clusterId + " Count " +
+                        clusterInstanceContext.getScaleDownRequestsCount());
+                     clusterInstanceContext.increaseScaleDownRequestsCount();
+
+                }
+            } else {
+                log.debug("[scale-down] Min is reached, hence not scaling down [cluster] " + clusterId + " [instance id]"
+                    + clusterInstanceContext.getId());
+                //if(clusterInstanceContext.isInGroupScalingEnabledSubtree()){
+
+                    delegator.delegateScalingDownBeyondMinNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
+                        clusterInstanceContext.getId());
+                //}
+            }
+        }  else{
+            log.debug("[scaling] No decision made to either scale up or scale down ... [cluster] " + clusterId + " [instance id]"
+             + clusterInstanceContext.getId());
+
+        }
+
+end
+
+
+
+

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/jndi.properties
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/jndi.properties b/products/stratos/modules/integration/src/test/resources/jndi.properties
deleted file mode 100644
index beefe3c..0000000
--- a/products/stratos/modules/integration/src/test/resources/jndi.properties
+++ /dev/null
@@ -1,22 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#  http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-#
-
-connectionfactoryName=TopicConnectionFactory
-java.naming.provider.url=tcp://localhost:61617
-java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml b/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
deleted file mode 100644
index 37051b6..0000000
--- a/products/stratos/modules/integration/src/test/resources/mock-iaas.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one
-  ~ or more contributor license agreements.  See the NOTICE file
-  ~ distributed with this work for additional information
-  ~ regarding copyright ownership.  The ASF licenses this file
-  ~ to you under the Apache License, Version 2.0 (the
-  ~ "License"); you may not use this file except in compliance
-  ~ with the License.  You may obtain a copy of the License at
-  ~
-  ~  http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing,
-  ~ software distributed under the License is distributed on an
-  ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-  ~ KIND, either express or implied.  See the License for the
-  ~ specific language governing permissions and limitations
-  ~ under the License.
-  -->
-
-<mock-iaas enabled="true">
-    <health-statistics>
-        <cartridge type="tomcat">
-            <!-- factor:memory-consumption|load-average|requests-in-flight-->
-            <!-- mode:loop|continue|stop -->
-            <!-- Mode defines the action needs to be taken after the last sample value:
-                 loop: start from beginning
-                 continue: continue the last sample value
-                 stop: stop publishing statistics -->
-            <pattern factor="memory-consumption" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>20,30,40,50,60,70,50,40,30,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-            <pattern factor="load-average" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-        </cartridge>
-        <cartridge type="c7-single-cluster-scaling-test">
-            <!-- factor:memory-consumption|load-average|requests-in-flight-->
-            <!-- mode:loop|continue|stop -->
-            <!-- Mode defines the action needs to be taken after the last sample value:
-                 loop: start from beginning
-                 continue: continue the last sample value
-                 stop: stop publishing statistics -->
-            <pattern factor="memory-consumption" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>60,70,80,90,90,90,40,60,50,60</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-            <pattern factor="load-average" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>70,70,70</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-        </cartridge>
-        <cartridge type="c7-partition-round-robin-test">
-            <!-- factor:memory-consumption|load-average|requests-in-flight-->
-            <!-- mode:loop|continue|stop -->
-            <!-- Mode defines the action needs to be taken after the last sample value:
-                 loop: start from beginning
-                 continue: continue the last sample value
-                 stop: stop publishing statistics -->
-            <pattern factor="memory-consumption" mode="stop">
-                <!-- Sample values -->
-                <sampleValues>20,20,20,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>30</sampleDuration>
-            </pattern>
-            <pattern factor="load-average" mode="stop">
-                <!-- Sample values -->
-                <sampleValues>20,20,20,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>30</sampleDuration>
-            </pattern>
-        </cartridge>
-        <cartridge type="c3-group-termination-behavior-test">
-            <!-- factor:memory-consumption|load-average|requests-in-flight-->
-            <!-- mode:loop|continue|stop -->
-            <!-- Mode defines the action needs to be taken after the last sample value:
-                 loop: start from beginning
-                 continue: continue the last sample value
-                 stop: stop publishing statistics -->
-            <pattern factor="memory-consumption" mode="stop">
-                <!-- Sample values -->
-                <sampleValues>20,20,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-            <pattern factor="load-average" mode="stop">
-                <!-- Sample values -->
-                <sampleValues>20,20,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-        </cartridge>
-        <cartridge type="php">
-            <!-- factor:memory-consumption|load-average|requests-in-flight-->
-            <!-- mode:loop|continue|stop -->
-            <!-- Mode defines the action needs to be taken after the last sample value:
-                 loop: start from beginning
-                 continue: continue the last sample value
-                 stop: stop publishing statistics -->
-            <pattern factor="memory-consumption" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>20,30,40,50,60,70,50,40,30,20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-            <pattern factor="load-average" mode="continue">
-                <!-- Sample values -->
-                <sampleValues>20</sampleValues>
-                <!-- Duration of each sample value in seconds -->
-                <sampleDuration>60</sampleDuration>
-            </pattern>
-        </cartridge>
-    </health-statistics>
-</mock-iaas>


[2/3] stratos git commit: Fixing Stratos hanging at integration tests issue

Posted by ra...@apache.org.
http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/scaling.drl
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/scaling.drl b/products/stratos/modules/integration/src/test/resources/scaling.drl
deleted file mode 100644
index 69d9111..0000000
--- a/products/stratos/modules/integration/src/test/resources/scaling.drl
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.stratos.autoscaler
-
-import org.apache.stratos.messaging.domain.topology.Service;
-import org.apache.stratos.messaging.domain.topology.Cluster;
-import org.apache.stratos.autoscaler.context.AutoscalerContext;
-import org.apache.stratos.autoscaler.context.member.MemberStatsContext;
-import org.apache.stratos.autoscaler.util.AutoscalerConstants;
-import org.apache.stratos.autoscaler.context.partition.network.NetworkPartitionContext;
-import org.apache.stratos.autoscaler.pojo.policy.PolicyManager;
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy;
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.RequestsInFlight;
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadThresholds;
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption;
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage;
-import org.apache.stratos.autoscaler.algorithms.PartitionAlgorithm;
-import org.apache.stratos.autoscaler.algorithms.partition.OneAfterAnother;
-import org.apache.stratos.autoscaler.algorithms.partition.RoundRobin;
-import org.apache.stratos.autoscaler.context.partition.ClusterLevelPartitionContext;
-import org.apache.stratos.autoscaler.rule.AutoscalerRuleEvaluator;
-import org.apache.stratos.cloud.controller.stub.domain.Partition;
-import org.apache.stratos.cloud.controller.stub.domain.MemberContext;
-import org.apache.stratos.autoscaler.context.cluster.ClusterInstanceContext;
-
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.LoadAverage
-import org.apache.stratos.autoscaler.pojo.policy.autoscale.MemoryConsumption
-
-global org.apache.stratos.autoscaler.rule.RuleLog log;
-global org.apache.stratos.autoscaler.rule.RuleTasksDelegator delegator;
-global org.apache.stratos.autoscaler.pojo.policy.autoscale.AutoscalePolicy autoscalePolicy;
-global java.lang.String applicationId;
-global java.lang.String clusterId;
-global java.lang.Boolean rifReset;
-global java.lang.Boolean mcReset;
-global java.lang.Boolean laReset;
-global java.lang.Boolean arspiReset;
-global java.lang.String algorithmName;
-
-rule "Scaling Rule"
-dialect "mvel"
-	when
-       clusterInstanceContext : ClusterInstanceContext ()
-
-        loadThresholds : LoadThresholds() from  autoscalePolicy.getLoadThresholds()
-        partitionAlgorithm : PartitionAlgorithm() from  delegator.getPartitionAlgorithm(algorithmName)
-
-        eval(log.debug("Running scale up rule: [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
-            " [cluster] " + clusterId))
-        eval(log.debug("[scaling] [network-partition] " + clusterInstanceContext.getNetworkPartitionId() + " [cluster] "
-            + clusterId + " Algorithm name: " + algorithmName))
-
-	
-        rifThreshold : Float() from  loadThresholds.getRequestsInFlightThreshold()
-
-        rifAverage : Float() from  clusterInstanceContext.getAverageRequestsInFlight()
-        rifGradient : Float() from  clusterInstanceContext.getRequestsInFlightGradient()
-        rifSecondDerivative : Float() from  clusterInstanceContext.getRequestsInFlightSecondDerivative()
-	    rifPredictedValue : Double() from delegator.getPredictedValueForNextMinute(rifAverage, rifGradient, rifSecondDerivative, 1)
-
-        mcThreshold : Float() from  loadThresholds.getMemoryConsumptionThreshold()
-
-        mcPredictedValue : Double() from delegator.getMemoryConsumptionPredictedValue(clusterInstanceContext)
-
-        laThreshold : Float() from  loadThresholds.getLoadAverageThreshold()
-
-        laPredictedValue : Double() from delegator.getLoadAveragePredictedValue(clusterInstanceContext)
-
-        activeInstancesCount : Integer() from clusterInstanceContext.getActiveMemberCount()
-        maxInstancesCount : Integer() from clusterInstanceContext.getMaxInstanceCount()
-        minInstancesCount : Integer() from clusterInstanceContext.getMinInstanceCount()
-        requestsServedPerInstance : Float() from  clusterInstanceContext.getRequestsServedPerInstance()
-        averageRequestsServedPerInstance : Float() from  clusterInstanceContext.getAverageRequestsServedPerInstance()
-
-        numberOfInstancesReuquiredBasedOnRif : Integer() from delegator.getNumberOfInstancesRequiredBasedOnRif(
-            rifPredictedValue, rifThreshold)
-        numberOfInstancesReuquiredBasedOnMemoryConsumption : Integer() from
-            delegator.getNumberOfInstancesRequiredBasedOnMemoryConsumption(mcThreshold, mcPredictedValue, minInstancesCount,
-            maxInstancesCount)
-        numberOfInstancesReuquiredBasedOnLoadAverage : Integer() from
-            delegator.getNumberOfInstancesRequiredBasedOnLoadAverage(laThreshold, laPredictedValue, minInstancesCount)
-
-        numberOfRequiredInstances : Integer() from delegator.getMaxNumberOfInstancesRequired(
-            numberOfInstancesReuquiredBasedOnRif, numberOfInstancesReuquiredBasedOnMemoryConsumption, mcReset,
-            numberOfInstancesReuquiredBasedOnLoadAverage, laReset)
-
-
-
-        scaleUp : Boolean() from (activeInstancesCount < numberOfRequiredInstances)
-        scaleDown : Boolean() from (activeInstancesCount > numberOfRequiredInstances || (numberOfRequiredInstances == 1 && activeInstancesCount == 1))
-
-
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF Resetted?: " + rifReset))
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF predicted value: " + rifPredictedValue))
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " RIF threshold: " + rifThreshold))
-
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " MC predicted value: " + mcPredictedValue))
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " MC threshold: " + mcThreshold))
-
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " LA predicted value: " + laPredictedValue))
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " LA threshold: " + laThreshold))
-
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " Scale-up action: " + scaleUp))
-        eval(log.debug("[scaling] " + "[cluster] " + clusterId + " Scale-down action: " + scaleDown))
-
-	then
-
-	    log.debug("[scaling] Number of required instances based on stats: " + numberOfRequiredInstances + " " +
-	        "[active instances count] " + activeInstancesCount + " [network-partition] " +
-	        clusterInstanceContext.getNetworkPartitionId() + " [cluster] " + clusterId);
-
-        int nonTerminatedMembers = clusterInstanceContext.getNonTerminatedMemberCount();
-        if(scaleUp){
-
-            int clusterMaxMembers = clusterInstanceContext.getMaxInstanceCount();
-            if (nonTerminatedMembers < clusterMaxMembers) {
-
-                int additionalInstances = 0;
-                if(clusterMaxMembers < numberOfRequiredInstances){
-
-                    additionalInstances = clusterMaxMembers - nonTerminatedMembers;
-                    log.info("[scale-up] Required member count based on stat based scaling is higher than max, hence"
-                            + " notifying to parent for possible group scaling or app bursting. [cluster] " + clusterId
-                            + " [instance id]" + clusterInstanceContext.getId() + " [max] " + clusterMaxMembers
-                            + " [number of required instances] " + numberOfRequiredInstances
-                            + " [additional instances to be created] " + additionalInstances);
-                    delegator.delegateScalingOverMaxNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
-                        clusterInstanceContext.getId());
-                } else {
-
-                    additionalInstances = numberOfRequiredInstances - nonTerminatedMembers;
-                }
-
-                clusterInstanceContext.resetScaleDownRequestsCount();
-
-                log.debug("[scale-up] " + " [has scaling dependents] " + clusterInstanceContext.hasScalingDependants() +
-                    " [cluster] " + clusterId );
-                if(clusterInstanceContext.hasScalingDependants()) {
-
-                    log.debug("[scale-up] Notifying dependencies [cluster] " + clusterId);
-                    delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
-                        clusterInstanceContext.getId(), numberOfRequiredInstances, clusterInstanceContext.getMinInstanceCount());
-                } else {
-
-                    boolean partitionsAvailable = true;
-                    int count = 0;
-
-                    while(count != additionalInstances && partitionsAvailable){
-
-                        ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext) partitionAlgorithm.getNextScaleUpPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
-                        if(partitionContext != null){
-
-                            log.info("[scale-up] Partition available, hence trying to spawn an instance to scale up! " +
-                                " [application id] " + applicationId +
-                                " [cluster] " + clusterId + " [instance id] " + clusterInstanceContext.getId() +
-                                " [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
-                                " [partition] " + partitionContext.getPartitionId() +
-                                " scaleup due to RIF: " + (rifReset && (rifPredictedValue > rifThreshold)) +
-                                " [rifPredictedValue] " + rifPredictedValue + " [rifThreshold] " + rifThreshold +
-                                " scaleup due to MC: " + (mcReset && (mcPredictedValue > mcThreshold)) +
-                                " [mcPredictedValue] " + mcPredictedValue + " [mcThreshold] " + mcThreshold +
-                                " scaleup due to LA: " + (laReset && (laPredictedValue > laThreshold)) +
-                                " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold);
-
-                            log.debug("[scale-up] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] " + clusterId );
-                            delegator.delegateSpawn(partitionContext, clusterId, clusterInstanceContext.getId());
-                            count++;
-                        } else {
-
-                            log.warn("[scale-up] No more partition available even though " +
-                             "cartridge-max is not reached!, [cluster] " + clusterId +
-                            " Please update deployment-policy with new partitions or with higher " +
-                             "partition-max");
-                            partitionsAvailable = false;
-                        }
-                    }
-                }
-            } else {
-                log.info("[scale-up] Trying to scale up over max, hence not scaling up cluster itself and
-                        notifying to parent for possible group scaling or app bursting.
-                        [cluster] " + clusterId + " [instance id]" + clusterInstanceContext.getId() +
-                        " [max] " + clusterMaxMembers);
-                delegator.delegateScalingOverMaxNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
-                    clusterInstanceContext.getId());
-            }
-        } else if(scaleDown){
-
-            if(nonTerminatedMembers > clusterInstanceContext.getMinInstanceCount){
-
-                log.debug("[scale-down] Decided to Scale down [cluster] " + clusterId);
-                if(clusterInstanceContext.getScaleDownRequestsCount() >= 0 ){
-
-                    log.debug("[scale-down] Reached scale down requests threshold [cluster] " + clusterId + " Count " +
-                        clusterInstanceContext.getScaleDownRequestsCount());
-
-                    if(clusterInstanceContext.hasScalingDependants()) {
-
-                        log.debug("[scale-up] Notifying dependencies [cluster] " + clusterId);
-                        delegator.delegateScalingDependencyNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
-                            clusterInstanceContext.getId(), numberOfRequiredInstances, clusterInstanceContext.getMinInstanceCount());
-                    } else{
-
-                        MemberStatsContext selectedMemberStatsContext = null;
-                        double lowestOverallLoad = 0.0;
-                        boolean foundAValue = false;
-                        ClusterLevelPartitionContext partitionContext = (ClusterLevelPartitionContext) partitionAlgorithm.getNextScaleDownPartitionContext(clusterInstanceContext.getPartitionCtxtsAsAnArray());
-                        if(partitionContext != null) {
-                            log.info("[scale-down] Partition available to scale down " +
-                                " [application id] " + applicationId +
-                                " [cluster] " + clusterId + " [instance id] " + clusterInstanceContext.getId() +
-                                " [network-partition] " + clusterInstanceContext.getNetworkPartitionId() +
-                                " [partition] " + partitionContext.getPartitionId() +
-                                " scaledown due to RIF: " + (rifReset && (rifPredictedValue < rifThreshold)) +
-                                " [rifPredictedValue] " + rifPredictedValue + " [rifThreshold] " + rifThreshold +
-                                " scaledown due to MC: " + (mcReset && (mcPredictedValue < mcThreshold)) +
-                                " [mcPredictedValue] " + mcPredictedValue + " [mcThreshold] " + mcThreshold +
-                                " scaledown due to LA: " + (laReset && (laPredictedValue < laThreshold)) +
-                                " [laPredictedValue] " + laPredictedValue + " [laThreshold] " + laThreshold
-                            );
-
-
-                            for(MemberStatsContext memberStatsContext: partitionContext.getMemberStatsContexts().values()){
-
-                                LoadAverage loadAverage = memberStatsContext.getLoadAverage();
-                                log.debug("[scale-down] " + " [cluster] "
-                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Load average: " + loadAverage);
-
-                                MemoryConsumption memoryConsumption = memberStatsContext.getMemoryConsumption();
-                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
-                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Memory consumption: " +
-                                    memoryConsumption);
-
-                                double predictedCpu = delegator.getPredictedValueForNextMinute(loadAverage.getAverage(),
-                                    loadAverage.getGradient(),loadAverage.getSecondDerivative(), 1);
-                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
-                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Predicted CPU: " + predictedCpu);
-
-                                double predictedMemoryConsumption = delegator.getPredictedValueForNextMinute(
-                                    memoryConsumption.getAverage(),memoryConsumption.getGradient(),memoryConsumption.getSecondDerivative(), 1);
-                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
-                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Predicted memory consumption: " +
-                                        predictedMemoryConsumption);
-
-                                double overallLoad = (predictedCpu + predictedMemoryConsumption) / 2;
-                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
-                                    + clusterId + " [member] " + memberStatsContext.getMemberId() + " Overall load: " + overallLoad);
-
-                                if(!foundAValue){
-                                    foundAValue = true;
-                                    selectedMemberStatsContext = memberStatsContext;
-                                    lowestOverallLoad = overallLoad;
-                                } else if(overallLoad < lowestOverallLoad){
-                                    selectedMemberStatsContext = memberStatsContext;
-                                    lowestOverallLoad = overallLoad;
-                                }
-
-                            }
-                            if(selectedMemberStatsContext != null) {
-                                log.info("[scale-down] Trying to terminating an instace to scale down!" );
-                                log.debug("[scale-down] " + " [partition] " + partitionContext.getPartitionId() + " [cluster] "
-                                    + clusterId + " Member with lowest overall load: " + selectedMemberStatsContext.getMemberId());
-
-                                delegator.delegateTerminate(partitionContext, selectedMemberStatsContext.getMemberId());
-                            }
-                        } else {
-                            log.warn("Partition is not available to scale-down..!!!!");
-                        }
-                    }
-                } else{
-                     log.debug("[scale-down] Not reached scale down requests threshold. " + clusterId + " Count " +
-                        clusterInstanceContext.getScaleDownRequestsCount());
-                     clusterInstanceContext.increaseScaleDownRequestsCount();
-
-                }
-            } else {
-                log.debug("[scale-down] Min is reached, hence not scaling down [cluster] " + clusterId + " [instance id]"
-                    + clusterInstanceContext.getId());
-                //if(clusterInstanceContext.isInGroupScalingEnabledSubtree()){
-
-                    delegator.delegateScalingDownBeyondMinNotification(clusterId, clusterInstanceContext.getNetworkPartitionId(),
-                        clusterInstanceContext.getId());
-                //}
-            }
-        }  else{
-            log.debug("[scaling] No decision made to either scale up or scale down ... [cluster] " + clusterId + " [instance id]"
-             + clusterInstanceContext.getId());
-
-        }
-
-end
-
-
-
-

http://git-wip-us.apache.org/repos/asf/stratos/blob/c9de1b2b/products/stratos/modules/integration/src/test/resources/test-conf/integration-test.properties
----------------------------------------------------------------------
diff --git a/products/stratos/modules/integration/src/test/resources/test-conf/integration-test.properties b/products/stratos/modules/integration/src/test/resources/test-conf/integration-test.properties
index a26383c..e856975 100644
--- a/products/stratos/modules/integration/src/test/resources/test-conf/integration-test.properties
+++ b/products/stratos/modules/integration/src/test/resources/test-conf/integration-test.properties
@@ -23,4 +23,8 @@ carbon.port.offset=0
 activemq.bind.address=tcp://localhost:61617
 stratos.endpoint=http://localhost:9763
 stratos.admin.username=admin
-stratos.admin.password=admin
\ No newline at end of file
+stratos.admin.password=admin
+stratos.tenant1.username=admin@test1.com
+stratos.tenant1.password=admin123
+stratos.tenant2.username=admin@test2.com
+stratos.tenant2.password=admin123
\ No newline at end of file