Skip to content

Commit 8088ded

Browse files
committed
tests
1 parent 9f66b1c commit 8088ded

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@ public class TemporaryResourceCache<T extends HasMetadata> {
3939
private final Map<ResourceID, T> cache = new ConcurrentHashMap<>();
4040
private final ManagedInformerEventSource<T, ?, ?> managedInformerEventSource;
4141

42-
// todo prune
4342
public TemporaryResourceCache(ManagedInformerEventSource<T, ?, ?> managedInformerEventSource,
4443
UnaryOperator<T> cachePruneFunction) {
4544
this.managedInformerEventSource = managedInformerEventSource;
@@ -51,14 +50,14 @@ public synchronized void removeResourceFromCache(T resource) {
5150
}
5251

5352
public synchronized void unconditionallyCacheResource(T newResource) {
54-
cache.put(ResourceID.fromResource(newResource), newResource);
53+
putToCache(newResource, null);
5554
}
5655

5756
public synchronized void putAddedResource(T newResource) {
5857
ResourceID resourceID = ResourceID.fromResource(newResource);
5958
if (managedInformerEventSource.get(resourceID).isEmpty()) {
6059
log.debug("Putting resource to cache with ID: {}", resourceID);
61-
cache.put(resourceID, newResource);
60+
putToCache(newResource, resourceID);
6261
} else {
6362
log.debug("Won't put resource into cache found already informer cache: {}", resourceID);
6463
}
@@ -75,15 +74,20 @@ public synchronized void putUpdatedResource(T newResource, String previousResour
7574
if (informerCacheResource.get().getMetadata().getResourceVersion()
7675
.equals(previousResourceVersion)) {
7776
log.debug("Putting resource to temporal cache with id: {}", resourceId);
78-
cache.put(resourceId, newResource);
77+
putToCache(newResource, resourceId);
7978
} else {
8079
// if something is in cache it's surely obsolete now
8180
log.debug("Trying to remove an obsolete resource from cache for id: {}", resourceId);
8281
cache.remove(resourceId);
8382
}
8483
}
8584

86-
85+
private void putToCache(T resource, ResourceID resourceID) {
86+
if (cachePruneFunction != null) {
87+
resource = cachePruneFunction.apply(resource);
88+
}
89+
cache.put(resourceID == null ? ResourceID.fromResource(resource) : resourceID, resource);
90+
}
8791

8892
public synchronized Optional<T> getResourceFromCache(ResourceID resourceID) {
8993
return Optional.ofNullable(cache.get(resourceID));

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

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package io.javaoperatorsdk.operator.processing.event.source.informer;
22

3+
import java.util.Map;
34
import java.util.Optional;
45

6+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
57
import org.junit.jupiter.api.Test;
68

79
import io.fabric8.kubernetes.api.model.ConfigMap;
@@ -79,6 +81,26 @@ void removesResourceFromCache() {
7981
.isNotPresent();
8082
}
8183

84+
@Test
85+
void objectIsTransformedBeforePutIntoCache() {
86+
temporaryResourceCache =
87+
new TemporaryResourceCache<>(informerEventSource, r->{r.getMetadata().setLabels(null);return r;});
88+
89+
temporaryResourceCache.putAddedResource(testResource());
90+
assertLabelsIsEmpty(temporaryResourceCache);
91+
92+
temporaryResourceCache.unconditionallyCacheResource(testResource());
93+
assertLabelsIsEmpty(temporaryResourceCache);
94+
95+
temporaryResourceCache.unconditionallyCacheResource(testResource());
96+
assertLabelsIsEmpty(temporaryResourceCache);
97+
}
98+
99+
private void assertLabelsIsEmpty(TemporaryResourceCache<ConfigMap> temporaryResourceCache) {
100+
assertThat(temporaryResourceCache.getResourceFromCache(ResourceID.fromResource(testResource()))
101+
.orElseThrow().getMetadata().getLabels()).isNull();
102+
}
103+
82104
private ConfigMap propagateTestResourceToCache() {
83105
var testResource = testResource();
84106
when(informerEventSource.get(any())).thenReturn(Optional.empty());
@@ -90,7 +112,9 @@ private ConfigMap propagateTestResourceToCache() {
90112

91113
ConfigMap testResource() {
92114
ConfigMap configMap = new ConfigMap();
93-
configMap.setMetadata(new ObjectMeta());
115+
configMap.setMetadata(new ObjectMetaBuilder()
116+
.withLabels(Map.of("k","v"))
117+
.build());
94118
configMap.getMetadata().setName("test");
95119
configMap.getMetadata().setNamespace("default");
96120
configMap.getMetadata().setResourceVersion(RESOURCE_VERSION);

0 commit comments

Comments
 (0)