blob: b20274bc59e7c8f3c655865a5209da252fd2f06e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2016 Tasktop Technologies 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:
* Tasktop Technologies - initial API and implementation
*******************************************************************************/
package org.eclipse.mylyn.hudson.tests.support;
import static org.junit.Assert.assertNotNull;
import java.util.concurrent.Callable;
import org.eclipse.mylyn.commons.sdk.util.CommonTestUtil.PrivilegeLevel;
import org.eclipse.mylyn.internal.hudson.core.client.HudsonException;
import org.eclipse.mylyn.internal.hudson.core.client.RestfulHudsonClient;
import org.eclipse.mylyn.internal.hudson.model.HudsonModelBallColor;
import org.eclipse.mylyn.internal.hudson.model.HudsonModelJob;
/**
* @author Steffen Pingel
*/
public class HudsonHarness {
private static final String PLAN_DISABLED = "test-disabled";
private static final String PLAN_FAILING = "test-failing";
private static final String PLAN_PARAMETERIZED = "test-parameterized";
private static final String PLAN_SUCCEEDING = "test-succeeding";
private static final String PLAN_WHITESPACE = "test-white space";
private static final String PLAN_GIT = "test-git";
private static final String PLAN_FOLDER = "test-folder";
private static final String PLAN_SUB_FOLDER = "test-sub-folder";
private static final String PLAN_NESTED_ONE = "test-nested-one";
private static final String PLAN_NESTED_TWO = "test-nested-two";
private RestfulHudsonClient client;
private final HudsonFixture fixture;
public HudsonHarness(HudsonFixture fixture) {
this.fixture = fixture;
}
public RestfulHudsonClient connect() throws Exception {
return connect(PrivilegeLevel.USER);
}
public RestfulHudsonClient connect(PrivilegeLevel level) throws Exception {
client = HudsonFixture.connect(fixture.location(level));
return client;
}
public RestfulHudsonClient privilegedClient() throws Exception {
return HudsonFixture.connect(fixture.location(PrivilegeLevel.USER));
}
public void dispose() {
}
public HudsonFixture getFixture() {
return fixture;
}
public HudsonModelJob getJob(String name) throws HudsonException {
return getJob(client, name);
}
private HudsonModelJob getJob(RestfulHudsonClient client, String name) throws HudsonException {
for (HudsonModelJob job : client.getJobs(null, null)) {
if (job.getName().equals(name)) {
return job;
}
}
return null;
}
public String getPlanDisabled() {
return PLAN_DISABLED;
}
public String getPlanFailing() {
return PLAN_FAILING;
}
public String getPlanParameterized() {
return PLAN_PARAMETERIZED;
}
public String getPlanSucceeding() {
return PLAN_SUCCEEDING;
}
public String getPlanWhitespace() {
return PLAN_WHITESPACE;
}
public String getPlanGit() {
return PLAN_GIT;
}
public String getPlanFolder() {
return PLAN_FOLDER;
}
public String getPlanSubFolder() {
return PLAN_SUB_FOLDER;
}
public String getPlanNestedOne() {
return PLAN_NESTED_ONE;
}
public String getPlanNestedTwo() {
return PLAN_NESTED_TWO;
}
public HudsonModelJob ensureHasRun(final String plan) throws Exception {
final RestfulHudsonClient privilegedClient = privilegedClient();
HudsonModelJob job = getJob(privilegedClient, plan);
if (job.getLastCompletedBuild() == null) {
privilegedClient.runBuild(job, null, null);
job = HudsonTestUtil.poll(new Callable<HudsonModelJob>() {
public HudsonModelJob call() throws Exception {
HudsonModelJob job = getJob(privilegedClient, plan);
assertNotNull(job.getLastCompletedBuild());
return job;
}
});
}
return job;
}
public HudsonModelBallColor getSuccessColor() {
if (getFixture().isHudson() && getFixture().getVersion().compareTo("3.0.1") >= 0) {
return HudsonModelBallColor.GREEN;
} else {
return HudsonModelBallColor.BLUE;
}
}
public HudsonModelBallColor getSuccessAnimeColor() {
if (getFixture().isHudson() && getFixture().getVersion().compareTo("3.0.1") >= 0) {
return HudsonModelBallColor.GREEN_ANIME;
} else {
return HudsonModelBallColor.BLUE_ANIME;
}
}
}