Skip to content

Commit 4b3178f

Browse files
authored
fix: flaky test (#1044)
1 parent 748553c commit 4b3178f

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/EventProcessor.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,4 +364,8 @@ public String toString() {
364364
return controllerName + " -> " + executionScope;
365365
}
366366
}
367+
368+
public synchronized boolean isUnderProcessing(ResourceID resourceID) {
369+
return underProcessing.contains(resourceID);
370+
}
367371
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/EventProcessorTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.javaoperatorsdk.operator.processing.event;
22

3+
import java.time.Duration;
34
import java.util.List;
45
import java.util.Optional;
56
import java.util.UUID;
@@ -24,6 +25,7 @@
2425

2526
import static io.javaoperatorsdk.operator.TestUtils.testCustomResource;
2627
import static org.assertj.core.api.Assertions.assertThat;
28+
import static org.awaitility.Awaitility.await;
2729
import static org.mockito.ArgumentMatchers.eq;
2830
import static org.mockito.ArgumentMatchers.isNull;
2931
import static org.mockito.Mockito.*;
@@ -152,16 +154,20 @@ void successfulExecutionResetsTheRetry() {
152154
eventProcessorWithRetry.handleEvent(event);
153155
verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(1))
154156
.handleExecution(any());
157+
waitUntilProcessingFinished(eventProcessorWithRetry, event.getRelatedCustomResourceID());
155158

156159
eventProcessorWithRetry.handleEvent(event);
157160
verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(2))
158161
.handleExecution(any());
162+
waitUntilProcessingFinished(eventProcessorWithRetry, event.getRelatedCustomResourceID());
159163

160164
eventProcessorWithRetry.handleEvent(event);
161165
verify(reconciliationDispatcherMock, timeout(SEPARATE_EXECUTION_TIMEOUT).times(3))
162166
.handleExecution(executionScopeArgumentCaptor.capture());
167+
waitUntilProcessingFinished(eventProcessorWithRetry, event.getRelatedCustomResourceID());
163168
log.info("Finished successfulExecutionResetsTheRetry");
164169

170+
165171
List<ExecutionScope> executionScopes = executionScopeArgumentCaptor.getAllValues();
166172

167173
assertThat(executionScopes).hasSize(3);
@@ -171,6 +177,12 @@ void successfulExecutionResetsTheRetry() {
171177
assertThat(executionScopes.get(1).getRetryInfo().isLastAttempt()).isEqualTo(false);
172178
}
173179

180+
private void waitUntilProcessingFinished(EventProcessor eventProcessor,
181+
ResourceID relatedCustomResourceID) {
182+
await().atMost(Duration.ofSeconds(3))
183+
.until(() -> !eventProcessor.isUnderProcessing(relatedCustomResourceID));
184+
}
185+
174186
@Test
175187
void scheduleTimedEventIfInstructedByPostExecutionControl() {
176188
var testDelay = 10000L;

0 commit comments

Comments
 (0)