import org.eclipse.core.runtime.Path;
import org.eclipse.linuxtools.internal.tmf.core.trace.TmfExperimentContext;
import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
+import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
import org.eclipse.linuxtools.tmf.core.event.TmfEvent;
import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
import org.eclipse.linuxtools.tmf.core.event.TmfTimestamp;
// ------------------------------------------------------------------------
// Attributes
// ------------------------------------------------------------------------
-
+ private static final long DEFAULT_INITIAL_OFFSET_VALUE = (1L * 100 * 1000 * 1000); // .1sec
private static final String DIRECTORY = "testfiles";
private static final String TEST_STREAM1 = "O-Test-10K";
private static final String TEST_STREAM2 = "E-Test-10K";
URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path1), null);
File test = new File(FileLocator.toFileURL(location).toURI());
final TmfTraceStub trace1 = new TmfTraceStub(test.getPath(), 0, true);
+ trace1.setInitialRangeOffset(new TmfTimestamp(5, ITmfTimestamp.MILLISECOND_SCALE));
+
fTraces[0] = trace1;
location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path2), null);
test = new File(FileLocator.toFileURL(location).toURI());
final TmfTraceStub trace2 = new TmfTraceStub(test.getPath(), 0, true);
+ trace2.setInitialRangeOffset(new TmfTimestamp(2, ITmfTimestamp.MILLISECOND_SCALE));
fTraces[1] = trace2;
} catch (final TmfTraceException e) {
e.printStackTrace();
final TmfTimeRange timeRange = fExperiment.getTimeRange();
assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
+
+ TmfTimestamp initRange = new TmfTimestamp(2, ITmfTimestamp.MILLISECOND_SCALE);
+ assertEquals("getInitialRangeOffset", initRange, fExperiment.getInitialRangeOffset());
+ assertEquals("getCurrentTime", fExperiment.getTimeRange().getStartTime(), fExperiment.getCurrentTime());
+
+ ITmfTimestamp startTimestamp = fExperiment.getTimeRange().getStartTime();
+ long endValue = startTimestamp.getValue() + initRange.normalize(0, startTimestamp.getScale()).getValue();
+ ITmfTimestamp endTimestamp = new TmfTimestamp(endValue, startTimestamp.getScale());
+ TmfTimeRange expectedRange = new TmfTimeRange(startTimestamp, endTimestamp);
+ assertEquals("getCurrentRange", expectedRange, fExperiment.getCurrentRange());
}
// ------------------------------------------------------------------------
assertNull("getTimestamp", fExperiment.getTimestamp(20000));
}
+ // ------------------------------------------------------------------------
+ // getInitialRangeOffset, getCurrentRange, getCurrentTime
+ // ------------------------------------------------------------------------
+ public void testDefaultCurrentTimeValues() {
+ // reset to default initial range offset
+ ((TmfTraceStub)fTraces[0]).setInitialRangeOffset(null);
+ ((TmfTraceStub)fTraces[1]).setInitialRangeOffset(null);
+
+ TmfExperimentStub exp = new TmfExperimentStub(EXPERIMENT, fTraces, BLOCK_SIZE);
+
+ // verify initial values
+ TmfTimestamp initRange = new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE, ITmfTimestamp.NANOSECOND_SCALE);
+ assertEquals("getInitialRangeOffset", initRange, exp.getInitialRangeOffset());
+ assertEquals("getCurrentTime", TmfTimestamp.ZERO, exp.getCurrentTime());
+ assertEquals("getCurrentRange", TmfTimeRange.NULL_RANGE, exp.getCurrentRange());
+
+ }
}
// ------------------------------------------------------------------------
// Variables
// ------------------------------------------------------------------------
-
+ private static final long DEFAULT_INITIAL_OFFSET_VALUE = (1L * 100 * 1000 * 1000); // .1sec
private static final String DIRECTORY = "testfiles";
private static final String TEST_STREAM = "A-Test-10K";
private static final int BLOCK_SIZE = 500;
assertEquals("toString", expected, fTrace.toString());
}
+ // ------------------------------------------------------------------------
+ // getInitialRangeOffset, getCurrentRange, getCurrentTime
+ // ------------------------------------------------------------------------
+ @SuppressWarnings("null")
+ public void testCurrentTimeValues() throws TmfTraceException {
+
+ TmfTraceStub trace = null;
+ File testfile = null;
+ try {
+ final URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
+ testfile = new File(FileLocator.toFileURL(location).toURI());
+ trace = new TmfTraceStub(testfile.toURI().getPath());
+ // verify initial values
+ TmfTimestamp defaultInitRange = new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE, ITmfTimestamp.NANOSECOND_SCALE);
+ assertEquals("getInitialRangeOffset", defaultInitRange, trace.getInitialRangeOffset());
+ assertEquals("getCurrentTime", TmfTimestamp.ZERO, trace.getCurrentTime());
+ assertEquals("getCurrentRange", TmfTimeRange.NULL_RANGE, trace.getCurrentRange());
+ trace.setInitialRangeOffset(new TmfTimestamp(5, ITmfTimestamp.MILLISECOND_SCALE));
+ trace.indexTrace();
+ } catch (final URISyntaxException e) {
+ fail("URISyntaxException");
+ } catch (final IOException e) {
+ fail("IOException");
+ }
+ assertFalse ("Open trace", trace == null);
+
+ TmfTimestamp initRange = new TmfTimestamp(5, ITmfTimestamp.MILLISECOND_SCALE);
+ assertEquals("getInitialRangeOffset", initRange, trace.getInitialRangeOffset());
+ assertEquals("getCurrentTime", trace.getTimeRange().getStartTime(), trace.getCurrentTime());
+
+ ITmfTimestamp startTimestamp = trace.getTimeRange().getStartTime();
+ long endValue = startTimestamp.getValue() + initRange.normalize(0, startTimestamp.getScale()).getValue();
+ ITmfTimestamp endTimestamp = new TmfTimestamp(endValue, startTimestamp.getScale());
+ TmfTimeRange expectedRange = new TmfTimeRange(startTimestamp, endTimestamp);
+ assertEquals("getCurrentRange", expectedRange, trace.getCurrentRange());
+ }
}
// The synchronization lock
private final ReentrantLock fLock = new ReentrantLock();
+ private ITmfTimestamp fInitialRangeOffset = null;
+
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
return fTrace;
}
+ public void setInitialRangeOffset(ITmfTimestamp initOffset) {
+ fInitialRangeOffset = initOffset;
+ }
+
+ @Override
+ public ITmfTimestamp getInitialRangeOffset() {
+ if (fInitialRangeOffset != null) {
+ return fInitialRangeOffset;
+ }
+ return super.getInitialRangeOffset();
+ }
+
// ------------------------------------------------------------------------
// Operators
// ------------------------------------------------------------------------
*/
public ITmfContext seekEvent(double ratio);
+ /**
+ * Returns the initial range offset
+ *
+ * @return the initial range offset
+ * @since 2.0
+ */
+ public ITmfTimestamp getInitialRangeOffset();
+
/**
* Return the current selected time.
*
return event;
}
+ /* (non-Javadoc)
+ * @see org.eclipse.linuxtools.tmf.core.trace.TmfTrace#getInitialRangeOffset()
+ */
+ /**
+ * @since 2.0
+ */
+ @Override
+ public ITmfTimestamp getInitialRangeOffset() {
+ if ((fTraces == null) || (fTraces.length == 0)) {
+ return super.getInitialRangeOffset();
+ }
+
+ ITmfTimestamp initTs = TmfTimestamp.BIG_CRUNCH;
+ for (int i = 0; i < fTraces.length; i++) {
+ ITmfTimestamp ts = fTraces[i].getInitialRangeOffset();
+ if (ts.compareTo(initTs) < 0) {
+ initTs = ts;
+ }
+ }
+ return initTs;
+ }
+
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
return fCurrentRange;
}
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.linuxtools.tmf.core.trace.ITmfTrace#getInitialRangeOffset()
+ */
/**
- * Returns the initial range offset
- *
- * @return the initial range offset
* @since 2.0
*/
- protected TmfTimestamp getInitialRangeOffset() {
+ @Override
+ public ITmfTimestamp getInitialRangeOffset() {
final long DEFAULT_INITIAL_OFFSET_VALUE = (1L * 100 * 1000 * 1000); // .1sec
return new TmfTimestamp(DEFAULT_INITIAL_OFFSET_VALUE, ITmfTimestamp.NANOSECOND_SCALE);
}