1
1
package io .javaoperatorsdk .operator .api .reconciler ;
2
2
3
+ import java .util .Map ;
4
+
3
5
import org .junit .jupiter .api .Test ;
4
6
5
7
import io .fabric8 .kubeapitest .junit .EnableKubeAPIServer ;
8
+ import io .fabric8 .kubernetes .api .model .ConfigMap ;
6
9
import io .fabric8 .kubernetes .api .model .ConfigMapBuilder ;
7
10
import io .fabric8 .kubernetes .api .model .ObjectMetaBuilder ;
8
11
import io .fabric8 .kubernetes .client .KubernetesClient ;
@@ -19,27 +22,55 @@ class PrimaryUpdateAndCacheUtilsIntegrationTest {
19
22
20
23
@ Test
21
24
void testFinalizerAddAndRemoval () {
22
- var cm =
23
- client
24
- .resource (
25
- new ConfigMapBuilder ()
26
- .withMetadata (
27
- new ObjectMetaBuilder ()
28
- .withName (TEST_RESOURCE_NAME )
29
- .withNamespace (DEFAULT_NS )
30
- .build ())
31
- .build ())
32
- .create ();
33
-
25
+ var cm = createConfigMap ();
34
26
PrimaryUpdateAndCacheUtils .addFinalizer (client , cm , FINALIZER );
35
27
36
- cm = client . configMaps (). inNamespace ( DEFAULT_NS ). withName ( TEST_RESOURCE_NAME ). get ();
28
+ cm = getTestConfigMap ();
37
29
assertThat (cm .getMetadata ().getFinalizers ()).containsExactly (FINALIZER );
38
30
39
31
PrimaryUpdateAndCacheUtils .removeFinalizer (client , cm , FINALIZER );
40
32
41
- cm = client . configMaps (). inNamespace ( DEFAULT_NS ). withName ( TEST_RESOURCE_NAME ). get ();
33
+ cm = getTestConfigMap ();
42
34
assertThat (cm .getMetadata ().getFinalizers ()).isEmpty ();
43
35
client .resource (cm ).delete ();
44
36
}
37
+
38
+ private static ConfigMap getTestConfigMap () {
39
+ return client .configMaps ().inNamespace (DEFAULT_NS ).withName (TEST_RESOURCE_NAME ).get ();
40
+ }
41
+
42
+ @ Test
43
+ void testFinalizerAddRetryOnOptimisticLockFailure () {
44
+ var cm = createConfigMap ();
45
+ // update resource, so it has a new version on the server
46
+ cm .setData (Map .of ("k" , "v" ));
47
+ client .resource (cm ).update ();
48
+
49
+ PrimaryUpdateAndCacheUtils .addFinalizer (client , cm , FINALIZER );
50
+
51
+ cm = getTestConfigMap ();
52
+ assertThat (cm .getMetadata ().getFinalizers ()).containsExactly (FINALIZER );
53
+
54
+ cm .setData (Map .of ("k2" , "v2" ));
55
+ client .resource (cm ).update ();
56
+
57
+ PrimaryUpdateAndCacheUtils .removeFinalizer (client , cm , FINALIZER );
58
+ cm = getTestConfigMap ();
59
+ assertThat (cm .getMetadata ().getFinalizers ()).isEmpty ();
60
+
61
+ client .resource (cm ).delete ();
62
+ }
63
+
64
+ private static ConfigMap createConfigMap () {
65
+ return client
66
+ .resource (
67
+ new ConfigMapBuilder ()
68
+ .withMetadata (
69
+ new ObjectMetaBuilder ()
70
+ .withName (TEST_RESOURCE_NAME )
71
+ .withNamespace (DEFAULT_NS )
72
+ .build ())
73
+ .build ())
74
+ .create ();
75
+ }
45
76
}
0 commit comments