Skip to content

Commit 0685672

Browse files
committed
additional unit tests
Signed-off-by: Attila Mészáros <[email protected]>
1 parent b507acb commit 0685672

2 files changed

Lines changed: 37 additions & 3 deletions

File tree

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,7 @@ public synchronized void putResource(T newResource) {
189189
}
190190

191191
var ns = newResource.getMetadata().getNamespace();
192-
// todo unit test
193-
// this can happen when we dynamically change the NS
192+
// this can happen when we dynamically change the followed namespace list
194193
if (!managedInformerEventSource.manager().isWatchingNamespace(ns)) {
195194
log.debug(
196195
"Skipping caching of resource: {} since namespace is now watched: {}", resourceId, ns);
@@ -247,7 +246,6 @@ private void checkGhostResources() {
247246
var e = iterator.next();
248247

249248
var ns = e.getValue().getMetadata().getNamespace();
250-
// todo unit tests
251249
// this can happen if followed namespaces are changed dynamically
252250
if (!managedInformerEventSource.manager().isWatchingNamespace(ns)) {
253251
log.debug(

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -385,6 +385,42 @@ void ghostResourceIsNotRemovedIfLatestSyncVersionIsOlder() {
385385
.isPresent());
386386
}
387387

388+
@Test
389+
void ghostRemovalRemovesResourcesOnNotFollowedNamespaces() {
390+
withTemporaryResourceCacheForGhostHandling();
391+
392+
var tr = testResource();
393+
temporaryResourceCache.putResource(tr);
394+
395+
assertThat(temporaryResourceCache.getResourceFromCache(ResourceID.fromResource(tr)))
396+
.isPresent();
397+
398+
// simulate namespace no longer being watched
399+
var mim = managedInformerEventSource.manager();
400+
when(mim.isWatchingNamespace(tr.getMetadata().getNamespace())).thenReturn(false);
401+
402+
await()
403+
.untilAsserted(
404+
() ->
405+
assertThat(temporaryResourceCache.getResourceFromCache(ResourceID.fromResource(tr)))
406+
.isEmpty());
407+
408+
// no delete event should be fired for resources removed due to namespace change
409+
verify(managedInformerEventSource, times(0))
410+
.handleEvent(any(), any(), any(), any(Boolean.class));
411+
}
412+
413+
@Test
414+
void doNotCacheResourceOnPutIfNamespaceIsNotFollowedAnymore() {
415+
var mim = managedInformerEventSource.manager();
416+
when(mim.isWatchingNamespace("default")).thenReturn(false);
417+
418+
var tr = testResource();
419+
temporaryResourceCache.putResource(tr);
420+
421+
assertThat(temporaryResourceCache.getResourceFromCache(ResourceID.fromResource(tr))).isEmpty();
422+
}
423+
388424
private void withTemporaryResourceCacheForGhostHandling() {
389425
this.temporaryResourceCache =
390426
new TemporaryResourceCache<>(

0 commit comments

Comments
 (0)