@Test public void shouldReturnTheSameConsumer() { Bulkhead.EventPublisher eventPublisher = bulkhead.getEventPublisher(); Bulkhead.EventPublisher eventPublisher2 = bulkhead.getEventPublisher(); assertThat(eventPublisher).isEqualTo(eventPublisher2); }
@Test public void shouldConsumeOnCallFinishedEventOnComplete() throws Exception { // Given Bulkhead bulkhead = Bulkhead.of("test", config); // When bulkhead.getEventPublisher() .onCallFinished(event -> logger.info(event.getEventType().toString())); bulkhead.onComplete(); // Then then(logger).should(times(1)).info("CALL_FINISHED"); } }
@Test public void shouldConsumeOnCallFinishedEventWhenExecutionIsFinished() throws Exception { // Given Bulkhead bulkhead = Bulkhead.of("test", config); // When bulkhead.getEventPublisher() .onCallFinished(event -> logger.info(event.getEventType().toString())); Try.ofSupplier(Bulkhead.decorateSupplier(bulkhead,helloWorldService::returnHelloWorld)); // Then then(logger).should(times(1)).info("CALL_FINISHED"); }
@Test public void shouldConsumeOnCallPermittedEvent() { // Given Bulkhead bulkhead = Bulkhead.of("test", config); BDDMockito.given(helloWorldService.returnHelloWorld()).willReturn("Hello world"); // When bulkhead.getEventPublisher() .onCallPermitted(event -> logger.info(event.getEventType().toString())); String result = bulkhead.executeSupplier(helloWorldService::returnHelloWorld); // Then assertThat(result).isEqualTo("Hello world"); then(logger).should(times(1)).info("CALL_PERMITTED"); }
@Test public void shouldConsumeOnCallRejectedEvent() { // Given Bulkhead bulkhead = Bulkhead.of("test", config); // When bulkhead.getEventPublisher() .onCallRejected(event -> logger.info(event.getEventType().toString())); bulkhead.isCallPermitted(); Try.ofSupplier(Bulkhead.decorateSupplier(bulkhead,helloWorldService::returnHelloWorld)); // Then then(logger).should(times(1)).info("CALL_REJECTED"); }
bulkhead.getEventPublisher().onEvent(bConsumerRegistry.createEventConsumer(name, endpointsConfig.getBulkheads().getEventConsumerBufferSize()));
@Before public void setUp() { BulkheadConfig config = BulkheadConfig.custom() .maxConcurrentCalls(2) .maxWaitTime(0) .build(); bulkhead = Bulkhead.of("test", config); testSubscriber = RxJava2Adapter.toFlowable(bulkhead.getEventPublisher()) .map(BulkheadEvent::getEventType) .test(); }
); chain1.get("stream/events", ctx -> { Seq<Flux<BulkheadEvent>> eventStreams = bulkheadRegistry.getAllBulkheads().map(bulkhead -> ReactorAdapter.toFlux(bulkhead.getEventPublisher())); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b)); ServerSentEvents events = ServerSentEvents.serverSentEvents(Flux.merge(eventStreams), e -> e.id(BulkheadEvent::getBulkheadName).event(c -> c.getEventType().name()).data(data)); .getOrElseThrow(() -> new IllegalArgumentException(String.format("bulkhead with name %s not found", bulkheadName))); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b)); ServerSentEvents events = ServerSentEvents.serverSentEvents(ReactorAdapter.toFlux(bulkhead.getEventPublisher()), e -> e.id(BulkheadEvent::getBulkheadName).event(c -> c.getEventType().name()).data(data)); ctx.render(events); }); Bulkhead bulkhead = bulkheadRegistry.getAllBulkheads().find(b -> b.getName().equals(bulkheadName)) .getOrElseThrow(() -> new IllegalArgumentException(String.format("bulkhead with name %s not found", bulkheadName))); Flux<BulkheadEvent> eventStream = ReactorAdapter.toFlux(bulkhead.getEventPublisher()) .filter(event -> event.getEventType() == BulkheadEvent.Type.valueOf(eventType.toUpperCase())); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b));
bulkhead.getEventPublisher().onEvent(bConsumerRegistry.createEventConsumer(name, endpointsConfig.getBulkheads().getEventConsumerBufferSize()));
); chain1.get("stream/events", ctx -> { Seq<Flux<BulkheadEvent>> eventStreams = bulkheadRegistry.getAllBulkheads().map(bulkhead -> ReactorAdapter.toFlux(bulkhead.getEventPublisher())); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b)); ServerSentEvents events = ServerSentEvents.serverSentEvents(Flux.merge(eventStreams), e -> e.id(BulkheadEvent::getBulkheadName).event(c -> c.getEventType().name()).data(data)); .getOrElseThrow(() -> new IllegalArgumentException(String.format("bulkhead with name %s not found", bulkheadName))); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b)); ServerSentEvents events = ServerSentEvents.serverSentEvents(ReactorAdapter.toFlux(bulkhead.getEventPublisher()), e -> e.id(BulkheadEvent::getBulkheadName).event(c -> c.getEventType().name()).data(data)); ctx.render(events); }); Bulkhead bulkhead = bulkheadRegistry.getAllBulkheads().find(b -> b.getName().equals(bulkheadName)) .getOrElseThrow(() -> new IllegalArgumentException(String.format("bulkhead with name %s not found", bulkheadName))); Flux<BulkheadEvent> eventStream = ReactorAdapter.toFlux(bulkhead.getEventPublisher()) .filter(event -> event.getEventType() == BulkheadEvent.Type.valueOf(eventType.toUpperCase())); Function<BulkheadEvent, String> data = b -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(BulkheadEventDTO.createEventDTO(b));