Skip to content

Commit dba455b

Browse files
committed
additional unit tests
Signed-off-by: Attila Mészáros <a_meszaros@apple.com>
1 parent 001c506 commit dba455b

File tree

2 files changed

+56
-10
lines changed

2 files changed

+56
-10
lines changed

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ private String getLatestResourceVersion(String namespace) {
239239
}
240240

241241
private void checkObsoleteResources() {
242-
if (System.currentTimeMillis() > lastObsoleteResourceCheck + obsoleteResourceCheckInterval) {
242+
if (System.currentTimeMillis() >= lastObsoleteResourceCheck + obsoleteResourceCheckInterval) {
243243
lastObsoleteResourceCheck = System.currentTimeMillis();
244244
log.debug("Checking for obsolete resources.");
245245
var iterator = cache.entrySet().iterator();
@@ -248,9 +248,11 @@ private void checkObsoleteResources() {
248248
if (ReconcilerUtilsInternal.compareResourceVersions(
249249
e.getValue().getMetadata().getResourceVersion(),
250250
getLatestResourceVersion(e.getValue().getMetadata().getNamespace()))
251-
< 0) iterator.remove();
252-
managedInformerEventSource.handleEvent(ResourceAction.DELETED, e.getValue(), null, true);
253-
log.debug("Removing obsolete resource with ID: {}", e.getKey());
251+
< 0) {
252+
iterator.remove();
253+
managedInformerEventSource.handleEvent(ResourceAction.DELETED, e.getValue(), null, true);
254+
log.debug("Removing obsolete resource with ID: {}", e.getKey());
255+
}
254256
}
255257
}
256258
}

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/source/informer/TemporaryPrimaryResourceCacheTest.java

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -319,12 +319,8 @@ void rapidDeletion() {
319319

320320
@Test
321321
void removalOfObsoleteResources() {
322-
this.temporaryResourceCache =
323-
new TemporaryResourceCache<>(
324-
true,
325-
OBSOLETE_RESOURCE_CHECK_INTERVAL,
326-
Executors.newScheduledThreadPool(1),
327-
managedInformerEventSource);
322+
withTemporaryResourceCacheForObsoleteHandling();
323+
328324
var tr = testResource();
329325
this.temporaryResourceCache.putResource(tr);
330326

@@ -344,6 +340,54 @@ void removalOfObsoleteResources() {
344340
.isEmpty());
345341
}
346342

343+
@Test
344+
void checksObsoleteOnlyWithCertainDelay() {
345+
withTemporaryResourceCacheForObsoleteHandling();
346+
this.temporaryResourceCache.putResource(testResource());
347+
latestSyncVersion = "3";
348+
await()
349+
.pollDelay(Duration.ofMillis(OBSOLETE_RESOURCE_CHECK_INTERVAL / 5))
350+
.untilAsserted(
351+
() ->
352+
assertThat(
353+
temporaryResourceCache.getResourceFromCache(
354+
ResourceID.fromResource(testResource())))
355+
.isPresent());
356+
357+
await()
358+
.untilAsserted(
359+
() ->
360+
assertThat(
361+
temporaryResourceCache.getResourceFromCache(
362+
ResourceID.fromResource(testResource())))
363+
.isEmpty());
364+
}
365+
366+
@Test
367+
void obsoleteResourceIsNotRemovedIfLatestSyncVersionIsOlder() {
368+
withTemporaryResourceCacheForObsoleteHandling();
369+
this.temporaryResourceCache.putResource(testResource());
370+
latestSyncVersion = "1";
371+
372+
await()
373+
.pollDelay(Duration.ofMillis(OBSOLETE_RESOURCE_CHECK_INTERVAL * 2))
374+
.untilAsserted(
375+
() ->
376+
assertThat(
377+
temporaryResourceCache.getResourceFromCache(
378+
ResourceID.fromResource(testResource())))
379+
.isPresent());
380+
}
381+
382+
private void withTemporaryResourceCacheForObsoleteHandling() {
383+
this.temporaryResourceCache =
384+
new TemporaryResourceCache<>(
385+
true,
386+
OBSOLETE_RESOURCE_CHECK_INTERVAL,
387+
Executors.newScheduledThreadPool(1),
388+
managedInformerEventSource);
389+
}
390+
347391
private ConfigMap propagateTestResourceToCache() {
348392
var testResource = testResource();
349393
temporaryResourceCache.putResource(testResource);

0 commit comments

Comments
 (0)