[287563] Updated TmfExperiment and TmfTrace.
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.tests / src / org / eclipse / linuxtools / tmf / trace / TmfTraceTest.java
index a8556c3bcfadab951542a96075f1bd8b4e71abe7..75457064166f9840801b4d3fdc7d0b31eced797a 100644 (file)
 package org.eclipse.linuxtools.tmf.trace;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.io.File;
+import java.util.Vector;
 
 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.request.TmfDataRequest;
 import org.eclipse.linuxtools.tmf.trace.TmfTraceStub;
 import org.eclipse.linuxtools.tmf.trace.ITmfTrace.TmfTraceContext;
 import org.junit.BeforeClass;
@@ -31,9 +36,9 @@ import org.junit.Test;
 public class TmfTraceTest {
 
     private static final String DIRECTORY   = "testfiles";
-    private static final String TEST_STREAM = "M-Test-100K";
+    private static final String TEST_STREAM = "M-Test-10K";
     private static String testfile;
-    private static final int NB_EVENTS = 100000;
+    private static final int NB_EVENTS = 10000;
     private static TmfTraceStub fTrace;
 
     private static byte SCALE = (byte) -3;
@@ -54,22 +59,20 @@ public class TmfTraceTest {
 
     @Test
     public void testDefaultConstructor() throws Exception {
-        TmfTraceStub stream = new TmfTraceStub(testfile);
+        TmfTraceStub trace = new TmfTraceStub(testfile);
 
-        assertEquals("getCacheSize", TmfTraceStub.DEFAULT_PAGE_SIZE, stream.getPageSize());
-        assertEquals("getTraceSize", NB_EVENTS, stream.getNbEvents());
-        assertEquals("getRange-start", 1, stream.getTimeRange().getStartTime().getValue());
-        assertEquals("getRange-end", NB_EVENTS, stream.getTimeRange().getEndTime().getValue());
+        assertEquals("getCacheSize", TmfTraceStub.DEFAULT_PAGE_SIZE, trace.getPageSize());
+        assertEquals("getTraceSize", NB_EVENTS, trace.getNbEvents());
+        assertEquals("getRange-start", 1, trace.getTimeRange().getStartTime().getValue());
+        assertEquals("getRange-end", NB_EVENTS, trace.getTimeRange().getEndTime().getValue());
     }
 
     @Test
     public void testNormalConstructor() throws Exception {
-        TmfTraceStub stream = new TmfTraceStub(testfile, 500);
-
-        assertEquals("getCacheSize",    500, stream.getPageSize());
-        assertEquals("getTraceSize", NB_EVENTS, stream.getNbEvents());
-        assertEquals("getRange-start",    1, stream.getTimeRange().getStartTime().getValue());
-        assertEquals("getRange-end", NB_EVENTS, stream.getTimeRange().getEndTime().getValue());
+        assertEquals("getCacheSize",    500,    fTrace.getPageSize());
+        assertEquals("getTraceSize", NB_EVENTS, fTrace.getNbEvents());
+        assertEquals("getRange-start",    1,    fTrace.getTimeRange().getStartTime().getValue());
+        assertEquals("getRange-end", NB_EVENTS, fTrace.getTimeRange().getEndTime().getValue());
     }
 
     // ========================================================================
@@ -78,42 +81,50 @@ public class TmfTraceTest {
 
     @Test
     public void testSeekOnCacheBoundary() throws Exception {
-       TmfTraceContext context = new TmfTraceContext(null);
+       TmfTraceContext context = fTrace.seekLocation(null);
 
-       TmfEvent event = fTrace.getEvent(context, new TmfTimestamp(0, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0));
+       TmfEvent event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
 
-        event = fTrace.getEvent(context, new TmfTimestamp(1000, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(1000, SCALE, 0));
+        event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
 
-        event = fTrace.getEvent(context, new TmfTimestamp(4000, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(4000, SCALE, 0));
+        event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 4000, event.getTimestamp().getValue());
     }
 
     @Test
     public void testSeekNotOnCacheBoundary() throws Exception {
-       TmfTraceContext context = new TmfTraceContext(null);
+       TmfTraceContext context = fTrace.seekLocation(null);
 
-       TmfEvent event = fTrace.getEvent(context, new TmfTimestamp(1, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(1, SCALE, 0));
+       TmfEvent event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
 
-        event = fTrace.getEvent(context, new TmfTimestamp(999, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(999, SCALE, 0));
+        event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 999, event.getTimestamp().getValue());
 
-        event = fTrace.getEvent(context, new TmfTimestamp(4499, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(4499, SCALE, 0));
+        event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 4499, event.getTimestamp().getValue());
     }
 
     @Test
     public void testSeekForEventOutOfBounds() throws Exception {
-       TmfTraceContext context = new TmfTraceContext(null);
+       TmfTraceContext context = fTrace.seekLocation(null);
 
        // On lower bound, returns the first event (ts = 1)
-        TmfEvent event = fTrace.getEvent(context, new TmfTimestamp(-1, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(-1, SCALE, 0));
+        TmfEvent event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
 
         // On higher bound, returns null (no event)
-        event = fTrace.getEvent(context, new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(NB_EVENTS + 1, SCALE, 0));
+        event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", null, event);
     }
 
@@ -123,10 +134,11 @@ public class TmfTraceTest {
 
     @Test
     public void testGetNextEvent() throws Exception {
-       TmfTraceContext context = new TmfTraceContext(null);
+       TmfTraceContext context = fTrace.seekLocation(null);
 
        // On lower bound, returns the first event (ts = 0)
-        TmfEvent event = fTrace.getEvent(context, new TmfTimestamp(0, SCALE, 0));
+       context = fTrace.seekEvent(new TmfTimestamp(0, SCALE, 0));
+        TmfEvent event = fTrace.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
 
         for (int i = 2; i < 20; i++) {
@@ -135,4 +147,94 @@ public class TmfTraceTest {
         }
     }
 
+    // ========================================================================
+    // processRequest
+    // ========================================================================
+
+    @Test
+    public void testProcessRequestForNbEvents() throws Exception {
+        final int BLOCK_SIZE = 100;
+        final int NB_EVENTS  = 1000;
+        final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
+
+        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
+        final TmfDataRequest<TmfEvent> request = new TmfDataRequest<TmfEvent>(range, 0, NB_EVENTS, BLOCK_SIZE) {
+            @Override
+            public void handleData() {
+               TmfEvent[] events = getData();
+                for (TmfEvent e : events) {
+                    requestedEvents.add(e);
+                }
+            }
+        };
+        fTrace.processRequest(request, true);
+
+        assertEquals("nbEvents", NB_EVENTS, 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 < NB_EVENTS; i++) {
+            assertEquals("Distinct events", i+1, requestedEvents.get(i).getTimestamp().getValue());
+        }
+    }
+    
+    @Test
+    public void testProcessRequestForAllEvents() throws Exception {
+        final int NB_EVENTS  = -1;
+        final int BLOCK_SIZE =  1;
+        final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
+        long nbExpectedEvents = fTrace.getNbEvents();
+
+        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
+        final TmfDataRequest<TmfEvent> request = new TmfDataRequest<TmfEvent>(range, 0, NB_EVENTS, BLOCK_SIZE) {
+            @Override
+            public void handleData() {
+               TmfEvent[] events = getData();
+                for (TmfEvent e : events) {
+                    requestedEvents.add(e);
+                }
+            }
+        };
+        fTrace.processRequest(request, true);
+
+        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
+    // ========================================================================
+
+    @Test
+    public void testCancel() throws Exception {
+        final Vector<TmfEvent> requestedEvents = new Vector<TmfEvent>();
+
+        TmfTimeRange range = new TmfTimeRange(TmfTimestamp.BigBang, TmfTimestamp.BigCrunch);
+        final TmfDataRequest<TmfEvent> request = new TmfDataRequest<TmfEvent>(range, 0, NB_EVENTS, NB_EVENTS) {
+            @Override
+            public void handleData() {
+               TmfEvent[] events = getData();
+                for (TmfEvent e : events) {
+                    requestedEvents.add(e);
+                }
+                // Cancel request after the first chunk is received
+                cancel();
+            }
+        };
+        fTrace.processRequest(request, true);
+
+        assertEquals("nbEvents",  NB_EVENTS, requestedEvents.size());
+        assertTrue("isCompleted", request.isCompleted());
+        assertTrue("isCancelled", request.isCancelled());
+    }
+
 }
This page took 0.036099 seconds and 5 git commands to generate.