Skip to content

Commit

Permalink
Fix global timeout logging for Abstract Project issue (#105)
Browse files Browse the repository at this point in the history
  • Loading branch information
krisstern committed Dec 31, 2022
1 parent 7f79029 commit b430a39
Show file tree
Hide file tree
Showing 6 changed files with 60 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,8 @@
import java.util.logging.Level;
import java.util.logging.Logger;

import hudson.model.BuildListener;
import hudson.model.*;
import jenkins.model.Jenkins;
import hudson.model.AbstractBuild;
import hudson.model.Describable;
import hudson.model.Descriptor;
import hudson.model.Run;
import org.jenkinsci.plugins.tokenmacro.MacroEvaluationException;
import org.jenkinsci.plugins.tokenmacro.TokenMacro;

Expand Down Expand Up @@ -45,6 +41,11 @@ public long getTimeOut(@NonNull AbstractBuild<?,?> build, @NonNull BuildListener
return getTimeOut(build);
}

public long getTimeOut(@NonNull Run build, @NonNull BuildListener listener)
throws InterruptedException, MacroEvaluationException, IOException {
return getTimeOut(build);
}

/**
* Called when some output to console.
* Override this to capture the activity.
Expand Down Expand Up @@ -109,5 +110,4 @@ protected final String expandAll(@NonNull AbstractBuild<?, ?> build, @NonNull Bu
protected final static boolean hasMacros(@NonNull String value) {
return value.contains("${");
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import hudson.Extension;
import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.model.Project;
import hudson.plugins.build_timeout.BuildTimeOutOperation;
Expand Down Expand Up @@ -86,7 +87,7 @@ public synchronized void load() {
}

@Override
public Optional<Duration> timeOutFor(AbstractBuild<?, ?> build, BuildListener listener) {
public Optional<Duration> timeOutFor(AbstractBuild<?,?> build, BuildListener listener) {
try {
List<Builder> builders = ((Project<?, ?>) build.getProject()).getBuilders();
Optional<Builder> timeoutBuildStep = builders.stream().filter(builder -> builder instanceof BuildStepWithTimeout).findAny();
Expand All @@ -113,6 +114,11 @@ public Optional<Duration> timeOutFor(AbstractBuild<?, ?> build, BuildListener li
}
}

@Override
public Optional<Duration> timeOutFor(AbstractProject<?,?> build, BuildListener listener) {
return Optional.empty();
}

public boolean isEnabled() {
return strategy != null;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,7 @@

import hudson.Extension;
import hudson.Launcher;
import hudson.model.AbstractBuild;
import hudson.model.BuildListener;
import hudson.model.Environment;
import hudson.model.Run;
import hudson.model.TaskListener;
import hudson.model.*;
import hudson.model.listeners.RunListener;

import javax.annotation.Nonnull;
Expand Down Expand Up @@ -48,6 +44,9 @@ public Environment setUpEnvironment(AbstractBuild build, Launcher launcher, Buil
return super.setUpEnvironment(build, launcher, listener);
}

public void setUpEnvironment(AbstractProject build, Launcher launcher, BuildListener listener) {
}

@Override
public void onCompleted(Run<?, ?> run, @Nonnull TaskListener listener) {
store.cancel(run.getExternalizableId());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package hudson.plugins.build_timeout.global;

import hudson.model.AbstractBuild;
import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import hudson.plugins.build_timeout.BuildTimeOutOperation;

Expand All @@ -9,6 +10,9 @@
import java.util.Optional;

public interface TimeOutProvider {
Optional<Duration> timeOutFor(AbstractBuild<? ,?> build, BuildListener listener);
Optional<Duration> timeOutFor(AbstractBuild<?,?> build, BuildListener listener);

Optional<Duration> timeOutFor(AbstractProject<?,?> build, BuildListener listener);

List<BuildTimeOutOperation> getOperations();
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ public void run() {
}
}

public static TimeOutTask create(TimeOutProvider timeOutProvider, AbstractBuild<?, ?> build, BuildListener listener, Duration duration) {
public static TimeOutTask create(TimeOutProvider timeOutProvider, AbstractBuild<?,?> build, BuildListener listener, Duration duration) {
return new TimeOutTask(timeOutProvider, build, listener, duration);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package hudson.plugins.build_timeout.global;

import hudson.model.AbstractProject;
import hudson.model.BuildListener;
import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.junit.MockitoJUnit;
import org.mockito.junit.MockitoRule;
import org.mockito.quality.Strictness;

import java.util.Optional;

import static org.mockito.BDDMockito.given;
import static org.mockito.Mockito.verifyNoInteractions;

public class GlobalTimeOutRunListenerForAbstractProjectsTest {
@Rule
public MockitoRule rule = MockitoJUnit.rule().strictness(Strictness.LENIENT);
@Mock
private TimeOutProvider timeOutProvider;
@Mock
private TimeOutStore timeOutStore;

@Mock
private AbstractProject<?, ?> build;

@Mock
private BuildListener buildListener;

@Test
public void shouldNotStoreForMatrixProjects() {
given(timeOutProvider.timeOutFor(build, buildListener)).willReturn(Optional.empty());

verifyNoInteractions(timeOutStore);
}
}

0 comments on commit b430a39

Please sign in to comment.