Skip to content

Commit 1ff9ff4

Browse files
committed
fix: Try to fix flaky new test 'DetectStaleHeartbeatTest'
1 parent 3bd4745 commit 1ff9ff4

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

db-scheduler/src/test/java/com/github/kagkarlsson/scheduler/functional/DetectStaleHeartbeatTest.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import static com.github.kagkarlsson.jdbc.PreparedStatementSetter.NOOP;
44
import static org.hamcrest.MatcherAssert.assertThat;
5-
import static org.hamcrest.Matchers.is;
5+
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
66
import static org.junit.jupiter.api.Assertions.assertTrue;
77

88
import com.github.kagkarlsson.jdbc.JdbcRunner;
@@ -21,7 +21,7 @@
2121
import java.time.Instant;
2222
import java.util.List;
2323
import org.hamcrest.collection.IsCollectionWithSize;
24-
import org.junit.jupiter.api.Test;
24+
import org.junit.jupiter.api.RepeatedTest;
2525
import org.junit.jupiter.api.extension.RegisterExtension;
2626
import org.slf4j.Logger;
2727
import org.slf4j.LoggerFactory;
@@ -34,7 +34,7 @@ public class DetectStaleHeartbeatTest {
3434

3535
@RegisterExtension public StopSchedulerExtension stopScheduler = new StopSchedulerExtension();
3636

37-
@Test
37+
@RepeatedTest(10) // FIXLATER: remove when test is stable
3838
public void test_dead_execution() throws InterruptedException {
3939
PausingHandler<Void> handler = new PausingHandler<>();
4040

@@ -44,7 +44,7 @@ public void test_dead_execution() throws InterruptedException {
4444
.execute(handler);
4545

4646
TestableRegistry.Condition ranUpdateHeartbeats =
47-
TestableRegistry.Conditions.ranUpdateHeartbeats(2);
47+
TestableRegistry.Conditions.ranUpdateHeartbeats(3);
4848
TestableRegistry.Condition ranExecuteDue = TestableRegistry.Conditions.ranExecuteDue(1);
4949

5050
TestableRegistry registry =
@@ -54,6 +54,7 @@ public void test_dead_execution() throws InterruptedException {
5454
Scheduler.create(postgres.getDataSource(), customTask)
5555
.pollingInterval(Duration.ofMillis(30))
5656
.heartbeatInterval(Duration.ofMillis(30))
57+
.missedHeartbeatsLimit(10)
5758
.schedulerName(new SchedulerName.Fixed("test"))
5859
.statsRegistry(registry)
5960
.build();
@@ -74,6 +75,7 @@ public void test_dead_execution() throws InterruptedException {
7475
assertThat(failing, IsCollectionWithSize.hasSize(1));
7576
HeartbeatState state = failing.get(0).getHeartbeatState();
7677
assertTrue(state.hasStaleHeartbeat());
77-
assertThat(state.getFailedHeartbeats(), is(2));
78+
// update-heartbeats may have run once before this execution was picked, hence >= 2 and not == 3
79+
assertThat(state.getFailedHeartbeats(), greaterThanOrEqualTo(2));
7880
}
7981
}

0 commit comments

Comments
 (0)