Refactor GitHookTestCase: Use restClient deployEntity. Make artifactUpdateEventCount AtomicInteger. Terminate event receiver and shutdown executor service at the end of test case.
Project: http://git-wip-us.apache.org/repos/asf/stratos/repo Commit: http://git-wip-us.apache.org/repos/asf/stratos/commit/cff8f0b9 Tree: http://git-wip-us.apache.org/repos/asf/stratos/tree/cff8f0b9 Diff: http://git-wip-us.apache.org/repos/asf/stratos/diff/cff8f0b9 Branch: refs/heads/release-4.1.5 Commit: cff8f0b9334bedf99958ad90466cd1457dc94239 Parents: 8c615ac Author: Akila Perera <[email protected]> Authored: Mon Nov 30 00:24:46 2015 +0530 Committer: gayangunarathne <[email protected]> Committed: Mon Dec 7 10:16:26 2015 +0000 ---------------------------------------------------------------------- .../integration/tests/adc/GitHookTestCase.java | 108 +++++++++---------- 1 file changed, 49 insertions(+), 59 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/stratos/blob/cff8f0b9/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/adc/GitHookTestCase.java ---------------------------------------------------------------------- diff --git a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/adc/GitHookTestCase.java b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/adc/GitHookTestCase.java index 5e3ff70..3f708db 100644 --- a/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/adc/GitHookTestCase.java +++ b/products/stratos/modules/integration/test-integration/src/test/java/org/apache/stratos/integration/tests/adc/GitHookTestCase.java @@ -26,14 +26,14 @@ import org.apache.stratos.common.threading.StratosThreadPool; import org.apache.stratos.integration.common.RestConstants; import org.apache.stratos.integration.common.TopologyHandler; import org.apache.stratos.integration.tests.StratosIntegrationTest; -import org.apache.stratos.messaging.domain.application.ApplicationStatus; import org.apache.stratos.messaging.event.Event; import org.apache.stratos.messaging.listener.instance.notifier.ArtifactUpdateEventListener; import org.apache.stratos.messaging.message.receiver.instance.notifier.InstanceNotifierEventReceiver; import org.testng.annotations.Test; -import java.net.URI; +import java.io.File; import java.util.concurrent.ExecutorService; +import java.util.concurrent.atomic.AtomicInteger; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNull; @@ -42,24 +42,26 @@ import static org.testng.AssertJUnit.assertTrue; /** * Test case to test the /repo/notify endpoint */ +@Test(groups = { "adc" }) public class GitHookTestCase extends StratosIntegrationTest { private static Log log = LogFactory.getLog(GitHookTestCase.class); - private static final String RESOURCES_PATH = "/git-hook-test"; - private int artifactUpdateEvents = 0; + private static final String RESOURCES_PATH = File.separator + "git-hook-test"; + private AtomicInteger artifactUpdateEventCount = new AtomicInteger(0); private static final String autoscalePolicyId = "autoscaling-policy-git-hook-test"; private static final String cartridgeId = "c1-git-hook-test"; private static final String networkPartitionId = "network-partition-git-hook-test"; private static final String depPolicyId = "deployment-policy-git-hook-test"; private static final String applicationId = "git-hook-test"; private static final String appPolicyId = "application-policy-git-hook-test"; + private static final String GIT_HOOK_ARTIFACT_FILENAME = "hook-req.json"; + private static final int ARTIFACT_UPDATED_EXPECTED_COUNT = 2; + private ExecutorService eventListenerExecutorService = StratosThreadPool + .getExecutorService("stratos.integration.test.git.thread.pool", 5); - @Test(timeOut = GLOBAL_TEST_TIMEOUT, groups = {"adc", "smoke"}) + @Test(timeOut = DEFAULT_TEST_TIMEOUT) public void sendRepoNotify() throws Exception { deployArtifacts(); - ExecutorService eventListenerExecutorService = StratosThreadPool.getExecutorService( - "stratos.integration.test.git.thread.pool", - 5); final InstanceNotifierEventReceiver instanceNotifierEventReceiver = new InstanceNotifierEventReceiver(); eventListenerExecutorService.submit(new Runnable() { @Override @@ -71,57 +73,48 @@ public class GitHookTestCase extends StratosIntegrationTest { ArtifactUpdateEventListener artifactUpdateEventListener = new ArtifactUpdateEventListener() { @Override protected void onEvent(Event event) { - artifactUpdateEvents++; + artifactUpdateEventCount.addAndGet(1); } }; instanceNotifierEventReceiver.addEventListener(artifactUpdateEventListener); + restClient.addEntity(RESOURCES_PATH + File.separator + GIT_HOOK_ARTIFACT_FILENAME, RestConstants.REPO_NOTIFY, + RestConstants.REPO_NOTIFY_NAME); - String gitHookFile = "hook-req.json"; - restClient.doPost( - new URI(stratosBackendURL + RestConstants.REPO_NOTIFY), - restClient.getJsonStringFromFile(RESOURCES_PATH + "/" + gitHookFile)); - - while (artifactUpdateEvents < 2) { - log.info("Waiting till artifact updated comes in... "); + while (artifactUpdateEventCount.get() < ARTIFACT_UPDATED_EXPECTED_COUNT) { + log.info("Waiting until artifact updated event is received..."); Thread.sleep(1000); } - - log.info("Waiting for application status to become ACTIVE..."); - TopologyHandler.getInstance().assertApplicationStatus(applicationId, ApplicationStatus.Active); - + TopologyHandler.getInstance().assertApplicationActiveStatus(applicationId); + instanceNotifierEventReceiver.terminate(); + eventListenerExecutorService.shutdownNow(); undeployArtifacts(); } private void deployArtifacts() throws Exception { - boolean autoscalePolicyAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.AUTOSCALING_POLICIES_PATH + "/" + autoscalePolicyId + ".json", - RestConstants.AUTOSCALING_POLICIES, - RestConstants.AUTOSCALING_POLICIES_NAME); + boolean autoscalePolicyAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.AUTOSCALING_POLICIES_PATH + "/" + autoscalePolicyId + ".json", + RestConstants.AUTOSCALING_POLICIES, RestConstants.AUTOSCALING_POLICIES_NAME); assertTrue(autoscalePolicyAdded); - boolean cartridgeAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + cartridgeId + ".json", - RestConstants.CARTRIDGES, - RestConstants.CARTRIDGES_NAME); + boolean cartridgeAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.CARTRIDGES_PATH + "/" + cartridgeId + ".json", + RestConstants.CARTRIDGES, RestConstants.CARTRIDGES_NAME); assertTrue(cartridgeAdded); - boolean networkPartitionAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + networkPartitionId + ".json", - RestConstants.NETWORK_PARTITIONS, - RestConstants.NETWORK_PARTITIONS_NAME); + boolean networkPartitionAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.NETWORK_PARTITIONS_PATH + "/" + networkPartitionId + ".json", + RestConstants.NETWORK_PARTITIONS, RestConstants.NETWORK_PARTITIONS_NAME); assertTrue(networkPartitionAdded); - boolean deploymentPolicyAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" + depPolicyId + ".json", - RestConstants.DEPLOYMENT_POLICIES, - RestConstants.DEPLOYMENT_POLICIES_NAME); + boolean deploymentPolicyAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.DEPLOYMENT_POLICIES_PATH + "/" + depPolicyId + ".json", + RestConstants.DEPLOYMENT_POLICIES, RestConstants.DEPLOYMENT_POLICIES_NAME); assertTrue(deploymentPolicyAdded); - boolean applicationAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" + applicationId + ".json", - RestConstants.APPLICATIONS, - RestConstants.APPLICATIONS_NAME); + boolean applicationAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.APPLICATIONS_PATH + "/" + applicationId + ".json", + RestConstants.APPLICATIONS, RestConstants.APPLICATIONS_NAME); assertTrue(applicationAdded); ApplicationBean bean = (ApplicationBean) restClient @@ -129,19 +122,18 @@ public class GitHookTestCase extends StratosIntegrationTest { RestConstants.APPLICATIONS_NAME); assertEquals(bean.getApplicationId(), applicationId); - boolean appPolicyAdded = restClient.addEntity( - RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" + appPolicyId + ".json", - RestConstants.APPLICATION_POLICIES, - RestConstants.APPLICATION_POLICIES_NAME); + boolean appPolicyAdded = restClient + .addEntity(RESOURCES_PATH + RestConstants.APPLICATION_POLICIES_PATH + "/" + appPolicyId + ".json", + RestConstants.APPLICATION_POLICIES, RestConstants.APPLICATION_POLICIES_NAME); assertTrue(appPolicyAdded); boolean appDeployed = restClient.deployEntity( - RestConstants.APPLICATIONS + "/" + applicationId + RestConstants.APPLICATIONS_DEPLOY + "/" + appPolicyId, - RestConstants.APPLICATIONS_NAME); + RestConstants.APPLICATIONS + "/" + applicationId + RestConstants.APPLICATIONS_DEPLOY + "/" + + appPolicyId, RestConstants.APPLICATIONS_NAME); assertTrue(appDeployed); } - private void undeployArtifacts() throws Exception{ + private void undeployArtifacts() throws Exception { log.info(String.format("Un-deploying the application [application id] %s", applicationId)); String resourcePathUndeploy = RestConstants.APPLICATIONS + "/" + applicationId + RestConstants.APPLICATIONS_UNDEPLOY; @@ -158,12 +150,13 @@ public class GitHookTestCase extends StratosIntegrationTest { RestConstants.APPLICATIONS_UNDEPLOY + "?force=true", RestConstants.APPLICATIONS); boolean forceUndeployed = TopologyHandler.getInstance().assertApplicationUndeploy(applicationId); - assertTrue(String.format("Forceful undeployment failed for the application %s", applicationId), forceUndeployed); + assertTrue(String.format("Forceful undeployment failed for the application %s", applicationId), + forceUndeployed); } log.info("Removing the application [application id] sample-application-startup-test"); - boolean removedApp = restClient.removeEntity(RestConstants.APPLICATIONS, applicationId, - RestConstants.APPLICATIONS_NAME); + boolean removedApp = restClient + .removeEntity(RestConstants.APPLICATIONS, applicationId, RestConstants.APPLICATIONS_NAME); assertTrue(removedApp); ApplicationBean beanRemoved = (ApplicationBean) restClient @@ -173,13 +166,12 @@ public class GitHookTestCase extends StratosIntegrationTest { log.info(String.format("Removing the application policy [application policy id] %s", appPolicyId)); boolean removeAppPolicy = restClient - .removeEntity(RestConstants.APPLICATION_POLICIES, appPolicyId, - RestConstants.APPLICATION_POLICIES_NAME); + .removeEntity(RestConstants.APPLICATION_POLICIES, appPolicyId, RestConstants.APPLICATION_POLICIES_NAME); assertTrue(removeAppPolicy); log.info(String.format("Removing the cartridge [cartridge type] %s", cartridgeId)); - boolean removedC1 = restClient.removeEntity(RestConstants.CARTRIDGES, cartridgeId, - RestConstants.CARTRIDGES_NAME); + boolean removedC1 = restClient + .removeEntity(RestConstants.CARTRIDGES, cartridgeId, RestConstants.CARTRIDGES_NAME); assertTrue(removedC1); log.info(String.format("Removing the autoscaling policy [autoscaling policy id] %s", autoscalePolicyId)); @@ -189,14 +181,12 @@ public class GitHookTestCase extends StratosIntegrationTest { log.info(String.format("Removing the deployment policy [deployment policy id] %s", depPolicyId)); boolean removedDep = restClient - .removeEntity(RestConstants.DEPLOYMENT_POLICIES, depPolicyId, - RestConstants.DEPLOYMENT_POLICIES_NAME); + .removeEntity(RestConstants.DEPLOYMENT_POLICIES, depPolicyId, RestConstants.DEPLOYMENT_POLICIES_NAME); assertTrue(removedDep); log.info(String.format("Removing the network partition [network partition id] %s", networkPartitionId)); - boolean removedNet = restClient - .removeEntity(RestConstants.NETWORK_PARTITIONS, networkPartitionId, - RestConstants.NETWORK_PARTITIONS_NAME); + boolean removedNet = restClient.removeEntity(RestConstants.NETWORK_PARTITIONS, networkPartitionId, + RestConstants.NETWORK_PARTITIONS_NAME); assertTrue(removedNet); } }
