// we don't capture GC events in dashboard, so setting this will allow us
// to confirm that they *don't* show up in dashboard notices
System.setProperty("gwt.speedtracer.logGcTime", "yes");
// now enable the mock dashboard notifier
SpeedTracerLoggerTestMockNotifier notifier = SpeedTracerLoggerTestMockNotifier.enable();
// create "sessions"
DevModeSession session1 = DevModeSessionTestUtil.createSession("test1", "test", true);
DevModeSession session2 = DevModeSessionTestUtil.createSession("test2", "test", false);
// expected values (used in final assertions below)
LinkedList<DevModeEvent> expectedEvents = new LinkedList<DevModeEvent>();
LinkedList<DevModeSession> expectedSessions = new LinkedList<DevModeSession>();
Event evt1, evt2;
// test events with no session specified
evt1 = SpeedTracerLogger.start(DevModeEventType.MODULE_INIT, "k1", "v1", "k2", "v2");
// also test that child events aren't posted (only top-level events)
evt2 = SpeedTracerLogger.start(DevModeEventType.CLASS_BYTES_REWRITE);
evt2.end();
evt1.end();
// expect only first event
expectedEvents.add(new DevModeEvent(evt1));
expectedSessions.add(session1); // event should get "default" session
// now with session specified
evt1 = SpeedTracerLogger.start(session2, DevModeEventType.JAVA_TO_JS_CALL, "k1", "v1");
// also test that child events aren't posted (only top-level events)
evt2 = SpeedTracerLogger.start(DevModeEventType.CREATE_UI);
evt2.end();
evt1.end();
// expect only first event
expectedEvents.add(new DevModeEvent(evt1));
expectedSessions.add(session2);
evt1 = SpeedTracerLogger.start(session1, DevModeEventType.JS_TO_JAVA_CALL, "k1", "v1");
evt1.end();
expectedEvents.add(new DevModeEvent(evt1));
expectedSessions.add(session1);
// Finally, assert that the events and corresponding sessions sent to the
// notifier are exactly as expected
assertEquals("Events posted to dashboard do not match expected events!", expectedEvents,
notifier.getEventSequence());
// Collect sessions associated with each event
LinkedList<DevModeSession> actualSessions = new LinkedList<DevModeSession>();
for (DevModeEvent event : notifier.getEventSequence()) {
actualSessions.add(event.getDevModeSession());
}
// and confirm the sessions are correct
assertEquals("Events posted to dashboard are associated with incorrect sessions!",