package org.gridkit.jvmtool.codec; import static org.assertj.core.api.Assertions.assertThat; import static org.gridkit.jvmtool.codec.stacktrace.EventEqualToCondition.eventEquals; import java.lang.Thread.State; import org.gridkit.jvmtool.codec.stacktrace.ThreadSnapshotEvent; import org.gridkit.jvmtool.codec.stacktrace.ThreadSnapshotEventPojo; import org.gridkit.jvmtool.event.CommonEvent; import org.gridkit.jvmtool.event.ErrorEvent; import org.gridkit.jvmtool.event.EventDecorator; import org.gridkit.jvmtool.event.GenericEvent; import org.gridkit.jvmtool.event.SimpleErrorEvent; import org.junit.Test; public class EventDecoratorTest { @Test public void verify_generic_event() { GenericEvent a = new GenericEvent(); a.timestamp(10000); a.tags().put("A", "1"); a.tags().put("B", "2"); a.tags().put("B", "3"); a.tags().put("C", "4"); a.counters().set("X", 10); a.counters().set("zzz", Long.MAX_VALUE); GenericEvent b = new GenericEvent(a); assertThat(b).is(eventEquals(a)); EventDecorator deco = new EventDecorator(); CommonEvent c = deco.wrap(b); assertThat(c).is(eventEquals(a)); deco.timestamp(77777); deco.tags().put("F", "10"); deco.counters().set("__", 25); assertThat(c.timestamp()).isEqualTo(77777); assertThat(c.tags()).containsOnly("A", "B", "C", "F"); assertThat(c.counters()).containsOnly("X", "zzz", "__"); } @Test public void verify_thread_snapshot_event() { ThreadSnapshotEventPojo a = new ThreadSnapshotEventPojo(); a.timestamp(10000); a.tags().put("A", "1"); a.tags().put("B", "2"); a.tags().put("B", "3"); a.tags().put("C", "4"); a.counters().set("X", 10); a.counters().set("zzz", Long.MAX_VALUE); a.threadName("Test"); a.threadState(State.NEW); ThreadSnapshotEventPojo b = new ThreadSnapshotEventPojo(); b.loadFrom(a); assertThat(b).is(eventEquals(a)); EventDecorator deco = new EventDecorator(); ThreadSnapshotEvent c = deco.wrap(b); assertThat(c).is(eventEquals(a)); deco.timestamp(77777); deco.tags().put("F", "10"); deco.counters().set("__", 25); assertThat(c.timestamp()).isEqualTo(77777); assertThat(c.tags()).containsOnly("A", "B", "C", "F"); assertThat(c.counters()).containsOnly("X", "zzz", "__"); assertThat(c.threadName()).isEqualTo("Test"); assertThat(c.threadState()).isEqualTo(State.NEW); } @Test public void verify_error_event() { SimpleErrorEvent ee = new SimpleErrorEvent(new Exception("Boom")); EventDecorator deco = new EventDecorator(); ErrorEvent c = deco.wrap(ee); assertThat(c).is(eventEquals(ee)); } }