package hudson.plugins.build_timeout;
import hudson.init.InitMilestone;
import hudson.init.Initializer;
import hudson.model.Items;
import hudson.model.Descriptor;
import hudson.model.Run;
/**
* Timeout strategy for testing purpose.
*/
public class QuickBuildTimeOutStrategy extends BuildTimeOutStrategy {
private final long timeout;
public QuickBuildTimeOutStrategy() {
this(5000);
}
public QuickBuildTimeOutStrategy(long milliseconds) {
this.timeout = milliseconds;
}
@Initializer(after=InitMilestone.PLUGINS_STARTED)
public static void registerAlias() {
// This is extracted from inner of BuildTimeoutWrapperIntegrationTest
Items.XSTREAM2.addCompatibilityAlias(
"hudson.plugins.build_timeout.BuildTimeoutWrapperIntegrationTest$QuickBuildTimeOutStrategy",
QuickBuildTimeOutStrategy.class
);
}
public Object readResolve()
{
if(timeout == 0) {
return new QuickBuildTimeOutStrategy(5000);
}
return this;
}
@Override public long getTimeOut(Run run) {
return timeout;
}
@Override public Descriptor<BuildTimeOutStrategy> getDescriptor() {
throw new UnsupportedOperationException();
}
}