Skip to content

Commit 8d11728

Browse files
committed
simple event source integration test
1 parent f276ff6 commit 8d11728

18 files changed

+222
-23
lines changed

operator-framework/src/main/java/io/javaoperatorsdk/operator/ControllerToCustomResourceMappingsProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616

1717
class ControllerToCustomResourceMappingsProvider {
18-
private static final Logger log = LoggerFactory.getLogger(ControllerUtils.class);
18+
private static final Logger log = LoggerFactory.getLogger(ControllerToCustomResourceMappingsProvider.class);
1919

2020
static Map<Class<? extends ResourceController>, Class<? extends CustomResource>> provide(final String resourcePath) {
2121
Map<Class<? extends ResourceController>, Class<? extends CustomResource>> controllerToCustomResourceMappings = new HashMap();

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/DefaultEventHandler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,15 +61,18 @@ public void handleEvent(Event<? extends EventSource> event) {
6161
}
6262

6363
private void executeBufferedEvents(String customResourceUid) {
64-
if (!isControllerUnderExecution(customResourceUid) && eventBuffer.containsEvents(customResourceUid)) {
64+
boolean newEventForResourceId = eventBuffer.containsEvents(customResourceUid);
65+
boolean controllerUnderExecution = isControllerUnderExecution(customResourceUid);
66+
if (!controllerUnderExecution && newEventForResourceId) {
6567
setUnderExecutionProcessing(customResourceUid);
6668
ExecutionScope executionScope = new ExecutionScope(
6769
eventBuffer.getAndRemoveEventsForExecution(customResourceUid),
6870
resourceCache.getLatestResource(customResourceUid).get());
6971
log.debug("Executing events for custom resource. Scope: {}", executionScope);
7072
executor.execute(new ExecutionConsumer(executionScope, eventDispatcher, this));
7173
} else {
72-
log.debug("Skipping executing controller for {}, since currently under execution.", customResourceUid);
74+
log.debug("Skipping executing controller for resource id: {}. Events in queue: {}. Controller in execution: {}"
75+
, customResourceUid, newEventForResourceId, controllerUnderExecution);
7376
}
7477
}
7578

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package io.javaoperatorsdk.operator;
22

3-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
3+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
44
import io.fabric8.kubernetes.api.model.ConfigMap;
55
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
66
import io.fabric8.kubernetes.client.KubernetesClient;
7-
import io.javaoperatorsdk.operator.sample.TestCustomResourceController;
7+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController;
88
import org.awaitility.Awaitility;
99
import org.junit.jupiter.api.BeforeAll;
1010
import org.junit.jupiter.api.BeforeEach;

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

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
11
package io.javaoperatorsdk.operator;
22

3-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
4-
import io.javaoperatorsdk.operator.sample.TestCustomResourceController;
5-
import io.javaoperatorsdk.operator.sample.TestCustomResourceSpec;
3+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
4+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController;
65
import io.fabric8.kubernetes.api.model.ConfigMap;
7-
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
86
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
97
import io.fabric8.kubernetes.client.KubernetesClient;
108
import org.junit.jupiter.api.Test;
119
import org.junit.jupiter.api.TestInstance;
12-
import org.slf4j.Logger;
13-
import org.slf4j.LoggerFactory;
1410

15-
import java.util.HashMap;
1611
import java.util.concurrent.TimeUnit;
1712

1813
import static io.javaoperatorsdk.operator.TestUtils.TEST_CUSTOM_RESOURCE_NAME;

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

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

33
import io.fabric8.kubernetes.client.CustomResourceDoneable;
44
import io.javaoperatorsdk.operator.api.*;
5-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
6-
import io.javaoperatorsdk.operator.sample.TestCustomResourceController;
5+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
6+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceController;
77
import org.junit.jupiter.api.Assertions;
88
import org.junit.jupiter.api.Test;
99

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
package io.javaoperatorsdk.operator;
2+
3+
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
4+
import io.fabric8.kubernetes.client.DefaultKubernetesClient;
5+
import io.fabric8.kubernetes.client.KubernetesClient;
6+
import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResource;
7+
import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResourceController;
8+
import io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResourceSpec;
9+
import io.javaoperatorsdk.operator.sample.subresource.SubResourceTestCustomResourceController;
10+
import org.junit.jupiter.api.BeforeEach;
11+
import org.junit.jupiter.api.Test;
12+
import org.junit.jupiter.api.TestInstance;
13+
14+
import static io.javaoperatorsdk.operator.IntegrationTestSupport.TEST_NAMESPACE;
15+
import static io.javaoperatorsdk.operator.sample.event.EventSourceTestCustomResourceController.*;
16+
import static org.assertj.core.api.Assertions.assertThat;
17+
18+
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
19+
public class EventSourceIT {
20+
21+
public static final int EXPECTED_TIMER_EVENT_COUNT = 3;
22+
private IntegrationTestSupport integrationTestSupport = new IntegrationTestSupport();
23+
24+
@BeforeEach
25+
public void initAndCleanup() {
26+
KubernetesClient k8sClient = new DefaultKubernetesClient();
27+
integrationTestSupport.initialize(k8sClient, new EventSourceTestCustomResourceController(),
28+
"eventsource-test-crd.yaml");
29+
integrationTestSupport.cleanup();
30+
}
31+
32+
@Test
33+
public void receivingPeriodicEvents() {
34+
integrationTestSupport.teardownIfSuccess(() -> {
35+
EventSourceTestCustomResource resource = createTestCustomResource("1");
36+
integrationTestSupport.getCrOperations().inNamespace(TEST_NAMESPACE).create(resource);
37+
38+
Thread.sleep(TIMER_DELAY + EXPECTED_TIMER_EVENT_COUNT * TIMER_PERIOD);
39+
40+
assertThat(integrationTestSupport.numberOfControllerExecutions()).isEqualTo(EXPECTED_TIMER_EVENT_COUNT + 1);
41+
});
42+
}
43+
44+
public EventSourceTestCustomResource createTestCustomResource(String id) {
45+
EventSourceTestCustomResource resource = new EventSourceTestCustomResource();
46+
resource.setMetadata(new ObjectMetaBuilder()
47+
.withName("subresource-" + id)
48+
.withNamespace(TEST_NAMESPACE)
49+
.withFinalizers(FINALIZER_NAME)
50+
.build());
51+
resource.setKind("Eventsourcesample");
52+
resource.setSpec(new EventSourceTestCustomResourceSpec());
53+
resource.getSpec().setValue(id);
54+
return resource;
55+
}
56+
57+
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.javaoperatorsdk.operator;
22

33
import io.javaoperatorsdk.operator.api.ResourceController;
4-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
5-
import io.javaoperatorsdk.operator.sample.TestCustomResourceSpec;
4+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
5+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceSpec;
66
import io.fabric8.kubernetes.api.model.Namespace;
77
import io.fabric8.kubernetes.api.model.NamespaceBuilder;
88
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package io.javaoperatorsdk.operator;
22

33
import io.fabric8.kubernetes.api.model.ObjectMetaBuilder;
4-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
5-
import io.javaoperatorsdk.operator.sample.TestCustomResourceSpec;
4+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
5+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResourceSpec;
66

77
import java.util.HashMap;
88
import java.util.UUID;

operator-framework/src/test/java/io/javaoperatorsdk/operator/processing/DefaultEventHandlerTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import io.javaoperatorsdk.operator.processing.event.Event;
66
import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent;
77
import io.javaoperatorsdk.operator.processing.event.internal.TimerEvent;
8-
import io.javaoperatorsdk.operator.sample.TestCustomResource;
8+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
99
import org.junit.jupiter.api.BeforeEach;
1010
import org.junit.jupiter.api.Test;
1111
import org.mockito.ArgumentCaptor;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package io.javaoperatorsdk.operator.sample.event;
2+
3+
import io.fabric8.kubernetes.client.CustomResource;
4+
5+
public class EventSourceTestCustomResource extends CustomResource {
6+
7+
private EventSourceTestCustomResourceSpec spec;
8+
9+
private EventSourceTestCustomResourceStatus status;
10+
11+
public EventSourceTestCustomResourceSpec getSpec() {
12+
return spec;
13+
}
14+
15+
public void setSpec(EventSourceTestCustomResourceSpec spec) {
16+
this.spec = spec;
17+
}
18+
19+
public EventSourceTestCustomResourceStatus getStatus() {
20+
return status;
21+
}
22+
23+
public void setStatus(EventSourceTestCustomResourceStatus status) {
24+
this.status = status;
25+
}
26+
27+
@Override
28+
public String toString() {
29+
return "TestCustomResource{" +
30+
"spec=" + spec +
31+
", status=" + status +
32+
", extendedFrom=" + super.toString() +
33+
'}';
34+
}
35+
}

0 commit comments

Comments
 (0)