Skip to content

Commit b8f2425

Browse files
Fix flakiness in BuildTriggerTest (#226)
There was the possibility of a race condition where the queue was empty but the downstream job not yet added to it, resulting in assertions being check too early and fail. Show in a CI run under heavy load, not something usual, but this change should remove the possibility
1 parent d4a6fc1 commit b8f2425

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

pom.xml

+12
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,18 @@
145145
<artifactId>token-macro</artifactId>
146146
<scope>test</scope>
147147
</dependency>
148+
<dependency>
149+
<groupId>org.awaitility</groupId>
150+
<artifactId>awaitility</artifactId>
151+
<version>4.1.1</version>
152+
<scope>test</scope>
153+
<exclusions>
154+
<exclusion>
155+
<groupId>org.hamcrest</groupId>
156+
<artifactId>hamcrest</artifactId>
157+
</exclusion>
158+
</exclusions>
159+
</dependency>
148160
</dependencies>
149161

150162
<dependencyManagement>

src/test/java/hudson/plugins/parameterizedtrigger/test/BuildTriggerTest.java

+10-6
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@
3030
import java.util.ArrayList;
3131
import java.util.Collections;
3232
import java.util.List;
33+
34+
import static java.util.concurrent.TimeUnit.SECONDS;
3335
import static org.junit.Assert.*;
36+
37+
import org.awaitility.Awaitility;
3438
import org.junit.Rule;
3539
import org.junit.Test;
3640
import hudson.tasks.Builder;
@@ -51,7 +55,7 @@ public class BuildTriggerTest {
5155
public LoggerRule logging = new LoggerRule().record(Run.class, Level.FINE);
5256

5357
@Test
54-
public void testParentProjectTrigger() throws Exception{
58+
public void testParentProjectTrigger() throws Exception {
5559
FreeStyleProject downstream = r.createFreeStyleProject("downstream");
5660
MatrixProject upstream = r.createProject(MatrixProject.class, "upstream");
5761
List<ParameterDefinition> definition = new ArrayList<ParameterDefinition>();
@@ -64,16 +68,16 @@ public void testParentProjectTrigger() throws Exception{
6468
params.add(new CurrentBuildParameters());
6569
BuildTrigger triggerBuilder = new BuildTrigger(new BuildTriggerConfig("downstream", ResultCondition.SUCCESS, false, null, params, false));
6670
upstream.getPublishersList().add(triggerBuilder);
71+
6772
r.buildAndAssertSuccess(upstream);
68-
r.waitUntilNoActivity();
69-
FreeStyleBuild downstreamBuild = downstream.getLastBuild();
70-
assertNotNull("Downstream job should be triggered", downstreamBuild);
71-
String project = downstreamBuild.getCause(Cause.UpstreamCause.class).getUpstreamProject();
73+
Awaitility.await().pollInterval(1, SECONDS).atMost(10, SECONDS).until(() -> downstream.getLastBuild() != null);
74+
75+
String project = downstream.getLastBuild().getCause(Cause.UpstreamCause.class).getUpstreamProject();
7276
assertEquals("Build should be triggered by matrix project.", "upstream", project);
7377
}
7478

7579
@Test
76-
public void testChildProjectsTrigger() throws Exception{
80+
public void testChildProjectsTrigger() throws Exception {
7781
MatrixProject upstream = r.createProject(MatrixProject.class, "upstream");
7882
FreeStyleProject downstream = r.createFreeStyleProject("downstream");
7983

0 commit comments

Comments
 (0)