Repository: stratos Updated Branches: refs/heads/stratos-4.1.x 13c42e809 -> f14d74169
Fixing STRATOS-1548: integration tests should dynamically pickup open ports Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/f14d7416 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/f14d7416 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/f14d7416 Branch: refs/heads/stratos-4.1.x Commit: f14d7416912274184c6b6f70a20b05802fa63473 Parents: 13c42e8 Author: Akila Perera <[email protected]> Authored: Thu Sep 10 19:39:37 2015 +0530 Committer: Akila Perera <[email protected]> Committed: Thu Sep 10 19:40:05 2015 +0530 ---------------------------------------------------------------------- .../common/StratosTestServerManager.java | 132 +++++++++++++++++-- .../apache/stratos/integration/common/Util.java | 55 +++++++- .../extensions/StratosServerExtension.java | 119 ++++++++++++----- .../tests/StratosIntegrationTest.java | 38 +----- .../test/resources/common/JMSOutputAdaptor.xml | 2 +- .../src/test/resources/common/autoscaler.xml | 6 +- .../common/cartridge-config.properties | 6 +- .../test/resources/common/cloud-controller.xml | 2 +- .../src/test/resources/common/identity.xml | 14 +- .../src/test/resources/common/jndi.properties | 2 +- .../resources/common/thrift-client-config.xml | 2 +- 11 files changed, 277 insertions(+), 101 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/StratosTestServerManager.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/StratosTestServerManager.java b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/StratosTestServerManager.java index f3e0475..be73c6e 100644 --- a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/StratosTestServerManager.java +++ b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/StratosTestServerManager.java @@ -17,9 +17,11 @@ package org.apache.stratos.integration.common; import org.apache.commons.io.FileUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.common.constants.StratosConstants; import org.wso2.carbon.automation.engine.context.AutomationContext; import org.wso2.carbon.automation.engine.context.beans.User; import org.wso2.carbon.automation.engine.exceptions.AutomationFrameworkException; @@ -36,7 +38,11 @@ import org.wso2.carbon.automation.extensions.servers.utils.ServerLogReader; import javax.xml.xpath.XPathExpressionException; import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; import java.io.IOException; +import java.net.URL; +import java.nio.charset.StandardCharsets; import java.util.Iterator; import java.util.Map; import java.util.Set; @@ -57,6 +63,13 @@ public class StratosTestServerManager extends TestServerManager { public static final String IDENTITY_FILENAME = "identity.xml"; private static final String LOG4J_PROPERTIES_FILENAME = "log4j.properties"; private static final String THRIFT_CLIENT_CONFIG_FILENAME = "thrift-client-config.xml"; + private int activeMQDynamicPort; + private int stratosSecureDynamicPort; + private int stratosDynamicPort; + private int thriftDynamicPort; + private int thriftSecureDynamicPort; + private String webAppURL; + private String webAppURLHttps; public StratosTestServerManager(AutomationContext context) { super(context); @@ -117,10 +130,13 @@ public class StratosTestServerManager extends TestServerManager { public void configureServer() throws AutomationFrameworkException { try { log.info("Configuring server using CARBON_HOME: " + carbonHome); - copyArtifacts(carbonHome); + copyArtifacts(); + + // set truststores and jndi.properties path + setSystemproperties(); } catch (IOException e) { - log.error("Could not configure Stratos server", e); + throw new AutomationFrameworkException("Could not configure Stratos server", e); } } @@ -128,24 +144,24 @@ public class StratosTestServerManager extends TestServerManager { super.stopServer(); } - protected void copyArtifacts(String carbonHome) throws IOException { + protected void copyArtifacts() throws IOException { String commonResourcesPath = Util.getCommonResourcesFolderPath(); - copyConfigFile(carbonHome, commonResourcesPath, MOCK_IAAS_XML_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, JNDI_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, LOG4J_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, CLOUD_CONTROLLER_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, AUTOSCALER_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, CARTRIDGE_CONFIG_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, IDENTITY_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, THRIFT_CLIENT_CONFIG_FILENAME, Util.CARBON_CONF_PATH); - copyConfigFile(carbonHome, commonResourcesPath, SCALING_DROOL_FILENAME, + copyConfigFile(commonResourcesPath, MOCK_IAAS_XML_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, JNDI_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, LOG4J_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, CLOUD_CONTROLLER_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, AUTOSCALER_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, CARTRIDGE_CONFIG_PROPERTIES_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, IDENTITY_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, THRIFT_CLIENT_CONFIG_FILENAME, Util.CARBON_CONF_PATH); + copyConfigFile(commonResourcesPath, SCALING_DROOL_FILENAME, Util.CARBON_CONF_PATH + PATH_SEP + "drools"); - copyConfigFile(carbonHome, commonResourcesPath, JMS_OUTPUT_ADAPTER_FILENAME, + copyConfigFile(commonResourcesPath, JMS_OUTPUT_ADAPTER_FILENAME, "repository" + PATH_SEP + "deployment" + PATH_SEP + "server" + PATH_SEP + "outputeventadaptors"); } - private void copyConfigFile(String carbonHome, String filePath, String fileName, String destinationFolder) + private void copyConfigFile(String filePath, String fileName, String destinationFolder) throws IOException { assertNotNull(carbonHome, "CARBON_HOME is null"); String fileAbsPath = filePath + PATH_SEP + fileName; @@ -155,6 +171,94 @@ public class StratosTestServerManager extends TestServerManager { File destFile = new File(carbonHome + PATH_SEP + destinationFolder + PATH_SEP + fileName); FileUtils.copyFile(srcFile, destFile); log.info("Copying file [source] " + srcFile.getAbsolutePath() + " to [dest] " + destFile.getAbsolutePath()); + + // replace placeholders with dynamic values + String content = IOUtils.toString(new FileInputStream(destFile), StandardCharsets.UTF_8.displayName()); + content = content.replaceAll(Util.ACTIVEMQ_DYNAMIC_PORT_PLACEHOLDER, String.valueOf(activeMQDynamicPort)); + content = content.replaceAll(Util.STRATOS_SECURE_DYNAMIC_PORT_PLACEHOLDER, + String.valueOf(stratosSecureDynamicPort)); + content = content.replaceAll(Util.STRATOS_DYNAMIC_PORT_PLACEHOLDER, + String.valueOf(stratosDynamicPort)); + content = content.replaceAll(Util.THRIFT_SECURE_DYNAMIC_PORT_PLACEHOLDER, + String.valueOf(thriftSecureDynamicPort)); + content = content.replaceAll(Util.THRIFT_DYNAMIC_PORT_PLACEHOLDER, String.valueOf(thriftDynamicPort)); + IOUtils.write(content, new FileOutputStream(destFile), StandardCharsets.UTF_8.displayName()); + } + + public void setSystemproperties() throws AutomationFrameworkException { + URL resourceUrl = getClass().getResource(File.separator + "keystores" + File.separator + + "products" + File.separator + "wso2carbon.jks"); + System.setProperty("javax.net.ssl.trustStore", resourceUrl.getPath()); + System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon"); + System.setProperty("javax.net.ssl.trustStoreType", "JKS"); + log.info("trustStore set to " + resourceUrl.getPath()); + + // Set jndi.properties.dir system property for initializing event receivers + System.setProperty("jndi.properties.dir", carbonHome + PATH_SEP + Util.CARBON_CONF_PATH); + try { + String autoscalerServiceURL = webAppURLHttps + "/services/AutoscalerService"; + System.setProperty(StratosConstants.AUTOSCALER_SERVICE_URL, autoscalerServiceURL); + log.info("Autoscaler service URL set to " + autoscalerServiceURL); + } + catch (Exception e) { + throw new AutomationFrameworkException("Could not set autoscaler service URL system property", e); + } + } + + public int getActiveMQDynamicPort() { + return activeMQDynamicPort; + } + + public void setActiveMQDynamicPort(int activeMQDynamicPort) { + this.activeMQDynamicPort = activeMQDynamicPort; + } + + public int getStratosSecureDynamicPort() { + return stratosSecureDynamicPort; + } + + public void setStratosSecureDynamicPort(int stratosSecureDynamicPort) { + this.stratosSecureDynamicPort = stratosSecureDynamicPort; + } + + public int getStratosDynamicPort() { + return stratosDynamicPort; + } + + public void setStratosDynamicPort(int stratosDynamicPort) { + this.stratosDynamicPort = stratosDynamicPort; + } + + public int getThriftDynamicPort() { + return thriftDynamicPort; + } + + public void setThriftDynamicPort(int thriftDynamicPort) { + this.thriftDynamicPort = thriftDynamicPort; + } + + public int getThriftSecureDynamicPort() { + return thriftSecureDynamicPort; + } + + public void setThriftSecureDynamicPort(int thriftSecureDynamicPort) { + this.thriftSecureDynamicPort = thriftSecureDynamicPort; + } + + public String getWebAppURL() { + return webAppURL; + } + + public String getWebAppURLHttps() { + return webAppURLHttps; + } + + public void setWebAppURL(String webAppURL) { + this.webAppURL = webAppURL; + } + + public void setWebAppURLHttps(String webAppURLHttps) { + this.webAppURLHttps = webAppURLHttps; } } http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/Util.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/Util.java b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/Util.java index 547ee16..2249dd0 100644 --- a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/Util.java +++ b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/Util.java @@ -16,23 +16,68 @@ package org.apache.stratos.integration.common; -import org.apache.commons.lang.StringUtils; - import java.io.File; +import java.io.IOException; +import java.net.ServerSocket; public class Util { public static final String CARBON_ZIP_KEY = "carbon.zip"; public static final String ACTIVEMQ_BIND_ADDRESS = "activemq.bind.address"; public static final String CARBON_CONF_PATH = "repository" + File.separator + "conf"; public static final String BASE_PATH = Util.class.getResource(File.separator).getPath(); + public static final int MIN_PORT_NUMBER = 1; + public static final int MAX_PORT_NUMBER = 65535; + + public static final String STRATOS_SECURE_DYNAMIC_PORT_PLACEHOLDER = "STRATOS_SECURE_DYNAMIC_PORT"; + public static final String ACTIVEMQ_DYNAMIC_PORT_PLACEHOLDER = "ACTIVEMQ_DYNAMIC_PORT"; + public static final String THRIFT_DYNAMIC_PORT_PLACEHOLDER = "THRIFT_DYNAMIC_PORT"; + public static final String STRATOS_DYNAMIC_PORT_PLACEHOLDER = "STRATOS_DYNAMIC_PORT"; + public static final String THRIFT_SECURE_DYNAMIC_PORT_PLACEHOLDER = "THRIFT_SECURE_DYNAMIC_PORT"; + + public static final int THRIFT_DEFAULT_PORT = 7611; + public static final int THRIFT_DEFAULT_SECURE_PORT = 7711; + public static final int STRATOS_DEFAULT_PORT = 9763; + public static final int STRATOS_DEFAULT_SECURE_PORT = 9443; + public static final int STRATOS_DEFAULT_RMI_REGISTRY_PORT = 9999; + public static final int STRATOS_DEFAULT_RMI_SERVER_PORT = 11111; /** * Get resources folder path * - * @return + * @return path to resources folder */ public static String getCommonResourcesFolderPath() { - String path = Util.class.getResource(File.separator + "common").getPath(); - return StringUtils.removeEnd(path, File.separator); + return BASE_PATH + ".." + File.separator + ".." + File.separator + "src" + File.separator + "test" + + File.separator + "resources" + File.separator + "common"; + } + + /** + * Checks to see if a specific port is available. + * + * @param port the port to check for availability + */ + public static boolean isPortAvailable(int port) { + if (port < Util.MIN_PORT_NUMBER || port > Util.MAX_PORT_NUMBER) { + throw new IllegalArgumentException("Invalid start port: " + port); + } + + ServerSocket ss = null; + try { + ss = new ServerSocket(port); + ss.setReuseAddress(true); + return true; + } + catch (IOException ignored) { + } + finally { + if (ss != null) { + try { + ss.close(); + } + catch (IOException ignored) { + } + } + } + return false; } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/extensions/StratosServerExtension.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/extensions/StratosServerExtension.java b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/extensions/StratosServerExtension.java index 3d260e5..3de05c3 100644 --- a/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/extensions/StratosServerExtension.java +++ b/products/stratos/modules/integration/test-common/src/main/java/org/apache/stratos/integration/common/extensions/StratosServerExtension.java @@ -31,15 +31,15 @@ import org.wso2.carbon.automation.engine.extensions.ExecutionListenerExtension; import org.wso2.carbon.automation.extensions.ExtensionConstants; import java.io.File; +import java.net.URI; import static org.testng.Assert.assertNotNull; public class StratosServerExtension extends ExecutionListenerExtension { private static final Log log = LogFactory.getLog(StratosServerExtension.class); - public static final String PATH_SEP = File.separator; private TestLogAppender testLogAppender; - private StratosTestServerManager carbonTestServerManager; - private BrokerService broker; + private static StratosTestServerManager stratosTestServerManager; + private static BrokerService broker; @Override public void initiate() throws AutomationFrameworkException { @@ -51,65 +51,78 @@ public class StratosServerExtension extends ExecutionListenerExtension { public void onExecutionStart() throws AutomationFrameworkException { Logger.getRootLogger().addAppender(testLogAppender); Logger.getRootLogger().setLevel(Level.INFO); - try { - String activemqBindAddress = getParameters().get(Util.ACTIVEMQ_BIND_ADDRESS); - long time1 = System.currentTimeMillis(); - log.info("Starting ActiveMQ..."); - broker.setDataDirectory(StratosServerExtension.class.getResource(File.separator).getPath() + - File.separator + ".." + File.separator + "activemq-data"); - broker.setBrokerName("testBroker"); - broker.addConnector(activemqBindAddress); - broker.start(); - long time2 = System.currentTimeMillis(); - log.info(String.format("ActiveMQ started in %d sec", (time2 - time1) / 1000)); - } - catch (Exception e) { - throw new RuntimeException("Could not start ActiveMQ", e); - } + int activeMQDynamicPort = startActiveMQServer(); + startStratosServer(activeMQDynamicPort); + } + private void startStratosServer(int activeMQDynamicPort) throws AutomationFrameworkException { try { log.info("Setting up Stratos server..."); AutomationContext stratosAutomationCtx = new AutomationContext("STRATOS", "stratos-001", TestUserMode.SUPER_TENANT_ADMIN); - String stratosBackendURL = stratosAutomationCtx.getContextUrls().getWebAppURL(); - //if port offset is not set, setting it to 0 - if (getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND) == null) { - getParameters().put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, "0"); + String stratosInitPortOffsetStr = + getParameters().get(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND); + if (stratosInitPortOffsetStr == null) { + throw new AutomationFrameworkException("Port offset not found in automation.xml"); } - carbonTestServerManager = + int stratosInitPortOffset = Integer.parseInt(stratosInitPortOffsetStr); + int stratosInitSecurePort = Util.STRATOS_DEFAULT_SECURE_PORT + stratosInitPortOffset; + int stratosInitPort = Util.STRATOS_DEFAULT_PORT + stratosInitPortOffset; + int thriftInitPort = Util.THRIFT_DEFAULT_PORT + stratosInitPortOffset; + int thriftInitSecurePort = Util.THRIFT_DEFAULT_SECURE_PORT + stratosInitPortOffset; + int rmiRegistryPort = Util.STRATOS_DEFAULT_RMI_REGISTRY_PORT + stratosInitPortOffset; + int rmiServerPort = Util.STRATOS_DEFAULT_RMI_SERVER_PORT + stratosInitPortOffset; + + while (!Util.isPortAvailable(stratosInitPort) || !Util.isPortAvailable(stratosInitSecurePort) || + !Util.isPortAvailable(thriftInitPort) || !Util.isPortAvailable(thriftInitSecurePort) || + !Util.isPortAvailable(rmiRegistryPort) || !Util.isPortAvailable(rmiServerPort)) { + stratosInitPortOffset++; + stratosInitSecurePort++; + stratosInitPort++; + thriftInitPort++; + thriftInitSecurePort++; + rmiRegistryPort++; + rmiServerPort++; + } + getParameters() + .put(ExtensionConstants.SERVER_STARTUP_PORT_OFFSET_COMMAND, String.valueOf(stratosInitPortOffset)); + stratosTestServerManager = new StratosTestServerManager(stratosAutomationCtx, System.getProperty(Util.CARBON_ZIP_KEY), getParameters()); - - log.info("Stratos server port offset: " + carbonTestServerManager.getPortOffset()); - log.info("Stratos backend URL: " + stratosBackendURL); - + stratosTestServerManager.setStratosDynamicPort(stratosInitPort); + stratosTestServerManager.setStratosSecureDynamicPort(stratosInitSecurePort); + stratosTestServerManager.setThriftDynamicPort(thriftInitPort); + stratosTestServerManager.setThriftSecureDynamicPort(thriftInitSecurePort); + stratosTestServerManager.setActiveMQDynamicPort(activeMQDynamicPort); + stratosTestServerManager.setWebAppURL("http://localhost:" + stratosInitPort); + stratosTestServerManager.setWebAppURLHttps("https://localhost:" + stratosInitSecurePort); + + log.info("Stratos server dynamic port offset: " + stratosTestServerManager.getPortOffset()); + log.info("Stratos dynamic backend URL: " + stratosTestServerManager.getWebAppURL()); + log.info("Stratos secure dynamic backend URL: " + stratosTestServerManager.getWebAppURLHttps()); long time3 = System.currentTimeMillis(); - String carbonHome = carbonTestServerManager.startServer(); + String carbonHome = stratosTestServerManager.startServer(); assertNotNull(carbonHome, "CARBON_HOME is null"); - while (!serverStarted()) { log.info("Waiting for topology to be initialized..."); Thread.sleep(5000); } - while (!mockServiceStarted()) { log.info("Waiting for mock service to be initialized..."); Thread.sleep(1000); } - long time4 = System.currentTimeMillis(); log.info(String.format("Stratos server started in %d sec", (time4 - time3) / 1000)); - } catch (Exception e) { - throw new RuntimeException("Could not start Stratos server", e); + throw new AutomationFrameworkException("Could not start Stratos server", e); } } @Override public void onExecutionFinish() throws AutomationFrameworkException { try { - carbonTestServerManager.stopServer(); + stratosTestServerManager.stopServer(); log.info("Stopped Stratos server"); } catch (Exception e) { @@ -125,6 +138,36 @@ public class StratosServerExtension extends ExecutionListenerExtension { } } + private int startActiveMQServer() throws AutomationFrameworkException { + try { + String activemqBindAddress = getParameters().get(Util.ACTIVEMQ_BIND_ADDRESS); + if (activemqBindAddress == null) { + throw new AutomationFrameworkException("ActiveMQ bind address not found in automation.xml"); + } + URI givenURI = new URI(activemqBindAddress); + int initAMQPort = givenURI.getPort(); + // dynamically pick an open port starting from initial port given in automation.xml + while (!Util.isPortAvailable(initAMQPort)) { + initAMQPort++; + } + URI dynamicURL = new URI(givenURI.getScheme(), givenURI.getUserInfo(), givenURI.getHost(), initAMQPort, + givenURI.getPath(), givenURI.getQuery(), givenURI.getFragment()); + long time1 = System.currentTimeMillis(); + log.info("Starting ActiveMQ with dynamic bind address: " + dynamicURL.toString()); + broker.setDataDirectory(StratosServerExtension.class.getResource(File.separator).getPath() + + File.separator + ".." + File.separator + "activemq-data"); + broker.setBrokerName("testBroker"); + broker.addConnector(dynamicURL.toString()); + broker.start(); + long time2 = System.currentTimeMillis(); + log.info(String.format("ActiveMQ started in %d sec", (time2 - time1) / 1000)); + return initAMQPort; + } + catch (Exception e) { + throw new AutomationFrameworkException("Could not start ActiveMQ", e); + } + } + private boolean serverStarted() { for (String message : testLogAppender.getMessages()) { if (message.contains("Topology initialized")) { @@ -142,4 +185,12 @@ public class StratosServerExtension extends ExecutionListenerExtension { } return false; } + + public static StratosTestServerManager getStratosTestServerManager() { + return stratosTestServerManager; + } + + public static BrokerService getBroker() { + return broker; + } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/StratosIntegrationTest.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/StratosIntegrationTest.java b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/StratosIntegrationTest.java index 6bcb8a7..0f90dcb 100644 --- a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/StratosIntegrationTest.java +++ b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/StratosIntegrationTest.java @@ -18,16 +18,12 @@ package org.apache.stratos.integration.tests; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.common.constants.StratosConstants; -import org.apache.stratos.integration.common.Util; +import org.apache.stratos.integration.common.extensions.StratosServerExtension; import org.apache.stratos.integration.common.rest.IntegrationMockClient; import org.apache.stratos.integration.common.rest.RestClient; import org.wso2.carbon.automation.engine.context.AutomationContext; import org.wso2.carbon.automation.engine.context.TestUserMode; -import java.io.File; -import java.net.URL; - public class StratosIntegrationTest { private static final Log log = LogFactory.getLog(StratosIntegrationTest.class); protected AutomationContext stratosAutomationCtx; @@ -36,8 +32,8 @@ public class StratosIntegrationTest { protected String stratosBackendURL; protected RestClient restClient; protected IntegrationMockClient mockIaasApiClient; - public static final int GLOBAL_TEST_TIMEOUT = 5 * 60 * 1000; - public static final int APPLICATION_TEST_TIMEOUT = 20 * 60 * 1000; + public static final int GLOBAL_TEST_TIMEOUT = 5 * 60 * 1000; // 5 mins + public static final int APPLICATION_TEST_TIMEOUT = 20 * 60 * 1000; // 20 mins public StratosIntegrationTest() { try { @@ -46,34 +42,14 @@ public class StratosIntegrationTest { ("/automation/userManagement/superTenant/tenant/admin/user/userName"); adminPassword = stratosAutomationCtx.getConfigurationValue ("/automation/userManagement/superTenant/tenant/admin/user/password"); - stratosBackendURL = stratosAutomationCtx.getContextUrls().getWebAppURL(); + + // Do not rely on automation context for context URLs since ports are dynamically picked + stratosBackendURL = StratosServerExtension.getStratosTestServerManager().getWebAppURL(); restClient = new RestClient(stratosBackendURL, adminUsername, adminPassword); mockIaasApiClient = new IntegrationMockClient(stratosBackendURL + "/mock-iaas/api"); - setSystemproperties(); - } - catch (Exception e) { - log.error("Could not initialize StratosIntegrationTest base parameters"); - } - } - - public void setSystemproperties() { - URL resourceUrl = getClass().getResource(File.separator + "keystores" + File.separator - + "products" + File.separator + "wso2carbon.jks"); - System.setProperty("javax.net.ssl.trustStore", resourceUrl.getPath()); - System.setProperty("javax.net.ssl.trustStorePassword", "wso2carbon"); - System.setProperty("javax.net.ssl.trustStoreType", "JKS"); - log.info("trustStore set to " + resourceUrl.getPath()); - - // Set jndi.properties.dir system property for initializing event receivers - System.setProperty("jndi.properties.dir", Util.getCommonResourcesFolderPath()); - try { - String autoscalerServiceURL = stratosAutomationCtx.getContextUrls().getSecureServiceUrl() + - "/AutoscalerService"; - System.setProperty(StratosConstants.AUTOSCALER_SERVICE_URL, autoscalerServiceURL); - log.info("Autoscaler service URL set to " + autoscalerServiceURL); } catch (Exception e) { - throw new RuntimeException("Could not set autoscaler service URL system property"); + throw new RuntimeException("Could not initialize StratosIntegrationTest", e); } } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/JMSOutputAdaptor.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/JMSOutputAdaptor.xml b/products/stratos/modules/integration/test-integration/src/test/resources/common/JMSOutputAdaptor.xml index 045660b..f00a8d8 100755 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/JMSOutputAdaptor.xml +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/JMSOutputAdaptor.xml @@ -23,7 +23,7 @@ <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:61716</property> + <property name="java.naming.provider.url">tcp://localhost:ACTIVEMQ_DYNAMIC_PORT</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> http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/autoscaler.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/autoscaler.xml b/products/stratos/modules/integration/test-integration/src/test/resources/common/autoscaler.xml index 74cabd6..f4a40d1 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/autoscaler.xml +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/autoscaler.xml @@ -21,19 +21,19 @@ <autoscaler> <cloudController> <hostname>localhost</hostname> - <port>9543</port> + <port>STRATOS_SECURE_DYNAMIC_PORT</port> <!-- CC client timout in ms --> <clientTimeout>300000</clientTimeout> </cloudController> <stratosManager> <hostname>localhost</hostname> - <port>9543</port> + <port>STRATOS_SECURE_DYNAMIC_PORT</port> <!-- SM client timeout in ms --> <clientTimeout>300000</clientTimeout> </stratosManager> <identity> <hostname>localhost</hostname> - <port>9543</port> + <port>STRATOS_SECURE_DYNAMIC_PORT</port> <clientTimeout>300000</clientTimeout> </identity> <member> http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/cartridge-config.properties ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/cartridge-config.properties b/products/stratos/modules/integration/test-integration/src/test/resources/common/cartridge-config.properties index 677d178..553c20c 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/cartridge-config.properties +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/cartridge-config.properties @@ -17,9 +17,9 @@ # under the License. # -autoscaler.service.url=https://localhost:9543/services/AutoscalerService/ -cloud.controller.service.url=https://localhost:9543/services/CloudControllerService/ -stratos.manager.service.url=https://localhost:9543/services/StratosManagerService/ +autoscaler.service.url=https://localhost:STRATOS_SECURE_DYNAMIC_PORT/services/AutoscalerService/ +cloud.controller.service.url=https://localhost:STRATOS_SECURE_DYNAMIC_PORT/services/CloudControllerService/ +stratos.manager.service.url=https://localhost:STRATOS_SECURE_DYNAMIC_PORT/services/StratosManagerService/ puppet.ip=127.0.0.1 puppet.hostname=puppet.stratos.apache.org puppet.dns.available=false http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/cloud-controller.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/cloud-controller.xml b/products/stratos/modules/integration/test-integration/src/test/resources/common/cloud-controller.xml index a7ac531..7620fbe 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/cloud-controller.xml +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/cloud-controller.xml @@ -75,7 +75,7 @@ <provider>mock</provider> <identity svns:secretAlias="cloud.controller.mock.identity">identity</identity> <credential svns:secretAlias="cloud.controller.mock.credential">credential</credential> - <property name="api.endpoint" value="https://localhost:9543/mock-iaas/api"/> + <property name="api.endpoint" value="https://localhost:STRATOS_SECURE_DYNAMIC_PORT/mock-iaas/api"/> </iaasProvider> </iaasProviders> </cloudController> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/identity.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/identity.xml b/products/stratos/modules/integration/test-integration/src/test/resources/common/identity.xml index 3547372..55e86eb 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/identity.xml +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/identity.xml @@ -61,8 +61,8 @@ </Identity> <OpenID> - <OpenIDServerUrl>https://localhost:9543/openidserver</OpenIDServerUrl> - <OpenIDUserPattern>https://localhost:9543/openid/</OpenIDUserPattern> + <OpenIDServerUrl>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/openidserver</OpenIDServerUrl> + <OpenIDUserPattern>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/openid/</OpenIDUserPattern> <!-- If the users must be prompted for approval --> <OpenIDSkipUserConsent>false</OpenIDSkipUserConsent> <!-- Expiry time of the OpenID RememberMe token in minutes --> @@ -79,9 +79,9 @@ </OpenID> <OAuth> - <RequestTokenUrl>https://localhost:9543/oauth/request-token</RequestTokenUrl> - <AccessTokenUrl>https://localhost:9543/oauth/access-token</AccessTokenUrl> - <AuthorizeUrl>https://localhost:9543/oauth/authorize-url</AuthorizeUrl> + <RequestTokenUrl>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/oauth/request-token</RequestTokenUrl> + <AccessTokenUrl>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/oauth/access-token</AccessTokenUrl> + <AuthorizeUrl>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/oauth/authorize-url</AuthorizeUrl> <!-- Default validity period for Authorization Code in seconds --> <AuthorizationCodeDefaultValidityPeriod>300</AuthorizationCodeDefaultValidityPeriod> <!-- Default validity period for user access tokens in seconds --> @@ -175,7 +175,7 @@ </SAML2Grant> <OpenIDConnect> <IDTokenBuilder>org.wso2.carbon.identity.openidconnect.DefaultIDTokenBuilder</IDTokenBuilder> - <IDTokenIssuerID>https://localhost:9543/oauth2endpoints/token</IDTokenIssuerID> + <IDTokenIssuerID>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/oauth2endpoints/token</IDTokenIssuerID> <IDTokenSubjectClaim>http://wso2.org/claims/givenname</IDTokenSubjectClaim> <IDTokenCustomClaimsCallBackHandler>org.wso2.carbon.identity.openidconnect.SAMLAssertionClaimsCallback</IDTokenCustomClaimsCallBackHandler> <IDTokenExpiration>-1</IDTokenExpiration> @@ -203,7 +203,7 @@ <SSOService> <EntityId>localhost</EntityId> - <IdentityProviderURL>https://localhost:9543/samlsso</IdentityProviderURL> + <IdentityProviderURL>https://localhost:STRATOS_SECURE_DYNAMIC_PORT/samlsso</IdentityProviderURL> <SingleLogoutRetryCount>5</SingleLogoutRetryCount> <SingleLogoutRetryInterval>60000</SingleLogoutRetryInterval> <!-- in milli seconds --> <TenantPartitioningEnabled>false</TenantPartitioningEnabled> http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/jndi.properties ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/jndi.properties b/products/stratos/modules/integration/test-integration/src/test/resources/common/jndi.properties index f2d6baf..a2cfea7 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/jndi.properties +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/jndi.properties @@ -18,5 +18,5 @@ # connectionfactoryName=TopicConnectionFactory -java.naming.provider.url=tcp://localhost:61716 +java.naming.provider.url=tcp://localhost:ACTIVEMQ_DYNAMIC_PORT java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory http://git-wip-us.apache.org/repos/asf/stratos/blob/f14d7416/products/stratos/modules/integration/test-integration/src/test/resources/common/thrift-client-config.xml ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/resources/common/thrift-client-config.xml b/products/stratos/modules/integration/test-integration/src/test/resources/common/thrift-client-config.xml index 1751bdf..f89e2c2 100644 --- a/products/stratos/modules/integration/test-integration/src/test/resources/common/thrift-client-config.xml +++ b/products/stratos/modules/integration/test-integration/src/test/resources/common/thrift-client-config.xml @@ -23,5 +23,5 @@ <username>admin</username> <password>admin</password> <ip>localhost</ip> - <port>7711</port> + <port>THRIFT_DYNAMIC_PORT</port> </thriftClientConfiguration>
