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;
/**
// 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
@Override
protected void setUp() throws Exception {
super.setUp();
- fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
+ setupTrace(DIRECTORY + File.separator + TEST_STREAM);
}
@Override
super.tearDown();
fTrace.dispose();
fTrace = null;
+ fEmptyTrace.dispose();
+ fEmptyTrace = null;
}
// ------------------------------------------------------------------------
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();
}
}
}
+ 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);
e.printStackTrace();
}
}
- return fTrace;
+
+ if (fEmptyTrace == null) {
+ fEmptyTrace = new EmptyTestTrace();
+ fEmptyTrace.indexTrace();
+ }
}
// ------------------------------------------------------------------------
}
}
+ 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
--- /dev/null
+/*******************************************************************************
+ * 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