Skip to content

Commit 7465f3c

Browse files
committed
fix: tests
1 parent c91fbc2 commit 7465f3c

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

micrometer-support/pom.xml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@
5252
<version>${project.version}</version>
5353
<scope>test</scope>
5454
</dependency>
55-
<dependency>
56-
<groupId>org.mockito</groupId>
57-
<artifactId>mockito-core</artifactId>
58-
<scope>test</scope>
59-
</dependency>
6055
<dependency>
6156
<groupId>io.fabric8</groupId>
6257
<artifactId>kubernetes-httpclient-vertx</artifactId>
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package io.javaoperatorsdk.operator.monitoring.micrometer;
22

3-
import java.util.concurrent.TimeUnit;
3+
import java.time.Duration;
4+
import java.util.HashSet;
5+
import java.util.Set;
46

57
import org.junit.jupiter.api.AfterAll;
68
import org.junit.jupiter.api.BeforeAll;
@@ -13,28 +15,26 @@
1315
import io.javaoperatorsdk.operator.api.reconciler.*;
1416
import io.javaoperatorsdk.operator.junit.LocallyRunOperatorExtension;
1517
import io.javaoperatorsdk.operator.processing.event.ResourceID;
16-
import io.micrometer.core.instrument.MeterRegistry;
18+
import io.micrometer.core.instrument.Meter;
19+
import io.micrometer.core.instrument.simple.SimpleMeterRegistry;
1720

1821
import static org.assertj.core.api.Assertions.assertThat;
1922
import static org.awaitility.Awaitility.await;
20-
import static org.mockito.Mockito.mock;
21-
import static org.mockito.Mockito.verify;
2223

2324
public class MetricsCleaningOnDeleteIT {
2425
@RegisterExtension
2526
static LocallyRunOperatorExtension operator =
2627
LocallyRunOperatorExtension.builder().withReconciler(new MetricsCleaningTestReconciler())
2728
.build();
2829

29-
private static final MeterRegistry mockRegistry = mock(MeterRegistry.class);
30-
private static final int testDelay = 15;
31-
private static final TestMetrics metrics = new TestMetrics(mockRegistry, testDelay);
30+
private static final TestSimpleMeterRegistry registry = new TestSimpleMeterRegistry();
31+
private static final int testDelay = 1;
32+
private static final MicrometerMetrics metrics = new MicrometerMetrics(registry, testDelay, 2);
3233
private static final String testResourceName = "cleaning-metrics-cr";
3334

3435
@BeforeAll
3536
static void setup() {
36-
ConfigurationServiceProvider.overrideCurrent(
37-
overrider -> overrider.withMetrics(new TestMetrics(mockRegistry, testDelay)));
37+
ConfigurationServiceProvider.overrideCurrent(overrider -> overrider.withMetrics(metrics));
3838
}
3939

4040
@AfterAll
@@ -43,29 +43,31 @@ static void reset() {
4343
}
4444

4545
@Test
46-
void addsFinalizerAndCallsCleanupIfCleanerImplemented() {
46+
void removesMetersAssociatedWithResourceAfterItsDeletion() throws InterruptedException {
4747
var testResource = new ConfigMapBuilder()
4848
.withNewMetadata()
4949
.withName(testResourceName)
5050
.endMetadata()
5151
.build();
5252
final var created = operator.create(testResource);
5353

54-
var meters = metrics.recordedMeterIdsFor(ResourceID.fromResource(created));
55-
assertThat(meters).isNotNull();
56-
assertThat(meters).isNotEmpty();
57-
54+
// make sure the resource is created
5855
await().until(() -> !operator.get(ConfigMap.class, testResourceName)
5956
.getMetadata().getFinalizers().isEmpty());
6057

61-
operator.delete(testResource);
58+
// check that we properly recorded meters associated with the resource
59+
final var meters = metrics.recordedMeterIdsFor(ResourceID.fromResource(created));
60+
assertThat(meters).isNotNull();
61+
assertThat(meters).isNotEmpty();
6262

63+
// delete the resource and wait for it to be deleted
64+
operator.delete(testResource);
6365
await().until(() -> operator.get(ConfigMap.class, testResourceName) == null);
6466

65-
await().atLeast(testDelay + 3, TimeUnit.SECONDS);
66-
meters.forEach(id -> verify(mockRegistry.remove(id)));
67-
meters = metrics.recordedMeterIdsFor(ResourceID.fromResource(created));
68-
assertThat(meters).isNull();
67+
// check that the meters are properly removed after the specified delay
68+
Thread.sleep(Duration.ofSeconds(testDelay).toMillis());
69+
assertThat(registry.removed).isEqualTo(meters);
70+
assertThat(metrics.recordedMeterIdsFor(ResourceID.fromResource(created))).isNull();
6971
}
7072

7173
@ControllerConfiguration
@@ -82,10 +84,14 @@ public DeleteControl cleanup(ConfigMap resource, Context<ConfigMap> context) {
8284
}
8385
}
8486

85-
private static class TestMetrics extends MicrometerMetrics {
87+
private static class TestSimpleMeterRegistry extends SimpleMeterRegistry {
88+
private final Set<Meter.Id> removed = new HashSet<>();
8689

87-
public TestMetrics(MeterRegistry registry, int cleanUpDelayInSeconds) {
88-
super(registry, cleanUpDelayInSeconds, 2);
90+
@Override
91+
public Meter remove(Meter.Id mappedId) {
92+
final var removed = super.remove(mappedId);
93+
this.removed.add(removed.getId());
94+
return removed;
8995
}
9096
}
9197
}

0 commit comments

Comments
 (0)