4
4
import java .util .Map ;
5
5
import java .util .Set ;
6
6
7
+ import org .junit .jupiter .api .AfterEach ;
8
+ import org .junit .jupiter .api .BeforeEach ;
7
9
import org .junit .jupiter .api .Test ;
8
10
import org .junit .jupiter .api .extension .RegisterExtension ;
9
11
12
14
import io .fabric8 .kubernetes .api .model .NamespaceBuilder ;
13
15
import io .fabric8 .kubernetes .api .model .ObjectMetaBuilder ;
14
16
import io .fabric8 .kubernetes .client .KubernetesClient ;
17
+ import io .javaoperatorsdk .operator .api .reconciler .Constants ;
15
18
import io .javaoperatorsdk .operator .junit .LocallyRunOperatorExtension ;
16
19
import io .javaoperatorsdk .operator .sample .changenamespace .ChangeNamespaceTestCustomResource ;
17
20
import io .javaoperatorsdk .operator .sample .changenamespace .ChangeNamespaceTestReconciler ;
@@ -25,63 +28,98 @@ class ChangeNamespaceIT {
25
28
public static final String TEST_RESOURCE_NAME_2 = "test2" ;
26
29
public static final String TEST_RESOURCE_NAME_3 = "test3" ;
27
30
public static final String ADDITIONAL_TEST_NAMESPACE = "additional-test-namespace" ;
31
+
28
32
@ RegisterExtension
29
33
LocallyRunOperatorExtension operator =
30
34
LocallyRunOperatorExtension .builder ().withReconciler (new ChangeNamespaceTestReconciler ())
31
35
.build ();
32
36
37
+ @ BeforeEach
38
+ void setup () {
39
+ client ().namespaces ().resource (additionalTestNamespace ()).create ();
40
+ }
41
+
42
+ @ AfterEach
43
+ void cleanup () {
44
+ client ().namespaces ().resource (additionalTestNamespace ()).delete ();
45
+ }
46
+
33
47
@ SuppressWarnings ("rawtypes" )
34
48
@ Test
35
49
void addNewAndRemoveOldNamespaceTest () {
36
- try {
37
- var reconciler = operator .getReconcilerOfType (ChangeNamespaceTestReconciler .class );
38
- var defaultNamespaceResource = operator .create (customResource (TEST_RESOURCE_NAME_1 ));
50
+ var reconciler = operator .getReconcilerOfType (ChangeNamespaceTestReconciler .class );
51
+ var defaultNamespaceResource = operator .create (customResource (TEST_RESOURCE_NAME_1 ));
52
+
53
+ assertReconciled (reconciler , defaultNamespaceResource );
54
+ var resourceInAdditionalTestNamespace = createResourceInAdditionalNamespace ();
55
+
56
+ assertNotReconciled (reconciler , resourceInAdditionalTestNamespace );
57
+ // adding additional namespace
58
+ RegisteredController registeredController =
59
+ operator .getRegisteredControllerForReconcile (ChangeNamespaceTestReconciler .class );
60
+ registeredController
61
+ .changeNamespaces (Set .of (operator .getNamespace (), ADDITIONAL_TEST_NAMESPACE ));
62
+
63
+ assertReconciled (reconciler , resourceInAdditionalTestNamespace );
39
64
40
- await (). pollDelay ( Duration . ofMillis ( 100 )). untilAsserted (() -> assertThat (
41
- reconciler . numberOfResourceReconciliations ( defaultNamespaceResource )). isEqualTo ( 2 ));
65
+ // removing a namespace
66
+ registeredController . changeNamespaces ( Set . of ( ADDITIONAL_TEST_NAMESPACE ));
42
67
43
- client ().namespaces ().create (additionalTestNamespace ());
44
- var resourceInAdditionalTestNamespace = createResourceInTestNamespace ();
45
68
46
- await ().pollDelay (Duration .ofMillis (200 )).untilAsserted (
47
- () -> assertThat (
48
- reconciler .numberOfResourceReconciliations (resourceInAdditionalTestNamespace ))
49
- .isZero ());
69
+ var newResourceInDefaultNamespace = operator .create (customResource (TEST_RESOURCE_NAME_3 ));
70
+ assertNotReconciled (reconciler , newResourceInDefaultNamespace );
50
71
51
- // adding additional namespace
52
- RegisteredController registeredController =
53
- operator .getRegisteredControllerForReconcile (ChangeNamespaceTestReconciler .class );
54
- registeredController
55
- .changeNamespaces (Set .of (operator .getNamespace (), ADDITIONAL_TEST_NAMESPACE ));
72
+ ConfigMap firstMap = operator .get (ConfigMap .class , TEST_RESOURCE_NAME_1 );
73
+ firstMap .setData (Map .of ("data" , "newdata" ));
74
+ operator .replace (firstMap );
75
+ assertReconciled (reconciler , defaultNamespaceResource );
76
+ }
77
+
78
+ @ Test
79
+ void changeToWatchAllNamespaces () {
80
+ var reconciler = operator .getReconcilerOfType (ChangeNamespaceTestReconciler .class );
81
+ var resourceInAdditionalTestNamespace = createResourceInAdditionalNamespace ();
82
+
83
+ assertNotReconciled (reconciler , resourceInAdditionalTestNamespace );
56
84
57
- await ().untilAsserted (
58
- () -> assertThat (
59
- reconciler .numberOfResourceReconciliations (resourceInAdditionalTestNamespace ))
60
- .isEqualTo (2 ));
85
+ var registeredController =
86
+ operator .getRegisteredControllerForReconcile (ChangeNamespaceTestReconciler .class );
61
87
62
- // removing a namespace
63
- registeredController .changeNamespaces (Set .of (ADDITIONAL_TEST_NAMESPACE ));
88
+ registeredController
89
+ .changeNamespaces (Set .of (Constants . WATCH_ALL_NAMESPACES ));
64
90
65
- var newResourceInDefaultNamespace = operator .create (customResource (TEST_RESOURCE_NAME_3 ));
66
- await ().pollDelay (Duration .ofMillis (200 ))
67
- .untilAsserted (() -> assertThat (
68
- reconciler .numberOfResourceReconciliations (newResourceInDefaultNamespace )).isZero ());
91
+ assertReconciled (reconciler , resourceInAdditionalTestNamespace );
69
92
93
+ registeredController .changeNamespaces (Set .of (operator .getNamespace ()));
70
94
71
- ConfigMap firstMap = operator .get (ConfigMap .class , TEST_RESOURCE_NAME_1 );
72
- firstMap .setData (Map .of ("data" , "newdata" ));
73
- operator .replace (firstMap );
95
+ var defaultNamespaceResource = operator .create (customResource (TEST_RESOURCE_NAME_1 ));
96
+ var resource2InAdditionalResource = createResourceInAdditionalNamespace (TEST_RESOURCE_NAME_3 );
97
+ assertReconciled (reconciler , defaultNamespaceResource );
98
+ assertNotReconciled (reconciler , resource2InAdditionalResource );
99
+ }
100
+
101
+ private static void assertReconciled (ChangeNamespaceTestReconciler reconciler ,
102
+ ChangeNamespaceTestCustomResource resourceInAdditionalTestNamespace ) {
103
+ await ().untilAsserted (
104
+ () -> assertThat (
105
+ reconciler .numberOfResourceReconciliations (resourceInAdditionalTestNamespace ))
106
+ .isEqualTo (2 ));
107
+ }
74
108
75
- await ().untilAsserted (() -> assertThat (
76
- reconciler .numberOfResourceReconciliations (defaultNamespaceResource )).isEqualTo (2 ));
109
+ private static void assertNotReconciled (ChangeNamespaceTestReconciler reconciler ,
110
+ ChangeNamespaceTestCustomResource resourceInAdditionalTestNamespace ) {
111
+ await ().pollDelay (Duration .ofMillis (200 )).untilAsserted (
112
+ () -> assertThat (
113
+ reconciler .numberOfResourceReconciliations (resourceInAdditionalTestNamespace ))
114
+ .isZero ());
115
+ }
77
116
78
- } finally {
79
- client ().namespaces ().delete (additionalTestNamespace ());
80
- }
117
+ private ChangeNamespaceTestCustomResource createResourceInAdditionalNamespace () {
118
+ return createResourceInAdditionalNamespace (TEST_RESOURCE_NAME_2 );
81
119
}
82
120
83
- private ChangeNamespaceTestCustomResource createResourceInTestNamespace ( ) {
84
- var res = customResource (TEST_RESOURCE_NAME_2 );
121
+ private ChangeNamespaceTestCustomResource createResourceInAdditionalNamespace ( String name ) {
122
+ var res = customResource (name );
85
123
return client ().resources (ChangeNamespaceTestCustomResource .class )
86
124
.inNamespace (ADDITIONAL_TEST_NAMESPACE )
87
125
.create (res );
0 commit comments