Skip to content

Commit 6970a8e

Browse files
committed
fix: unit tests for event sources
1 parent 5f0f541 commit 6970a8e

File tree

9 files changed

+295
-91
lines changed

9 files changed

+295
-91
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/inbound/SimpleInboundEventSource.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ public void propagateEvent(ResourceID resourceID) {
1818
log.debug("Event source not started yet, not propagating event for: {}", resourceID);
1919
}
2020
}
21+
2122
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PerResourcePollingEventSource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,8 @@ public void onResourceDeleted(R resource) {
9292

9393
private void checkAndRegisterTask(R resource) {
9494
var resourceID = ResourceID.fromResource(resource);
95-
if (timerTasks.get(resourceID) == null || registerPredicate == null
96-
|| registerPredicate.test(resource)) {
95+
if (timerTasks.get(resourceID) == null && (registerPredicate == null
96+
|| registerPredicate.test(resource))) {
9797
timer.schedule(new TimerTask() {
9898
@Override
9999
public void run() {

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/source/polling/PollingEventSource.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@ public class PollingEventSource<T> extends CachingFilteringEventSource<T> {
2323
private final Supplier<Map<ResourceID, T>> supplierToPoll;
2424
private final long period;
2525

26+
public PollingEventSource(Supplier<Map<ResourceID, T>> supplier,
27+
long period, Cache<ResourceID, T> cache) {
28+
this(supplier,period,null, cache);
29+
}
30+
2631
public PollingEventSource(Supplier<Map<ResourceID, T>> supplier,
2732
long period, EventFilter<T> eventFilter, Cache<ResourceID, T> cache) {
2833
super(cache, eventFilter);
@@ -32,6 +37,7 @@ public PollingEventSource(Supplier<Map<ResourceID, T>> supplier,
3237

3338
@Override
3439
public void start() throws OperatorException {
40+
super.start();
3541
timer.schedule(new TimerTask() {
3642
@Override
3743
public void run() {
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,5 @@
11
package io.javaoperatorsdk.operator.processing.event.source;
22

3-
import java.io.Serializable;
4-
import java.util.Objects;
5-
63
import javax.cache.Cache;
74
import javax.cache.CacheManager;
85
import javax.cache.configuration.MutableConfiguration;
@@ -18,13 +15,12 @@
1815

1916
import com.github.benmanes.caffeine.jcache.spi.CaffeineCachingProvider;
2017

18+
import static io.javaoperatorsdk.operator.processing.event.source.SampleExternalResource.*;
2119
import static org.assertj.core.api.Assertions.assertThat;
22-
import static org.junit.jupiter.api.Assertions.*;
2320
import static org.mockito.Mockito.*;
2421

2522
class CachingFilteringEventSourceTest {
2623

27-
public static final String DEFAULT_VALUE = "value";
2824
private CachingFilteringEventSource<SampleExternalResource> cachingFilteringEventSource;
2925
private Cache<ResourceID, SampleExternalResource> cache;
3026
private EventHandler eventHandlerMock = mock(EventHandler.class);
@@ -47,137 +43,85 @@ public void tearDown() {
4743

4844
@Test
4945
public void putsNewResourceIntoCacheAndProducesEvent() {
50-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
46+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
5147

52-
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResourceID())));
53-
assertThat(cachingFilteringEventSource.getCachedValue(testResourceID())).isPresent();
48+
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResource1ID())));
49+
assertThat(cachingFilteringEventSource.getCachedValue(testResource1ID())).isPresent();
5450
}
5551

5652
@Test
5753
public void propagatesEventIfResourceChanged() {
58-
var res2 = testResource();
54+
var res2 = testResource1();
5955
res2.setValue("changedValue");
60-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
61-
cachingFilteringEventSource.handleEvent(res2, testResourceID());
56+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
57+
cachingFilteringEventSource.handleEvent(res2, testResource1ID());
6258

6359

64-
verify(eventHandlerMock, times(2)).handleEvent(eq(new Event(testResourceID())));
65-
assertThat(cachingFilteringEventSource.getCachedValue(testResourceID()).get()).isEqualTo(res2);
60+
verify(eventHandlerMock, times(2)).handleEvent(eq(new Event(testResource1ID())));
61+
assertThat(cachingFilteringEventSource.getCachedValue(testResource1ID()).get()).isEqualTo(res2);
6662
}
6763

6864
@Test
6965
public void noEventPropagatedIfTheResourceIsNotChanged() {
70-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
71-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
66+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
67+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
7268

73-
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResourceID())));
74-
assertThat(cachingFilteringEventSource.getCachedValue(testResourceID())).isPresent();
69+
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResource1ID())));
70+
assertThat(cachingFilteringEventSource.getCachedValue(testResource1ID())).isPresent();
7571
}
7672

7773
@Test
7874
public void supportFilteringEvents() {
7975
cachingFilteringEventSource = new SimpleCachingFilteringEventSource(cache,
80-
(newValue, oldValue, relatedResourceID) -> !newValue.getValue().equals(DEFAULT_VALUE));
76+
(newValue, oldValue, relatedResourceID) -> !newValue.getValue().equals(DEFAULT_VALUE_1));
8177
cachingFilteringEventSource.setEventHandler(eventHandlerMock);
8278
cachingFilteringEventSource.start();
8379

84-
var res2 = testResource();
80+
var res2 = testResource1();
8581
res2.setValue("changedValue");
86-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
87-
cachingFilteringEventSource.handleEvent(res2, testResourceID());
82+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
83+
cachingFilteringEventSource.handleEvent(res2, testResource1ID());
8884

8985

90-
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResourceID())));
91-
assertThat(cachingFilteringEventSource.getCachedValue(testResourceID()).get()).isEqualTo(res2);
86+
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResource1ID())));
87+
assertThat(cachingFilteringEventSource.getCachedValue(testResource1ID()).get()).isEqualTo(res2);
9288
}
9389

