Skip to content

Commit efbed25

Browse files
Fix #335 (#388)
* making parameterized builds use last failed build on rescheduling of failed jobs * adding unit test
1 parent 30121da commit efbed25

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/main/java/com/amazon/jenkins/ec2fleet/EC2FleetAutoResubmitComputerLauncher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ public void afterDisconnect(final SlaveComputer computer, final TaskListener lis
102102

103103
final List<Action> actions = new ArrayList<>();
104104
if (task instanceof WorkflowJob) {
105-
final WorkflowRun failedBuild = ((WorkflowJob) task).getLastBuild();
105+
final WorkflowRun failedBuild = ((WorkflowJob) task).getLastFailedBuild();
106106
actions.addAll(failedBuild.getActions(ParametersAction.class));
107107
}
108108
if (executable instanceof Actionable) {

src/test/java/com/amazon/jenkins/ec2fleet/EC2FleetAutoResubmitComputerLauncherTest.java

+23-1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
import hudson.model.queue.SubTask;
1111
import hudson.slaves.ComputerLauncher;
1212
import jenkins.model.Jenkins;
13+
import org.jenkinsci.plugins.workflow.job.WorkflowJob;
14+
import org.jenkinsci.plugins.workflow.job.WorkflowRun;
1315
import org.junit.Before;
1416
import org.junit.Test;
1517
import org.junit.runner.RunWith;
@@ -21,17 +23,19 @@
2123
import java.util.Arrays;
2224
import java.util.Collections;
2325

26+
import static org.mockito.ArgumentMatchers.any;
2427
import static org.mockito.ArgumentMatchers.anyInt;
2528
import static org.mockito.ArgumentMatchers.eq;
2629
import static org.mockito.Mockito.mock;
30+
import static org.mockito.Mockito.times;
2731
import static org.mockito.Mockito.verify;
2832
import static org.mockito.Mockito.verifyZeroInteractions;
2933
import static org.mockito.Mockito.when;
3034
import static org.mockito.Mockito.withSettings;
3135

3236
@SuppressWarnings("ArraysAsListWithZeroOrOneArgument")
3337
@RunWith(PowerMockRunner.class)
34-
@PrepareForTest({Jenkins.class, Queue.class})
38+
@PrepareForTest({Jenkins.class, Queue.class, WorkflowJob.class, WorkflowRun.class})
3539
public class EC2FleetAutoResubmitComputerLauncherTest {
3640

3741
@Mock
@@ -84,6 +88,12 @@ public class EC2FleetAutoResubmitComputerLauncherTest {
8488
@Mock
8589
private EC2FleetCloud cloud;
8690

91+
@Mock
92+
private WorkflowJob workflowJob;
93+
94+
@Mock
95+
private WorkflowRun workflowRun;
96+
8797
@Before
8898
public void before() {
8999
executable1 = mock(Actionable.class, withSettings().extraInterfaces(Queue.Executable.class));
@@ -176,4 +186,16 @@ public void taskCompleted_should_resubmit_task_with_actions() {
176186
verifyZeroInteractions(queue);
177187
}
178188

189+
@Test
190+
public void taskCompleted_should_resubmit_task_with_failed_build_actions() {
191+
when(subTask1.getOwnerTask()).thenReturn(workflowJob);
192+
when(workflowJob.getLastFailedBuild()).thenReturn(workflowRun);
193+
when(workflowRun.getActions(any())).thenReturn((Collections.singletonList(action1)));
194+
when(computer.getExecutors()).thenReturn(Arrays.asList(executor1));
195+
new EC2FleetAutoResubmitComputerLauncher(baseComputerLauncher)
196+
.afterDisconnect(computer, taskListener);
197+
verify(queue).schedule2(eq(workflowJob), anyInt(), eq(Arrays.asList(action1)));
198+
verify(workflowRun, times(1)).getActions(any());
199+
}
200+
179201
}

0 commit comments

Comments
 (0)