Skip to content

Commit 5552ecb

Browse files
committed
tests, improvements
1 parent def23c5 commit 5552ecb

File tree

13 files changed

+373
-563
lines changed

13 files changed

+373
-563
lines changed

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

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

33

4-
import io.javaoperatorsdk.operator.processing.event.DefaultEventSourceManager;
5-
import io.javaoperatorsdk.operator.processing.event.Event;
6-
import io.javaoperatorsdk.operator.processing.event.EventHandler;
7-
import io.javaoperatorsdk.operator.processing.event.ExecutionDescriptor;
4+
import io.javaoperatorsdk.operator.processing.event.*;
85
import org.slf4j.Logger;
96
import org.slf4j.LoggerFactory;
107

@@ -46,7 +43,7 @@ public void setDefaultEventSourceManager(DefaultEventSourceManager defaultEventS
4643
}
4744

4845
@Override
49-
public void handleEvent(Event event) {
46+
public void handleEvent(Event<? extends EventSource> event) {
5047
try {
5148
lock.lock();
5249
log.debug("Received event: {}", event);
@@ -63,6 +60,7 @@ private void executeBufferedEvents(String customResourceUid) {
6360
ExecutionScope executionScope = new ExecutionScope(
6461
eventBuffer.getAndRemoveEventsForExecution(customResourceUid),
6562
resourceCache.getLatestResource(customResourceUid).get());
63+
log.debug("Executing events for custom resource. Scope: {}", executionScope);
6664
executor.execute(new ExecutionConsumer(executionScope, eventDispatcher, this));
6765
}
6866
}

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

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,42 +8,32 @@
88
public class EventBuffer {
99

1010
private Map<String, List<Event>> events = new HashMap<>();
11-
private Map<String, CustomResourceEvent> latestCustomResourceEvent = new HashMap<>();
1211

1312
public void addEvent(Event event) {
1413
String uid = event.getRelatedCustomResourceUid();
15-
if (event instanceof CustomResourceEvent) {
16-
latestCustomResourceEvent.put(uid, (CustomResourceEvent) event);
17-
} else {
18-
List<Event> crEvents = events.get(uid);
19-
if (crEvents == null) {
20-
crEvents = new ArrayList<>(1);
21-
events.put(uid, crEvents);
22-
}
23-
crEvents.add(event);
14+
List<Event> crEvents = events.get(uid);
15+
if (crEvents == null) {
16+
crEvents = new ArrayList<>(1);
17+
events.put(uid, crEvents);
2418
}
19+
crEvents.add(event);
2520
}
2621

2722
public boolean containsEvents(String customResourceId) {
28-
return events.get(customResourceId) != null || latestCustomResourceEvent.get(customResourceId) != null;
23+
return events.get(customResourceId) != null;
2924
}
3025

3126
public List<Event> getAndRemoveEventsForExecution(String resourceUid) {
3227
List<Event> crEvents = events.remove(resourceUid);
3328
if (crEvents == null) {
3429
crEvents = Collections.emptyList();
3530
}
36-
List<Event> result = new ArrayList<>(crEvents.size() + 1);
37-
CustomResourceEvent customResourceEvent = latestCustomResourceEvent.get(resourceUid);
38-
if (customResourceEvent != null) {
39-
result.add(customResourceEvent);
40-
latestCustomResourceEvent.remove(resourceUid);
41-
}
31+
List<Event> result = new ArrayList<>(crEvents);
32+
crEvents.clear();
4233
return result;
4334
}
4435

4536
public void cleanup(String resourceUid) {
4637
events.remove(resourceUid);
47-
latestCustomResourceEvent.remove(resourceUid);
4838
}
4939
}

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,11 @@ private boolean skipBecauseOfGenerations(ExecutionScope executionScope) {
9393
Event<?> event = executionScope.getEvents().get(0);
9494
if (event instanceof CustomResourceEvent) {
9595
Long actualGeneration = executionScope.getCustomResource().getMetadata().getGeneration();
96-
return actualGeneration <= lastGenerationProcessedSuccessfully.get(executionScope.getCustomResourceUid());
96+
Long lastGeneration = lastGenerationProcessedSuccessfully.get(executionScope.getCustomResourceUid());
97+
if (lastGeneration == null) {
98+
return false;
99+
}
100+
return actualGeneration <= lastGeneration;
97101
}
98102
}
99103
return false;

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,13 @@ public CustomResource getCustomResource() {
2828
public String getCustomResourceUid() {
2929
return customResource.getMetadata().getUid();
3030
}
31+
32+
@Override
33+
public String toString() {
34+
return "ExecutionScope{" +
35+
"events=" + events +
36+
", customResource uid: " + customResource.getMetadata().getUid() +
37+
", version: " + customResource.getMetadata().getResourceVersion() +
38+
'}';
39+
}
3140
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ public void registerCustomResourceEventSource(CustomResourceEventSource customRe
2929
this.customResourceEventSource.addedToEventManager();
3030
}
3131

32-
// Registration should happen from the same thread within controller
3332
@Override
3433
public <T extends EventSource> void registerEventSource(CustomResource customResource, String name, T eventSource) {
3534
try {

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

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

33
public interface EventHandler {
44

5-
void handleEvent(Event event);
5+
void handleEvent(Event<? extends EventSource> event);
66

77
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.*;
1010
import java.util.concurrent.ConcurrentHashMap;
1111
import java.util.concurrent.locks.ReentrantLock;
12-
12+
// todo tests
1313
public class TimerEventSource extends AbstractEventSource {
1414

1515
private Logger log = LoggerFactory.getLogger(TimerEventSource.class);

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

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,14 @@
1515
import java.util.HashMap;
1616
import java.util.concurrent.TimeUnit;
1717

18+
import static io.javaoperatorsdk.operator.TestUtils.TEST_CUSTOM_RESOURCE_NAME;
19+
import static io.javaoperatorsdk.operator.TestUtils.testCustomResource;
1820
import static org.assertj.core.api.Assertions.assertThat;
1921
import static org.awaitility.Awaitility.await;
2022

2123
@TestInstance(TestInstance.Lifecycle.PER_METHOD)
2224
public class ControllerExecutionIT {
2325

24-
public static final String TEST_CUSTOM_RESOURCE_NAME = "test-custom-resource";
2526
private IntegrationTestSupport integrationTestSupport = new IntegrationTestSupport();
2627

2728
public void initAndCleanup(boolean controllerStatusUpdate) {
@@ -99,19 +100,6 @@ void awaitStatusUpdated(int timeout) {
99100
});
100101
}
101102

102-
private TestCustomResource testCustomResource() {
103-
TestCustomResource resource = new TestCustomResource();
104-
resource.setMetadata(new ObjectMetaBuilder()
105-
.withName(TEST_CUSTOM_RESOURCE_NAME)
106-
.withNamespace(IntegrationTestSupport.TEST_NAMESPACE)
107-
.build());
108-
resource.getMetadata().setAnnotations(new HashMap<>());
109-
resource.setKind("CustomService");
110-
resource.setSpec(new TestCustomResourceSpec());
111-
resource.getSpec().setConfigMapName("test-config-map");
112-
resource.getSpec().setKey("test-key");
113-
resource.getSpec().setValue("test-value");
114-
return resource;
115-
}
103+
116104

117105
}

0 commit comments

Comments
 (0)