blob: 7ddf53f21de16ad6718577bc07c3d21c526dd567 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2015 Markus Knittig 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:
* Markus Knittig - initial API and implementation
* Benjamin Muskalla - bug 324039: [build] tests fail with NPE
* Tasktop Technologies - improvements
*******************************************************************************/
package org.eclipse.mylyn.hudson.tests.support;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.mylyn.commons.core.StatusHandler;
import org.eclipse.mylyn.commons.repositories.core.RepositoryLocation;
import org.eclipse.mylyn.commons.sdk.util.FixtureConfiguration;
import org.eclipse.mylyn.commons.sdk.util.RepositoryTestFixture;
import org.eclipse.mylyn.commons.sdk.util.TestConfiguration;
import org.eclipse.mylyn.internal.hudson.core.HudsonCorePlugin;
import org.eclipse.mylyn.internal.hudson.core.client.HudsonConfigurationCache;
import org.eclipse.mylyn.internal.hudson.core.client.HudsonServerInfo.Type;
import org.eclipse.mylyn.internal.hudson.core.client.RestfulHudsonClient;
/**
* @author Markus Knittig
* @author Steffen Pingel
*/
public class HudsonFixture extends RepositoryTestFixture {
public static final HudsonFixture DEFAULT = discoverDefault();
private static HudsonFixture discoverDefault() {
try {
return TestConfiguration.getDefault().discoverDefault(HudsonFixture.class, "hudson");
} catch (RuntimeException e) {
StatusHandler.log(new Status(IStatus.ERROR, HudsonCorePlugin.ID_PLUGIN,
"No default hudson fixture found, will look for default jenkins fixture", e));
}
return TestConfiguration.getDefault().discoverDefault(HudsonFixture.class, "jenkins");
}
private static HudsonFixture current;
public static HudsonFixture current() {
if (current == null) {
DEFAULT.activate();
}
return current;
}
private final String version;
private final Type type;
public HudsonFixture(String url, String version, Type type, String info) {
super(HudsonCorePlugin.CONNECTOR_KIND, url);
this.version = version;
this.type = type;
setInfo(type.toString(), version, info);
//setUseShortUserNames("2.1.0".compareTo(version) < 0);
setUseCertificateAuthentication(info.contains("Certificate Authentication"));
}
public HudsonFixture(FixtureConfiguration configuration) {
this(configuration.getUrl(), configuration.getVersion(), Type.valueOf(configuration.getType().toUpperCase()),
configuration.getInfo());
}
@Override
protected HudsonFixture activate() {
current = this;
return this;
}
public HudsonHarness createHarness() {
return new HudsonHarness(this);
}
public RestfulHudsonClient connect() throws Exception {
return connect(location());
}
public static RestfulHudsonClient connect(RepositoryLocation location) {
return new RestfulHudsonClient(location, new HudsonConfigurationCache());
}
@Override
protected HudsonFixture getDefault() {
return DEFAULT;
}
public Type getType() {
return type;
}
public String getVersion() {
return version;
}
// XXX fix server setup to support authentication
public boolean canAuthenticate() {
return true;
}
public boolean isHudson() {
return Type.HUDSON == getType();
}
}