diff --git a/src/main/resources/entry-point/async-event-handler/commands-handler.java.mustache b/src/main/resources/entry-point/async-event-handler/commands-handler.java.mustache index 534d4edf..9474132c 100644 --- a/src/main/resources/entry-point/async-event-handler/commands-handler.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/commands-handler.java.mustache @@ -8,10 +8,12 @@ import org.reactivecommons.api.domain.Command; {{/eda}} import org.reactivecommons.async.impl.config.annotations.EnableCommandListeners; import reactor.core.publisher.Mono; +import lombok.extern.java.Log; +import java.util.logging.Level; {{#eda}} import io.cloudevents.CloudEvent; {{/eda}} - +@Log {{#lombok}} @AllArgsConstructor {{/lombok}} @@ -26,14 +28,14 @@ public class CommandsHandler { {{/lombok}} {{#eda}} public Mono handleCommandA(CloudEvent command) { - System.out.println("command received: " + command.getType() + " ->" + command.getData()); // TODO: Remove this line + log.log(Level.INFO, "Command received: {0} -> {1}", new Object[]{command.getType(), command.getData()}); // TODO: Remove this line // return sampleUseCase.doSomething(command.getData()); return Mono.empty(); } {{/eda}} {{^eda}} public Mono handleCommandA(Command command) { - System.out.println("command received: " + command.getName() + " ->" + command.getData()); // TODO: Remove this line + log.log(Level.INFO, "Command received: {0} -> {1}", new Object[]{command.getName(), command.getData()}); // TODO: Remove this line // return sampleUseCase.doSomething(command.getData()); return Mono.empty(); } diff --git a/src/main/resources/entry-point/async-event-handler/commands-handler.test.java.mustache b/src/main/resources/entry-point/async-event-handler/commands-handler.test.java.mustache index 596696c2..dcc9275d 100644 --- a/src/main/resources/entry-point/async-event-handler/commands-handler.test.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/commands-handler.test.java.mustache @@ -35,7 +35,7 @@ class CommandsHandlerTest { .withType("command") .withData("application/json", objectMapper.writeValueAsBytes("Data")) .build(); - StepVerifier.create(commandsHandler.handleCommandA(command)).expectComplete(); + StepVerifier.create(commandsHandler.handleCommandA(command)).expectComplete().verify(); } {{/eda}} {{^eda}} @@ -44,7 +44,7 @@ class CommandsHandlerTest { StepVerifier.create(commandsHandler.handleCommandA( new Command<>("COMMAND", UUID.randomUUID().toString(), - "Data"))).expectComplete(); + "Data"))).expectComplete().verify(); } {{/eda}} } diff --git a/src/main/resources/entry-point/async-event-handler/events-handler.java.mustache b/src/main/resources/entry-point/async-event-handler/events-handler.java.mustache index eaa82899..3e3d0cad 100644 --- a/src/main/resources/entry-point/async-event-handler/events-handler.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/events-handler.java.mustache @@ -8,10 +8,12 @@ import org.reactivecommons.api.domain.DomainEvent; {{/eda}} import org.reactivecommons.async.impl.config.annotations.EnableEventListeners; import reactor.core.publisher.Mono; +import lombok.extern.java.Log; +import java.util.logging.Level; {{#eda}} import io.cloudevents.CloudEvent; {{/eda}} - +@Log {{#lombok}} @AllArgsConstructor {{/lombok}} @@ -26,7 +28,7 @@ public class EventsHandler { {{/lombok}} {{#eda}} public Mono handleEventA(CloudEvent event) { - System.out.println("event received: " + event.getType() + " ->" + event.getData()); // TODO: Remove this line + log.log(Level.INFO, "Event received: {0} -> {1}", new Object[]{event.getType(), event.getData()}); // TODO: Remove this line // return sampleUseCase.doSomething(event.getData()); return Mono.empty(); } @@ -34,7 +36,7 @@ public class EventsHandler { {{^eda}} public Mono handleEventA(DomainEvent event) { - System.out.println("event received: " + event.getName() + " ->" + event.getData()); // TODO: Remove this line + log.log(Level.INFO, "Event received: {0} -> {1}", new Object[]{event.getName(), event.getData()}); // TODO: Remove this line // return sampleUseCase.doSomething(event.getData()); return Mono.empty(); } diff --git a/src/main/resources/entry-point/async-event-handler/events-handler.test.java.mustache b/src/main/resources/entry-point/async-event-handler/events-handler.test.java.mustache index 838cea3e..7bcee3e9 100644 --- a/src/main/resources/entry-point/async-event-handler/events-handler.test.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/events-handler.test.java.mustache @@ -34,14 +34,14 @@ class EventsHandlerTest { .withType("event") .withData("application/json", objectMapper.writeValueAsBytes("Data")) .build(); - StepVerifier.create(eventsHandler.handleEventA(event)).expectComplete(); + StepVerifier.create(eventsHandler.handleEventA(event)).expectComplete().verify(); } {{/eda}} {{^eda}} @Test void handleEventATest() { DomainEvent event = new DomainEvent<>("EVENT", UUID.randomUUID().toString(), "Data"); - StepVerifier.create(eventsHandler.handleEventA(event)).expectComplete(); + StepVerifier.create(eventsHandler.handleEventA(event)).expectComplete().verify(); } {{/eda}} } diff --git a/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.java.mustache b/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.java.mustache index 945ef580..cd355410 100644 --- a/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.java.mustache @@ -33,8 +33,8 @@ public class MetricsReporter implements CustomReporter { registry.timer("async_operation_flow_duration", "exception", "", "type", type, "operation", handlerPath, - "status", status) - .record(Duration.ofMillis(duration)); + "status", status); + // .record(Duration.ofMillis(duration)); } @Override diff --git a/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.test.java.mustache b/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.test.java.mustache index 4e1db53f..8de558ad 100644 --- a/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.test.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/metrics/metrics-reporter.test.java.mustache @@ -9,6 +9,10 @@ import org.reactivecommons.api.domain.DomainEvent; import org.reactivecommons.async.api.AsyncQuery; import org.reactivecommons.async.commons.communications.Message; import reactor.test.StepVerifier; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.simple.SimpleMeterRegistry; +import io.micrometer.core.instrument.Timer; +import static org.assertj.core.api.Assertions.assertThat; public class MetricsReporterTest { @@ -66,4 +70,23 @@ public class MetricsReporterTest { .create(metricsReporter.reportError(error, message, asyncQuery, true)) .verifyComplete(); } + + @Test + void reportMetricTest() { + MeterRegistry registry = new SimpleMeterRegistry(); + MetricsReporter reporter = new MetricsReporter(registry); + + reporter.reportMetric("command", "handlerPath", 100L, true); + reporter.reportMetric("event", "handlerPath", 200L, false); + + Timer successTimer = registry.find("async_operation_flow_duration") + .tags("type", "command", "operation", "handlerPath", "status", "success") + .timer(); + Timer errorTimer = registry.find("async_operation_flow_duration") + .tags("type", "event", "operation", "handlerPath", "status", "error") + .timer(); + + assertThat(successTimer).isNotNull(); + assertThat(errorTimer).isNotNull(); + } } \ No newline at end of file diff --git a/src/main/resources/entry-point/async-event-handler/queries-handler.java.mustache b/src/main/resources/entry-point/async-event-handler/queries-handler.java.mustache index bb6704a8..0154c5d2 100644 --- a/src/main/resources/entry-point/async-event-handler/queries-handler.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/queries-handler.java.mustache @@ -9,6 +9,8 @@ import lombok.AllArgsConstructor; {{/lombok}} import org.reactivecommons.async.impl.config.annotations.EnableQueryListeners; import reactor.core.publisher.Mono; +import lombok.extern.java.Log; +import java.util.logging.Level; {{#eda}} import com.fasterxml.jackson.databind.ObjectMapper; import io.cloudevents.CloudEvent; @@ -17,7 +19,7 @@ import java.net.URI; import java.time.OffsetDateTime; import java.util.UUID; {{/eda}} - +@Log {{#lombok}} @AllArgsConstructor {{/lombok}} @@ -36,7 +38,7 @@ public class QueriesHandler { {{#eda}} public Mono handleQueryA(CloudEvent query) { - System.out.println("query received->" + query); // TODO: Remove this line + log.log(Level.INFO, "Query received -> {0}", query); // TODO: Remove this line // return sampleUseCase.doSomethingReturningNoMonoVoid(query); Object replyData = "Response Data"; CloudEvent reply = CloudEventBuilder.v1() // @@ -52,7 +54,7 @@ public class QueriesHandler { {{^eda}} public Mono handleQueryA(Object query/*change for proper model*/) { - System.out.println("query received->" + query); // TODO: Remove this line + log.log(Level.INFO, "Query received -> {0}", query); // TODO: Remove this line // return sampleUseCase.doSomethingReturningNoMonoVoid(query); return Mono.just("Response Data"); } diff --git a/src/main/resources/entry-point/async-event-handler/queries-handler.test.java.mustache b/src/main/resources/entry-point/async-event-handler/queries-handler.test.java.mustache index 075bc6d4..a5e3ed55 100644 --- a/src/main/resources/entry-point/async-event-handler/queries-handler.test.java.mustache +++ b/src/main/resources/entry-point/async-event-handler/queries-handler.test.java.mustache @@ -32,14 +32,25 @@ class QueriesHandlerTest { .withData("application/json", objectMapper.writeValueAsBytes("Data")) .build(); StepVerifier.create(queriesHandler.handleQueryA(query)) - .expectComplete(); + .expectNextMatches(response -> + response != null && + "SOME_QUERY_REPLY".equals(response.getType()) && + response.getData() != null + ) + .verifyComplete(); } {{/eda}} {{^eda}} @Test void queriesHandlerTest() { - StepVerifier.create(queriesHandler.handleQueryA("Data")) - .expectComplete(); + // Enviar una consulta con datos específicos + String query = "Data"; + + // Verificar que el valor retornado sea el esperado + StepVerifier.create(queriesHandler.handleQueryA(query)) + .expectNext("Response Data") // Verifica que el valor recibido sea "Response Data" + .expectComplete() // Verifica que el Mono se complete + .verify(); } {{/eda}} }