Skip to content

Commit b6bf6de

Browse files
committed
test: reset ExternalIDGenServiceMock between tests to fix flaky external-state ITs
Signed-off-by: Dennis-Mircea Ciupitu <dennis.mircea.ciupitu@gmail.com>
1 parent c86eeec commit b6bf6de

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/ExternalStateTestBase.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.javaoperatorsdk.operator.dependent.externalstate;
1717

18+
import org.junit.jupiter.api.BeforeEach;
1819
import org.junit.jupiter.api.Test;
1920

2021
import io.fabric8.kubernetes.api.model.ConfigMap;
@@ -35,6 +36,11 @@ public abstract class ExternalStateTestBase {
3536

3637
private final ExternalIDGenServiceMock externalService = ExternalIDGenServiceMock.getInstance();
3738

39+
@BeforeEach
40+
void resetExternalService() {
41+
externalService.reset();
42+
}
43+
3844
@Test
3945
public void reconcilesResourceWithPersistentState() {
4046
var resource = extension().create(testResource());

operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/externalstate/externalstatebulkdependent/ExternalStateBulkIT.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
import java.time.Duration;
1919

20+
import org.junit.jupiter.api.BeforeEach;
2021
import org.junit.jupiter.api.Test;
2122
import org.junit.jupiter.api.extension.RegisterExtension;
2223

@@ -49,6 +50,11 @@ class ExternalStateBulkIT {
4950

5051
private final ExternalIDGenServiceMock externalService = ExternalIDGenServiceMock.getInstance();
5152

53+
@BeforeEach
54+
void resetExternalService() {
55+
externalService.reset();
56+
}
57+
5258
@RegisterExtension
5359
LocallyRunOperatorExtension operator =
5460
LocallyRunOperatorExtension.builder()

operator-framework/src/test/java/io/javaoperatorsdk/operator/support/ExternalIDGenServiceMock.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ public List<ExternalResource> listResources() {
5050
return new ArrayList<>(resourceMap.values());
5151
}
5252

53+
/**
54+
* Clears the internal state. Intended to be called between tests so that state from one test
55+
* does not leak into the next via this JVM-lifetime singleton.
56+
*/
57+
public void reset() {
58+
resourceMap.clear();
59+
}
60+
5361
public static ExternalIDGenServiceMock getInstance() {
5462
return serviceMock;
5563
}

0 commit comments

Comments
 (0)