Skip to content

Commit bb906df

Browse files
committed
wip
Signed-off-by: Attila Mészáros <[email protected]>
1 parent 2475d6d commit bb906df

File tree

5 files changed

+64
-6
lines changed

5 files changed

+64
-6
lines changed

operator-framework-core/pom.xml

+5
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@
7979
<artifactId>awaitility</artifactId>
8080
<scope>test</scope>
8181
</dependency>
82+
<dependency>
83+
<groupId>io.fabric8</groupId>
84+
<artifactId>kube-api-test-client-inject</artifactId>
85+
<scope>test</scope>
86+
</dependency>
8287
</dependencies>
8388

8489
<build>

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/PrimaryUpdateAndCacheUtils.java

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
import io.fabric8.kubernetes.client.KubernetesClient;
1111
import io.fabric8.kubernetes.client.dsl.base.PatchContext;
1212
import io.fabric8.kubernetes.client.dsl.base.PatchType;
13-
import io.javaoperatorsdk.operator.api.reconciler.support.UserPrimaryResourceCache;
13+
import io.javaoperatorsdk.operator.api.reconciler.support.PrimaryResourceCache;
1414
import io.javaoperatorsdk.operator.processing.event.ResourceID;
1515

16+
// todo javadoc
1617
public class PrimaryUpdateAndCacheUtils {
1718

1819
private PrimaryUpdateAndCacheUtils() {}
@@ -70,7 +71,7 @@ public static <P extends HasMetadata> P ssaPatchAndCacheStatusWithLock(
7071
}
7172

7273
public static <P extends HasMetadata> P ssaPatchAndCacheStatus(
73-
P primary, P freshResource, Context<P> context, UserPrimaryResourceCache<P> cache) {
74+
P primary, P freshResource, Context<P> context, PrimaryResourceCache<P> cache) {
7475
logWarnIfResourceVersionPresent(freshResource);
7576
return patchAndCacheStatus(
7677
primary,
@@ -90,7 +91,7 @@ public static <P extends HasMetadata> P ssaPatchAndCacheStatus(
9091
public static <P extends HasMetadata> P patchAndCacheStatus(
9192
P primary,
9293
KubernetesClient client,
93-
UserPrimaryResourceCache<P> cache,
94+
PrimaryResourceCache<P> cache,
9495
BiFunction<P, KubernetesClient, P> patch) {
9596
var updatedResource = patch.apply(primary, client);
9697
cache.cacheResource(primary, updatedResource);
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@
66
import io.fabric8.kubernetes.api.model.HasMetadata;
77
import io.javaoperatorsdk.operator.processing.event.ResourceID;
88

9-
public class UserPrimaryResourceCache<P extends HasMetadata> {
9+
public class PrimaryResourceCache<P extends HasMetadata> {
1010

1111
private final BiPredicate<Pair<P>, P> evictionPredicate;
1212
private final ConcurrentHashMap<ResourceID, Pair<P>> cache = new ConcurrentHashMap<>();
1313

14-
public UserPrimaryResourceCache(BiPredicate<Pair<P>, P> evictionPredicate) {
14+
public PrimaryResourceCache(BiPredicate<Pair<P>, P> evictionPredicate) {
1515
this.evictionPredicate = evictionPredicate;
1616
}
1717

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package io.javaoperatorsdk.operator.api.reconciler.support;
2+
3+
import org.junit.jupiter.api.Test;
4+
5+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
6+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
7+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceSpec;
8+
9+
import static org.assertj.core.api.Assertions.assertThat;
10+
11+
class PrimaryResourceCacheTest {
12+
13+
@Test
14+
void flowWithResourceVersionParsingEvictionPredicate() {
15+
var cache =
16+
new PrimaryResourceCache<TestCustomResource>(
17+
new PrimaryResourceCache.ResourceVersionParsingEvictionPredicate<>());
18+
19+
var newCR = customResource("2");
20+
var cr = cache.getFreshResource(newCR);
21+
assertThat(cr).isSameAs(newCR);
22+
// todo break these down by spec
23+
cache.cacheResource(newCR);
24+
cr = cache.getFreshResource(customResource("1"));
25+
26+
assertThat(cr).isSameAs(newCR);
27+
28+
var newestCR = customResource("3");
29+
cr = cache.getFreshResource(newestCR);
30+
31+
assertThat(cr).isSameAs(newestCR);
32+
}
33+
34+
@Test
35+
void customResourceSpecificEvictionPredicate() {
36+
// todo
37+
}
38+
39+
private TestCustomResource customResource(String resourceVersion) {
40+
var cr = new TestCustomResource();
41+
cr.setMetadata(
42+
new ObjectMetaBuilder()
43+
.withName("test1")
44+
.withNamespace("default")
45+
.withUid("uid")
46+
.withResourceVersion(resourceVersion)
47+
.build());
48+
cr.setSpec(new TestCustomResourceSpec());
49+
cr.getSpec().setKey("key");
50+
return cr;
51+
}
52+
}
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import static org.mockito.Mockito.mock;
2020
import static org.mockito.Mockito.when;
2121

22-
class TemporaryUserPrimaryResourceCacheTest {
22+
class TemporaryPrimaryResourceCacheTest {
2323

2424
public static final String RESOURCE_VERSION = "2";
2525

0 commit comments

Comments
 (0)