You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2013/12/22 15:54:04 UTC
[1/2] git commit: Adding initial implementation of autoscaler
test-suite
Updated Branches:
refs/heads/master 6b4a9c251 -> 143619358
Adding initial implementation of autoscaler test-suite
Signed-off-by: Lahiru Sandaruwan <la...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/18a16924
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/18a16924
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/18a16924
Branch: refs/heads/master
Commit: 18a169248f4f751a221fd816ebece2e345b869d7
Parents: c74290a
Author: Melan Nimesh <me...@gmail.com>
Authored: Sun Dec 22 19:36:54 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Sun Dec 22 20:25:11 2013 +0530
----------------------------------------------------------------------
products/autoscaler/modules/integration/pom.xml | 212 +++++++++++++++++++
.../autoscaler/integration/TopicPublisher.java | 101 +++++++++
.../tests/AutoscalerTestServerManager.java | 100 +++++++++
.../integration/tests/LoginLogoutTestCase.java | 49 +++++
.../tests/SecurityVerificationTestCase.java | 27 +++
.../tests/TopologyEventsPublisherTestCase.java | 122 +++++++++++
.../src/test/resources/automation.properties | 116 ++++++++++
.../src/test/resources/jndi.properties | 5 +
.../src/test/resources/keys/wso2carbon.jks | Bin 0 -> 33260 bytes
.../integration/src/test/resources/testng.xml | 33 +++
10 files changed, 765 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/pom.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/pom.xml b/products/autoscaler/modules/integration/pom.xml
new file mode 100644
index 0000000..c98b056
--- /dev/null
+++ b/products/autoscaler/modules/integration/pom.xml
@@ -0,0 +1,212 @@
+<?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.
+ -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+ <parent>
+ <groupId>org.apache.stratos.autoscaler</groupId>
+ <artifactId>autoscaler-parent</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <relativePath>../../pom.xml</relativePath>
+ </parent>
+
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>integration</artifactId>
+ <name>Apache Stratos - Autoscaler- Integration Tests</name>
+ <packaging>jar</packaging>
+
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-clean-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>auto-clean</id>
+ <phase>initialize</phase>
+ <goals>
+ <goal>clean</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-surefire-plugin</artifactId>
+ <inherited>false</inherited>
+ <configuration>
+ <suiteXmlFiles>
+ <suiteXmlFile>src/test/resources/testng.xml</suiteXmlFile>
+ </suiteXmlFiles>
+ <systemProperties>
+ <maven.test.haltafterfailure>false</maven.test.haltafterfailure>
+ <carbon.zip>
+ ${basedir}/../distribution/target/apache-stratos-autoscaler-${project.version}.zip
+ </carbon.zip>
+ <sec.verifier.dir>${basedir}/target/security-verifier/</sec.verifier.dir>
+ <extracted.dir>autoscaler-parent-${project.version}</extracted.dir>
+ <property>
+ <name>framework.resource.location</name>
+ <value>
+ ${basedir}/src/test/resources/
+ </value>
+ </property>
+ <property>
+ <name>server.list</name>
+ <value>
+ AS
+ </value>
+ </property>
+ </systemProperties>
+ <workingDirectory>${basedir}/target</workingDirectory>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>test-jar</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>copy-secVerifier</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/target/security-verifier</outputDirectory>
+ <includeTypes>aar</includeTypes>
+ <includeArtifactIds>SecVerifier</includeArtifactIds>
+ <stripVersion>true</stripVersion>
+ </configuration>
+ </execution>
+ <execution>
+ <id>copy-jar-dependencies</id>
+ <phase>compile</phase>
+ <goals>
+ <goal>copy-dependencies</goal>
+ </goals>
+ <configuration>
+ <outputDirectory>${basedir}/src/test/resources/artifacts/jar
+ </outputDirectory>
+ <includeTypes>jar</includeTypes>
+ <includeArtifactIds>
+ activemq-core,geronimo-j2ee-management_1.1_spec,geronimo-jms_1.1_spec
+ </includeArtifactIds>
+ <excludeTransitive>true</excludeTransitive>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.integration.framework</artifactId>
+ <version>${carbon.kernel.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon.automation</groupId>
+ <artifactId>org.wso2.carbon.automation.api</artifactId>
+ <version>${clarity.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon.automation</groupId>
+ <artifactId>org.wso2.carbon.automation.core</artifactId>
+ <version>${clarity.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon.automation</groupId>
+ <artifactId>org.wso2.carbon.automation.utils</artifactId>
+ <version>${clarity.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <version>6.1.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.axis2.wso2</groupId>
+ <artifactId>axis2-client</artifactId>
+ <version>${axis2.osgi.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.addressing</artifactId>
+ <version>${carbon.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>org.wso2.carbon.integration.core</artifactId>
+ <version>${carbon.kernel.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.wso2.carbon</groupId>
+ <artifactId>SecVerifier</artifactId>
+ <version>${carbon.version}</version>
+ <type>aar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.activemq</groupId>
+ <artifactId>activemq-core</artifactId>
+ <version>5.2.0</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.geronimo.specs</groupId>
+ <artifactId>geronimo-j2ee-management_1.1_spec</artifactId>
+ <version>1.0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>commons-io</groupId>
+ <artifactId>commons-io</artifactId>
+ <version>2.4</version>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ <version>2.2.4</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.stratos</groupId>
+ <artifactId>org.apache.stratos.messaging</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <properties>
+ <clarity.version>4.1.3</clarity.version>
+ <carbon.kernel.version>4.1.0.stratos</carbon.kernel.version>
+ </properties>
+
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/TopicPublisher.java
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/TopicPublisher.java b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/TopicPublisher.java
new file mode 100644
index 0000000..e803091
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/TopicPublisher.java
@@ -0,0 +1,101 @@
+/*
+ * 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.integration;
+
+import com.google.gson.Gson;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.messaging.event.Event;
+import org.apache.stratos.messaging.util.Constants;
+
+import javax.jms.*;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import java.io.IOException;
+import java.io.Serializable;
+import java.util.Properties;
+
+public class TopicPublisher {
+ private static final Log log = LogFactory.getLog(TopicPublisher.class);
+ private TopicConnection topicConnection;
+ private TopicSession topicSession;
+ private Topic topic;
+ private String topicName;
+
+ public TopicPublisher(String topicName) {
+ this.topicName = topicName;
+ }
+
+ public void connect() throws NamingException, JMSException, IOException {
+ // Prepare JNDI properties
+ Properties properties = new Properties();
+ properties.put("java.naming.provider.url", "tcp://localhost:61616");
+ properties.put("java.naming.factory.initial","org.apache.activemq.jndi.ActiveMQInitialContextFactory");
+ properties.put("connectionfactoryName", "ConnectionFactory");
+ properties.put("java.naming.security.principal", "admin");
+ properties.put("java.naming.security.credentials", "admin");
+ InitialContext ctx = new InitialContext(properties);
+
+ // Lookup connection factory
+ String connectionFactoryName = properties.get("connectionfactoryName").toString();
+ TopicConnectionFactory connectionFactory = (TopicConnectionFactory) ctx.lookup(connectionFactoryName);
+ topicConnection = connectionFactory.createTopicConnection();
+ topicConnection.start();
+ topicSession = topicConnection.createTopicSession(false,QueueSession.AUTO_ACKNOWLEDGE);
+
+ // Create topic
+ topic = topicSession.createTopic(topicName);
+ }
+
+ public void publish(Event event) throws NamingException, JMSException,IOException {
+ Gson gson = new Gson();
+ String json = gson.toJson(event);
+ publish(json, event.getClass().getName());
+ }
+
+ private void publish(Object message, String eventClassName)
+ throws NamingException, JMSException, IOException {
+ // Send message
+ if (message instanceof String) {
+ TextMessage textMessage = topicSession.createTextMessage((String) message);
+ textMessage.setStringProperty(Constants.EVENT_CLASS_NAME,eventClassName);
+ javax.jms.TopicPublisher topicPublisher = topicSession.createPublisher(topic);
+ topicPublisher.publish(textMessage);
+ log.info("Text message sent: " + (String) message);
+ } else if (message instanceof Serializable) {
+ ObjectMessage objectMessage = topicSession.createObjectMessage((Serializable) message);
+ javax.jms.TopicPublisher topicPublisher = topicSession.createPublisher(topic);
+ topicPublisher.publish(objectMessage);
+ log.info("Object message sent: "+ ((Serializable) message).toString());
+ } else {
+ throw new RuntimeException("Unknown message type");
+ }
+ }
+
+ public void close() throws JMSException {
+ // Clean up resources
+ if (topicSession != null)
+ topicSession.close();
+ if (topicConnection != null)
+ topicConnection.close();
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/AutoscalerTestServerManager.java
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/AutoscalerTestServerManager.java b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/AutoscalerTestServerManager.java
new file mode 100644
index 0000000..b69a84a
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/AutoscalerTestServerManager.java
@@ -0,0 +1,100 @@
+/*
+ * 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.integration.tests;
+
+import org.apache.commons.io.FileUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeSuite;
+import org.wso2.carbon.automation.core.utils.environmentutils.EnvironmentBuilder;
+import org.wso2.carbon.automation.core.utils.jmsbrokerutils.controller.JMSBrokerController;
+import org.wso2.carbon.automation.core.utils.jmsbrokerutils.controller.config.JMSBrokerConfiguration;
+import org.wso2.carbon.automation.core.utils.jmsbrokerutils.controller.config.JMSBrokerConfigurationProvider;
+import org.wso2.carbon.integration.framework.TestServerManager;
+
+import java.io.File;
+import java.io.IOException;
+
+
+/**
+ * Prepares the Autoscaler for test runs, starts JMS Broker, starts the server, and stops the
+ * server after test runs
+ */
+public class AutoscalerTestServerManager extends TestServerManager {
+ private static final Log log = LogFactory.getLog(AutoscalerTestServerManager.class);
+
+ private EnvironmentBuilder builder = null;
+ private JMSBrokerController activeMqBroker = null;
+
+ @Override
+ @BeforeSuite(timeOut = 300000)
+ public String startServer() throws IOException {
+
+ builder = new EnvironmentBuilder();
+
+ if (builder.getFrameworkSettings().getEnvironmentSettings().is_builderEnabled()) {
+ // starting jms broker
+ activeMqBroker = new JMSBrokerController("localhost",getJMSBrokerConfiguration());
+ if (!JMSBrokerController.isBrokerStarted()) {
+ Assert.assertTrue(activeMqBroker.start(),"JMS Broker stating failed");
+ }
+ }
+
+ String carbonHome = super.startServer();
+ System.setProperty("carbon.home", carbonHome);
+ try {
+ Thread.sleep(10000);
+ } catch (InterruptedException e) {
+ throw new IOException(e);
+ }
+ return carbonHome;
+ }
+
+ @Override
+ @AfterSuite(timeOut = 60000)
+ public void stopServer() throws Exception {
+ super.stopServer();
+ if (builder.getFrameworkSettings().getEnvironmentSettings().is_builderEnabled()) {
+ if (activeMqBroker != null) {
+ Assert.assertTrue(activeMqBroker.stop(), "JMS Broker Stopping failed");
+ }
+ }
+ }
+
+ protected void copyArtifacts(String carbonHome) throws IOException {
+ Assert.assertNotNull(carbonHome, "carbon home cannot be null");
+ String resourceLocation = System.getProperty("framework.resource.location",
+ System.getProperty("basedir") + "src" + File.separator + "test" + File.separator + "resources" + File.separator );
+ String libDir = carbonHome + File.separator + "repository"+ File.separator + "components"+ File.separator + "lib";
+ String confDir = carbonHome + File.separator + "repository"+ File.separator + "conf";
+ log.info("Copying jndi.properties file....");
+ FileUtils.copyFile(new File(resourceLocation,"jndi.properties"),new File(confDir,"jndi.properties"));
+ log.info("Copying ActiveMQ dependencies....");
+ FileUtils.copyDirectory(new File(resourceLocation + File.separator + "artifacts"+ File.separator + "jar"), new File(libDir));
+ }
+
+ private JMSBrokerConfiguration getJMSBrokerConfiguration() {
+ return JMSBrokerConfigurationProvider.getInstance()
+ .getBrokerConfiguration();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/LoginLogoutTestCase.java
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/LoginLogoutTestCase.java b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/LoginLogoutTestCase.java
new file mode 100644
index 0000000..e3b0e92
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/LoginLogoutTestCase.java
@@ -0,0 +1,49 @@
+/*
+ * 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.integration.tests;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.testng.annotations.Test;
+import org.wso2.carbon.integration.framework.ClientConnectionUtil;
+import org.wso2.carbon.integration.framework.LoginLogoutUtil;
+
+/**
+ * A test case which tests logging in & logging out of a Carbon core server
+ */
+public class LoginLogoutTestCase {
+
+ private LoginLogoutUtil util = new LoginLogoutUtil();
+ public static final Log log = LogFactory.getLog(LoginLogoutTestCase.class);
+
+ @Test(groups = {"stratos.autoscaler"})
+ public void login() throws Exception {
+ log.info("****************************** LoginLogoutTestCase Start ******************************");
+ ClientConnectionUtil.waitForPort(9763);
+ util.login();
+ }
+
+ @Test(groups = {"stratos.autoscaler"})
+ public void logout() throws Exception {
+ ClientConnectionUtil.waitForPort(9763);
+ util.logout();
+ log.info("****************************** LoginLogoutTestCase End ******************************");
+ }
+}
+
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/SecurityVerificationTestCase.java
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/SecurityVerificationTestCase.java b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/SecurityVerificationTestCase.java
new file mode 100644
index 0000000..92d7708
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/SecurityVerificationTestCase.java
@@ -0,0 +1,27 @@
+/*
+ * 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.integration.tests;
+
+import org.wso2.carbon.integration.framework.SecurityVerificationTest;
+
+/**
+ * Test to ensure that the Stratos Autoscaler is properly secured
+ */
+public class SecurityVerificationTestCase extends SecurityVerificationTest {
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/TopologyEventsPublisherTestCase.java
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/TopologyEventsPublisherTestCase.java b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/TopologyEventsPublisherTestCase.java
new file mode 100644
index 0000000..84a6258
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/java/org/apache/stratos/autoscaler/integration/tests/TopologyEventsPublisherTestCase.java
@@ -0,0 +1,122 @@
+/*
+ * 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.integration.tests;
+
+import java.io.IOException;
+
+import javax.jms.JMSException;
+import javax.naming.NamingException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.stratos.autoscaler.integration.TopicPublisher;
+import org.apache.stratos.messaging.domain.topology.Cluster;
+import org.apache.stratos.messaging.domain.topology.MemberStatus;
+import org.apache.stratos.messaging.domain.topology.Port;
+import org.apache.stratos.messaging.domain.topology.Service;
+import org.apache.stratos.messaging.domain.topology.Topology;
+import org.apache.stratos.messaging.event.topology.ClusterCreatedEvent;
+import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent;
+import org.apache.stratos.messaging.event.topology.InstanceSpawnedEvent;
+import org.apache.stratos.messaging.event.topology.MemberActivatedEvent;
+import org.apache.stratos.messaging.event.topology.MemberStartedEvent;
+import org.apache.stratos.messaging.event.topology.ServiceCreatedEvent;
+import org.testng.annotations.Test;
+import org.apache.stratos.messaging.domain.topology.ServiceType;
+import org.apache.stratos.messaging.domain.topology.Member;
+
+public class TopologyEventsPublisherTestCase {
+
+ public static final Log log = LogFactory.getLog(LoginLogoutTestCase.class);
+ private static String TOPIC_NAME = "topology";
+ private static long TIME_INTERVAL = 4000;
+
+ @Test(groups = {"stratos.autoscaler"})
+ public void publish() throws Exception {
+ TopicPublisher publisher = new TopicPublisher(TOPIC_NAME);
+ publisher.connect();
+ sendTopologyEvents(publisher);
+ }
+
+ private static void sendTopologyEvents(TopicPublisher publisher) throws JMSException, NamingException, IOException, InterruptedException {
+ Topology topology = new Topology();
+
+ // Application server service
+ Service service1 = new Service("AppServer",ServiceType.SingleTenant);
+ service1.addPort(new Port("https", 9764, 90));
+ topology.addService(service1);
+
+ // Application server cluster 1
+ Cluster cluster1 = new Cluster(service1.getServiceName(), "appserver-cluster", "p1", "");
+ cluster1.addHostName("appserver.foo.org");
+ cluster1.setTenantRange("1-*");
+ service1.addCluster(cluster1);
+
+ // Application server cluster 1 members
+ Member member1 = new Member(cluster1.getServiceName(), cluster1.getClusterId(), "m1", "", "");
+ member1.setMemberIp("10.0.0.1");
+ member1.setStatus(MemberStatus.Activated);
+ cluster1.addMember(member1);
+
+ Member member2 = new Member(cluster1.getServiceName(), cluster1.getClusterId(), "m2", "", "");
+ member2.setMemberIp("10.0.0.1");
+ member2.setStatus(MemberStatus.Activated);
+ cluster1.addMember(member2);
+
+ Member member3 = new Member(cluster1.getServiceName(), cluster1.getClusterId(), "m3", "", "");
+ member3.setMemberIp("10.0.0.1");
+ member3.setStatus(MemberStatus.Activated);
+ cluster1.addMember(member3);
+
+ // Send complete topology event
+ CompleteTopologyEvent event = new CompleteTopologyEvent(topology);
+ publisher.publish(event);
+ Thread.sleep(TIME_INTERVAL);
+
+ // Send ESB service created event
+ ServiceCreatedEvent event1 = new ServiceCreatedEvent("ESB", ServiceType.MultiTenant);
+ event1.addPort(new Port("https", 9764, 90));
+ publisher.publish(event1);
+ Thread.sleep(TIME_INTERVAL);
+
+ // Send ESB cluster c1 created event
+ ClusterCreatedEvent event2 = new ClusterCreatedEvent("ESB", "esb-cluster", cluster1);
+ publisher.publish(event2);
+ Thread.sleep(TIME_INTERVAL);
+
+ // Send ESB cluster c1 member m1 spawned event
+ InstanceSpawnedEvent event3 = new InstanceSpawnedEvent(event2.getServiceName(), event2.getClusterId(), "m1", "p1", "");
+ publisher.publish(event3);
+ Thread.sleep(TIME_INTERVAL);
+
+ // Send ESB cluster c1 member m1 started event
+ MemberStartedEvent event4 = new MemberStartedEvent(event2.getServiceName(), event2.getClusterId(), "m1", "", "");
+ publisher.publish(event4);
+ Thread.sleep(TIME_INTERVAL);
+
+ // Send ESB cluster c1 member m1 activated event
+ MemberActivatedEvent event5 = new MemberActivatedEvent(event2.getServiceName(), event2.getClusterId(), "m1", "", "");
+ event5.setMemberIp("10.0.0.1");
+ event5.addPort(new Port("http", 9764, 90));
+ publisher.publish(event5);
+ Thread.sleep(TIME_INTERVAL);
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/resources/automation.properties
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/resources/automation.properties b/products/autoscaler/modules/integration/src/test/resources/automation.properties
new file mode 100644
index 0000000..3f651a1
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/resources/automation.properties
@@ -0,0 +1,116 @@
+# Testing server details
+#---------------------------------------------------------------------------------------------------
+stratos.test=false
+execution.environment=integration
+execution.mode=user
+port.enable=true
+carbon.web.context.enable=false
+service.deployment.delay=30000
+cluster.enable=false
+product.list=AS
+deployment.framework.enable=false
+builder.enable=true
+coverage.enable=true
+
+as.host.name=localhost
+as.http.port=9767
+as.https.port=9447
+
+axis2.host.name=localhost
+axis2.http.port=9000
+axis2.https.port=9001
+
+manager.host.name=localhost
+manager.http.port=9764
+manager.https.port=9444
+
+dss.host.name=localhost
+dss.http.port=9763
+dss.https.port=9443
+
+greg.host.name=localhost
+greg.http.port=9763
+greg.https.port=9443
+
+is.host.name=localhost
+is.http.port=9767
+is.https.port=9447
+
+mb.host.name=localhost
+mb.http.port=9770
+mb.https.port=9450
+mb.qpid.port=5675
+
+bam.host.name=localhost
+bam.http.port=9765
+bam.https.port=9445
+
+esb.host.name=localhost
+esb.http.port=9763
+esb.https.port=9443
+esb.nhttp.port=8280
+esb.nhttps.port=8243
+
+cep.host.name=localhost
+cep.http.port=9772
+cep.https.port=9452
+cep.qpid.port=5672
+
+gs.host.name=localhost
+gs.http.port=9771
+gs.https.port=9453
+
+bps.host.name=localhost
+bps.http.port=9763
+bps.https.port=9443
+
+ms.host.name=localhost
+ms.http.port=9769
+ms.https.port=9449
+
+brs.host.name=localhost
+brs.http.port=9775
+brs.https.port=9455
+
+ravana.framework.path=/opt/ravana/ravana2
+ravana.test=true
+
+#(chrome|firefox|opera|ie|htmlUnit)
+browser.name=firefox
+path.to.chrome.driver="/opt/ravana/chromedriver"
+
+#run selenium test on remote browser or not. (true|false)
+remote.selenium.web.driver.start=false
+remote.webdirver.url=http://10.100.2.51:4444/wd/hub/
+
+#this database configuration is used for data service test in product testing. configuration used as a data source in dbs files
+#database.driver.name=com.mysql.jdbc.Driver
+#jdbc.url=jdbc:mysql://127.0.0.1:3306
+database.driver.name=org.h2.Driver
+jdbc.url=jdbc:h2:
+db.user=root
+db.password=root123
+db.name=testDb
+
+#RSS Data Source configuration in Stratos. this user name and password are used to create a user on RSS Manager in stratos and used in .dbs file as well
+#user name should be limited to 7 characters
+rss.database.user = tstusr1
+rss.database.password =test123
+
+ravana.jdbc.url=jdbc:mysql://127.0.0.1:3306
+ravana.db.user=root
+ravana.db.password=root
+
+
+#this database configuration is used for test result dashboard.
+dashboard.enable=false
+dashboard.database.driver.name=com.mysql.jdbc.Driver
+dashboard.jdbc.url=jdbc:mysql://127.0.0.1:3306
+dashboard.db.user=root
+dashboard.db.password=root
+dashboard.db.name=FRAMEWORK_DB
+
+#keystore name and passward, you need to put this put the keystore files to src/test/resources/keystores
+truststore.name=wso2carbon.jks
+truststore.password=wso2carbon
+
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/resources/jndi.properties
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/resources/jndi.properties b/products/autoscaler/modules/integration/src/test/resources/jndi.properties
new file mode 100644
index 0000000..449d93f
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/resources/jndi.properties
@@ -0,0 +1,5 @@
+java.naming.provider.url=tcp://localhost:61616
+java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory
+connectionfactoryName=ConnectionFactory
+java.naming.security.principal=admin
+java.naming.security.credentials=admin
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/resources/keys/wso2carbon.jks
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/resources/keys/wso2carbon.jks b/products/autoscaler/modules/integration/src/test/resources/keys/wso2carbon.jks
new file mode 100644
index 0000000..7942c53
Binary files /dev/null and b/products/autoscaler/modules/integration/src/test/resources/keys/wso2carbon.jks differ
http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/18a16924/products/autoscaler/modules/integration/src/test/resources/testng.xml
----------------------------------------------------------------------
diff --git a/products/autoscaler/modules/integration/src/test/resources/testng.xml b/products/autoscaler/modules/integration/src/test/resources/testng.xml
new file mode 100644
index 0000000..29d8751
--- /dev/null
+++ b/products/autoscaler/modules/integration/src/test/resources/testng.xml
@@ -0,0 +1,33 @@
+<?xml version='1.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.
+
+-->
+
+<!DOCTYPE suite SYSTEM "http://beust.com/testng/testng-1.0.dtd" >
+<suite name="Apache Stratos Autoscaler Test Suite">
+ <test name="testing" preserve-order="true">
+ <classes>
+ <class name="org.apache.stratos.autoscaler.integration.tests.AutoscalerTestServerManager"/>
+ <class name="org.apache.stratos.autoscaler.integration.tests.LoginLogoutTestCase"/>
+ <class name="org.apache.stratos.autoscaler.integration.tests.SecurityVerificationTestCase"/>
+ <class name="org.apache.stratos.autoscaler.integration.tests.TopologyEventsPublisherTestCase"></class>
+ </classes>
+ </test>
+</suite>
[2/2] git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-stratos
Posted by la...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/incubator-stratos
Project: http://git-wip-us.apache.org/repos/asf/incubator-stratos/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-stratos/commit/14361935
Tree: http://git-wip-us.apache.org/repos/asf/incubator-stratos/tree/14361935
Diff: http://git-wip-us.apache.org/repos/asf/incubator-stratos/diff/14361935
Branch: refs/heads/master
Commit: 14361935844b9e999b1d94af1a11ffbdef2c10c7
Parents: 18a1692 6b4a9c2
Author: Lahiru Sandaruwan <la...@apache.org>
Authored: Sun Dec 22 20:28:02 2013 +0530
Committer: Lahiru Sandaruwan <la...@apache.org>
Committed: Sun Dec 22 20:28:02 2013 +0530
----------------------------------------------------------------------
.../stat/AverageLoadAverageEventListener.java | 7 +-
.../AverageMemoryConsumptionEventListener.java | 7 +-
.../AverageRequestsInFlightEventListener.java | 7 +-
.../GradientOfLoadAverageEventListener.java | 7 +-
...radientOfMemoryConsumptionEventListener.java | 7 +-
...GradientOfRequestsInFlightEventListener.java | 7 +-
.../MemberAverageLoadAverageEventListener.java | 7 +-
...erAverageMemoryConsumptionEventListener.java | 7 +-
.../health/stat/MemberFaultEventListener.java | 7 +-
...emberGradientOfLoadAverageEventListener.java | 22 +---
...radientOfMemoryConsumptionEventListener.java | 7 +-
...ondDerivativeOfLoadAverageEventListener.java | 7 +-
...ivativeOfMemoryConsumptionEventListener.java | 7 +-
...ondDerivativeOfLoadAverageEventListener.java | 7 +-
...ivativeOfMemoryConsumptionEventListener.java | 7 +-
...rivativeOfRequestsInFlightEventListener.java | 7 +-
.../stat/HealthStatMessageProcessorChain.java | 106 +++++++++++++++++++
.../stat/HealthStatEventMessageDelegator.java | 95 +++++++++++++++++
.../stat/HealthStatEventMessageListener.java | 55 ++++++++++
.../stat/HealthStatEventMessageQueue.java | 26 +++++
.../src/main/bin/cartridge-agent.sh | 4 +-
.../modules/scripts/ec2/cartridge-agent.sh | 4 +
tools/puppet/manifests/classes/php_cartridge.pp | 30 +++---
tools/puppet/manifests/nodes.pp | 19 ++--
24 files changed, 411 insertions(+), 55 deletions(-)
----------------------------------------------------------------------