import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentSelectedSignal;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentUpdatedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentUpdatedSignal;
import org.eclipse.linuxtools.tmf.signal.TmfRangeSynchSignal;
import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
import org.eclipse.linuxtools.tmf.signal.TmfTimeSynchSignal;
import org.eclipse.linuxtools.lttng.ui.views.project.model.LTTngProjectRoot;
import org.eclipse.linuxtools.lttng.ui.views.project.model.LTTngTraceNode;
import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.ui.views.TmfView;
import org.eclipse.swt.SWT;
import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentSelectedSignal;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentUpdatedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentUpdatedSignal;
import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
import org.eclipse.linuxtools.tmf.signal.TmfTimeSynchSignal;
import org.eclipse.linuxtools.tmf.ui.views.TmfView;
import org.eclipse.linuxtools.tmf.component.TmfComponent;
import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
/**
+/*******************************************************************************
+ * 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;
import junit.framework.Test;
import junit.framework.TestSuite;
-import org.eclipse.linuxtools.tmf.tests.component.TmfEventProviderTest;
-import org.eclipse.linuxtools.tmf.tests.component.TmfProviderManagerTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventContentTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventFieldTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventReferenceTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventSourceTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfEventTypeTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfTimeRangeTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfTimestampTest;
-import org.eclipse.linuxtools.tmf.tests.event.TmfTraceEventTest;
-import org.eclipse.linuxtools.tmf.tests.request.TmfCoalescedDataRequestTest;
-import org.eclipse.linuxtools.tmf.tests.request.TmfCoalescedEventRequestTest;
-import org.eclipse.linuxtools.tmf.tests.request.TmfDataRequestTest;
-import org.eclipse.linuxtools.tmf.tests.request.TmfEventRequestTest;
-import org.eclipse.linuxtools.tmf.tests.request.TmfRequestExecutorTest;
-import org.eclipse.linuxtools.tmf.tests.trace.TmfExperimentTest;
-import org.eclipse.linuxtools.tmf.tests.trace.TmfMultiTraceExperimentTest;
-import org.eclipse.linuxtools.tmf.tests.trace.TmfTraceTest;
-
+/**
+ * <b><u>AllTmfCoreTests</u></b>
+ * <p>
+ * Master test suite for TMF Core.
+ */
public class AllTmfCoreTests {
public static Test suite() {
TestSuite suite = new TestSuite(AllTmfCoreTests.class.getName());
//$JUnit-BEGIN$
suite.addTestSuite(TmfCorePluginTest.class);
-
- suite.addTestSuite(TmfEventFieldTest.class);
- suite.addTestSuite(TmfEventContentTest.class);
- suite.addTestSuite(TmfEventTypeTest.class);
- suite.addTestSuite(TmfEventSourceTest.class);
- suite.addTestSuite(TmfTraceEventTest.class);
- suite.addTestSuite(TmfEventReferenceTest.class);
- suite.addTestSuite(TmfTimestampTest.class);
- suite.addTestSuite(TmfTimeRangeTest.class);
- suite.addTestSuite(TmfEventTest.class);
-
- suite.addTestSuite(TmfDataRequestTest.class);
- suite.addTestSuite(TmfEventRequestTest.class);
- suite.addTestSuite(TmfCoalescedDataRequestTest.class);
- suite.addTestSuite(TmfCoalescedEventRequestTest.class);
- suite.addTestSuite(TmfRequestExecutorTest.class);
-
- suite.addTestSuite(TmfEventProviderTest.class);
- suite.addTestSuite(TmfProviderManagerTest.class);
-
- suite.addTestSuite(TmfTraceTest.class);
- suite.addTestSuite(TmfExperimentTest.class);
- suite.addTestSuite(TmfMultiTraceExperimentTest.class);
+ suite.addTest(org.eclipse.linuxtools.tmf.tests.event.AllTests.suite());
+ suite.addTest(org.eclipse.linuxtools.tmf.tests.request.AllTests.suite());
+ suite.addTest(org.eclipse.linuxtools.tmf.tests.component.AllTests.suite());
+ suite.addTest(org.eclipse.linuxtools.tmf.tests.trace.AllTests.suite());
+ suite.addTest(org.eclipse.linuxtools.tmf.tests.experiment.AllTests.suite());
//$JUnit-END$
return suite;
}
public static Test suite() {
TestSuite suite = new TestSuite(AllTests.class.getName());
//$JUnit-BEGIN$
- suite.addTestSuite(TmfEventProviderTest.class);
suite.addTestSuite(TmfProviderManagerTest.class);
+ suite.addTestSuite(TmfEventProviderTest.class);
//$JUnit-END$
return suite;
}
/**
* <b><u>TmfClientTest</u></b>
* <p>
- * TODO: Implement me. Please.
+ * Test suite for the TmfEventProvider class.
*/
public class TmfEventProviderTest extends TestCase {
// There should be 2 TmfEvent providers: a TmfTraceStub and a TmfEventProviderStub
ITmfDataProvider<TmfEvent>[] eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(eventProviders.length == 2);
+ assertEquals("getProviders", 2, eventProviders.length);
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
// There should be 1 TmfSyntheticEventStub provider
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
}
// ------------------------------------------------------------------------
// There should be 2 TmfEvent providers: a TmfTraceStub and a TmfEventProviderStub
ITmfDataProvider<TmfEvent>[] eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(eventProviders.length == 2);
+ assertEquals("getProviders", 2, eventProviders.length);
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfTraceStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TmfEventProviderStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
// There should be 1 TmfSyntheticEventStub provider
eventProviders = (ITmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfSyntheticEventStub.class);
- assertTrue(eventProviders.length == 1);
+ assertEquals("getProviders", 1, eventProviders.length);
}
}
/**
* <b><u>TmfProviderManagerTest</u></b>
* <p>
- * TODO: Implement me. Please.
+ * Test suite for the TmfProviderManager class.
*/
public class TmfProviderManagerTest extends TestCase {
}
// ------------------------------------------------------------------------
- // register()
+ // register/dispose
// ------------------------------------------------------------------------
@SuppressWarnings("unchecked")
public void testRegister_0() {
TmfDataProvider<TmfEvent>[] providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
}
@SuppressWarnings("unchecked")
TestProvider1 testProvider1 = new TestProvider1(TmfEvent.class);
TmfDataProvider<TmfEvent>[] providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider1);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider1, providers[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider1);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider1, providers[0]);
// Unregister it
testProvider1.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
}
@SuppressWarnings("unchecked")
TestProvider2 testProvider2 = new TestProvider2(TmfEvent.class);
TmfDataProvider<TmfEvent>[] providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
+ assertEquals("getProviders", 2, providers.length);
assertTrue(providers.length == 2);
if (providers[0] == testProvider1) {
- assertTrue(providers[1] == testProvider2);
+ assertEquals("getProviders", testProvider2, providers[1]);
}
else {
- assertTrue(providers[1] == testProvider1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", testProvider2, providers[0]);
+ assertEquals("getProviders", testProvider1, providers[1]);
}
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider1);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider1, providers[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
// Remove one
testProvider1.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
// Remove the other
testProvider2.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
}
@SuppressWarnings("unchecked")
TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class);
TmfDataProvider<TmfEvent>[] providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 2);
+ assertEquals("getProviders", 2, providers.length);
if (providers[0] == testProvider1) {
- assertTrue(providers[1] == testProvider2);
+ assertEquals("getProviders", testProvider2, providers[1]);
}
else {
- assertTrue(providers[1] == testProvider1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", testProvider2, providers[0]);
+ assertEquals("getProviders", testProvider1, providers[1]);
}
TmfDataProvider<TmfEvent3>[] providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class);
- assertTrue(providers3.length == 1);
- assertTrue(providers3[0] == testProvider3);
+ assertEquals("getProviders", 1, providers3.length);
+ assertEquals("getProviders", testProvider3, providers3[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider1);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider1, providers[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
- assertTrue(providers3.length == 1);
- assertTrue(providers3[0] == testProvider3);
+ assertEquals("getProviders", 1, providers3.length);
+ assertEquals("getProviders", testProvider3, providers3[0]);
// Remove one
testProvider1.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 1);
- assertTrue(providers[0] == testProvider2);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider2, providers[0]);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class);
- assertTrue(providers3.length == 1);
- assertTrue(providers3[0] == testProvider3);
+ assertEquals("getProviders", 1, providers3.length);
+ assertEquals("getProviders", testProvider3, providers3[0]);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
- assertTrue(providers3.length == 1);
- assertTrue(providers3[0] == testProvider3);
+ assertEquals("getProviders", 1, providers3.length);
+ assertEquals("getProviders", testProvider3, providers3[0]);
// Remove another one
testProvider2.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class);
assertTrue(providers3.length == 1);
assertTrue(providers3[0] == testProvider3);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
- assertTrue(providers3.length == 1);
- assertTrue(providers3[0] == testProvider3);
+ assertEquals("getProviders", 1, providers3.length);
+ assertEquals("getProviders", testProvider3, providers3[0]);
// Remove the last one
testProvider3.dispose();
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider1.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, TestProvider2.class);
- assertTrue(providers.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class);
- assertTrue(providers3.length == 0);
+ assertEquals("getProviders", 0, providers.length);
providers3 = (TmfDataProvider<TmfEvent3>[]) TmfProviderManager.getProviders(TmfEvent3.class, TestProvider3.class);
- assertTrue(providers3.length == 0);
+ assertEquals("getProviders", 0, providers.length);
+ }
+
+ @SuppressWarnings("unchecked")
+ public void testGetProvider() {
+
+ // Register 3 providers, mixed data types
+ TestProvider1 testProvider1 = new TestProvider1(TmfEvent.class);
+ TestProvider2 testProvider2 = new TestProvider2(TmfEvent.class);
+ TestProvider3 testProvider3 = new TestProvider3(TmfEvent3.class);
+
+ TmfDataProvider<TmfEvent>[] providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent.class, null);
+ assertEquals("getProviders", 2, providers.length);
+ if (providers[0] == testProvider1) {
+ assertEquals("getProviders", testProvider2, providers[1]);
+ }
+ else {
+ assertEquals("getProviders", testProvider2, providers[0]);
+ assertEquals("getProviders", testProvider1, providers[1]);
+ }
+
+ providers = (TmfDataProvider<TmfEvent>[]) TmfProviderManager.getProviders(TmfEvent3.class, null);
+ assertEquals("getProviders", 1, providers.length);
+ assertEquals("getProviders", testProvider3, providers[0]);
+
+ // Remove the providers
+ testProvider1.dispose();
+ testProvider2.dispose();
+ testProvider3.dispose();
}
}
\ No newline at end of file
assertTrue("equals", fBasicContent0.equals(fBasicContent2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fBasicContent0.equals(fBasicContent0));
- assertTrue("equals", fBasicContent0.equals(fBasicContent0));
-
- assertTrue("equals", fStubContent.equals(fStubContent));
- assertTrue("equals", fStubContent.equals(fStubContent));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fBasicContent0.equals(null));
assertTrue("equals", !fStubContent.equals(null));
assertTrue("equals", fField0.equals(fField2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fField0.equals(fField0));
- assertTrue("equals", fField0.equals(fField0));
-
- assertTrue("equals", fField3.equals(fField3));
- assertTrue("equals", fField3.equals(fField3));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fField0.equals(null));
assertTrue("equals", !fField3.equals(null));
assertTrue("equals", fReference0.equals(fReference2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fReference0.equals(fReference0));
- assertTrue("equals", fReference0.equals(fReference0));
-
- assertTrue("equals", fReference3.equals(fReference3));
- assertTrue("equals", fReference3.equals(fReference3));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fReference0.equals(null));
assertTrue("equals", !fReference3.equals(null));
assertTrue("equals", fSource0.equals(fSource2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fSource0.equals(fSource0));
- assertTrue("equals", fSource0.equals(fSource0));
-
- assertTrue("equals", fSource3.equals(fSource3));
- assertTrue("equals", fSource3.equals(fSource3));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fSource0.equals(null));
assertTrue("equals", !fSource3.equals(null));
assertTrue("equals", event1.equals(event3));
}
- public void testEqualsConsistency() throws Exception {
- TmfEvent event1 = new TmfEvent(fEvent1);
- TmfEvent event2 = new TmfEvent(fEvent2);
-
- assertTrue("equals", event1.equals(fEvent1));
- assertTrue("equals", event1.equals(fEvent1));
-
- assertTrue("equals", event2.equals(fEvent2));
- assertTrue("equals", event2.equals(fEvent2));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fEvent1.equals(null));
assertTrue("equals", !fEvent2.equals(null));
assertTrue("equals", fType0.equals(fType2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fType0.equals(fType0));
- assertTrue("equals", fType0.equals(fType0));
-
- assertTrue("equals", fType3.equals(fType3));
- assertTrue("equals", fType3.equals(fType3));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !fType0.equals(null));
assertTrue("equals", !fType3.equals(null));
assertTrue("equals", range1a.equals(range1c));
}
- public void testEqualsConsistency() throws Exception {
- TmfTimestamp ts1 = new TmfTimestamp(12345);
- TmfTimestamp ts2 = new TmfTimestamp(12350);
- TmfTimeRange range1a = new TmfTimeRange(ts1, ts2);
- TmfTimeRange range1b = new TmfTimeRange(ts1, ts2);
-
- assertTrue("equals", range1a.equals(range1a));
- assertTrue("equals", range1a.equals(range1a));
-
- assertTrue("equals", range1b.equals(range1b));
- assertTrue("equals", range1b.equals(range1b));
- }
-
public void testEqualsNull() throws Exception {
TmfTimestamp ts1 = new TmfTimestamp(12345);
TmfTimestamp ts2 = new TmfTimestamp(12350);
assertTrue("equals", ts1.equals(ts1copy2));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", ts0.equals(ts0copy));
- assertTrue("equals", ts0.equals(ts0copy));
-
- assertTrue("equals", ts1.equals(ts1copy));
- assertTrue("equals", ts1.equals(ts1copy));
- }
-
public void testEqualsNull() throws Exception {
assertTrue("equals", !ts0.equals(null));
assertTrue("equals", !ts1.equals(null));
assertEquals("toString", "[TmfTimestamp(12345,2,5)]", ts3.toString());
}
+ // ------------------------------------------------------------------------
+ // clone
+ // ------------------------------------------------------------------------
+
+ public class MyTimestamp extends TmfTimestamp {
+ @Override
+ public boolean equals(Object other) {
+ return super.equals(other);
+ }
+ @Override
+ public MyTimestamp clone() {
+ return (MyTimestamp) super.clone();
+ }
+ }
+
+ public void testClone() throws Exception {
+ TmfTimestamp timestamp = ts0.clone();
+ assertEquals("clone", timestamp, ts0);
+ }
+
+ public void testClone2() throws Exception {
+ MyTimestamp timestamp = new MyTimestamp();
+ MyTimestamp clone = timestamp.clone();
+ assertEquals("clone", clone, timestamp);
+ }
+
// ------------------------------------------------------------------------
// synchronize
// ------------------------------------------------------------------------
private void setupExperiment() {
if (fExperiment == null) {
fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTraces);
- fExperiment.indexExperiment();
+ fExperiment.indexExperiment(true);
}
}
public void testParseEvent() throws Exception {
- // On lower bound, returns the first event (ts = 1)
+ // On lower bound, returns the first event (ts = 0)
TmfContext context = fExperiment.seekEvent(new TmfTimestamp(0, SCALE, 0));
TmfEvent event = fExperiment.parseEvent(context);
private void setupExperiment() {
if (fExperiment == null) {
fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTrace);
- fExperiment.indexExperiment();
+ fExperiment.indexExperiment(true);
}
}
assertTrue("equals", fRequest1.equals(fRequest1c));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fRequest1.equals(fRequest1));
- assertTrue("equals", fRequest1.equals(fRequest1));
-
- assertTrue("equals", fRequest2.equals(fRequest2));
- assertTrue("equals", fRequest2.equals(fRequest2));
- }
-
public void testEqualsNull() throws Exception {
assertFalse("equals", fRequest1.equals(null));
assertFalse("equals", fRequest2.equals(null));
assertTrue("equals", fRequest1.equals(fRequest1c));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fRequest1.equals(fRequest1));
- assertTrue("equals", fRequest1.equals(fRequest1));
-
- assertTrue("equals", fRequest2.equals(fRequest2));
- assertTrue("equals", fRequest2.equals(fRequest2));
- }
-
public void testEqualsNull() throws Exception {
assertFalse("equals", fRequest1.equals(null));
assertFalse("equals", fRequest2.equals(null));
// Initialize the test trace
private static TmfTraceStub fTrace = null;
- private TmfTraceStub setupTrace(String path) {
+ private synchronized TmfTraceStub setupTrace(String path) {
if (fTrace == null) {
try {
URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
File test = new File(FileLocator.toFileURL(location).toURI());
- fTrace = new TmfTraceStub(test.getPath(), 500, true);
+ fTrace = new TmfTraceStub(test.getPath(), 500);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (IOException e) {
assertTrue("equals", fRequest1.equals(fRequest1c));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fRequest1.equals(fRequest1));
- assertTrue("equals", fRequest1.equals(fRequest1));
-
- assertTrue("equals", fRequest2.equals(fRequest2));
- assertTrue("equals", fRequest2.equals(fRequest2));
- }
-
public void testEqualsNull() throws Exception {
assertFalse("equals", fRequest1.equals(null));
assertFalse("equals", fRequest2.equals(null));
assertTrue("equals", fRequest1.equals(fRequest1c));
}
- public void testEqualsConsistency() throws Exception {
- assertTrue("equals", fRequest1.equals(fRequest1));
- assertTrue("equals", fRequest1.equals(fRequest1));
-
- assertTrue("equals", fRequest2.equals(fRequest2));
- assertTrue("equals", fRequest2.equals(fRequest2));
- }
-
public void testEqualsNull() throws Exception {
assertFalse("equals", fRequest1.equals(null));
assertFalse("equals", fRequest2.equals(null));
*/
public void testTmfRequestExecutor() {
TmfRequestExecutor executor = new TmfRequestExecutor();
- assertTrue("TmfRequestExecutor", executor != null);
- assertTrue("TmfRequestExecutor", executor instanceof TmfRequestExecutor);
-// assertEquals("toString", "[TmfRequestExecutor(DelegatedExecutorService)]", executor.toString());
-
assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests());
assertFalse("isShutdown", executor.isShutdown());
assertFalse("isTerminated", executor.isTerminated());
*/
public void testTmfRequestExecutorExecutorService() {
TmfRequestExecutor executor = new TmfRequestExecutor(Executors.newCachedThreadPool());
- assertTrue("TmfRequestExecutor", executor != null);
- assertTrue("TmfRequestExecutor", executor instanceof TmfRequestExecutor);
-// assertEquals("toString", "[TmfRequestExecutor(ThreadPoolExecutor)]", executor.toString());
-
assertEquals("nbPendingRequests", 0, executor.getNbPendingRequests());
assertFalse("isShutdown", executor.isShutdown());
assertFalse("isTerminated", executor.isTerminated());
assertTrue("isTerminated", executor.isTerminated());
}
-// /**
-// * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#execute(java.lang.Runnable)}.
-// */
-// public void testExecute() {
+ // ------------------------------------------------------------------------
+ // execute
+ // ------------------------------------------------------------------------
+
+ /**
+ * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#execute(java.lang.Runnable)}.
+ */
+ public void testExecute() {
// fail("Not yet implemented");
-// }
+ }
+
+ // ------------------------------------------------------------------------
+ // toString
+ // ------------------------------------------------------------------------
+
+ /**
+ * Test method for {@link org.eclipse.linuxtools.tmf.request.TmfRequestExecutor#toString()}.
+ */
+ public void testToString() {
+ TmfRequestExecutor executor1 = new TmfRequestExecutor();
+ String expected1 = "[TmfRequestExecutor(DelegatedExecutorService)]";
+ assertEquals("toString", expected1, executor1.toString());
+
+ TmfRequestExecutor executor2 = new TmfRequestExecutor(Executors.newCachedThreadPool());
+ String expected2 = "[TmfRequestExecutor(ThreadPoolExecutor)]";
+ assertEquals("toString", expected2, executor2.toString());
+ }
}
public static Test suite() {
TestSuite suite = new TestSuite("Test suite for " + TmfCorePlugin.PLUGIN_ID + ".trace"); //$NON-NLS-1$);
//$JUnit-BEGIN$
+ suite.addTestSuite(TmfLocationTest.class);
+ suite.addTestSuite(TmfCheckpointTest.class);
+ suite.addTestSuite(TmfContextTest.class);
suite.addTestSuite(TmfTraceTest.class);
- suite.addTestSuite(TmfExperimentTest.class);
- suite.addTestSuite(TmfMultiTraceExperimentTest.class);
//$JUnit-END$
return suite;
}
public void testTmfContextDefault() {
TmfContext context = new TmfContext();
assertEquals("getLocation", null, context.getLocation());
- assertEquals("getRank", TmfContext.UNKNOWN_RANK, context.getRank());
+ assertEquals("getRank", 0, context.getRank());
}
public void testTmfContextNoRank() {
assertEquals("getLocation", fLocation2, context2.getLocation());
assertEquals("getLocation", fLocation3, context3.getLocation());
- assertEquals("getRank", TmfContext.UNKNOWN_RANK, context1.getRank());
- assertEquals("getRank", TmfContext.UNKNOWN_RANK, context2.getRank());
- assertEquals("getRank", TmfContext.UNKNOWN_RANK, context3.getRank());
+ assertEquals("getRank", 0, context1.getRank());
+ assertEquals("getRank", 0, context2.getRank());
+ assertEquals("getRank", 0, context3.getRank());
}
public void testTmfContext() {
+++ /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.trace;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Vector;
-
-import junit.framework.TestCase;
-
-import org.eclipse.core.runtime.FileLocator;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.linuxtools.tmf.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
-import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin;
-import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
-import org.eclipse.linuxtools.tmf.trace.TmfContext;
-import org.eclipse.linuxtools.tmf.trace.TmfTraceStub;
-
-/**
- * <b><u>TmfExperimentTest</u></b>
- * <p>
- * TODO: Implement me. Please.
- */
-public class TmfMultiTraceExperimentTest extends TestCase {
-
- private static final String DIRECTORY = "testfiles";
- private static final String TEST_STREAM1 = "O-Test-10K";
- private static final String TEST_STREAM2 = "E-Test-10K";
- private static final String EXPERIMENT = "MyExperiment";
- private static int NB_EVENTS = 20000;
- private static int fDefaultBlockSize = 1000;
-
- private static ITmfTrace[] fTrace;
- private static TmfExperiment<TmfEvent> fExperiment;
-
- private static byte SCALE = (byte) -3;
-
- // ------------------------------------------------------------------------
- // Housekeeping
- // ------------------------------------------------------------------------
-
- private ITmfTrace[] setupTrace(String path1, String path2) {
- if (fTrace == null) {
- fTrace = new ITmfTrace[2];
- try {
- URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path1), null);
- File test = new File(FileLocator.toFileURL(location).toURI());
- TmfTraceStub trace1 = new TmfTraceStub(test.getPath(), true);
- fTrace[0] = trace1;
- location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path2), null);
- test = new File(FileLocator.toFileURL(location).toURI());
- TmfTraceStub trace2 = new TmfTraceStub(test.getPath(), true);
- fTrace[1] = trace2;
- } catch (URISyntaxException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return fTrace;
- }
-
- private void setupExperiment() {
- if (fExperiment == null) {
- fExperiment = new TmfExperiment<TmfEvent>(TmfEvent.class, EXPERIMENT, fTrace);
- fExperiment.indexExperiment(true);
- }
- }
-
- public TmfMultiTraceExperimentTest(String name) throws Exception {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- setupTrace(DIRECTORY + File.separator + TEST_STREAM1, DIRECTORY + File.separator + TEST_STREAM2);
- setupExperiment();
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
- // ------------------------------------------------------------------------
- // Constructor
- // ------------------------------------------------------------------------
-
- public void testBasicTmfExperimentConstructor() {
- assertEquals("GetId", EXPERIMENT, fExperiment.getName());
- assertEquals("GetEpoch", TmfTimestamp.Zero, fExperiment.getEpoch());
- assertEquals("GetNbEvents", NB_EVENTS, fExperiment.getNbEvents());
-
- TmfTimeRange timeRange = fExperiment.getTimeRange();
- assertEquals("getStartTime", 1, timeRange.getStartTime().getValue());
- assertEquals("getEndTime", NB_EVENTS, timeRange.getEndTime().getValue());
- }
-
- // ------------------------------------------------------------------------
- // parseEvent - make sure parseEvent doesn't update the context
- // ------------------------------------------------------------------------
-
- public void testParseEvent() throws Exception {
-
- // On lower bound, returns the first event (ts = 0)
- TmfContext context = fExperiment.seekEvent(new TmfTimestamp(0, SCALE, 0));
-
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-
- for (int i = 1; i < 20; i++) {
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", i, event.getTimestamp().getValue());
- }
-
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 20, event.getTimestamp().getValue());
-
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 20, event.getTimestamp().getValue());
- }
-
- // ------------------------------------------------------------------------
- // getNextEvent - updates the context
- // ------------------------------------------------------------------------
-
- public void testGetNextEvent() throws Exception {
-
- // On lower bound, returns the first event (ts = 0)
- TmfContext context = fExperiment.seekEvent(new TmfTimestamp(0, SCALE, 0));
- TmfEvent event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-
- for (int i = 2; i < 20; i++) {
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", i, event.getTimestamp().getValue());
- }
- }
-
- // ------------------------------------------------------------------------
- // seekLocation
- // Note: seekLocation() does not reliably set the rank
- // ------------------------------------------------------------------------
-
- public void testSeekLocationOnCacheBoundary() throws Exception {
-
- // Position trace at event rank 0
- TmfContext context = fExperiment.seekLocation(null);
-// assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event rank 1000
- TmfContext tmpContext = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1001, context.getRank());
-
- // Position trace at event rank 4000
- tmpContext = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4001, context.getRank());
- }
-
- public void testSeekLocationNotOnCacheBoundary() throws Exception {
-
- // Position trace at event rank 9
- TmfContext tmpContext = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
- TmfContext context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 9, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-// assertEquals("Event rank", 9, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-// assertEquals("Event rank", 10, context.getRank());
-
- // Position trace at event rank 999
- tmpContext = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
-// assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1000, context.getRank());
-
- // Position trace at event rank 1001
- tmpContext = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1002, context.getRank());
-
- // Position trace at event rank 4500
- tmpContext = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4501, context.getRank());
- }
-
- public void testSeekLocationOutOfScope() throws Exception {
-
- // Position trace at beginning
- TmfContext tmpContext = fExperiment.seekLocation(null);
- TmfContext context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event passed the end
- tmpContext = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
- context = fExperiment.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", null, event);
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", null, event);
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
- }
-
- // ------------------------------------------------------------------------
- // seekEvent on timestamp
- // ------------------------------------------------------------------------
-
- public void testSeekEventOnTimestampOnCacheBoundary() throws Exception {
-
- // Position trace at event rank 0
- TmfContext context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
- assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event rank 1000
- context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
- assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
- assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
- assertEquals("Event rank", 1001, context.getRank());
-
- // Position trace at event rank 4000
- context = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
- assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
- assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
- assertEquals("Event rank", 4001, context.getRank());
- }
-
- public void testSeekEventOnTimestampNotOnCacheBoundary() throws Exception {
-
- // Position trace at event rank 1
- TmfContext context = fExperiment.seekEvent(new TmfTimestamp(2, SCALE, 0));
- assertEquals("Event rank", 1, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
- assertEquals("Event rank", 1, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 2, event.getTimestamp().getValue());
- assertEquals("Event rank", 2, context.getRank());
-
- // Position trace at event rank 9
- context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
- assertEquals("Event rank", 9, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
- assertEquals("Event rank", 9, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
- assertEquals("Event rank", 10, context.getRank());
-
- // Position trace at event rank 999
- context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
- assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
- assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
- assertEquals("Event rank", 1000, context.getRank());
-
- // Position trace at event rank 1001
- context = fExperiment.seekEvent(new TmfTimestamp(1002, SCALE, 0));
- assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
- assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
- assertEquals("Event rank", 1002, context.getRank());
-
- // Position trace at event rank 4500
- context = fExperiment.seekEvent(new TmfTimestamp(4501, SCALE, 0));
- assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
- assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
- assertEquals("Event rank", 4501, context.getRank());
- }
-
- public void testSeekEventOnTimestampoutOfScope() throws Exception {
-
- // Position trace at beginning
- TmfContext context = fExperiment.seekEvent(new TmfTimestamp(-1, SCALE, 0));
- assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event passed the end
- context = fExperiment.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", null, event);
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", null, event);
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- }
-
- // ------------------------------------------------------------------------
- // seekEvent on rank
- // ------------------------------------------------------------------------
-
- public void testSeekOnRankOnCacheBoundary() throws Exception {
-
- // On lower bound, returns the first event (ts = 1)
- TmfContext context = fExperiment.seekEvent(0);
- assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event rank 1000
- context = fExperiment.seekEvent(1000);
- assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
- assertEquals("Event rank", 1000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
- assertEquals("Event rank", 1001, context.getRank());
-
- // Position trace at event rank 4000
- context = fExperiment.seekEvent(4000);
- assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
- assertEquals("Event rank", 4000, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
- assertEquals("Event rank", 4001, context.getRank());
- }
-
- public void testSeekOnRankNotOnCacheBoundary() throws Exception {
-
- // Position trace at event rank 9
- TmfContext context = fExperiment.seekEvent(9);
- assertEquals("Event rank", 9, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
- assertEquals("Event rank", 9, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
- assertEquals("Event rank", 10, context.getRank());
-
- // Position trace at event rank 999
- context = fExperiment.seekEvent(999);
- assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
- assertEquals("Event rank", 999, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
- assertEquals("Event rank", 1000, context.getRank());
-
- // Position trace at event rank 1001
- context = fExperiment.seekEvent(1001);
- assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
- assertEquals("Event rank", 1001, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
- assertEquals("Event rank", 1002, context.getRank());
-
- // Position trace at event rank 4500
- context = fExperiment.seekEvent(4500);
- assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
- assertEquals("Event rank", 4500, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
- assertEquals("Event rank", 4501, context.getRank());
- }
-
- public void testSeekEventOnRankOfScope() throws Exception {
-
- // Position trace at beginning
- TmfContext context = fExperiment.seekEvent(-1);
- assertEquals("Event rank", 0, context.getRank());
- TmfEvent event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 0, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
- assertEquals("Event rank", 1, context.getRank());
-
- // Position trace at event passed the end
- context = fExperiment.seekEvent(NB_EVENTS);
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.parseEvent(context);
- assertEquals("Event timestamp", null, event);
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- event = fExperiment.getNextEvent(context);
- assertEquals("Event timestamp", null, event);
- assertEquals("Event rank", NB_EVENTS, context.getRank());
- }
-
- // ------------------------------------------------------------------------
- // processRequest
- // ------------------------------------------------------------------------
-
- public void testProcessRequestForNbEvents() throws Exception {
- final int blockSize = 100;
- final int nbEvents = 1000;
- final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
-
- TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
- final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
- @Override
- public void handleData() {
- TmfEvent[] events = getData();
- for (TmfEvent e : events) {
- requestedEvents.add(e);
- }
- }
- };
- fExperiment.sendRequest(request);
- request.waitForCompletion();
-
- assertEquals("nbEvents", nbEvents, requestedEvents.size());
- assertTrue("isCompleted", request.isCompleted());
- assertFalse("isCancelled", request.isCancelled());
-
- // Ensure that we have distinct events.
- // Don't go overboard: we are not validating the stub!
- for (int i = 0; i < nbEvents; i++) {
- assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
- }
- }
-
- public void testProcessRequestForNbEvents2() throws Exception {
- final int blockSize = 2 * NB_EVENTS;
- final int nbEvents = 1000;
- final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
-
- TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
- final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
- @Override
- public void handleData() {
- TmfEvent[] events = getData();
- for (TmfEvent e : events) {
- requestedEvents.add(e);
- }
- }
- };
- fExperiment.sendRequest(request);
- request.waitForCompletion();
-
- assertEquals("nbEvents", nbEvents, requestedEvents.size());
- assertTrue("isCompleted", request.isCompleted());
- assertFalse("isCancelled", request.isCancelled());
-
- // Ensure that we have distinct events.
- // Don't go overboard: we are not validating the stub!
- for (int i = 0; i < nbEvents; i++) {
- assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
- }
- }
-
- public void testProcessRequestForAllEvents() throws Exception {
- final int nbEvents = TmfEventRequest.ALL_DATA;
- final int blockSize = 1;
- final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
- long nbExpectedEvents = fExperiment.getNbEvents();
-
- TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
- final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
- @Override
- public void handleData() {
- TmfEvent[] events = getData();
- for (TmfEvent e : events) {
- requestedEvents.add(e);
- }
- }
- };
- fExperiment.sendRequest(request);
- request.waitForCompletion();
-
- assertEquals("nbEvents", nbExpectedEvents, requestedEvents.size());
- assertTrue("isCompleted", request.isCompleted());
- assertFalse("isCancelled", request.isCancelled());
-
- // Ensure that we have distinct events.
- // Don't go overboard: we are not validating the stub!
- for (int i = 0; i < nbExpectedEvents; i++) {
- assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
- }
- }
-
- // ------------------------------------------------------------------------
- // cancel
- // ------------------------------------------------------------------------
-
- public void testCancel() throws Exception {
- final int nbEvents = NB_EVENTS;
- final int blockSize = fDefaultBlockSize;
- final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
-
- TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
- final TmfEventRequest<TmfEvent> request = new TmfEventRequest<TmfEvent>(TmfEvent.class, range, nbEvents, blockSize) {
- @Override
- public void handleData() {
- TmfEvent[] events = getData();
- for (TmfEvent e : events) {
- requestedEvents.add(e);
- }
- // Cancel request after the first chunk is received
- cancel();
- }
- };
- fExperiment.sendRequest(request);
- request.waitForCompletion();
-
- assertEquals("nbEvents", blockSize, requestedEvents.size());
- assertTrue("isCompleted", request.isCompleted());
- assertTrue("isCancelled", request.isCancelled());
- }
-
- // ------------------------------------------------------------------------
- // getRank
- // ------------------------------------------------------------------------
-
- public void testGetRank() throws Exception {
- assertEquals("getRank", 0, fExperiment.getRank(new TmfTimestamp()));
- assertEquals("getRank", 0, fExperiment.getRank(new TmfTimestamp( 1, (byte) -3)));
- assertEquals("getRank", 10, fExperiment.getRank(new TmfTimestamp( 11, (byte) -3)));
- assertEquals("getRank", 100, fExperiment.getRank(new TmfTimestamp( 101, (byte) -3)));
- assertEquals("getRank", 1000, fExperiment.getRank(new TmfTimestamp(1001, (byte) -3)));
- assertEquals("getRank", 2000, fExperiment.getRank(new TmfTimestamp(2001, (byte) -3)));
- assertEquals("getRank", 2500, fExperiment.getRank(new TmfTimestamp(2501, (byte) -3)));
- }
-
- // ------------------------------------------------------------------------
- // getTimestamp
- // ------------------------------------------------------------------------
-
- public void testGetTimestamp() throws Exception {
- assertTrue("getTimestamp", fExperiment.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
- assertTrue("getTimestamp", fExperiment.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
- assertTrue("getTimestamp", fExperiment.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
- assertTrue("getTimestamp", fExperiment.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
- assertTrue("getTimestamp", fExperiment.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
- assertTrue("getTimestamp", fExperiment.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));
- }
-
-}
\ No newline at end of file
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.request.TmfEventRequest;
import org.eclipse.linuxtools.tmf.tests.TmfCoreTestPlugin;
+import org.eclipse.linuxtools.tmf.trace.ITmfContext;
import org.eclipse.linuxtools.tmf.trace.TmfCheckpoint;
import org.eclipse.linuxtools.tmf.trace.TmfContext;
+import org.eclipse.linuxtools.tmf.trace.TmfTrace;
import org.eclipse.linuxtools.tmf.trace.TmfTraceStub;
/**
* <b><u>TmfTraceTest</u></b>
* <p>
- * TODO: Implement me. Please.
+ * Test suite for the TmfTrace class.
*/
public class TmfTraceTest extends TestCase {
+ // ------------------------------------------------------------------------
+ // Variables
+ // ------------------------------------------------------------------------
+
private static final String DIRECTORY = "testfiles";
private static final String TEST_STREAM = "A-Test-10K";
+ private static final int BLOCK_SIZE = 500;
private static final int NB_EVENTS = 10000;
private static TmfTraceStub fTrace = null;
// Housekeeping
// ------------------------------------------------------------------------
+ public TmfTraceTest(String name) throws Exception {
+ super(name);
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ fTrace = setupTrace(DIRECTORY + File.separator + TEST_STREAM);
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ fTrace.dispose();
+ fTrace = null;
+ }
+
+ // ------------------------------------------------------------------------
+ // Helper functions
+ // ------------------------------------------------------------------------
+
private TmfTraceStub setupTrace(String path) {
if (fTrace == null) {
try {
URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(path), null);
File test = new File(FileLocator.toFileURL(location).toURI());
- fTrace = new TmfTraceStub(test.getPath(), 500, true);
+ fTrace = new TmfTraceStub(test.getPath(), BLOCK_SIZE, false);
+ fTrace.indexTrace(true);
} catch (URISyntaxException e) {
e.printStackTrace();
} catch (IOException e) {
return fTrace;
}
- public TmfTraceTest(String name) throws Exception {
- super(name);
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
- setupTrace(DIRECTORY + File.separator + TEST_STREAM);
- }
-
- @Override
- protected void tearDown() throws Exception {
- super.tearDown();
- }
-
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
public void testTmfTraceDefault() throws Exception {
TmfTraceStub trace = null;
+ File testfile = null;
try {
URL location = FileLocator.find(TmfCoreTestPlugin.getDefault().getBundle(), new Path(DIRECTORY + File.separator + TEST_STREAM), null);
- File test = new File(FileLocator.toFileURL(location).toURI());
- trace = new TmfTraceStub(test.getPath(), true);
+ testfile = new File(FileLocator.toFileURL(location).toURI());
+ trace = new TmfTraceStub(testfile.getPath());
} catch (URISyntaxException e) {
- e.printStackTrace();
+ fail("URISyntaxException");
} catch (IOException e) {
- e.printStackTrace();
+ fail("IOException");
}
- assertTrue("Open trace", trace != null);
- assertEquals("getCacheSize", TmfTraceStub.DEFAULT_CACHE_SIZE, trace.getCacheSize());
- assertEquals("getTraceSize", NB_EVENTS, trace.getNbEvents());
+ assertTrue ("Open trace", trace != null);
+ assertEquals("getType", TmfEvent.class, trace.getType());
+ assertEquals("getPath", testfile.getPath(), trace.getPath());
+ assertEquals("getName", TEST_STREAM, trace.getName());
+ assertEquals("getCacheSize", TmfTrace.DEFAULT_CACHE_SIZE, trace.getCacheSize());
+ }
+
+ public void testTmfTraceDefaultCacheSize() throws Exception {
+ TmfTraceStub trace = null;
+ File testfile = null;
+ try {
+ 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.getPath(), 0);
+ } catch (URISyntaxException e) {
+ fail("URISyntaxException");
+ } catch (IOException e) {
+ fail("IOException");
+ }
+ assertTrue ("Open trace", trace != null);
+ assertEquals("getType", TmfEvent.class, trace.getType());
+ assertEquals("getPath", testfile.getPath(), trace.getPath());
+ assertEquals("getName", TEST_STREAM, trace.getName());
+ assertEquals("getCacheSize", TmfTrace.DEFAULT_CACHE_SIZE, trace.getCacheSize());
}
public void testTmfTrace() throws Exception {
- assertEquals("getCacheSize", 500, fTrace.getCacheSize());
- assertEquals("getTraceSize", NB_EVENTS, fTrace.getNbEvents());
- assertEquals("getRange-start", 1, fTrace.getTimeRange().getStartTime().getValue());
- assertEquals("getRange-end", NB_EVENTS, fTrace.getTimeRange().getEndTime().getValue());
+ assertEquals("getType", TmfEvent.class, fTrace.getType());
+ assertEquals("getName", TEST_STREAM, fTrace.getName());
+ assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getCacheSize());
+ }
+
+ public void testClone() throws Exception {
+ TmfTraceStub trace = fTrace.clone();
+ assertEquals("getType", TmfEvent.class, trace.getType());
+ assertEquals("getPath", fTrace.getPath(), trace.getPath());
+ assertEquals("getName", TEST_STREAM, trace.getName());
+ assertEquals("getCacheSize", BLOCK_SIZE, trace.getCacheSize());
+ assertEquals("getTimeRange", fTrace.getTimeRange(), trace.getTimeRange());
}
+ // ------------------------------------------------------------------------
+ // Get/Set time range
+ // ------------------------------------------------------------------------
+
+ public void testSetTimeRange() throws Exception {
+ TmfTraceStub trace = fTrace.clone();
+
+ assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("getStartTime", 1, trace.getStartTime().getValue());
+ assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
+
+ trace.setTimeRange(new TmfTimeRange(new TmfTimestamp(100), new TmfTimestamp(200)));
+ assertEquals("setTimeRange", 100, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("setTimeRange", 200, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("setTimeRange", 100, trace.getStartTime().getValue());
+ assertEquals("setTimeRange", 200, trace.getEndTime().getValue());
+ }
+
+ public void testSetStartTime() throws Exception {
+ TmfTraceStub trace = fTrace.clone();
+
+ assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("getStartTime", 1, trace.getStartTime().getValue());
+ assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
+
+ trace.setStartTime(new TmfTimestamp(100));
+ assertEquals("setStartTime", 100, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("setStartTime", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("setStartTime", 100, trace.getStartTime().getValue());
+ assertEquals("setStartTime", NB_EVENTS, trace.getEndTime().getValue());
+ }
+
+ public void testSetEndTime() throws Exception {
+ TmfTraceStub trace = fTrace.clone();
+
+ assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("getStartTime", 1, trace.getStartTime().getValue());
+ assertEquals("getEndTime", NB_EVENTS, trace.getEndTime().getValue());
+
+ trace.setEndTime(new TmfTimestamp(100));
+ assertEquals("setEndTime", 1, trace.getTimeRange().getStartTime().getValue());
+ assertEquals("setEndTime", 100, trace.getTimeRange().getEndTime().getValue());
+ assertEquals("setEndTime", 1, trace.getStartTime().getValue());
+ assertEquals("setEndTime", 100, trace.getEndTime().getValue());
+ }
+
// ------------------------------------------------------------------------
// Verify checkpoints
// ------------------------------------------------------------------------
- public void testValidateCheckpoints() throws Exception {
+ public void testTmfTraceIndexing() throws Exception {
+ assertEquals("getCacheSize", BLOCK_SIZE, fTrace.getCacheSize());
+ assertEquals("getTraceSize", NB_EVENTS, fTrace.getNbEvents());
+ assertEquals("getRange-start", 1, fTrace.getTimeRange().getStartTime().getValue());
+ assertEquals("getRange-end", NB_EVENTS, fTrace.getTimeRange().getEndTime().getValue());
+ assertEquals("getStartTime", 1, fTrace.getStartTime().getValue());
+ assertEquals("getEndTime", NB_EVENTS, fTrace.getEndTime().getValue());
Vector<TmfCheckpoint> checkpoints = fTrace.getCheckpoints();
int pageSize = fTrace.getCacheSize();
// Position trace at event rank 0
TmfContext context = fTrace.seekLocation(null);
-// assertEquals("Event rank", 0, context.getRank());
+ assertEquals("Event rank", 0, context.getRank());
TmfEvent event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 0, context.getRank());
+ assertEquals("Event rank", 0, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1, context.getRank());
+ assertEquals("Event rank", 1, context.getRank());
// Position trace at event rank 1000
TmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(1001, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 1000, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1000, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1001, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
// Position trace at event rank 4000
tmpContext = fTrace.seekEvent(new TmfTimestamp(4001, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 4000, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4000, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4001, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
}
public void testSeekLocationNotOnCacheBoundary() throws Exception {
// Position trace at event rank 9
TmfContext tmpContext = fTrace.seekEvent(new TmfTimestamp(10, SCALE, 0));
TmfContext context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 9, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
TmfEvent event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-// assertEquals("Event rank", 9, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-// assertEquals("Event rank", 10, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
// Position trace at event rank 999
tmpContext = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 999, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
-// assertEquals("Event rank", 999, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1000, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
// Position trace at event rank 1001
tmpContext = fTrace.seekEvent(new TmfTimestamp(1002, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 1001, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1001, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 1002, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1002, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
// Position trace at event rank 4500
tmpContext = fTrace.seekEvent(new TmfTimestamp(4501, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 4500, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4500, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 4501, event.getTimestamp().getValue());
-// assertEquals("Event rank", 4501, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
}
public void testSeekLocationOutOfScope() throws Exception {
// Position trace at beginning
TmfContext tmpContext = fTrace.seekLocation(null);
TmfContext context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", 0, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
TmfEvent event = fTrace.parseEvent(context);
assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 0, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-// assertEquals("Event rank", 1, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
// Position trace at event passed the end
tmpContext = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
context = fTrace.seekLocation(tmpContext.getLocation().clone());
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.parseEvent(context);
assertEquals("Event timestamp", null, event);
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
event = fTrace.getNextEvent(context);
assertEquals("Event timestamp", null, event);
-// assertEquals("Event rank", NB_EVENTS, context.getRank());
+ assertEquals("Event rank", ITmfContext.UNKNOWN_RANK, context.getRank());
}
// ------------------------------------------------------------------------
assertTrue("isCancelled", request.isCancelled());
}
-// // ------------------------------------------------------------------------
-// // getRank
-// // ------------------------------------------------------------------------
-//
-// public void testGetRank() throws Exception {
-// assertEquals("getRank", 0, fTrace.getRank(new TmfTimestamp()));
-// assertEquals("getRank", 0, fTrace.getRank(new TmfTimestamp( 1, (byte) -3)));
-// assertEquals("getRank", 10, fTrace.getRank(new TmfTimestamp( 11, (byte) -3)));
-// assertEquals("getRank", 100, fTrace.getRank(new TmfTimestamp( 101, (byte) -3)));
-// assertEquals("getRank", 1000, fTrace.getRank(new TmfTimestamp(1001, (byte) -3)));
-// assertEquals("getRank", 2000, fTrace.getRank(new TmfTimestamp(2001, (byte) -3)));
-// assertEquals("getRank", 2500, fTrace.getRank(new TmfTimestamp(2501, (byte) -3)));
-// }
-//
-// // ------------------------------------------------------------------------
-// // getTimestamp
-// // ------------------------------------------------------------------------
-//
-// public void testGetTimestamp() throws Exception {
-// assertTrue("getTimestamp", fTrace.getTimestamp( 0).equals(new TmfTimestamp( 1, (byte) -3)));
-// assertTrue("getTimestamp", fTrace.getTimestamp( 10).equals(new TmfTimestamp( 11, (byte) -3)));
-// assertTrue("getTimestamp", fTrace.getTimestamp( 100).equals(new TmfTimestamp( 101, (byte) -3)));
-// assertTrue("getTimestamp", fTrace.getTimestamp(1000).equals(new TmfTimestamp(1001, (byte) -3)));
-// assertTrue("getTimestamp", fTrace.getTimestamp(2000).equals(new TmfTimestamp(2001, (byte) -3)));
-// assertTrue("getTimestamp", fTrace.getTimestamp(2500).equals(new TmfTimestamp(2501, (byte) -3)));
-// }
-
}
\ No newline at end of file
import java.io.RandomAccessFile;
import org.eclipse.linuxtools.tmf.event.TmfEvent;
+import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
+import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.parser.ITmfEventParser;
/**
// ------------------------------------------------------------------------
// The actual stream
- private final RandomAccessFile fTrace;
+ private RandomAccessFile fTrace;
// The associated event parser
- private final ITmfEventParser fParser;
+ private ITmfEventParser fParser;
// ------------------------------------------------------------------------
// Constructors
* @throws FileNotFoundException
*/
public TmfTraceStub(String filename) throws FileNotFoundException {
- this(filename, DEFAULT_CACHE_SIZE, false);
+ super(TmfEvent.class, filename);
+ fTrace = new RandomAccessFile(filename, "r");
+ fParser = new TmfEventParserStub();
}
/**
/**
* @param filename
+ * @param waitForCompletion
* @throws FileNotFoundException
*/
public TmfTraceStub(String filename, boolean waitForCompletion) throws FileNotFoundException {
this(filename, DEFAULT_CACHE_SIZE, waitForCompletion);
}
- public ITmfTrace createTraceCopy() {
- ITmfTrace returnedValue = null;
- try {
- returnedValue = new TmfTraceStub(this.getName());
- }
- catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- return returnedValue;
- }
-
/**
* @param filename
* @param cacheSize
+ * @param waitForCompletion
* @throws FileNotFoundException
*/
public TmfTraceStub(String filename, int cacheSize, boolean waitForCompletion) throws FileNotFoundException {
super(TmfEvent.class, filename, cacheSize);
fTrace = new RandomAccessFile(filename, "r");
fParser = new TmfEventParserStub();
- indexTrace(waitForCompletion);
}
+// /**
+// * @param other
+// */
+// public TmfTraceStub(TmfTraceStub other) {
+// this(filename, DEFAULT_CACHE_SIZE, waitForCompletion);
+// }
+
+ /**
+ */
+ @Override
+ public TmfTraceStub clone() {
+ TmfTraceStub clone = null;
+ try {
+ clone = (TmfTraceStub) super.clone();
+ clone.fTrace = new RandomAccessFile(getName(), "r");
+ clone.fParser = new TmfEventParserStub();
+ } catch (CloneNotSupportedException e) {
+ } catch (FileNotFoundException e) {
+ }
+ return clone;
+ }
+
+ public ITmfTrace createTraceCopy() {
+ ITmfTrace returnedValue = null;
+ try {
+ returnedValue = new TmfTraceStub(this.getName());
+ }
+ catch (FileNotFoundException e) {
+ e.printStackTrace();
+ }
+ return returnedValue;
+ }
+
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
synchronized(fTrace) {
// Position the trace at the requested location and
// returns the corresponding context
- long loc = (location != null) ? ((TmfLocation<Long>) location).getLocation() : 0;
+ long loc = 0;
+ long rank = 0;
+ if (location != null) {
+ loc = ((TmfLocation<Long>) location).getLocation();
+ rank = ITmfContext.UNKNOWN_RANK;
+ }
if (loc != fTrace.getFilePointer()) {
fTrace.seek(loc);
}
- TmfContext context = new TmfContext(getCurrentLocation(), 0);
+ TmfContext context = new TmfContext(getCurrentLocation(), rank);
return context;
}
} catch (IOException e) {
return null;
}
+ @Override
+ public void setTimeRange(TmfTimeRange range) {
+ super.setTimeRange(range);
+ }
+
+ @Override
+ public void setStartTime(TmfTimestamp startTime) {
+ super.setStartTime(startTime);
+ }
+
+ @Override
+ public void setEndTime(TmfTimestamp endTime) {
+ super.setEndTime(endTime);
+ }
+
}
\ No newline at end of file
import org.eclipse.linuxtools.tmf.event.TmfEvent;
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.experiment.TmfExperiment;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentSelectedSignal;
-import org.eclipse.linuxtools.tmf.experiment.TmfExperimentUpdatedSignal;
import org.eclipse.linuxtools.tmf.request.TmfDataRequest;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentUpdatedSignal;
import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
import org.eclipse.linuxtools.tmf.signal.TmfTimeSynchSignal;
import org.eclipse.swt.SWT;
return fQueueSize;
}
+ public Class<?> getType() {
+ return fType;
+ }
+
// ------------------------------------------------------------------------
// ITmfRequestHandler
// ------------------------------------------------------------------------
*/
public class TmfProviderManager {
+ // ------------------------------------------------------------------------
+ // No constructor
+ // ------------------------------------------------------------------------
+
+ private TmfProviderManager() {}
+
// ------------------------------------------------------------------------
// Keeps track of the providers for each event type
// ------------------------------------------------------------------------
public static <T extends TmfData> void register(Class<T> eventType, TmfDataProvider<? extends TmfData> provider) {
if (fProviders.get(eventType) == null)
fProviders.put(eventType, new ArrayList<TmfDataProvider<? extends TmfData>>());
- assert(fProviders.get(eventType) != null);
fProviders.get(eventType).add(provider);
}
package org.eclipse.linuxtools.tmf.event;
+
/**
* <b><u>TmfTimestamp</u></b>
* <p>
* Notice that the adjusted timestamp value could be negative e.g. for events
* that occurred before t0 wrt the reference clock.
*/
-public class TmfTimestamp {
+public class TmfTimestamp implements Cloneable {
// ------------------------------------------------------------------------
// Attributes
return "[TmfTimestamp(" + fValue + "," + fScale + "," + fPrecision + ")]";
}
+ @Override
+ public TmfTimestamp clone() {
+ TmfTimestamp clone = null;
+ try {
+ clone = (TmfTimestamp) super.clone();
+ clone.fValue = fValue;
+ clone.fScale = fScale;
+ clone.fPrecision = fPrecision;
+ } catch (CloneNotSupportedException e) {
+ }
+ return clone;
+ }
+
}
\ No newline at end of file
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.request.ITmfEventRequest;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentSelectedSignal;
+import org.eclipse.linuxtools.tmf.signal.TmfExperimentUpdatedSignal;
import org.eclipse.linuxtools.tmf.signal.TmfRangeSynchSignal;
import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
+import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal;
import org.eclipse.linuxtools.tmf.trace.ITmfContext;
import org.eclipse.linuxtools.tmf.trace.ITmfLocation;
import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
import org.eclipse.linuxtools.tmf.trace.TmfCheckpoint;
import org.eclipse.linuxtools.tmf.trace.TmfContext;
-import org.eclipse.linuxtools.tmf.trace.TmfTraceUpdatedSignal;
/**
* <b><u>TmfExperiment</u></b>
/**
- *
+ * Clears the experiment
*/
@Override
public void dispose() {
+ for (ITmfTrace trace : fTraces) {
+ trace.dispose();
+ }
fTraces = null;
fCheckpoints.clear();
- setCurrentExperiment(null);
super.dispose();
}
@Override
public ITmfContext armRequest(ITmfDataRequest<T> request) {
-
TmfTimestamp timestamp = (request instanceof ITmfEventRequest<?>) ?
((ITmfEventRequest<T>) request).getRange().getStartTime() : null;
-
-
TmfExperimentContext context = (timestamp != null) ?
seekEvent(timestamp) : seekEvent(request.getIndex());
-
return context;
-
-// TmfTimestamp timestamp = null;
-//
-// if (request instanceof TmfEventRequest<?> == true) {
-// timestamp = ((TmfEventRequest<T>) request).getRange().getStartTime();
-// }
-// else if (request instanceof TmfCoalescedEventRequest<?> == true) {
-// timestamp = ((TmfCoalescedEventRequest<?>)request).getRange().getStartTime();
-// }
-// else {
-// System.out.println("ERROR : request of unknown instance in armRequest(). Class is : " + request.getClass().toString() );
-// }
-
-
}
@SuppressWarnings("unchecked")
@TmfSignalHandler
public void experimentSelected(TmfExperimentSelectedSignal<T> signal) {
- setCurrentExperiment(signal.getExperiment());
+ TmfExperiment<?> experiment = signal.getExperiment();
+ if (experiment == this) {
+ setCurrentExperiment(experiment);
+ }
+ else {
+ dispose();
+ }
// if (signal.getExperiment() == this) {
// indexExperiment(true);
// }
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2009 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.experiment;
-
-import org.eclipse.linuxtools.tmf.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.signal.TmfSignal;
-
-/**
- * <b><u>TmfExperimentSelectedSignal</u></b>
- * <p>
- * TODO: Implement me. Please.
- */
-public class TmfExperimentSelectedSignal<T extends TmfEvent> extends TmfSignal {
-
- private final TmfExperiment<T> fExperiment;
-
- public TmfExperimentSelectedSignal(Object source, TmfExperiment<T> experiment) {
- super(source);
- fExperiment = experiment;
- }
-
- public TmfExperiment<? extends TmfEvent> getExperiment() {
- return fExperiment;
- }
-
- @Override
- public String toString() {
- return "[TmfExperimentSelectedSignal (" + fExperiment.getName() + ")]";
- }
-}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2009 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.experiment;
-
-import org.eclipse.linuxtools.tmf.event.TmfEvent;
-import org.eclipse.linuxtools.tmf.signal.TmfSignal;
-import org.eclipse.linuxtools.tmf.trace.ITmfTrace;
-
-/**
- * <b><u>TmfExperimentUpdatedSignal</u></b>
- * <p>
- * TODO: Implement me. Please.
- */
-public class TmfExperimentUpdatedSignal extends TmfSignal {
-
- private final TmfExperiment<? extends TmfEvent> fExperiment;
- private final ITmfTrace fTrace;
-
- public TmfExperimentUpdatedSignal(Object source, TmfExperiment<? extends TmfEvent> experiment, ITmfTrace trace) {
- super(source);
- fExperiment = experiment;
- fTrace = trace;
- }
-
- public TmfExperiment<? extends TmfEvent> getExperiment() {
- return fExperiment;
- }
-
- public ITmfTrace getTrace() {
- return fTrace;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "[TmfExperimentUpdatedSignal (" + fExperiment.toString() + ", " + fTrace.toString() + ")]";
- }
-
-}
*/
public interface ITmfContext {
+ public long UNKNOWN_RANK = -1L;
+
public void setLocation(ITmfLocation<?> location);
public ITmfLocation<?> getLocation();
* <p>
* This is a place-holder for the location objects.
*/
-public interface ITmfLocation<L> extends Cloneable{
+public interface ITmfLocation<L> extends Cloneable {
public void setLocation(L location);
package org.eclipse.linuxtools.tmf.trace;
+import org.eclipse.linuxtools.tmf.component.ITmfComponent;
import org.eclipse.linuxtools.tmf.event.TmfEvent;
import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
* <b><u>ITmfTrace</u></b>
* <p>
*/
-public interface ITmfTrace {
+public interface ITmfTrace extends ITmfComponent {
public ITmfTrace createTraceCopy();
public TmfTimestamp getStartTime();
public TmfTimestamp getEndTime();
- /**
+ /**
* Positions the trace at the first event with the specified
* timestamp or index (i.e. the nth event in the trace).
*
/**
* <b><u>TmfCheckpoint</u></b>
* <p>
- * This class maps an event timestamp with a location.
+ * This class maps an event timestamp to a generic location.
*/
public class TmfCheckpoint implements Comparable<TmfCheckpoint> {
// Constructors
// ------------------------------------------------------------------------
+ @SuppressWarnings("unused")
+ private TmfCheckpoint() {
+ fTimestamp = null;
+ fLocation = null;
+ }
+
/**
- * @param ts
- * @param location
+ * @param ts the checkpoint timestamp
+ * @param location the corresponding trace location
*/
public TmfCheckpoint(TmfTimestamp ts, ITmfLocation<?> location) {
fTimestamp = ts;
fLocation = location;
}
+ /**
+ * Deep copy constructor
+ * @param other the other checkpoint
+ */
+ public TmfCheckpoint(TmfCheckpoint other) {
+ if (other == null)
+ throw new IllegalArgumentException();
+ fTimestamp = (TmfTimestamp) other.fTimestamp.clone();
+ fLocation = other.fLocation.clone();
+ }
+
// ------------------------------------------------------------------------
// Accessors
// ------------------------------------------------------------------------
/**
- * @return the checkpoint event timestamp
+ * @return the checkpoint timestamp
*/
public TmfTimestamp getTimestamp() {
return fTimestamp;
}
/**
- * @return the checkpoint event stream location
+ * @return the checkpoint stream location
*/
public ITmfLocation<?> getLocation() {
return fLocation;
@Override
public int hashCode() {
- int result = 37;
- result = 17 * result + fTimestamp.hashCode();
- return result;
+ return fTimestamp.hashCode();
}
@Override
return fTimestamp.equals(o.fTimestamp);
}
+ @Override
+ public String toString() {
+ return "[TmfCheckpoint(" + fTimestamp + "," + fLocation + ")]";
+ }
+
// ------------------------------------------------------------------------
// Comparable
// ------------------------------------------------------------------------
* Trace context structure. It ties a trace location to an event rank. The
* context should be enough to restore the trace state so the corresponding
* event can be read.
- * <p>
- * Used to handle conflicting, concurrent accesses to the trace.
*/
public class TmfContext implements ITmfContext, Cloneable {
this(null, 0);
}
- // ------------------------------------------------------------------------
- // Cloneable
- // ------------------------------------------------------------------------
-
- @Override
- public TmfContext clone() {
- try {
- return (TmfContext) super.clone();
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
- }
- return null;
- }
-
// ------------------------------------------------------------------------
// ITmfContext
// ------------------------------------------------------------------------
}
public void updateRank(int delta) {
- fRank += delta;
+ if (fRank != UNKNOWN_RANK)
+ fRank += delta;
+ }
+
+ // ------------------------------------------------------------------------
+ // Object
+ // ------------------------------------------------------------------------
+
+ @Override
+ public int hashCode() {
+ int result = 17;
+ result = 37 * result + fLocation.hashCode();
+ result = 37 * result + (int) (fRank ^ (fRank >>> 32));
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (!(other instanceof TmfContext)) {
+ return false;
+ }
+ TmfContext o = (TmfContext) other;
+ return fLocation.equals(o.fLocation) && (fRank == o.fRank);
+ }
+
+ @Override
+ public String toString() {
+ return "[TmfContext(" + fLocation.toString() + "," + fRank + ")]";
+ }
+
+ @Override
+ public TmfContext clone() {
+ TmfContext clone = null;
+ try {
+ clone = (TmfContext) super.clone();
+ clone.fLocation = fLocation.clone();
+ clone.fRank = fRank;
+ } catch (CloneNotSupportedException e) {
+ }
+ return clone;
}
}
package org.eclipse.linuxtools.tmf.trace;
+import java.lang.reflect.Method;
+
/**
* <b><u>TmfLocation</u></b>
* <p>
private L fLocation;
+ @SuppressWarnings("unused")
+ private TmfLocation() {
+ }
+
public TmfLocation(L location) {
fLocation = location;
}
+ public TmfLocation(TmfLocation<L> other) {
+ if (other == null)
+ throw new IllegalArgumentException();
+ fLocation = other.fLocation;
+ }
+
public void setLocation(L location) {
fLocation = location;
}
return fLocation;
}
+ // ------------------------------------------------------------------------
+ // Object
+ // ------------------------------------------------------------------------
+
+ @Override
+ public int hashCode() {
+ return fLocation.hashCode();
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (!(other instanceof TmfLocation<?>))
+ return false;
+ TmfLocation<?> o = (TmfLocation<?>) other;
+ return fLocation.equals(o.fLocation);
+ }
+
@Override
public String toString() {
return fLocation.toString();
}
- @Override
@SuppressWarnings("unchecked")
+ @Override
public TmfLocation<L> clone() {
+ TmfLocation<L> clone = null;
try {
- return (TmfLocation<L>) super.clone();
- } catch (CloneNotSupportedException e) {
- e.printStackTrace();
+ clone = (TmfLocation<L>) super.clone();
+ Class<?> clazz = this.fLocation.getClass();
+ Method method = clazz.getMethod("clone", new Class[0]);
+ Object duplic = method.invoke(this.fLocation, new Object[0]);
+ clone.fLocation = (L) duplic;
+ } catch (NoSuchMethodException e) {
+ // exception suppressed
+ } catch (Exception e) {
+ throw new InternalError(e.toString());
}
- return null;
+ return clone;
}
}
import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
import org.eclipse.linuxtools.tmf.request.ITmfDataRequest;
import org.eclipse.linuxtools.tmf.request.ITmfEventRequest;
-import org.eclipse.linuxtools.tmf.request.TmfCoalescedEventRequest;
+import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal;
/**
* <b><u>TmfTrace</u></b>
* class and provide implementation for <code>getCurrentLocation()</code> and
* <code>seekLocation()</code>, as well as a proper parser, to have a working
* concrete implementation.
- *
+ * <p>
* Note: The notion of event rank is still under heavy discussion. Although
- * used for by the Events View and probably useful in then general case, there
+ * used by the Events View and probably useful in the general case, there
* is no easy way to implement it for LTTng (actually a strong case is being
- * made that this is useless). Therefore, this is a minimal and partial
- * implementation and rank should not be relied upon in the general case (i.e.
- * it was hacked to work for the Events View).
+ * made that this is useless).
+ * <p>
+ * That it is not supported by LTTng does by no mean indicate that it is not
+ * useful for (just about) every other tracing tool. Therefore, this class
+ * provides a minimal (and partial) implementation of rank. However, the current
+ * implementation should not be relied on in the general case.
*
* TODO: Add support for live streaming (notifications, incremental indexing, ...)
*/
-public abstract class TmfTrace<T extends TmfEvent> extends TmfEventProvider<T> implements ITmfTrace {
+public abstract class TmfTrace<T extends TmfEvent> extends TmfEventProvider<T> implements ITmfTrace, Cloneable {
// ------------------------------------------------------------------------
// Constants
// Constructors
// ------------------------------------------------------------------------
+ /**
+ * @param path
+ * @throws FileNotFoundException
+ */
+ protected TmfTrace(Class<T> type, String path) throws FileNotFoundException {
+ this(type, path, DEFAULT_CACHE_SIZE);
+ }
+
/**
* @param path
* @param cacheSize
fIndexPageSize = (cacheSize > 0) ? cacheSize : DEFAULT_CACHE_SIZE;
}
- /**
- * @param path
- * @throws FileNotFoundException
+ /* (non-Javadoc)
+ * @see java.lang.Object#clone()
*/
- protected TmfTrace(Class<T> type, String path) throws FileNotFoundException {
- this(type, path, DEFAULT_CACHE_SIZE);
+ @SuppressWarnings("unchecked")
+ @Override
+ public TmfTrace<T> clone() throws CloneNotSupportedException {
+ TmfTrace<T> clone = (TmfTrace<T>) super.clone();
+ clone.fCheckpoints = (Vector<TmfCheckpoint>) fCheckpoints.clone();
+ clone.fTimeRange = new TmfTimeRange(fTimeRange);
+ return clone;
}
// ------------------------------------------------------------------------
return fTimeRange.getEndTime();
}
- public Vector<TmfCheckpoint> getCheckpoints() {
- return fCheckpoints;
+ @SuppressWarnings("unchecked")
+ public Vector<TmfCheckpoint> getCheckpoints() {
+ return (Vector<TmfCheckpoint>) fCheckpoints.clone();
}
// ------------------------------------------------------------------------
if (request instanceof ITmfEventRequest<?>) {
return seekEvent(((ITmfEventRequest<T>) request).getRange().getStartTime());
}
- if (request instanceof TmfCoalescedEventRequest<?>) {
- return seekEvent(((TmfCoalescedEventRequest<T>) request).getRange().getStartTime());
- }
- return null;
+ return seekEvent(request.getIndex());
}
/**
context.setRank(index * fIndexPageSize);
// And locate the event
- TmfContext nextEventContext = new TmfContext(context);
+ TmfContext nextEventContext = context.clone(); // Must use clone() to get the right subtype...
TmfEvent event = getNextEvent(nextEventContext);
while (event != null && event.getTimestamp().compareTo(timestamp, false) < 0) {
context.setLocation(nextEventContext.getLocation().clone());
*
* @param event
*/
- public void processEvent(TmfEvent event) {
+ protected void processEvent(TmfEvent event) {
// Do nothing by default
}
*/
@Override
public String toString() {
- return "[TmfTrace (" + fName + "]";
+ return "[TmfTrace (" + fName + ")]";
}
// ------------------------------------------------------------------------
// ------------------------------------------------------------------------
/*
- * The purpose of the index is to keep the information needed to rapidly
- * access a trace event based on its timestamp or rank.
+ * The purpose of the index is to perform a pass over the trace and collect
+ * basic information that can be later used to rapidly access a trace events.
+ *
+ * The information collected:
+ * - fCheckpoints, the list of evenly separated checkpoints (timestamp + location)
+ * - fTimeRange, the trace time span
+ * - fNbEvents, the number of events in the trace
*
- * NOTE: As it is, doesn't work for streaming traces.
+ * NOTE: Doesn't work for streaming traces.
*/
private IndexingJob job;
// Indicates that an indexing job is already running
- private Object fIndexingLock = new Object();
private boolean fIndexing = false;
private Boolean fIndexed = false;
public void indexTrace(boolean waitForCompletion) {
- synchronized (fIndexingLock) {
+ synchronized (this) {
if (fIndexed || fIndexing) {
return;
}
+++ /dev/null
-/*******************************************************************************
- * Copyright (c) 2009 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.trace;
-
-import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
-import org.eclipse.linuxtools.tmf.signal.TmfSignal;
-
-/**
- * <b><u>TmfTraceUpdatedSignal</u></b>
- * <p>
- * TODO: Implement me. Please.
- */
-public class TmfTraceUpdatedSignal extends TmfSignal {
-
- private final ITmfTrace fTrace;
- private final TmfTimeRange fTimeRange;
-
- public TmfTraceUpdatedSignal(Object source, ITmfTrace trace, TmfTimeRange range) {
- super(source);
- fTrace = trace;
- fTimeRange = range;
- }
-
- public ITmfTrace getTrace() {
- return fTrace;
- }
-
- public TmfTimeRange getRange() {
- return fTimeRange;
- }
-
- /* (non-Javadoc)
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
- return "[TmfTraceUpdatedSignal (" + fTrace.toString() + ", " + fTimeRange.toString() + ")]";
- }
-
-}