package edu.brown.profilers; import org.junit.Test; import junit.framework.TestCase; /** * Simple tests for AbstractProfiler * @author pavlo */ public class TestAbstractProfiler extends TestCase { private static final int NUM_COUNTERS = 4; protected class MockProfiler extends AbstractProfiler { public final ProfileMeasurement pm0 = new ProfileMeasurement("PM0"); public final ProfileMeasurement pm1 = new ProfileMeasurement("PM1"); // Make some of these protected so that we can check getProfileMeasurements() protected final ProfileMeasurement pm2 = new ProfileMeasurement("PM2"); protected final ProfileMeasurement pm3 = new ProfileMeasurement("PM3"); } final MockProfiler profiler = new MockProfiler(); /** * testGetTuple */ @Test public void testGetTuple() throws Exception { ProfileMeasurement pms[] = profiler.getProfileMeasurements(); ProfileMeasurement last = null; for (int i = 0; i < 10000; i++) { for (ProfileMeasurement pm : pms) { if (last != null) ProfileMeasurementUtil.swap(last, pm); else pm.start(); last = pm; } // FOR } // FOR assertNotNull(last); last.stop(); long tuple[] = profiler.getTuple(); assertNotNull(tuple); assertEquals(NUM_COUNTERS*2, tuple.length); for (int i = 0; i < tuple.length; i++) { assertNotSame("OFFSET[" + i + "]", 0l, tuple[i]); } // FOR } /** * testGetProfileMeasurements */ @Test public void testGetProfileMeasurements() throws Exception { ProfileMeasurement pms[] = profiler.getProfileMeasurements(); assertNotNull(pms); assertEquals(NUM_COUNTERS, pms.length); for (int i = 0; i < pms.length; i++) { assertNotNull(Integer.toString(i), pms[i]); } // FOR } /** * testReset */ @Test public void testReset() throws Exception { ProfileMeasurement pms[] = profiler.getProfileMeasurements(); assertNotNull(pms); assertEquals(NUM_COUNTERS, pms.length); ProfileMeasurement last = null; for (int i = 0; i < 10000; i++) { for (ProfileMeasurement pm : pms) { if (last != null) ProfileMeasurementUtil.swap(last, pm); else pm.start(); last = pm; } // FOR } // FOR assertNotNull(last); last.stop(); for (ProfileMeasurement pm : pms) { assertTrue(pm.getName(), pm.getInvocations() > 0); assertFalse(pm.getName(), pm.isStarted()); } // FOR profiler.reset(); for (ProfileMeasurement pm : pms) { assertEquals(pm.getName(), 0, pm.getInvocations()); assertEquals(pm.getName(), 0, pm.getTotalThinkTime()); assertFalse(pm.getName(), pm.isStarted()); } // FOR } }