Search in sources :

Example 1 with TimeLimiterEventDTO

use of io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO in project resilience4j by resilience4j.

the class TimeLimiterEventDTOTest method shouldMapTimeLimiterOnErrorEvent.

@Test
public void shouldMapTimeLimiterOnErrorEvent() {
    TimeLimiterOnErrorEvent event = new TimeLimiterOnErrorEvent("name", new IOException("Error message"));
    TimeLimiterEventDTO timeLimiterEventDTO = TimeLimiterEventDTO.createTimeLimiterEventDTO(event);
    assertThat(timeLimiterEventDTO.getTimeLimiterName()).isEqualTo("name");
    assertThat(timeLimiterEventDTO.getType()).isEqualTo(TimeLimiterEvent.Type.ERROR);
    assertThat(timeLimiterEventDTO.getCreationTime()).isNotNull();
}
Also used : TimeLimiterEventDTO(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO) IOException(java.io.IOException) TimeLimiterOnErrorEvent(io.github.resilience4j.timelimiter.event.TimeLimiterOnErrorEvent) Test(org.junit.Test)

Example 2 with TimeLimiterEventDTO

use of io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO in project resilience4j by resilience4j.

the class TimeLimiterEventDTOTest method shouldMapTimeLimiterOnTimeoutEvent.

@Test
public void shouldMapTimeLimiterOnTimeoutEvent() {
    TimeLimiterOnTimeoutEvent event = new TimeLimiterOnTimeoutEvent("name");
    TimeLimiterEventDTO timeLimiterEventDTO = TimeLimiterEventDTO.createTimeLimiterEventDTO(event);
    assertThat(timeLimiterEventDTO.getTimeLimiterName()).isEqualTo("name");
    assertThat(timeLimiterEventDTO.getType()).isEqualTo(TimeLimiterEvent.Type.TIMEOUT);
    assertThat(timeLimiterEventDTO.getCreationTime()).isNotNull();
}
Also used : TimeLimiterEventDTO(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO) TimeLimiterOnTimeoutEvent(io.github.resilience4j.timelimiter.event.TimeLimiterOnTimeoutEvent) Test(org.junit.Test)

Example 3 with TimeLimiterEventDTO

use of io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO in project resilience4j by resilience4j.

the class TimeLimiterEventDTOTest method shouldMapTimeLimiterOnSuccessEvent.

@Test
public void shouldMapTimeLimiterOnSuccessEvent() {
    TimeLimiterOnSuccessEvent event = new TimeLimiterOnSuccessEvent("name");
    TimeLimiterEventDTO timeLimiterEventDTO = TimeLimiterEventDTO.createTimeLimiterEventDTO(event);
    assertThat(timeLimiterEventDTO.getTimeLimiterName()).isEqualTo("name");
    assertThat(timeLimiterEventDTO.getType()).isEqualTo(TimeLimiterEvent.Type.SUCCESS);
    assertThat(timeLimiterEventDTO.getCreationTime()).isNotNull();
}
Also used : TimeLimiterOnSuccessEvent(io.github.resilience4j.timelimiter.event.TimeLimiterOnSuccessEvent) TimeLimiterEventDTO(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO) Test(org.junit.Test)

Example 4 with TimeLimiterEventDTO

use of io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO in project resilience4j by resilience4j.

the class TimeLimiterChain method execute.

