Skip to content

Commit 261a38c

Browse files
authored
fix: flaky integration test (#1029)
1 parent 511a59e commit 261a38c

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919

2020
class SubResourceUpdateIT {
2121

22+
public static final int WAIT_AFTER_EXECUTION = 500;
23+
public static final int EVENT_RECEIVE_WAIT = 200;
24+
2225
@RegisterExtension
2326
OperatorExtension operator =
2427
OperatorExtension.builder().withReconciler(SubResourceTestCustomReconciler.class).build();
@@ -30,7 +33,7 @@ void updatesSubResourceStatus() {
3033

3134
awaitStatusUpdated(resource.getMetadata().getName());
3235
// wait for sure, there are no more events
33-
waitXms(200);
36+
waitXms(WAIT_AFTER_EXECUTION);
3437
// there is no event on status update processed
3538
assertThat(TestUtils.getNumberOfExecutions(operator))
3639
.isEqualTo(2);
@@ -45,7 +48,7 @@ void updatesSubResourceStatusNoFinalizer() {
4548

4649
awaitStatusUpdated(resource.getMetadata().getName());
4750
// wait for sure, there are no more events
48-
waitXms(200);
51+
waitXms(WAIT_AFTER_EXECUTION);
4952
// there is no event on status update processed
5053
assertThat(TestUtils.getNumberOfExecutions(operator))
5154
.isEqualTo(2);
@@ -60,7 +63,7 @@ void ifNoFinalizerPresentFirstAddsTheFinalizerThenExecutesControllerAgain() {
6063

6164
awaitStatusUpdated(resource.getMetadata().getName());
6265
// wait for sure, there are no more events
63-
waitXms(200);
66+
waitXms(WAIT_AFTER_EXECUTION);
6467
// there is no event on status update processed
6568
assertThat(TestUtils.getNumberOfExecutions(operator))
6669
.isEqualTo(2);
@@ -77,13 +80,15 @@ void updateCustomResourceAfterSubResourceChange() {
7780
SubResourceTestCustomResource resource = createTestCustomResource("1");
7881
operator.create(SubResourceTestCustomResource.class, resource);
7982

83+
// waits for the resource to start processing
84+
waitXms(EVENT_RECEIVE_WAIT);
8085
resource.getSpec().setValue("new value");
8186
operator.resources(SubResourceTestCustomResource.class).createOrReplace(resource);
8287

8388
awaitStatusUpdated(resource.getMetadata().getName());
8489

8590
// wait for sure, there are no more events
86-
waitXms(500);
91+
waitXms(WAIT_AFTER_EXECUTION);
8792
// there is no event on status update processed
8893
assertThat(TestUtils.getNumberOfExecutions(operator))
8994
.isEqualTo(3);
@@ -117,7 +122,7 @@ public SubResourceTestCustomResource createTestCustomResource(String id) {
117122
return resource;
118123
}
119124

120-
private void waitXms(int x) {
125+
public static void waitXms(int x) {
121126
try {
122127
Thread.sleep(x);
123128
} catch (InterruptedException e) {

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/subresource/SubResourceTestCustomReconciler.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,21 @@
1212
import io.javaoperatorsdk.operator.api.reconciler.UpdateControl;
1313
import io.javaoperatorsdk.operator.support.TestExecutionInfoProvider;
1414

15+
import static io.javaoperatorsdk.operator.support.TestUtils.waitXms;
16+
1517
@ControllerConfiguration(generationAwareEventProcessing = false)
1618
public class SubResourceTestCustomReconciler
1719
implements Reconciler<SubResourceTestCustomResource>, TestExecutionInfoProvider {
1820

21+
public static final int RECONCILER_MIN_EXEC_TIME = 300;
22+
1923
public static final String FINALIZER_NAME =
2024
ReconcilerUtils.getDefaultFinalizerName(SubResourceTestCustomResource.class);
2125
private static final Logger log =
2226
LoggerFactory.getLogger(SubResourceTestCustomReconciler.class);
2327
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
2428

29+
2530
@Override
2631
public UpdateControl<SubResourceTestCustomResource> reconcile(
2732
SubResourceTestCustomResource resource, Context context) {
@@ -33,7 +38,7 @@ public UpdateControl<SubResourceTestCustomResource> reconcile(
3338

3439
ensureStatusExists(resource);
3540
resource.getStatus().setState(SubResourceTestCustomResourceStatus.State.SUCCESS);
36-
41+
waitXms(RECONCILER_MIN_EXEC_TIME);
3742
return UpdateControl.updateStatus(resource);
3843
}
3944

0 commit comments

Comments
 (0)