@Test public void testForceShutdownAfterShutdown() throws InterruptedException { TopicProcessor<String> processor = TopicProcessor.<String>builder().name("processor").bufferSize(4).build(); Publisher<String> publisher = Flux.fromArray(new String[] { "1", "2", "3", "4", "5" }); publisher.subscribe(processor); AssertSubscriber<String> subscriber = AssertSubscriber.create(0); processor.subscribe(subscriber); subscriber.request(1); Thread.sleep(250); processor.shutdown(); assertFalse(processor.awaitAndShutdown(Duration.ofMillis(400))); processor.forceShutdown(); assertTrue(processor.awaitAndShutdown(Duration.ofMillis(400))); }
@Test public void testShutdownSuccessfulAfterAllDataIsRequested() throws InterruptedException { TopicProcessor<String> processor = TopicProcessor.<String>builder().name("processor").bufferSize(4).build(); Publisher<String> publisher = Flux.fromArray(new String[] { "1", "2", "3", "4", "5" }); publisher.subscribe(processor); AssertSubscriber<String> subscriber = AssertSubscriber.create(0); processor.subscribe(subscriber); subscriber.request(1); Thread.sleep(250); processor.shutdown(); assertFalse(processor.awaitAndShutdown(Duration.ofMillis(250))); subscriber.request(4); assertTrue(processor.awaitAndShutdown(Duration.ofMillis(250))); }
@Test public void testShutdown() { for (int i = 0; i < 1000; i++) { TopicProcessor<?> dispatcher = TopicProcessor.<String>builder().name("rb-test-dispose").bufferSize(16).build(); dispatcher.awaitAndShutdown(); } }
@Test public void testForceShutdownWhileWaitingForRequest() throws InterruptedException { TopicProcessor<String> processor = TopicProcessor.<String>builder().name("processor").bufferSize(4).build(); Publisher<String> publisher = Flux.fromArray(new String[] { "1", "2", "3", "4", "5" }); publisher.subscribe(processor); AssertSubscriber<String> subscriber = AssertSubscriber.create(0); processor.subscribe(subscriber); subscriber.request(1); Thread.sleep(250); processor.forceShutdown(); assertTrue(processor.awaitAndShutdown(Duration.ofSeconds(1))); }
@Test public void testForceShutdownWhileWaitingForMoreData() throws InterruptedException { TopicProcessor<String> processor = TopicProcessor.<String>builder().name("processor").bufferSize(4).build(); Publisher<String> publisher = new CappedPublisher(2); publisher.subscribe(processor); AssertSubscriber<String> subscriber = AssertSubscriber.create(0); processor.subscribe(subscriber); subscriber.request(3); Thread.sleep(250); processor.forceShutdown(); assertTrue(processor.awaitAndShutdown(Duration.ofSeconds(5))); }
@Test public void testTopicProcessorGetters() { final int TEST_BUFFER_SIZE = 16; TopicProcessor<Object> processor = TopicProcessor.builder().name("testProcessor").bufferSize(TEST_BUFFER_SIZE).build(); assertEquals(TEST_BUFFER_SIZE, processor.getAvailableCapacity()); processor.awaitAndShutdown(); }
@Test public void testForceShutdownWhileWaitingForInitialRequest() throws InterruptedException { TopicProcessor<String> processor = TopicProcessor.<String>builder().name("processor").bufferSize(4).build(); Publisher<String> publisher = new CappedPublisher(2); publisher.subscribe(processor); AssertSubscriber<String> subscriber = AssertSubscriber.create(0); processor.subscribe(subscriber); processor.forceShutdown(); assertTrue(processor.awaitAndShutdown(Duration.ofSeconds(5))); }