PCA Live Test - Refactoring PCA - Fixed missing app path validation in event handler
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/81b72de8 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/81b72de8 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/81b72de8 Branch: refs/heads/master Commit: 81b72de838432e35bb8af413fd2be50893e61115 Parents: e40f254 Author: Chamila de Alwis <[email protected]> Authored: Mon Nov 30 19:13:49 2015 +0530 Committer: Chamila de Alwis <[email protected]> Committed: Mon Nov 30 19:13:56 2015 +0530 ---------------------------------------------------------------------- .../cartridge.agent/healthstats.py | 16 ++--- .../modules/event/eventhandler.py | 9 ++- .../integration/tests/ADCExtensionTestCase.java | 27 --------- .../tests/ADCMTAppTenantUserTestCase.java | 42 ++++---------- .../integration/tests/ADCMTAppTestCase.java | 41 ++++--------- .../agent/integration/tests/ADCTestCase.java | 39 ++++--------- .../tests/ADCValidationTestCase.java | 44 +++++--------- .../integration/tests/AgentStartupTestCase.java | 39 ++++--------- .../integration/tests/CEPHAModeTestCase.java | 58 ++++--------------- .../tests/MessageBrokerHATestCase.java | 38 ++++-------- .../tests/PythonAgentIntegrationTest.java | 61 +++++++++++++++++++- 11 files changed, 159 insertions(+), 255 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py index 92d2495..71f2894 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/healthstats.py @@ -62,7 +62,7 @@ class HealthStatisticsPublisherManager(Thread): self.log.debug("Publishing load average: %r" % cartridge_stats.load_avg) self.publisher.publish_load_average(cartridge_stats.load_avg) - except ThriftReceiverOfflineException: + except Exception as e: self.log.exception( "Couldn't publish health statistics to CEP. Thrift Receiver offline. Reconnecting...") self.publisher = HealthStatisticsPublisher() @@ -186,6 +186,7 @@ class HealthStatisticsPublisher: def add_publishers(self, cep_url): """ Add publishers to the publisher list for publishing + :param cep_url: """ cep_ip = cep_url.split(':')[0] cep_port = cep_url.split(':')[1] @@ -199,27 +200,28 @@ class HealthStatisticsPublisher: self.publishers.append(publisher) - - def is_cep_active(self, cep_url): + @staticmethod + def is_cep_active(cep_url): """ Check if the cep node is active return true if active + :param cep_url: """ - self.ports = [] + ports = [] cep_ip = cep_url.split(':')[0] cep_port = cep_url.split(':')[1] - self.ports.append(cep_port) + ports.append(cep_port) cep_active = cartridgeagentutils.check_ports_active( cep_ip, - self.ports) + ports) return cep_active - def publish_event(self, event): """ Publish events to cep nodes + :param event: """ for publisher in self.publishers: try: http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py ---------------------------------------------------------------------- diff --git a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py index f8b0c2b..cea3c01 100644 --- a/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py +++ b/components/org.apache.stratos.python.cartridge.agent/src/main/python/cartridge.agent/cartridge.agent/modules/event/eventhandler.py @@ -89,6 +89,13 @@ def on_artifact_updated_event(artifacts_updated_event): log.error("Repository path is empty. Failed to process artifact updated event.") return + if not validate_repo_path(Config.app_path): + log.error( + "Repository path cannot be accessed, or is invalid. Failed to process artifact updated event. [App Path] %s" + % Config.app_path) + + return + repo_username = artifacts_updated_event.repo_username tenant_id = artifacts_updated_event.tenant_id is_multitenant = Config.is_multiTenant @@ -666,7 +673,7 @@ def find_tenant_domain(tenant_id): def validate_repo_path(app_path): # app path would be ex: /var/www, or /opt/server/data - return os.access(app_path, os.W_OK) + return os.path.isabs(app_path) class PluginExecutor(Thread): http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCExtensionTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCExtensionTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCExtensionTestCase.java index ab4975a..2fddf6e 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCExtensionTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCExtensionTestCase.java @@ -132,31 +132,4 @@ public class ADCExtensionTestCase extends PythonAgentIntegrationTest { artifactUpdatedEvent.setTenantId(TENANT_ID); return artifactUpdatedEvent; } - - /** - * Create test topology - * - * @return Topology object with mock information - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTenantUserTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTenantUserTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTenantUserTestCase.java index 05d5ba2..b653632 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTenantUserTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTenantUserTestCase.java @@ -137,7 +137,18 @@ public class ADCMTAppTenantUserTestCase extends PythonAgentIntegrationTest { sleep(2000); // Send complete topology event log.info("Publishing complete topology event..."); - Topology topology = createTestTopology(); + Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); + CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); publishEvent(completeTopologyEvent); log.info("Complete topology event published"); @@ -190,33 +201,4 @@ public class ADCMTAppTenantUserTestCase extends PythonAgentIntegrationTest { artifactUpdatedEvent.setTenantId(TENANT_ID); return artifactUpdatedEvent; } - - /** - * Create test topology - * - * @return - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, - CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, - System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTestCase.java index 444a5e0..02144e0 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCMTAppTestCase.java @@ -139,7 +139,18 @@ public class ADCMTAppTestCase extends PythonAgentIntegrationTest { sleep(2000); // Send complete topology event log.info("Publishing complete topology event..."); - Topology topology = createTestTopology(); + Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); + CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); publishEvent(completeTopologyEvent); log.info("Complete topology event published"); @@ -193,32 +204,4 @@ public class ADCMTAppTestCase extends PythonAgentIntegrationTest { artifactUpdatedEvent.setTenantId(TENANT_ID); return artifactUpdatedEvent; } - - /** - * Create test topology - * - * @return - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, - CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, - System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCTestCase.java index dba6197..6a42cce 100755 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCTestCase.java @@ -196,7 +196,17 @@ public class ADCTestCase extends PythonAgentIntegrationTest { sleep(2000); // Send complete topology event log.info("Publishing complete topology event..."); - Topology topology = createTestTopology(); + Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); publishEvent(completeTopologyEvent); log.info("Complete topology event published"); @@ -255,31 +265,4 @@ public class ADCTestCase extends PythonAgentIntegrationTest { artifactUpdatedEvent.setTenantId(TENANT_ID); return artifactUpdatedEvent; } - - /** - * Create test topology - * - * @return Topology object with mock information - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCValidationTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCValidationTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCValidationTestCase.java index 45834e5..50ed350 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCValidationTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/ADCValidationTestCase.java @@ -21,7 +21,6 @@ package org.apache.stratos.python.cartridge.agent.integration.tests; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.common.domain.LoadBalancingIPType; import org.apache.stratos.messaging.domain.topology.*; import org.apache.stratos.messaging.event.instance.notifier.ArtifactUpdatedEvent; import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent; @@ -33,7 +32,6 @@ import org.testng.annotations.Test; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Properties; /** * Test validation for application path input on the PCA @@ -92,7 +90,7 @@ public class ADCValidationTestCase extends PythonAgentIntegrationTest { sleep(1000); } List<String> outputLines = new ArrayList<>(); - while (!outputStream.isClosed()) { + while (!outputStream.isClosed() && !logDetected) { List<String> newLines = getNewLines(outputLines, outputStream.toString()); if (newLines.size() > 0) { for (String line : newLines) { @@ -100,7 +98,18 @@ public class ADCValidationTestCase extends PythonAgentIntegrationTest { sleep(2000); // Send complete topology event log.info("Publishing complete topology event..."); - Topology topology = createTestTopology(); + Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); + CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); publishEvent(completeTopologyEvent); log.info("Complete topology event published"); @@ -151,31 +160,4 @@ public class ADCValidationTestCase extends PythonAgentIntegrationTest { artifactUpdatedEvent.setTenantId(TENANT_ID); return artifactUpdatedEvent; } - - /** - * Create test topology - * - * @return Topology object with mock information - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/AgentStartupTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/AgentStartupTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/AgentStartupTestCase.java index db21359..4f529d7 100755 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/AgentStartupTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/AgentStartupTestCase.java @@ -61,7 +61,17 @@ public class AgentStartupTestCase extends PythonAgentIntegrationTest { private boolean topologyContextTestCompleted = false; private boolean completeTenantInitialized = false; private boolean thriftTestCompleted = false; - private Topology topology = createTestTopology(); + private Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); public AgentStartupTestCase() throws IOException { } @@ -217,31 +227,4 @@ public class AgentStartupTestCase extends PythonAgentIntegrationTest { tenantList.add(new Tenant(3, "test.three.domain")); return tenantList; } - - /** - * Create test topology - * - * @return Topology object with mock information - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/CEPHAModeTestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/CEPHAModeTestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/CEPHAModeTestCase.java index ce13d3f..58b6deb 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/CEPHAModeTestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/CEPHAModeTestCase.java @@ -21,12 +21,9 @@ package org.apache.stratos.python.cartridge.agent.integration.tests; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.apache.stratos.common.domain.LoadBalancingIPType; import org.apache.stratos.messaging.domain.topology.*; -import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.event.topology.CompleteTopologyEvent; import org.apache.stratos.messaging.event.topology.MemberInitializedEvent; -import org.apache.stratos.messaging.listener.instance.status.InstanceActivatedEventListener; import org.apache.stratos.python.cartridge.agent.integration.common.ThriftTestServer; import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; @@ -41,7 +38,6 @@ import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; -import java.util.Properties; public class CEPHAModeTestCase extends PythonAgentIntegrationTest { @@ -59,7 +55,18 @@ public class CEPHAModeTestCase extends PythonAgentIntegrationTest { private static final String TENANT_ID = "-1234"; private static final String SERVICE_NAME = "tomcat"; private boolean startupTestCompleted = false; - private Topology topology = createTestTopology(); + private Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); + private static final int ADC_TIMEOUT = 300000; private ThriftTestServer secondThriftTestServer; private boolean thriftTestCompletedinServerTwo = false; @@ -180,19 +187,6 @@ public class CEPHAModeTestCase extends PythonAgentIntegrationTest { startupTestThread.start(); - instanceStatusEventReceiver.addEventListener(new InstanceActivatedEventListener() { - @Override - protected void onEvent(Event event) { - log.info("Publishing complete topology with a new member..."); - Member newMember = new Member(SERVICE_NAME, CLUSTER_ID, "new-member", CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - topology.getService(SERVICE_NAME).getCluster(CLUSTER_ID).addMember(newMember); - CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); - publishEvent(completeTopologyEvent); - log.info("Complete topology event published with new member"); - } - }); - while (!instanceStarted || !instanceActivated || !startupTestCompleted || !thriftTestCompletedinServerOne || !thriftTestCompletedinServerTwo) { // wait until the instance activated event is received. @@ -274,32 +268,4 @@ public class CEPHAModeTestCase extends PythonAgentIntegrationTest { } }); } - - /** - * Create test topology - * - * @return Topology object with mock information - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, - CLUSTER_INSTANCE_ID, NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, - System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/MessageBrokerHATestCase.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/MessageBrokerHATestCase.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/MessageBrokerHATestCase.java index 8c72f2d..1fdd8cd 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/MessageBrokerHATestCase.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/MessageBrokerHATestCase.java @@ -212,7 +212,18 @@ public class MessageBrokerHATestCase extends PythonAgentIntegrationTest { sleep(2000); // Send complete topology event log.info("Publishing complete topology event..."); - Topology topology = createTestTopology(); + Topology topology = PythonAgentIntegrationTest.createTestTopology( + SERVICE_NAME, + CLUSTER_ID, + DEPLOYMENT_POLICY_NAME, + AUTOSCALING_POLICY_NAME, + APP_ID, + MEMBER_ID, + CLUSTER_INSTANCE_ID, + NETWORK_PARTITION_ID, + PARTITION_ID, + ServiceType.SingleTenant); + CompleteTopologyEvent completeTopologyEvent = new CompleteTopologyEvent(topology); publishEvent(completeTopologyEvent); log.info("Complete topology event published"); @@ -245,30 +256,5 @@ public class MessageBrokerHATestCase extends PythonAgentIntegrationTest { log.info("PCA activation assertion passed."); } - /** - * Create test topology - * - * @return - */ - private Topology createTestTopology() { - Topology topology = new Topology(); - Service service = new Service(SERVICE_NAME, ServiceType.SingleTenant); - topology.addService(service); - - Cluster cluster = new Cluster(service.getServiceName(), CLUSTER_ID, DEPLOYMENT_POLICY_NAME, - AUTOSCALING_POLICY_NAME, APP_ID); - service.addCluster(cluster); - Member member = new Member(service.getServiceName(), cluster.getClusterId(), MEMBER_ID, CLUSTER_INSTANCE_ID, - NETWORK_PARTITION_ID, PARTITION_ID, LoadBalancingIPType.Private, System.currentTimeMillis()); - - member.setDefaultPrivateIP("10.0.0.1"); - member.setDefaultPublicIP("20.0.0.1"); - Properties properties = new Properties(); - properties.setProperty("prop1", "value1"); - member.setProperties(properties); - member.setStatus(MemberStatus.Created); - cluster.addMember(member); - return topology; - } } http://git-wip-us.apache.org/repos/asf/stratos/blob/81b72de8/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java ---------------------------------------------------------------------- diff --git a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java index 7f436f6..649430f 100644 --- a/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java +++ b/products/python-cartridge-agent/modules/integration/test-integration/src/test/java/org/apache/stratos/python/cartridge/agent/integration/tests/PythonAgentIntegrationTest.java @@ -28,9 +28,11 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.stratos.common.domain.LoadBalancingIPType; import org.apache.stratos.common.threading.StratosThreadPool; import org.apache.stratos.messaging.broker.publish.EventPublisher; import org.apache.stratos.messaging.broker.publish.EventPublisherPool; +import org.apache.stratos.messaging.domain.topology.*; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.listener.instance.status.InstanceActivatedEventListener; import org.apache.stratos.messaging.listener.instance.status.InstanceStartedEventListener; @@ -549,8 +551,8 @@ public abstract class PythonAgentIntegrationTest { if (StringUtils.isNotBlank(output)) { List<String> lines = Arrays.asList(output.split(NEW_LINE)); if (lines.size() > 0) { - int readStartIndex = (currentOutputLines.size() > 0) ? currentOutputLines.size() - 1 : 0; - for (String line : lines.subList(readStartIndex , lines.size() - 1)) { + int readStartIndex = (currentOutputLines.size() > 0) ? (currentOutputLines.size() - 1) : 0; + for (String line : lines.subList(readStartIndex , lines.size())) { currentOutputLines.add(line); newLines.add(line); } @@ -586,4 +588,59 @@ public abstract class PythonAgentIntegrationTest { return closed; } } + + /** + * Create a test topology object + * + * @param serviceName + * @param clusterId + * @param depPolicyName + * @param autoscalingPolicyName + * @param appId + * @param memberId + * @param clusterInstanceId + * @param networkPartitionId + * @param partitionId + * @param serviceType + * @return + */ + protected static Topology createTestTopology( + String serviceName, + String clusterId, + String depPolicyName, + String autoscalingPolicyName, + String appId, + String memberId, + String clusterInstanceId, + String networkPartitionId, + String partitionId, + ServiceType serviceType) { + + + Topology topology = new Topology(); + Service service = new Service(serviceName, serviceType); + topology.addService(service); + + Cluster cluster = new Cluster(service.getServiceName(), clusterId, depPolicyName, autoscalingPolicyName, appId); + service.addCluster(cluster); + + Member member = new Member( + service.getServiceName(), + cluster.getClusterId(), + memberId, + clusterInstanceId, + networkPartitionId, + partitionId, + LoadBalancingIPType.Private, + System.currentTimeMillis()); + + member.setDefaultPrivateIP("10.0.0.1"); + member.setDefaultPublicIP("20.0.0.1"); + Properties properties = new Properties(); + properties.setProperty("prop1", "value1"); + member.setProperties(properties); + member.setStatus(MemberStatus.Created); + cluster.addMember(member); + return topology; + } }
