Skip to content

Commit 257f4aa

Browse files
committed
refactor: move test sample / duplicate some to fix integration tests
The issue is that since the sample code was living under the operator-framework-core module, which doesn't include the annotation processor, the controller implementations were not processed and thus not found by the runtime when needed. This should, hopefully, address the issue.
1 parent 09e3446 commit 257f4aa

37 files changed

+307
-79
lines changed

operator-framework-core/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
<artifactId>maven-surefire-plugin</artifactId>
2929
<version>${surefire.version}</version>
3030
</plugin>
31-
<plugin>
31+
<!--<plugin>
3232
<groupId>org.apache.maven.plugins</groupId>
3333
<artifactId>maven-jar-plugin</artifactId>
3434
<version>3.2.0</version>
@@ -39,7 +39,7 @@
3939
</goals>
4040
</execution>
4141
</executions>
42-
</plugin>
42+
</plugin>-->
4343
</plugins>
4444
</build>
4545

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/Operator.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public <R extends CustomResource> void register(ResourceController<R> controller
4242
throws OperatorException {
4343
final var configuration = configurationService.getConfigurationFor(controller);
4444
final var retry = GenericRetry.fromConfiguration(configuration.getRetryConfiguration());
45-
final var targetNamespaces = configuration.getNamespaces().toArray(new String[]{});
45+
final var targetNamespaces = configuration.getNamespaces().toArray(new String[] {});
4646
registerController(controller, configuration.watchAllNamespaces(), retry, targetNamespaces);
4747
}
4848

@@ -129,7 +129,7 @@ private CustomResourceEventSource createCustomResourceEventSource(
129129
CustomResourceEventSource customResourceEventSource =
130130
watchAllNamespaces
131131
? CustomResourceEventSource.customResourceEventSourceForAllNamespaces(
132-
customResourceCache, client, generationAware, finalizer)
132+
customResourceCache, client, generationAware, finalizer)
133133
: CustomResourceEventSource.customResourceEventSourceForTargetNamespaces(
134134
customResourceCache, client, targetNamespaces, generationAware, finalizer);
135135

@@ -152,15 +152,15 @@ private CustomResourceDefinitionContext getCustomResourceDefinitionForController
152152
}
153153

