Improve TmfTrace test coverage
authorFrancois Chouinard <fchouinard@gmail.com>
Thu, 17 May 2012 17:40:55 +0000 (13:40 -0400)
committerFrancois Chouinard <fchouinard@gmail.com>
Thu, 17 May 2012 17:40:55 +0000 (13:40 -0400)
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfCheckpointIndexTest.java
org.eclipse.linuxtools.tmf.core.tests/src/org/eclipse/linuxtools/tmf/core/tests/trace/TmfTraceTest.java
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/trace/TmfEmptyTraceStub.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/trace/TmfTraceStub.java

index 3255dc29df6f0c60446b0d89cfb3f567c896ae38..a888bf872f937ee69e985137be075c75ae1d926a 100644 (file)
@@ -24,12 +24,14 @@ import junit.framework.TestCase;
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.exceptions.TmfTraceException;
 import org.eclipse.linuxtools.tmf.core.tests.TmfCoreTestPlugin;
 import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
 import org.eclipse.linuxtools.tmf.core.trace.TmfCheckpoint;
 import org.eclipse.linuxtools.tmf.core.trace.TmfCheckpointIndexer;
 import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
+import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfEmptyTraceStub;
 import org.eclipse.linuxtools.tmf.tests.stubs.trace.TmfTraceStub;
 
 /**
@@ -42,11 +44,12 @@ public class TmfCheckpointIndexTest extends TestCase {
     // Variables
     // ------------------------------------------------------------------------
 
-    private static final String DIRECTORY   = "testfiles";
-    private static final String TEST_STREAM = "A-Test-10K";
-    private static final int    BLOCK_SIZE  = 100;
-    private static final int    NB_EVENTS   = 10000;
-    private static TestTrace    fTrace      = null;
+    private static final String    DIRECTORY   = "testfiles";
+    private static final String    TEST_STREAM = "A-Test-10K";
+    private static final int       BLOCK_SIZE  = 100;
+    private static final int       NB_EVENTS   = 10000;
+    private static TestTrace       fTrace      = null;
+    private static EmptyTestTrace  fEmptyTrace = null;
 
     // ------------------------------------------------------------------------
     // Housekeeping
@@ -59,7 +62,7 @@ public class TmfCheckpointIndexTest extends TestCase {
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
+        setupTrace(DIRECTORY + File.separator + TEST_STREAM);
     }
 
     @Override
@@ -67,6 +70,8 @@ public class TmfCheckpointIndexTest extends TestCase {
         super.tearDown();
         fTrace.dispose();
         fTrace = null;
+        fEmptyTrace.dispose();
+        fEmptyTrace = null;
     }
 
     // ------------------------------------------------------------------------
@@ -78,6 +83,10 @@ public class TmfCheckpointIndexTest extends TestCase {
         public TestIndexer(TestTrace testTrace) {
             super((ITmfTrace) testTrace, BLOCK_SIZE);
         }
+        @SuppressWarnings({ "unchecked", "rawtypes" })
+        public TestIndexer(EmptyTestTrace testTrace) {
+            super((ITmfTrace) testTrace, BLOCK_SIZE);
+        }
         public List<TmfCheckpoint> getCheckpoints() {
             return getTraceIndex();
         }
@@ -94,11 +103,22 @@ public class TmfCheckpointIndexTest extends TestCase {
         }
     }
 
+    private class EmptyTestTrace extends TmfEmptyTraceStub {
+        public EmptyTestTrace() {
+            super();
+            setIndexer(new TestIndexer(this));
+        }
+        @Override
+        public TestIndexer getIndexer() {
+            return (TestIndexer) super.getIndexer();
+        }
+    }
+
     // ------------------------------------------------------------------------
     // Helper functions
     // ------------------------------------------------------------------------
 
-    private TestTrace setupTrace(final String path) {
+    private synchronized void setupTrace(final String path) {
         if (fTrace == null) {
             try {
                 final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
@@ -113,7 +133,11 @@ public class TmfCheckpointIndexTest extends TestCase {
                 e.printStackTrace();
             }
         }
-        return fTrace;
+
+        if (fEmptyTrace == null) {
+            fEmptyTrace = new EmptyTestTrace();
+            fEmptyTrace.indexTrace();
+        }
     }
 
     // ------------------------------------------------------------------------
@@ -143,4 +167,27 @@ public class TmfCheckpointIndexTest extends TestCase {
         }
     }
 
+    public void testEmptyTmfTraceIndexing() throws Exception {
+        assertEquals("getCacheSize",   ITmfTrace.DEFAULT_TRACE_CACHE_SIZE, fEmptyTrace.getCacheSize());
+        assertEquals("getTraceSize",   0,  fEmptyTrace.getNbEvents());
+        assertEquals("getRange-start", TmfTimestamp.BIG_CRUNCH, fEmptyTrace.getTimeRange().getStartTime());
+        assertEquals("getRange-end",   TmfTimestamp.BIG_BANG, fEmptyTrace.getTimeRange().getEndTime());
+        assertEquals("getStartTime",   TmfTimestamp.BIG_CRUNCH, fEmptyTrace.getStartTime());
+        assertEquals("getEndTime",     TmfTimestamp.BIG_BANG, fEmptyTrace.getEndTime());
+
+        List<TmfCheckpoint> checkpoints = fEmptyTrace.getIndexer().getCheckpoints();
+        int pageSize = fEmptyTrace.getCacheSize();
+        assertTrue("Checkpoints exist",  checkpoints != null);
+        assertEquals("Checkpoints size", 0, checkpoints.size());
+
+        // Validate that each checkpoint points to the right event
+        for (int i = 0; i < checkpoints.size(); i++) {
+            TmfCheckpoint checkpoint = checkpoints.get(i);
+            TmfContext context = new TmfContext(checkpoint.getLocation(), i * pageSize);
+            ITmfEvent event = fEmptyTrace.parseEvent(context);
+            assertTrue(context.getRank() == i * pageSize);
+            assertTrue((checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0));
+        }
+    }
+
 }
\ No newline at end of file
index 40986df9b3fad126042a388c7efc5c0044db9cb0..7716e6d0d47faf68e30c2b942dfac4441258e014 100644 (file)
@@ -497,6 +497,27 @@ public class TmfTraceTest extends TestCase {
         trace.dispose();
     }
 
+    public void testSetNbEvents() throws Exception {
+        final TmfTraceStub trace = new TmfTraceStub(fTrace);
+        trace.indexTrace();
+
+        assertEquals("getNbEvents", NB_EVENTS, trace.getNbEvents());
+
+        trace.setNbEvents(0);
+        assertEquals("getNbEvents", 0, trace.getNbEvents());
+
+        trace.setNbEvents(-1);
+        assertEquals("getNbEvents", 0, trace.getNbEvents());
+
+        trace.setNbEvents(NB_EVENTS + 1);
+        assertEquals("getNbEvents", NB_EVENTS + 1, trace.getNbEvents());
+
+        trace.setNbEvents(NB_EVENTS);
+        assertEquals("getNbEvents", NB_EVENTS, trace.getNbEvents());
+
+        trace.dispose();
+    }
+
     // ------------------------------------------------------------------------
     // seekEvent on location (note: does not reliably set the rank)
     // ------------------------------------------------------------------------
diff --git a/org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/trace/TmfEmptyTraceStub.java b/org.eclipse.linuxtools.tmf.core.tests/stubs/org/eclipse/linuxtools/tmf/tests/stubs/trace/TmfEmptyTraceStub.java
new file mode 100644 (file)
index 0000000..ab8c584
--- /dev/null
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ * Copyright (c) 2009, 2010 Ericsson
+ * 
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License v1.0 which
+ * accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ * 
+ * Contributors:
+ *   Francois Chouinard - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.tests.stubs.trace;
+
+import java.io.FileNotFoundException;
+
+import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfContext;
+import org.eclipse.linuxtools.tmf.core.trace.ITmfLocation;
+import org.eclipse.linuxtools.tmf.core.trace.TmfContext;
+import org.eclipse.linuxtools.tmf.core.trace.TmfLocation;
+
+/**
+ * <b><u>TmfEmptyTraceStub</u></b>
+ * <p>
+ * Dummy test trace. Use in conjunction with TmfEventParserStub.
+ */
+public class TmfEmptyTraceStub extends TmfTraceStub {
+
+    // ------------------------------------------------------------------------
+    // Constructors
+    // ------------------------------------------------------------------------
+
+    /**
+     * @param path
+     * @throws FileNotFoundException
+     */
+    public TmfEmptyTraceStub() {
+        super();
+        setParser(new TmfEventParserStub(this));
+    }
+
+    // ------------------------------------------------------------------------
+    // Operators
+    // ------------------------------------------------------------------------
+
+    @Override
+    public TmfContext seekEvent(final ITmfLocation<?> location) {
+        return new TmfContext();
+    }
+
+    @Override
+    public TmfContext seekEvent(final double ratio) {
+        return new TmfContext();
+    }
+
+    @Override
+    public double getLocationRatio(ITmfLocation<?> location) {
+        return 0;
+    }
+
+    @Override
+    public TmfLocation<Long> getCurrentLocation() {
+        return null;
+    }
+
+    @Override
+    public TmfEvent parseEvent(final ITmfContext context) {
+        return null;
+    }
+
+}
\ No newline at end of file
index e005b39855bc3146aad96cd008241b4282128532..0738c7ab9fb8116148fcdfc9fe090e508fcc9c3a 100644 (file)
@@ -313,6 +313,11 @@ public class TmfTraceStub extends TmfTrace<TmfEvent> implements ITmfEventParser<
         return null;
     }
 
+    @Override
+    public void setNbEvents(final long nbEvents) {
+        super.setNbEvents(nbEvents);
+    }
+
     @Override
     public void setTimeRange(final TmfTimeRange range) {
         super.setTimeRange(range);
This page took 0.028906 seconds and 5 git commands to generate.