9490
@Test
9591
public void propagatesEventOnDeleteIfThereIsPrevResourceInCache() {
96-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
97-
cachingFilteringEventSource.handleDelete(testResourceID());
92+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
93+
cachingFilteringEventSource.handleDelete(testResource1ID());
9894

99-
verify(eventHandlerMock, times(2)).handleEvent(eq(new Event(testResourceID())));
100-
assertThat(cachingFilteringEventSource.getCachedValue(testResourceID())).isNotPresent();
95+
verify(eventHandlerMock, times(2)).handleEvent(eq(new Event(testResource1ID())));
96+
assertThat(cachingFilteringEventSource.getCachedValue(testResource1ID())).isNotPresent();
10197
}
10298

10399
@Test
104100
public void noEventOnDeleteIfResourceWasNotInCacheBefore() {
105-
cachingFilteringEventSource.handleDelete(testResourceID());
101+
cachingFilteringEventSource.handleDelete(testResource1ID());
106102

107-
verify(eventHandlerMock, times(0)).handleEvent(eq(new Event(testResourceID())));
103+
verify(eventHandlerMock, times(0)).handleEvent(eq(new Event(testResource1ID())));
108104
}
109105

110106
@Test
111107
public void deleteSupportsFiltering() {
112108
cachingFilteringEventSource = new SimpleCachingFilteringEventSource(cache,
113-
(newValue, oldValue, relatedResourceID) -> !newValue.getValue().equals(DEFAULT_VALUE));
109+
(newValue, oldValue, relatedResourceID) -> !newValue.getValue().equals(DEFAULT_VALUE_1));
114110
cachingFilteringEventSource.setEventHandler(eventHandlerMock);
115111
cachingFilteringEventSource.start();
116112

117-
cachingFilteringEventSource.handleEvent(testResource(), testResourceID());
118-
cachingFilteringEventSource.handleDelete(testResourceID());
119-
120-
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResourceID())));
121-
}
122-
123-
private ResourceID testResourceID() {
124-
return new ResourceID("name1", "test-namespace");
125-
}
113+
cachingFilteringEventSource.handleEvent(testResource1(), testResource1ID());
114+
cachingFilteringEventSource.handleDelete(testResource1ID());
126115