@Override
public void execute(Chain chain) throws Exception {
    String prefix = chain.getRegistry().get(Resilience4jConfig.class).getEndpoints().getTimelimiter().getPath();
    chain.prefix(prefix, chain1 -> {
        chain1.get("events", ctx -> Promise.<TimeLimiterEventsEndpointResponse>async(d -> {
            List<TimeLimiterEventDTO> eventsList = eventConsumerRegistry.getAllEventConsumer().stream().flatMap(CircularEventConsumer::getBufferedEventsStream).sorted(Comparator.comparing(TimeLimiterEvent::getCreationTime)).map(TimeLimiterEventDTO::createTimeLimiterEventDTO).collect(Collectors.toList());
            d.success(new TimeLimiterEventsEndpointResponse(eventsList));
        }).then(r -> ctx.render(Jackson.json(r))));
        chain1.get("stream/events", ctx -> {
            Flux<TimeLimiterEvent> eventStreams = Flux.fromIterable(timeLimiterRegistry.getAllTimeLimiters()).flatMap(timeLimiter -> ReactorAdapter.toFlux(timeLimiter.getEventPublisher()));
            Function<TimeLimiterEvent, String> data = r -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(TimeLimiterEventDTO.createTimeLimiterEventDTO(r));
            ServerSentEvents events = ServerSentEvents.serverSentEvents(eventStreams, e -> e.id(TimeLimiterEvent::getTimeLimiterName).event(c -> c.getEventType().name()).data(data));
            ctx.render(events);
        });
        chain1.get("events/:name", ctx -> {
            String timeLimiterName = ctx.getPathTokens().get("name");
            Promise.<TimeLimiterEventsEndpointResponse>async(d -> {
                List<TimeLimiterEventDTO> eventsList = eventConsumerRegistry.getEventConsumer(timeLimiterName).getBufferedEventsStream().sorted(Comparator.comparing(TimeLimiterEvent::getCreationTime)).map(TimeLimiterEventDTO::createTimeLimiterEventDTO).collect(Collectors.toList());
                d.success(new TimeLimiterEventsEndpointResponse(eventsList));
            }).then(r -> ctx.render(Jackson.json(r)));
        });
        chain1.get("stream/events/:name", ctx -> {
            String timeLimiterName = ctx.getPathTokens().get("name");
            TimeLimiter timeLimiter = timeLimiterRegistry.getAllTimeLimiters().stream().filter(tL -> tL.getName().equals(timeLimiterName)).findAny().orElseThrow(() -> new IllegalArgumentException(String.format("time limiter with name %s not found", timeLimiterName)));
            Function<TimeLimiterEvent, String> data = r -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(TimeLimiterEventDTO.createTimeLimiterEventDTO(r));
            ServerSentEvents events = ServerSentEvents.serverSentEvents(ReactorAdapter.toFlux(timeLimiter.getEventPublisher()), e -> e.id(TimeLimiterEvent::getTimeLimiterName).event(c -> c.getEventType().name()).data(data));
            ctx.render(events);
        });
        chain1.get("events/:name/:type", ctx -> {
            String timeLimiterName = ctx.getPathTokens().get("name");
            String eventType = ctx.getPathTokens().get("type");
            Promise.<TimeLimiterEventsEndpointResponse>async(d -> {
                List<TimeLimiterEventDTO> eventsList = eventConsumerRegistry.getEventConsumer(timeLimiterName).getBufferedEventsStream().sorted(Comparator.comparing(TimeLimiterEvent::getCreationTime)).filter(event -> event.getEventType() == TimeLimiterEvent.Type.valueOf(eventType.toUpperCase())).map(TimeLimiterEventDTO::createTimeLimiterEventDTO).collect(Collectors.toList());
                d.success(new TimeLimiterEventsEndpointResponse(eventsList));
            }).then(r -> ctx.render(Jackson.json(r)));
        });
        chain1.get("stream/events/:name/:type", ctx -> {
            String timeLimiterName = ctx.getPathTokens().get("name");
            String eventType = ctx.getPathTokens().get("type");
            TimeLimiter timeLimiter = timeLimiterRegistry.getAllTimeLimiters().stream().filter(rL -> rL.getName().equals(timeLimiterName)).findAny().orElseThrow(() -> new IllegalArgumentException(String.format("time limiter with name %s not found", timeLimiterName)));
            Flux<TimeLimiterEvent> eventStream = ReactorAdapter.toFlux(timeLimiter.getEventPublisher()).filter(event -> event.getEventType() == TimeLimiterEvent.Type.valueOf(eventType.toUpperCase()));
            Function<TimeLimiterEvent, String> data = r -> Jackson.getObjectWriter(chain1.getRegistry()).writeValueAsString(TimeLimiterEventDTO.createTimeLimiterEventDTO(r));
            ServerSentEvents events = ServerSentEvents.serverSentEvents(eventStream, e -> e.id(TimeLimiterEvent::getTimeLimiterName).event(c -> c.getEventType().name()).data(data));
            ctx.render(events);
        });
    });
}
Also used : Function(ratpack.func.Function) ReactorAdapter(io.github.resilience4j.reactor.adapter.ReactorAdapter) TimeLimiterEvent(io.github.resilience4j.timelimiter.event.TimeLimiterEvent) TimeLimiterRegistry(io.github.resilience4j.timelimiter.TimeLimiterRegistry) Promise(ratpack.exec.Promise) Collectors(java.util.stream.Collectors) Resilience4jConfig(io.github.resilience4j.ratpack.Resilience4jConfig) Jackson(ratpack.jackson.Jackson) ServerSentEvents(ratpack.sse.ServerSentEvents) Chain(ratpack.handling.Chain) Inject(javax.inject.Inject) Flux(reactor.core.publisher.Flux) List(java.util.List) TimeLimiterEventDTO(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO) TimeLimiter(io.github.resilience4j.timelimiter.TimeLimiter) CircularEventConsumer(io.github.resilience4j.consumer.CircularEventConsumer) TimeLimiterEventsEndpointResponse(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventsEndpointResponse) Action(ratpack.func.Action) Comparator(java.util.Comparator) EventConsumerRegistry(io.github.resilience4j.consumer.EventConsumerRegistry) TimeLimiter(io.github.resilience4j.timelimiter.TimeLimiter) TimeLimiterEventDTO(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO) Resilience4jConfig(io.github.resilience4j.ratpack.Resilience4jConfig) TimeLimiterEventsEndpointResponse(io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventsEndpointResponse) ServerSentEvents(ratpack.sse.ServerSentEvents) TimeLimiterEvent(io.github.resilience4j.timelimiter.event.TimeLimiterEvent) List(java.util.List)

