/******************************************************************************* * Copyright (c) 2013, 2014 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package com.ibm.team.build.internal.hjplugin.tests; import java.util.Map; import com.ibm.team.build.internal.hjplugin.BuildResultInfo; import com.ibm.team.build.internal.hjplugin.RTCBuildCause; import com.ibm.team.build.internal.hjplugin.RTCFacadeFactory.RTCFacadeWrapper; import com.ibm.team.build.internal.hjplugin.RTCLoginInfo; import com.ibm.team.build.internal.hjplugin.tests.utils.AbstractTestCase; import com.ibm.team.build.internal.hjplugin.tests.utils.Utils; import com.ibm.team.build.internal.hjplugin.util.RTCBuildState; import com.ibm.team.build.internal.hjplugin.util.RTCBuildStatus; import com.ibm.team.build.internal.hjplugin.util.RTCFacadeFacade; import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.junit.Assert.assertEquals; import hudson.model.Result; import hudson.model.TaskListener; import hudson.util.StreamTaskListener; public class BuildConnectionIT extends AbstractTestCase { public static final String ARTIFACT_BUILD_RESULT_ITEM_ID = "buildResultItemId"; private RTCFacadeWrapper testingFacade; @Before public void setUp() throws Exception { if (Config.DEFAULT.isConfigured()) { // DO NOT initialize Hudson/Jenkins because its slow and we don't need it for the tests testingFacade = Utils.getTestingFacade(); } } @After public void tearDown() throws Exception { // Nothing to do including no need to shutdown Hudson/Jenkins } /** * Don't link to things not in this plugin * BuildConnection#addSnapshotContribution() is tested by RepositoryConnectionIT#testBuildResultContributions() * BuildConnection#addWorkspaceContribution() is tested by RepositoryConnectionIT#testBuildResultContributions() * BuildConnection#startBuildActivity() is tested by RepositoryConnectionIT#testBuildResultContributions() * BuildConnection#completeBuildActivity() is tested by RepositoryConnectionIT#testBuildResultContributions() * @throws Exception */ @Test public void testCreateBuildResult() throws Exception { // test creation of build results if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); testingFacade.invoke("testCreateBuildResult", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); } } @Test public void testCreateBuildResultFail() throws Exception { // test creation of build results if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); testingFacade.invoke("testCreateBuildResultFail", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); } } @Test public void testLinksToJenkins() throws Exception { // test Jenkins external links added if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); testingFacade.invoke("testExternalLinks", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); } } /** * Test terminating (and deleting) build results when in the build is in a variety of states * * Test terminate build (status ok) * Test terminate build (cancelled) * Test terminate build (failed) * Test terminate build (unstable) * Test (set status of build in test to warning) & terminate build (status ok) * Test (set status of build in test to error) & terminate build (status unstable) * Test (set status of build in test to error) & terminate build (abandon) * Test (abandon build in test) & terminate build (status ok) * Test (abandon build in test) & terminate build (cancelled) * Test (abandon build in test) & terminate build (failed) * Test (abandon build in test) & terminate build (unstable) * Test leave pending & terminate build (status ok) * Test leave pending & terminate build (cancelled) * @throws Exception */ @Test public void testBuildTermination() throws Exception { // test termination of build if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); TaskListener listener = new StreamTaskListener(System.out, null); Map<String, String> setupArtifacts = (Map<String, String>) testingFacade.invoke( "testBuildTerminationSetup", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); try { // start & terminate build (status ok) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); String buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (status ok) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (cancelled) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (cancelled) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (failed) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.FAILURE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (failed) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.FAILURE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (unstable) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.WARNING.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & terminate build (unstable) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.WARNING.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to warning) & terminate build (status ok) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.WARNING.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.WARNING.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to warning) & terminate build (status ok) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.WARNING.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.WARNING.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to error) & terminate build (status unstable) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to error) & terminate build (status unstable) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to error) & terminate build (abandon) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (set status of build in test to error) & terminate build (abandon) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (status ok) using toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (status ok) avoiding toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (cancelled) using toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (cancelled) avoiding toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.ERROR.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (failed) using toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (cancelled) avoiding toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (unstable) using toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & terminate build (unstable) avoiding toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.UNSTABLE, listener); verifyBuildTermination(loginInfo, RTCBuildState.INCOMPLETE.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & terminate build (status ok) using toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & terminate build (status ok) avoiding toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.SUCCESS, listener); verifyBuildTermination(loginInfo, RTCBuildState.COMPLETED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & terminate build (cancelled) using toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.CANCELED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & terminate build (cancelled) avoiding toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.terminateBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID, Result.ABORTED, listener); verifyBuildTermination(loginInfo, RTCBuildState.CANCELED.name(), RTCBuildStatus.OK.name(), setupArtifacts); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); } finally { // clean up testingFacade.invoke( "tearDown", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, Map.class}, // setupArtifacts loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), setupArtifacts); } } } /** * Test the deletion of build results with and without a build toolkit * test deleting an in progress build * test deleting an abandoned build * test deleting a pending build * test deleting a build already deleted * @throws Exception */ @Test public void testBuildDeletion() throws Exception { // test deletion of build result if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); Map<String, String> setupArtifacts = (Map<String, String>) testingFacade.invoke( "testBuildTerminationSetup", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); try { // start & delete in progress build (status ok) using toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); String buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // start & delete in progress build (status ok) avoiding toolkit setupBuildTerminationTest(loginInfo, true, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & delete build using toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // try deleting the already deleted build RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & (abandon build in test) & delete build avoiding toolkit setupBuildTerminationTest(loginInfo, true, true, RTCBuildStatus.ERROR.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // try deleting the already deleted build RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & delete build using toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), false, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); // Test start & leave pending & delete build avoiding toolkit setupBuildTerminationTest(loginInfo, false, false, RTCBuildStatus.OK.name(), setupArtifacts); buildResultUUID = setupArtifacts.get(ARTIFACT_BUILD_RESULT_ITEM_ID); RTCFacadeFacade.deleteBuild(Config.DEFAULT.getToolkit(), loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), true, buildResultUUID); verifyBuildResultDeleted(loginInfo, setupArtifacts); } finally { // clean up testingFacade.invoke( "tearDown", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, Map.class}, // setupArtifacts loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), setupArtifacts); } } } private void setupBuildTerminationTest( RTCLoginInfo loginInfo, boolean startBuild, boolean abandon, String buildStatus, Map<String, String> setupArtifacts) throws Exception { testingFacade.invoke( "testBuildTerminationTestSetup", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, boolean.class, //startBuild, boolean.class, // abandon, String.class, // buildStatus, Map.class}, // artifactIds loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), startBuild, abandon, buildStatus, setupArtifacts); } private void verifyBuildTermination( RTCLoginInfo loginInfo, String expectedState, String expectedStatus, Map<String, String> setupArtifacts) throws Exception { testingFacade.invoke( "verifyBuildTermination", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class, // expectedState, String.class, // expectedStatus, Map.class}, // artifactIds loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), expectedState, expectedStatus, setupArtifacts); } private void verifyBuildResultDeleted(RTCLoginInfo loginInfo, Map<String, String> setupArtifacts) throws Exception { testingFacade.invoke( "verifyBuildResultDeleted", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, Map.class}, // artifactIds loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), setupArtifacts); } @Test public void testBuildStart() throws Exception { // test termination of build if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); testingFacade.invoke("testBuildStart", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class}, // testName loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName()); } } @Test public void testBuildResultInfo() throws Exception { // test that the build info represents the cause of the build if (Config.DEFAULT.isConfigured()) { RTCLoginInfo loginInfo = Config.DEFAULT.getLoginInfo(); // Let the test fill in the build result UUID. String buildResultUUID = ""; BuildResultInfo buildResultInfo = new BuildResultInfo(buildResultUUID, false); String loggedInContributorName = (String) testingFacade.invoke("testBuildResultInfo", new Class[] { String.class, // serverURL, String.class, // userId, String.class, // password, int.class, // timeout, String.class, // testName Object.class}, // buildResultInfo loginInfo.getServerUri(), loginInfo.getUserId(), loginInfo.getPassword(), loginInfo.getTimeout(), getBuildDefinitionUniqueName(), buildResultInfo); assertFalse(buildResultInfo.ownLifeCycle()); assertTrue(buildResultInfo.isPersonalBuild()); assertFalse(buildResultInfo.isScheduled()); assertEquals(loggedInContributorName, buildResultInfo.getRequestor()); RTCBuildCause buildCause = new RTCBuildCause(buildResultInfo); assertTrue(buildCause.getShortDescription(), buildCause.getShortDescription().contains("ersonal")); assertTrue(buildCause.getShortDescription(), buildCause.getShortDescription().contains(loggedInContributorName)); } } }