Skip to content

Commit 6127066

Browse files
authored
improve: Small health check improvements (#3021)
Signed-off-by: David Sondermann <[email protected]>
1 parent 358ed4e commit 6127066

File tree

5 files changed

+24
-12
lines changed

5 files changed

+24
-12
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/health/InformerWrappingEventSourceHealthIndicator.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@ public interface InformerWrappingEventSourceHealthIndicator<R extends HasMetadat
1111

1212
@Override
1313
default Status getStatus() {
14-
var nonUp =
15-
informerHealthIndicators().values().stream()
16-
.filter(i -> i.getStatus() != Status.HEALTHY)
17-
.findAny();
18-
19-
return nonUp.isPresent() ? Status.UNHEALTHY : Status.HEALTHY;
14+
var hasNonHealthy =
15+
informerHealthIndicators().values().stream().anyMatch(i -> i.getStatus() != Status.HEALTHY);
16+
return hasNonHealthy ? Status.UNHEALTHY : Status.HEALTHY;
2017
}
2118
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/informer/InformerWrapper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -204,8 +204,8 @@ public boolean isRunning() {
204204
public Status getStatus() {
205205
var status = isRunning() && hasSynced() && isWatching() ? Status.HEALTHY : Status.UNHEALTHY;
206206
log.debug(
207-
"Informer status: {} for for type: {}, namespace: {}, details[ is running: {}, has synced:"
208-
+ " {}, is watching: {} ]",
207+
"Informer status: {} for type: {}, namespace: {}, details [is running: {}, has synced: {},"
208+
+ " is watching: {}]",
209209
status,
210210
informer.getApiTypeClass().getSimpleName(),
211211
namespaceIdentifier,

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/timer/TimerEventSource.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.slf4j.LoggerFactory;
1111

1212
import io.fabric8.kubernetes.api.model.HasMetadata;
13+
import io.javaoperatorsdk.operator.health.Status;
1314
import io.javaoperatorsdk.operator.processing.event.Event;
1415
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1516
import io.javaoperatorsdk.operator.processing.event.source.AbstractEventSource;
@@ -77,6 +78,11 @@ public void stop() {
7778
}
7879
}
7980

81+
@Override
82+
public Status getStatus() {
83+
return isRunning() ? Status.HEALTHY : Status.UNHEALTHY;
84+
}
85+
8086
@Override
8187
public Set<Void> getSecondaryResources(HasMetadata primary) {
8288
return Set.of();

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void propagatesEventOnNewResourceForPrimary() throws InterruptedException {
8787
}
8888

8989
@Test
90-
void updatesHealthIndicatorBasedOnExceptionsInFetcher() throws InterruptedException {
90+
void updatesHealthIndicatorBasedOnExceptionsInFetcher() {
9191
when(resourceFetcher.fetchResources()).thenReturn(testResponseWithOneValue());
9292
pollingEventSource.start();
9393
assertThat(pollingEventSource.getStatus()).isEqualTo(Status.HEALTHY);

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/timer/TimerEventSourceTest.java

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

3-
import java.io.IOException;
43
import java.util.List;
54
import java.util.concurrent.CopyOnWriteArrayList;
65
import java.util.concurrent.TimeUnit;
@@ -12,6 +11,7 @@
1211
import org.junit.jupiter.api.Test;
1312

1413
import io.javaoperatorsdk.operator.TestUtils;
14+
import io.javaoperatorsdk.operator.health.Status;
1515
import io.javaoperatorsdk.operator.processing.event.Event;
1616
import io.javaoperatorsdk.operator.processing.event.EventHandler;
1717
import io.javaoperatorsdk.operator.processing.event.ResourceID;
@@ -42,6 +42,7 @@ public void schedulesOnce() {
4242

4343
untilAsserted(() -> assertThat(eventHandler.events).hasSize(1));
4444
untilAsserted(PERIOD * 2, 0, () -> assertThat(eventHandler.events).hasSize(1));
45+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
4546
}
4647

4748
@Test
@@ -52,6 +53,7 @@ public void canCancelOnce() {
5253
source.cancelOnceSchedule(resourceID);
5354

5455
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
56+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
5557
}
5658

5759
@Test
@@ -62,6 +64,7 @@ public void canRescheduleOnceEvent() {
6264
source.scheduleOnce(resourceID, 2 * PERIOD);
6365

6466
untilAsserted(PERIOD * 2, PERIOD, () -> assertThat(eventHandler.events).hasSize(1));
67+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
6568
}
6669

6770
@Test
@@ -72,23 +75,29 @@ public void deRegistersOnceEventSources() {
7275
source.onResourceDeleted(customResource);
7376

7477
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
78+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
7579
}
7680

7781
@Test
78-
public void eventNotRegisteredIfStopped() throws IOException {
82+
public void eventNotRegisteredIfStopped() {
7983
var resourceID = ResourceID.fromResource(TestUtils.testCustomResource());
84+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
8085

8186
source.stop();
8287
assertThatExceptionOfType(IllegalStateException.class)
8388
.isThrownBy(() -> source.scheduleOnce(resourceID, PERIOD));
89+
assertThat(source.getStatus()).isEqualTo(Status.UNHEALTHY);
8490
}
8591

8692
@Test
87-
public void eventNotFiredIfStopped() throws IOException {
93+
public void eventNotFiredIfStopped() {
8894
source.scheduleOnce(ResourceID.fromResource(TestUtils.testCustomResource()), PERIOD);
95+
assertThat(source.getStatus()).isEqualTo(Status.HEALTHY);
96+
8997
source.stop();
9098

9199
untilAsserted(() -> assertThat(eventHandler.events).isEmpty());
100+
assertThat(source.getStatus()).isEqualTo(Status.UNHEALTHY);
92101
}
93102

94103
private void untilAsserted(ThrowingRunnable assertion) {

0 commit comments

Comments
 (0)