This is an automated email from the ASF dual-hosted git repository. cschneider pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-distribution-journal.git
commit f84524f3dea2e118e9dfae83b5382eb4051b10ba Author: Christian Schneider <[email protected]> AuthorDate: Wed Jan 29 12:13:19 2020 +0100 SLING-9037 - Cleanup test --- .../journal/impl/subscriber/SubscriberTest.java | 117 ++++++++++++--------- 1 file changed, 68 insertions(+), 49 deletions(-) diff --git a/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java b/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java index 6337c60..d46e5f1 100644 --- a/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java +++ b/src/test/java/org/apache/sling/distribution/journal/impl/subscriber/SubscriberTest.java @@ -39,6 +39,7 @@ import java.io.ByteArrayInputStream; import java.io.Closeable; import java.io.IOException; import java.util.Arrays; +import java.util.Collections; import java.util.Dictionary; import java.util.HashMap; import java.util.List; @@ -115,9 +116,6 @@ public class SubscriberTest { private static final String PUB1_SLING_ID = "pub1sling"; private static final String PUB1_AGENT_NAME = "pub1agent"; - private static final Map<String, String> BASIC_PROPS = ImmutableMap.of("name", SUB1_AGENT_NAME, - "agentNames", PUB1_AGENT_NAME); - private static final PackageMessage BASIC_ADD_PACKAGE = PackageMessage.newBuilder() .setPkgId("myid") .setPubSlingId(PUB1_SLING_ID) @@ -174,20 +172,6 @@ public class SubscriberTest { @Mock private DistributionMetricsService distributionMetricsService; - @Mock - private Histogram histogram; - - @Mock - private Counter counter; - - @Mock - private Meter meter; - - @Mock - private Timer timer; - - @Mock - private Timer.Context timerContext; @Mock private SubscriberIdle subscriberIdle; @@ -218,27 +202,8 @@ public class SubscriberTest { MockitoAnnotations.initMocks(this); when(packageBuilder.getType()).thenReturn("journal"); when(slingSettings.getSlingId()).thenReturn(SUB1_SLING_ID); - when(precondition.canProcess(anyLong(), anyInt())).thenReturn(true); - when(timer.time()) - .thenReturn(timerContext); - when(distributionMetricsService.getImportedPackageSize()) - .thenReturn(histogram); - when(distributionMetricsService.getItemsBufferSize()) - .thenReturn(counter); - when(distributionMetricsService.getFailedPackageImports()) - .thenReturn(meter); - when(distributionMetricsService.getRemovedFailedPackageDuration()) - .thenReturn(timer); - when(distributionMetricsService.getRemovedPackageDuration()) - .thenReturn(timer); - when(distributionMetricsService.getImportedPackageDuration()) - .thenReturn(timer); - when(distributionMetricsService.getSendStoredStatusDuration()) - .thenReturn(timer); - when(distributionMetricsService.getProcessQueueItemDuration()) - .thenReturn(timer); - when(distributionMetricsService.getPackageDistributedDuration()) - .thenReturn(timer); + + mockMetrics(); when(clientProvider.<PackageStatusMessage>createSender()).thenReturn(statusSender, (MessageSender) discoverySender); when(clientProvider.createPoller( @@ -251,7 +216,7 @@ public class SubscriberTest { // you should call initSubscriber in each test method } - + @After public void after() throws IOException { subscriber.deactivate(); @@ -260,7 +225,8 @@ public class SubscriberTest { @Test public void testReceive() throws DistributionException, InterruptedException { - initSubscriber(BASIC_PROPS); + assumeNoPrecondition(); + initSubscriber(); assertThat(subscriber.getQueueNames(), contains(PUB1_AGENT_NAME)); assertThat(subscriber.getQueue(PUB1_AGENT_NAME).getStatus().getState(), equalTo(DistributionQueueState.IDLE)); @@ -292,7 +258,8 @@ public class SubscriberTest { @Test public void testReceiveDelete() throws DistributionException, InterruptedException, LoginException, PersistenceException { - initSubscriber(BASIC_PROPS); + assumeNoPrecondition(); + initSubscriber(); try (ResourceResolver resolver = resolverFactory.getServiceResourceResolver(null)) { ResourceUtil.getOrCreateResource(resolver, "/test","sling:Folder", "sling:Folder", true); @@ -311,7 +278,8 @@ public class SubscriberTest { @Test public void testExecuteNotSupported() throws InterruptedException, DistributionException { - initSubscriber(BASIC_PROPS); + assumeNoPrecondition(); + initSubscriber(); DistributionRequest request = new SimpleDistributionRequest(DistributionRequestType.ADD, "test"); DistributionResponse response = subscriber.execute(resourceResolver, request); @@ -321,7 +289,8 @@ public class SubscriberTest { @Test public void testSendFailedStatus() throws DistributionException, InterruptedException { - initSubscriber(BASIC_PROPS, ImmutableMap.of("maxRetries", "1")); + assumeNoPrecondition(); + initSubscriber(ImmutableMap.of("maxRetries", "1")); MessageInfo info = new TestMessageInfo("", 1, 0, 0); PackageMessage message = BASIC_ADD_PACKAGE; @@ -337,7 +306,8 @@ public class SubscriberTest { @Test public void testSendSuccessStatus() throws DistributionException, InterruptedException { - initSubscriber(BASIC_PROPS, ImmutableMap.of("editable", "true")); + assumeNoPrecondition(); + initSubscriber(ImmutableMap.of("editable", "true")); MessageInfo info = new TestMessageInfo("", 1, 0, 0); PackageMessage message = BASIC_ADD_PACKAGE; @@ -351,7 +321,8 @@ public class SubscriberTest { @Test public void testSkipOnRemovedStatus() throws DistributionException, InterruptedException { - initSubscriber(BASIC_PROPS); + assumeNoPrecondition(); + initSubscriber(); MessageInfo info = new TestMessageInfo("", 1, 11, 0); PackageMessage message = BASIC_ADD_PACKAGE; @@ -370,12 +341,24 @@ public class SubscriberTest { waitSubscriber(IDLE); } + + @Test + public void testIdleWhenWatingForGM() { + assumeWaitingForGM(); + initSubscriber(); + } + + private void initSubscriber() { + initSubscriber(Collections.emptyMap()); + } - private void initSubscriber(Map<String, String>... allprops) { + private void initSubscriber(Map<String, String> overrides) { + Map<String, String> basicProps = ImmutableMap.of( + "name", SUB1_AGENT_NAME, + "agentNames", PUB1_AGENT_NAME); Map<String, Object> props = new HashMap<>(); - for(Map<String, String> p : allprops) { - props.putAll(p); - } + props.putAll(basicProps); + props.putAll(overrides); SubscriberConfiguration config = Converters.standardConverter().convert(props).to(SubscriberConfiguration.class); subscriber.activate(config, context, props); packageHandler = packageCaptor.getValue().getHandler(); @@ -385,6 +368,42 @@ public class SubscriberTest { await().until(subscriber::getState, equalTo(expectedState)); } + private void mockMetrics() { + Histogram histogram = Mockito.mock(Histogram.class); + Counter counter = Mockito.mock(Counter.class); + Meter meter = Mockito.mock(Meter.class); + Timer timer = Mockito.mock(Timer.class); + Timer.Context timerContext = Mockito.mock(Timer.Context.class); + when(timer.time()) + .thenReturn(timerContext); + when(distributionMetricsService.getImportedPackageSize()) + .thenReturn(histogram); + when(distributionMetricsService.getItemsBufferSize()) + .thenReturn(counter); + when(distributionMetricsService.getFailedPackageImports()) + .thenReturn(meter); + when(distributionMetricsService.getRemovedFailedPackageDuration()) + .thenReturn(timer); + when(distributionMetricsService.getRemovedPackageDuration()) + .thenReturn(timer); + when(distributionMetricsService.getImportedPackageDuration()) + .thenReturn(timer); + when(distributionMetricsService.getSendStoredStatusDuration()) + .thenReturn(timer); + when(distributionMetricsService.getProcessQueueItemDuration()) + .thenReturn(timer); + when(distributionMetricsService.getPackageDistributedDuration()) + .thenReturn(timer); + } + + private void assumeNoPrecondition() { + when(precondition.canProcess(anyLong(), anyInt())).thenReturn(true); + } + + private void assumeWaitingForGM() { + when(precondition.canProcess(anyLong(), anyInt())).thenReturn(false); + } + private final class WaitFor implements Answer<DistributionPackageInfo> { private final Semaphore sem;
