Skip to content

Commit 1134bbc

Browse files
committed
test: cover CachingInboundEventSourceTest
1 parent a00f3cc commit 1134bbc

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
package io.javaoperatorsdk.operator.processing.event.source.inbound;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
import static org.mockito.ArgumentMatchers.any;
5+
import static org.mockito.ArgumentMatchers.eq;
6+
import static org.mockito.Mockito.atLeast;
7+
import static org.mockito.Mockito.mock;
8+
import static org.mockito.Mockito.never;
9+
import static org.mockito.Mockito.times;
10+
import static org.mockito.Mockito.verify;
11+
import static org.mockito.Mockito.when;
12+
13+
import java.util.Collections;
14+
import java.util.Set;
15+
16+
import org.junit.jupiter.api.BeforeEach;
17+
import org.junit.jupiter.api.Test;
18+
19+
import io.javaoperatorsdk.operator.TestUtils;
20+
import io.javaoperatorsdk.operator.processing.event.EventHandler;
21+
import io.javaoperatorsdk.operator.processing.event.ResourceID;
22+
import io.javaoperatorsdk.operator.processing.event.source.AbstractEventSourceTestBase;
23+
import io.javaoperatorsdk.operator.processing.event.source.CacheKeyMapper;
24+
import io.javaoperatorsdk.operator.processing.event.source.SampleExternalResource;
25+
import io.javaoperatorsdk.operator.sample.simple.TestCustomResource;
26+
27+
public class CachingInboundEventSourceTest extends
28+
AbstractEventSourceTestBase<CachingInboundEventSource<SampleExternalResource, TestCustomResource>, EventHandler> {
29+
30+
public static final int PERIOD = 150;
31+
private CachingInboundEventSource.ResourceFetcher<SampleExternalResource, TestCustomResource> supplier = mock(
32+
CachingInboundEventSource.ResourceFetcher.class);
33+
private TestCustomResource testCustomResource = TestUtils.testCustomResource();
34+
private CacheKeyMapper<SampleExternalResource> cacheKeyMapper = r -> r.getName() + "#" + r.getValue();
35+
36+
@BeforeEach
37+
public void setup() {
38+
when(supplier.fetchResources(any()))
39+
.thenReturn(Set.of(SampleExternalResource.testResource1()));
40+
41+
setUpSource(new CachingInboundEventSource<>(supplier,
42+
SampleExternalResource.class, cacheKeyMapper));
43+
}
44+
45+
@Test
46+
void getSecondaryResourceFromCacheOrSupplier() throws InterruptedException {
47+
when(supplier.fetchResources(any()))
48+
.thenReturn(Set.of(SampleExternalResource.testResource1()));
49+
50+
var value = source.getSecondaryResources(testCustomResource);
51+
52+
verify(supplier, times(1)).fetchResources(eq(testCustomResource));
53+
verify(eventHandler, never()).handleEvent(any());
54+
assertThat(value).hasSize(1);
55+
56+
value = source.getSecondaryResources(testCustomResource);
57+
58+
assertThat(value).hasSize(1);
59+
verify(supplier, times(1)).fetchResources(eq(testCustomResource));
60+
verify(eventHandler, never()).handleEvent(any());
61+
62+
source.handleResourceEvent(ResourceID.fromResource(testCustomResource), Set.of(SampleExternalResource.testResource1(), SampleExternalResource.testResource2()));
63+
64+
verify(supplier, times(1)).fetchResources(eq(testCustomResource));
65+
value = source.getSecondaryResources(testCustomResource);
66+
assertThat(value).hasSize(2);
67+
}
68+
69+
@Test
70+
void propagateEventOnDeletedResource() throws InterruptedException {
71+
source.handleResourceEvent(ResourceID.fromResource(testCustomResource), SampleExternalResource.testResource1());
72+
source.handleResourceDeleteEvent(ResourceID.fromResource(testCustomResource),
73+
cacheKeyMapper.keyFor(SampleExternalResource.testResource1()));
74+
source.handleResourceDeleteEvent(ResourceID.fromResource(testCustomResource),
75+
cacheKeyMapper.keyFor(SampleExternalResource.testResource2()));
76+
77+
verify(eventHandler, times(2)).handleEvent(any());
78+
}
79+
80+
@Test
81+
void propagateEventOnUpdateResources() throws InterruptedException {
82+
source.handleResourceEvent(ResourceID.fromResource(testCustomResource),
83+
Set.of(SampleExternalResource.testResource1(), SampleExternalResource.testResource2()));
84+
85+
verify(eventHandler, times(1)).handleEvent(any());
86+
}
87+
}

0 commit comments

Comments
 (0)