Aggregations

TimeLimiterEventDTO (io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventDTO)4 Test (org.junit.Test)3 TimeLimiterEventsEndpointResponse (io.github.resilience4j.common.timelimiter.monitoring.endpoint.TimeLimiterEventsEndpointResponse)1 CircularEventConsumer (io.github.resilience4j.consumer.CircularEventConsumer)1 EventConsumerRegistry (io.github.resilience4j.consumer.EventConsumerRegistry)1 Resilience4jConfig (io.github.resilience4j.ratpack.Resilience4jConfig)1 ReactorAdapter (io.github.resilience4j.reactor.adapter.ReactorAdapter)1 TimeLimiter (io.github.resilience4j.timelimiter.TimeLimiter)1 TimeLimiterRegistry (io.github.resilience4j.timelimiter.TimeLimiterRegistry)1 TimeLimiterEvent (io.github.resilience4j.timelimiter.event.TimeLimiterEvent)1 TimeLimiterOnErrorEvent (io.github.resilience4j.timelimiter.event.TimeLimiterOnErrorEvent)1 TimeLimiterOnSuccessEvent (io.github.resilience4j.timelimiter.event.TimeLimiterOnSuccessEvent)1 TimeLimiterOnTimeoutEvent (io.github.resilience4j.timelimiter.event.TimeLimiterOnTimeoutEvent)1 IOException (java.io.IOException)1 Comparator (java.util.Comparator)1 List (java.util.List)1 Collectors (java.util.stream.Collectors)1 Inject (javax.inject.Inject)1 Promise (ratpack.exec.Promise)1 Action (ratpack.func.Action)1