127-
private SampleExternalResource testResource() {
128-
return new SampleExternalResource("name1", DEFAULT_VALUE);
116+
verify(eventHandlerMock, times(1)).handleEvent(eq(new Event(testResource1ID())));
129117
}
130-
118+
131119
public static class SimpleCachingFilteringEventSource
132120
extends CachingFilteringEventSource<SampleExternalResource> {
133121
public SimpleCachingFilteringEventSource(Cache<ResourceID, SampleExternalResource> cache,
134122
EventFilter<SampleExternalResource> eventFilter) {
135123
super(cache, eventFilter);
136124
}
137125
}
138-
139-
public static class SampleExternalResource implements Serializable {
140-
private String name;
141-
private String value;
142-
143-
public SampleExternalResource(String name, String value) {
144-
this.name = name;
145-
this.value = value;
146-
}
147-
148-
public String getName() {
149-
return name;
150-
}
151-
152-
public SampleExternalResource setName(String name) {
153-
this.name = name;
154-
return this;
155-
}
156-
157-
public String getValue() {
158-
return value;
159-
}
160-
161-
public SampleExternalResource setValue(String value) {
162-
this.value = value;
163-
return this;
164-
}
165-
166-
@Override
167-
public boolean equals(Object o) {
168-
if (this == o)
169-
return true;
170-
if (o == null || getClass() != o.getClass())
171-
return false;
172-
SampleExternalResource that = (SampleExternalResource) o;
173-
return Objects.equals(name, that.name) && Objects.equals(value, that.value);
174-
}
175-
176-
@Override
177-
public int hashCode() {
178-
return Objects.hash(name, value);
179-
}
180-
181-
}
182-
126+
183127
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package io.javaoperatorsdk.operator.processing.event.source;
2+
3+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
4+
5+
import java.io.Serializable;
6+
import java.util.Objects;
7+
8+
public class SampleExternalResource implements Serializable {
9+
10+
public static final String DEFAULT_VALUE_1 = "value1";
11+
public static final String DEFAULT_VALUE_2 = "value2";
12+
public static final String NAME_1 = "name1";
13+
public static final String NAME_2 = "name2";
14+
15+
public static SampleExternalResource testResource1() {
16+
return new SampleExternalResource(NAME_1, DEFAULT_VALUE_1);
17+
}
18+
19+
public static SampleExternalResource testResource2() {
20+
return new SampleExternalResource(NAME_2, DEFAULT_VALUE_2);
21+
}
22+
23+
public static ResourceID testResource1ID() {
24+
return new ResourceID(NAME_1,"testns");
25+
}
26+
27+
public static ResourceID testResource2ID() {
28+
return new ResourceID(NAME_2,"testns");
29+
}
30+
31+
private String name;
32+
private String value;
33+
34+
public SampleExternalResource(String name, String value) {
35+
this.name = name;
36+
this.value = value;
37+
}
38+
39+
public String getName() {
40+
return name;
41+
}
42+
43+
public SampleExternalResource setName(String name) {
44+
this.name = name;
45+
return this;
46+
}
47+
48+
public String getValue() {
49+
return value;
50+
}
51+
52+
public SampleExternalResource setValue(String value) {
53+
this.value = value;
54+
return this;
55+
}
56+
57+
@Override
58+
public boolean equals(Object o) {
59+
if (this == o)
60+
return true;
61+
if (o == null || getClass() != o.getClass())
62+
return false;
63+
SampleExternalResource that = (SampleExternalResource) o;
64+
return Objects.equals(name, that.name) && Objects.equals(value, that.value);
65+
}
66+
67+
@Override
68+
public int hashCode() {
69+
return Objects.hash(name, value);
70+
}
71+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package io.javaoperatorsdk.operator.processing.event.source;
1+
package io.javaoperatorsdk.operator.processing.event.source.controller;
22

33
import java.time.LocalDateTime;
44
import java.util.List;

0 commit comments

Comments
 (0)