package org.axonframework.metrics;
import com.codahale.metrics.ConsoleReporter;
import org.axonframework.commandhandling.CommandMessage;
import org.axonframework.commandhandling.GenericCommandMessage;
import org.axonframework.eventhandling.EventMessage;
import org.axonframework.monitoring.MessageMonitor;
import org.junit.Before;
import org.junit.Test;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import static org.axonframework.eventhandling.GenericEventMessage.asEventMessage;
import static org.junit.Assert.assertTrue;
public class GlobalMetricRegistryTest {
private GlobalMetricRegistry subject;
@Before
public void setUp() throws Exception {
subject = new GlobalMetricRegistry();
}
@Test
public void createEventProcessorMonitor() throws Exception {
MessageMonitor<? super EventMessage<?>> monitor1 = subject.registerEventProcessor("test1");
MessageMonitor<? super EventMessage<?>> monitor2 = subject.registerEventProcessor("test2");
monitor1.onMessageIngested(asEventMessage("test")).reportSuccess();
monitor2.onMessageIngested(asEventMessage("test")).reportSuccess();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ConsoleReporter.forRegistry(subject.getRegistry()).outputTo(new PrintStream(out)).build().report();
String output = new String(out.toByteArray());
assertTrue(output.contains("test1"));
assertTrue(output.contains("test2"));
}
@Test
public void createEventBusMonitor() throws Exception {
MessageMonitor<EventMessage<?>> monitor = subject.registerEventBus("eventBus");
monitor.onMessageIngested(asEventMessage("test")).reportSuccess();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ConsoleReporter.forRegistry(subject.getRegistry()).outputTo(new PrintStream(out)).build().report();
String output = new String(out.toByteArray());
assertTrue(output.contains("eventBus"));
}
@Test
public void createCommandBusMonitor() throws Exception {
MessageMonitor<CommandMessage<?>> monitor = subject.registerCommandBus("commandBus");
monitor.onMessageIngested(new GenericCommandMessage<>("test")).reportSuccess();
ByteArrayOutputStream out = new ByteArrayOutputStream();
ConsoleReporter.forRegistry(subject.getRegistry()).outputTo(new PrintStream(out)).build().report();
String output = new String(out.toByteArray());
assertTrue(output.contains("commandBus"));
}
}