154154
public Map<Class<? extends CustomResource>, CustomResourceOperationsImpl>
155-
getCustomResourceClients() {
155+
getCustomResourceClients() {
156156
return customResourceClients;
157157
}
158158

159159
public <
160-
T extends CustomResource,
161-
L extends CustomResourceList<T>,
162-
D extends CustomResourceDoneable<T>>
163-
CustomResourceOperationsImpl<T, L, D> getCustomResourceClients(Class<T> customResourceClass) {
160+
T extends CustomResource,
161+
L extends CustomResourceList<T>,
162+
D extends CustomResourceDoneable<T>>
163+
CustomResourceOperationsImpl<T, L, D> getCustomResourceClients(Class<T> customResourceClass) {
164164
return customResourceClients.get(customResourceClass);
165165
}
166166
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/OperatorException.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
public class OperatorException extends RuntimeException {
44

5-
public OperatorException() {
6-
}
5+
public OperatorException() {}
76

87
public OperatorException(String message) {
98
super(message);

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,7 @@ public interface ResourceController<R extends CustomResource> {
3737
*
3838
* @param eventSourceManager
3939
*/
40-
default void init(EventSourceManager eventSourceManager) {
41-
}
40+
default void init(EventSourceManager eventSourceManager) {}
4241

4342
default String getName() {
4443
final var clazz = getClass();
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
11
package io.javaoperatorsdk.operator.api.config;
22

3-
public class DefaultRetryConfiguration implements RetryConfiguration {
4-
5-
}
3+
public class DefaultRetryConfiguration implements RetryConfiguration {}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/AbstractEventSource.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ public void setEventHandler(EventHandler eventHandler) {
1010
}
1111

1212
@Override
13-
public void eventSourceDeRegisteredForResource(String customResourceUid) {
14-
}
13+
public void eventSourceDeRegisteredForResource(String customResourceUid) {}
1514
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEvent.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public String toString() {
4242
+ getCustomResource().getMetadata().getResourceVersion()
4343
+ ", markedForDeletion: "
4444
+ (getCustomResource().getMetadata().getDeletionTimestamp() != null
45-
&& !getCustomResource().getMetadata().getDeletionTimestamp().isEmpty())
45+
&& !getCustomResource().getMetadata().getDeletionTimestamp().isEmpty())
4646
+ " ]}";
4747
}
4848

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/CustomResourceEventSource.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@
1919
import org.slf4j.Logger;
2020
import org.slf4j.LoggerFactory;
2121

22-
/**
23-
* This is a special case since is not bound to a single custom resource
24-
*/
22+
/** This is a special case since is not bound to a single custom resource */
2523
public class CustomResourceEventSource extends AbstractEventSource
2624
implements Watcher<CustomResource> {
2725

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/EventDispatcherTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,7 @@ void callsDeleteIfObjectHasFinalizerAndMarkedForDelete() {
120120
verify(controller, times(1)).deleteResource(eq(testCustomResource), any());
121121
}
122122

123-
/**
124-
* Note that there could be more finalizers. Out of our control.
125-
*/
123+
/** Note that there could be more finalizers. Out of our control. */
126124
@Test
127125
void callDeleteOnControllerIfMarkedForDeletionButThereIsNoDefaultFinalizer() {
128126
markForDeletion(testCustomResource);

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/sample/simple/TestCustomResourceController.java

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,18 @@
44
import io.fabric8.kubernetes.api.model.ConfigMapBuilder;
55
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
66
import io.fabric8.kubernetes.client.KubernetesClient;
7-
import io.javaoperatorsdk.operator.TestExecutionInfoProvider;
87
import io.javaoperatorsdk.operator.api.Context;
98
import io.javaoperatorsdk.operator.api.Controller;
109
import io.javaoperatorsdk.operator.api.DeleteControl;
1110
import io.javaoperatorsdk.operator.api.ResourceController;
1211
import io.javaoperatorsdk.operator.api.UpdateControl;
1312
import java.util.HashMap;
1413
import java.util.Map;
15-
import java.util.concurrent.atomic.AtomicInteger;
1614
import org.slf4j.Logger;
1715
import org.slf4j.LoggerFactory;
1816

1917
@Controller(generationAwareEventProcessing = false, crdName = TestCustomResourceController.CRD_NAME)
20-
public class TestCustomResourceController
21-
implements ResourceController<TestCustomResource>, TestExecutionInfoProvider {
18+
public class TestCustomResourceController implements ResourceController<TestCustomResource> {
2219

2320
private static final Logger log = LoggerFactory.getLogger(TestCustomResourceController.class);
2421

@@ -27,7 +24,6 @@ public class TestCustomResourceController
2724

2825
private final KubernetesClient kubernetesClient;
2926
private final boolean updateStatus;
30-
private final AtomicInteger numberOfExecutions = new AtomicInteger(0);
3127

3228
public TestCustomResourceController(KubernetesClient kubernetesClient) {
3329
this(kubernetesClient, true);
@@ -64,7 +60,6 @@ public DeleteControl deleteResource(
6460
@Override
6561
public UpdateControl<TestCustomResource> createOrUpdateResource(
6662
TestCustomResource resource, Context<TestCustomResource> context) {
67-
numberOfExecutions.addAndGet(1);
6863
if (!resource.getMetadata().getFinalizers().contains(FINALIZER_NAME)) {
6964
throw new IllegalStateException("Finalizer is not present.");
7065
}
@@ -116,8 +111,4 @@ private Map<String, String> configMapData(TestCustomResource resource) {
116111
data.put(resource.getSpec().getKey(), resource.getSpec().getValue());
117112
return data;
118113
}
119-
120-
public int getNumberOfExecutions() {
121-
return numberOfExecutions.get();
122-
}
123114
}

operator-framework/pom.xml

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -73,13 +73,6 @@
7373
<version>0.19</version>
7474
<scope>test</scope>
7575
</dependency>
76-
<dependency>
77-
<groupId>io.javaoperatorsdk</groupId>
78-
<artifactId>operator-framework-core</artifactId>
79-
<version>${project.version}</version>
80-
<classifier>tests</classifier>
81-
<type>test-jar</type>
82-
</dependency>
8376
</dependencies>
8477

8578
</project>

operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/AccumulativeMappingWriter.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,7 @@ public AccumulativeMappingWriter loadExistingMappings() {
4747
return this;
4848
}
4949

50-
/**
51-
* Add a new mapping
52-
*/
50+
/** Add a new mapping */
5351
public AccumulativeMappingWriter add(String key, String value) {
5452
this.mappings.put(key, value);
5553
return this;

operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/RuntimeControllerMetadata.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,11 @@
77

88
public class RuntimeControllerMetadata {
99

10-
private static final String FINALIZER_NAME_SUFFIX = "/finalizer";
1110
public static final String CONTROLLERS_RESOURCE_PATH = "javaoperatorsdk/controllers";
1211
public static final String DONEABLES_RESOURCE_PATH = "javaoperatorsdk/doneables";
13-
private static Map<Class<? extends ResourceController>, Class<? extends CustomResource>>
12+
private static final Map<Class<? extends ResourceController>, Class<? extends CustomResource>>
1413
controllerToCustomResourceMappings;
15-
private static Map<Class<? extends CustomResource>, Class<? extends CustomResourceDoneable>>
14+
private static final Map<Class<? extends CustomResource>, Class<? extends CustomResourceDoneable>>
1615
resourceToDoneableMappings;
1716

1817
static {
@@ -38,8 +37,8 @@ static <R extends CustomResource> Class<R> getCustomResourceClass(
3837
}
3938

4039
public static <T extends CustomResource>
41-
Class<? extends CustomResourceDoneable<T>> getCustomResourceDoneableClass(
42-
ResourceController<T> controller) {
40+
Class<? extends CustomResourceDoneable<T>> getCustomResourceDoneableClass(
41+
ResourceController<T> controller) {
4342
final Class<T> customResourceClass = getCustomResourceClass(controller);
4443
final Class<? extends CustomResourceDoneable<T>> doneableClass =
4544
(Class<? extends CustomResourceDoneable<T>>)

operator-framework/src/main/java/io/javaoperatorsdk/operator/config/runtime/TypeParameterResolver.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@
1515
import javax.lang.model.type.TypeVariable;
1616
import javax.lang.model.util.Types;
1717

18-
/**
19-
* This class can resolve a type parameter in the given index to the actual type defined.
20-
*/
18+
/** This class can resolve a type parameter in the given index to the actual type defined. */
2119
class TypeParameterResolver {
2220

2321
private final DeclaredType interestedClass;
@@ -139,18 +137,18 @@ private List<DeclaredType> findChainOfInterfaces(Types typeUtils, DeclaredType p
139137
var matchingInterfaces =
140138
((TypeElement) parentInterface.asElement())
141139
.getInterfaces().stream()
142-
.filter(i -> typeUtils.isAssignable(i, interestedClass))
143-
.map(i -> (DeclaredType) i)
144-
.collect(Collectors.toList());
140+
.filter(i -> typeUtils.isAssignable(i, interestedClass))
141+
.map(i -> (DeclaredType) i)
142+
.collect(Collectors.toList());
145143
while (matchingInterfaces.size() > 0) {
146144
result.addAll(matchingInterfaces);
147145
final var lastFoundInterface = matchingInterfaces.get(matchingInterfaces.size() - 1);
148146
matchingInterfaces =
149147
((TypeElement) lastFoundInterface.asElement())
150148
.getInterfaces().stream()
151-
.filter(i -> typeUtils.isAssignable(i, interestedClass))
152-
.map(i -> (DeclaredType) i)
153-
.collect(Collectors.toList());
149+
.filter(i -> typeUtils.isAssignable(i, interestedClass))
150+
.map(i -> (DeclaredType) i)
151+
.collect(Collectors.toList());
154152
}
155153
return result;
156154
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/EventSourceIT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void receivingPeriodicEvents() {
4242
Thread.sleep(
4343
EventSourceTestCustomResourceController.TIMER_DELAY
4444
+ EXPECTED_TIMER_EVENT_COUNT
45-
* EventSourceTestCustomResourceController.TIMER_PERIOD);
45+
* EventSourceTestCustomResourceController.TIMER_PERIOD);
4646

4747
Assertions.assertThat(integrationTestSupport.numberOfControllerExecutions())
4848
.isGreaterThanOrEqualTo(EXPECTED_TIMER_EVENT_COUNT + 1);

operator-framework/src/test/java/io/javaoperatorsdk/operator/IntegrationTestSupport.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@
2727

2828
public class IntegrationTestSupport {
2929

30-
public static final String TEST_NAMESPACE = io.javaoperatorsdk.operator.TestUtils.TEST_NAMESPACE;
30+
public static final String TEST_NAMESPACE = "java-operator-sdk-int-test";
3131
public static final String TEST_CUSTOM_RESOURCE_PREFIX = "test-custom-resource-";
3232
private static final Logger log = LoggerFactory.getLogger(IntegrationTestSupport.class);
3333
private KubernetesClient k8sClient;
3434
private MixedOperation<
35-
CustomResource,
36-
CustomResourceList,
37-
CustomResourceDoneable,
38-
Resource<CustomResource, CustomResourceDoneable>>
35+
CustomResource,
36+
CustomResourceList,
37+
CustomResourceDoneable,
38+
Resource<CustomResource, CustomResourceDoneable>>
3939
crOperations;
4040
private Operator operator;
4141
private ResourceController controller;
@@ -179,11 +179,11 @@ public KubernetesClient getK8sClient() {
179179
}
180180

181181
public MixedOperation<
182-
CustomResource,
183-
CustomResourceList,
184-
CustomResourceDoneable,
185-
Resource<CustomResource, CustomResourceDoneable>>
186-
getCrOperations() {
182+
CustomResource,
183+
CustomResourceList,
184+
CustomResourceDoneable,
185+
Resource<CustomResource, CustomResourceDoneable>>
186+
getCrOperations() {
187187
return crOperations;
188188
}
189189

operator-framework/src/test/java/io/javaoperatorsdk/operator/SubResourceUpdateIT.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,7 @@ public void updatesSubResourceStatusNoFinalizer() {
6262
});
6363
}
6464

65-
/**
66-
* Note that we check on controller impl if there is finalizer on execution.
67-
*/
65+
/** Note that we check on controller impl if there is finalizer on execution. */
6866
@Test
6967
public void ifNoFinalizerPresentFirstAddsTheFinalizerThenExecutesControllerAgain() {
7068
integrationTestSupport.teardownIfSuccess(
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
4+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
5+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceSpec;
6+
import java.util.HashMap;
7+
import java.util.UUID;
8+
9+
public class TestUtils {
10+
11+
public static final String TEST_CUSTOM_RESOURCE_NAME = "test-custom-resource";
12+
public static final String TEST_NAMESPACE = "java-operator-sdk-int-test";
13+
14+
public static TestCustomResource testCustomResource() {
15+
return testCustomResource(UUID.randomUUID().toString());
16+
}
17+
18+
public static TestCustomResource testCustomResource(String uid) {
19+
TestCustomResource resource = new TestCustomResource();
20+
resource.setMetadata(
21+
new ObjectMetaBuilder()
22+
.withName(TEST_CUSTOM_RESOURCE_NAME)
23+
.withUid(uid)
24+
.withGeneration(1L)
25+
.withNamespace(TEST_NAMESPACE)
26+
.build());
27+
resource.getMetadata().setAnnotations(new HashMap<>());
28+
resource.setKind("CustomService");
29+
resource.setSpec(new TestCustomResourceSpec());
30+
resource.getSpec().setConfigMapName("test-config-map");
31+
resource.getSpec().setKey("test-key");
32+
resource.getSpec().setValue("test-value");
33+
return resource;
34+
}
35+
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/DefaultConfigurationServiceTest.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,7 @@ public void supportsInnerClassCustomResources() {
5454
static class TestCustomFinalizerController
5555
implements ResourceController<TestCustomFinalizerController.InnerCustomResource> {
5656

57-
public class InnerCustomResource extends CustomResource {
58-
59-
}
57+
public class InnerCustomResource extends CustomResource {}
6058

6159
@Override
6260
public DeleteControl deleteResource(

operator-framework/src/test/java/io/javaoperatorsdk/operator/config/runtime/TestCustomResource.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,4 @@
22

33
import io.fabric8.kubernetes.client.CustomResource;
44

5-
class TestCustomResource extends CustomResource {
6-
7-
}
5+
class TestCustomResource extends CustomResource {}

0 commit comments

Comments
 (0)