Added missing test files + a few fixes
authorFrancois Chouinard <fchouinard@gmail.com>
Fri, 12 Mar 2010 18:50:08 +0000 (18:50 +0000)
committerFrancois Chouinard <fchouinard@gmail.com>
Fri, 12 Mar 2010 18:50:08 +0000 (18:50 +0000)
org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfExperimentTest.java
org.eclipse.linuxtools.tmf.tests/src/org/eclipse/linuxtools/tmf/tests/trace/TmfMultiTraceExperimentTest.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/component/TmfDataProvider.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/event/TmfData.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperiment.java
org.eclipse.linuxtools.tmf/src/org/eclipse/linuxtools/tmf/experiment/TmfExperimentContext.java

index 203fd90d06a1ffa43b19c6cae131fd641df79126..0304bb85ceb363962c25becd634365414ab4c358 100644 (file)
@@ -118,17 +118,17 @@ public class TmfExperimentTest extends TestCase {
        context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
        TmfEvent event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1, context.getRank());
+        assertEquals("Event rank", 0, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1001, context.getRank());
+        assertEquals("Event rank", 1000, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 4001, context.getRank());
+        assertEquals("Event rank", 4000, context.getRank());
     }
 
     public void testSeekNotOnCacheBoundary() throws Exception {
@@ -137,21 +137,21 @@ public class TmfExperimentTest extends TestCase {
        context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
        TmfEvent event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-        assertEquals("Event rank", 10, context.getRank());
+        assertEquals("Event rank", 9, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(999, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 999, event.getTimestamp().getValue());
-        assertEquals("Event rank", 999, context.getRank());
+        assertEquals("Event rank", 998, context.getRank());
 
-       context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
+       context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
         event = fExperiment.getNextEvent(context);
-        assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1001, context.getRank());
+        assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
+        assertEquals("Event rank", 999, context.getRank());
 
-       context = fExperiment.seekEvent(new TmfTimestamp(4499, SCALE, 0));
+       context = fExperiment.seekEvent(new TmfTimestamp(4500, SCALE, 0));
         event = fExperiment.getNextEvent(context);
-        assertEquals("Event timestamp", 4499, event.getTimestamp().getValue());
+        assertEquals("Event timestamp", 4500, event.getTimestamp().getValue());
         assertEquals("Event rank", 4499, context.getRank());
     }
 
@@ -319,6 +319,8 @@ public class TmfExperimentTest extends TestCase {
         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)));
     }
 
     // ------------------------------------------------------------------------
@@ -330,6 +332,8 @@ public class TmfExperimentTest extends TestCase {
         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
index 1bb47fe6afbee3dc4483375928a6c73570e6c375..de3a2cf6b4757b1e793673b1ead19364b775465b 100644 (file)
@@ -123,17 +123,17 @@ public class TmfMultiTraceExperimentTest extends TestCase {
        context = fExperiment.seekEvent(new TmfTimestamp(1, SCALE, 0));
        TmfEvent event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 1, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1, context.getRank());
+        assertEquals("Event rank", 0, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1001, context.getRank());
+        assertEquals("Event rank", 1000, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(4001, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 4001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 4001, context.getRank());
+        assertEquals("Event rank", 4000, context.getRank());
     }
 
     public void testSeekNotOnCacheBoundary() throws Exception {
@@ -142,21 +142,21 @@ public class TmfMultiTraceExperimentTest extends TestCase {
        context = fExperiment.seekEvent(new TmfTimestamp(10, SCALE, 0));
        TmfEvent event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 10, event.getTimestamp().getValue());
-        assertEquals("Event rank", 10, context.getRank());
+        assertEquals("Event rank", 9, context.getRank());
 
        context = fExperiment.seekEvent(new TmfTimestamp(999, SCALE, 0));
         event = fExperiment.getNextEvent(context);
         assertEquals("Event timestamp", 999, event.getTimestamp().getValue());
-        assertEquals("Event rank", 999, context.getRank());
+        assertEquals("Event rank", 998, context.getRank());
 
-       context = fExperiment.seekEvent(new TmfTimestamp(1001, SCALE, 0));
+       context = fExperiment.seekEvent(new TmfTimestamp(1000, SCALE, 0));
         event = fExperiment.getNextEvent(context);
-        assertEquals("Event timestamp", 1001, event.getTimestamp().getValue());
-        assertEquals("Event rank", 1001, context.getRank());
+        assertEquals("Event timestamp", 1000, event.getTimestamp().getValue());
+        assertEquals("Event rank", 999, context.getRank());
 
-       context = fExperiment.seekEvent(new TmfTimestamp(4499, SCALE, 0));
+       context = fExperiment.seekEvent(new TmfTimestamp(4500, SCALE, 0));
         event = fExperiment.getNextEvent(context);
-        assertEquals("Event timestamp", 4499, event.getTimestamp().getValue());
+        assertEquals("Event timestamp", 4500, event.getTimestamp().getValue());
         assertEquals("Event rank", 4499, context.getRank());
     }
 
@@ -324,6 +324,8 @@ public class TmfMultiTraceExperimentTest extends TestCase {
         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)));
     }
 
     // ------------------------------------------------------------------------
@@ -335,6 +337,8 @@ public class TmfMultiTraceExperimentTest extends TestCase {
         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
index 3d38ad0422ac31ba7258b863410ded25c6cafb0d..e85a07544453aeebaf5d6a2caa46694b32ad8cf4 100644 (file)
@@ -275,27 +275,27 @@ public class TmfEventsView extends TmfView {
         });
     }
 
-    @TmfSignalHandler
-    public void currentTimeUpdated(TmfTimeSynchSignal signal) {
-       if (signal.getSource() != fTable && fExperiment != null) {
-               final int index = (int) fExperiment.getRank(signal.getCurrentTime());
-            // Perform the updates on the UI thread
-            fTable.getDisplay().asyncExec(new Runnable() {
-               public void run() {
-                       fTable.setSelection(index);
-                       // The timestamp might not correspond to an actual event
-                       // and the selection will point to the next experiment event.
-                       // But we would like to display both the event before and
-                       // after the selected timestamp.
-                       // This works fine by default except when the selected event
-                       // is the top displayed event. The following ensures that we
-                       // always see both events.
-                       if ((index > 0) && (index == fTable.getTopIndex())) {
-                               fTable.setTopIndex(index - 1);
-                       }
-               }
-            });
-       }
-    }
+//    @TmfSignalHandler
+//    public void currentTimeUpdated(TmfTimeSynchSignal signal) {
+//     if (signal.getSource() != fTable && fExperiment != null) {
+//             final int index = (int) fExperiment.getRank(signal.getCurrentTime());
+//            // Perform the updates on the UI thread
+//            fTable.getDisplay().asyncExec(new Runnable() {
+//             public void run() {
+//                     fTable.setSelection(index);
+//                     // The timestamp might not correspond to an actual event
+//                     // and the selection will point to the next experiment event.
+//                     // But we would like to display both the event before and
+//                     // after the selected timestamp.
+//                     // This works fine by default except when the selected event
+//                     // is the top displayed event. The following ensures that we
+//                     // always see both events.
+//                     if ((index > 0) && (index == fTable.getTopIndex())) {
+//                             fTable.setTopIndex(index - 1);
+//                     }
+//             }
+//            });
+//     }
+//    }
 
 }
\ No newline at end of file
index ae68357fb63f1af0b85493c44a04b574831f37ba..59571e50a6c1eb20713c619d9e5c09ca10e10618 100644 (file)
@@ -172,10 +172,15 @@ public abstract class TmfDataProvider<T extends TmfData> extends TmfComponent im
                                        result.add(data);
                                        if (++nbRead % blockSize == 0) {
                                                pushData(request, result);
+//                                             data.setNull();
+//                                             result.add(data);
                                        }
                                        // To avoid an unnecessary read passed the last data requested
-                                       if (nbRead < nbRequested)
+                                       if (nbRead < nbRequested) {
                                                data = getNext(context);
+//                                             while (data != null && data.isNull())
+//                                                     data = getNext(context);
+                                       }
                                }
                                pushData(request, result);
                                request.done();
index b63d9bdeafbadfc1e5bbd454f32c9ef8bf83ea77..5f467ee68a685114faa9bbb49839882b67bd398e 100644 (file)
@@ -22,4 +22,18 @@ package org.eclipse.linuxtools.tmf.event;
  */
 public abstract class TmfData {
 
+//     private boolean isNull = false;
+//     
+//     public void setNull() {
+//             isNull = true;
+//     }
+//     
+//     public void resetNull() {
+//             isNull = false;
+//     }
+//     
+//     public boolean isNull() {
+//             return isNull;
+//     }
+
 }
index 432af9c7a5975e721ec79081d1e3700e65aab95e..bf702d190b3b7c26f0d6003f7190d067c3d3f0a5 100644 (file)
@@ -187,7 +187,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
      */
     public TmfTimestamp getTimestamp(int index) {
        TmfExperimentContext context = seekEvent(index);
-       TmfEvent event = parseEvent(context);
+       TmfEvent event = getNextEvent(context);
        return (event != null) ? event.getTimestamp() : null;
     }
 
@@ -287,6 +287,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
                        }
                        context.setLocation(new TmfExperimentLocation(newloc));
                        context.setRank(rank);
+                       context.setLastTrace(-1);
                        return context;
                }
                return null;
@@ -328,9 +329,10 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
         // And get the event
         TmfEvent event = parseEvent(context);
         while (event != null && event.getTimestamp().compareTo(timestamp, false) < 0) {
-               getNextEvent(context);
-               event = parseEvent(context);
+               event = getNextEvent(context);
+//             event = parseEvent(context);
         }
+       context.setLastTrace(-1);
 
         return context;
        }
@@ -372,6 +374,15 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
        public synchronized TmfEvent getNextEvent(TmfContext context) {
                if (context instanceof TmfExperimentContext) {
                        TmfExperimentContext expContext = (TmfExperimentContext) context;
+                       int lastTrace = expContext.getLastTrace();
+                       if (lastTrace != -1) {
+                               TmfContext traceContext = expContext.getContexts()[lastTrace];
+                               expContext.getTraces()[lastTrace].getNextEvent(traceContext);
+                               expContext.getEvents()[lastTrace] = expContext.getTraces()[lastTrace].parseEvent(traceContext);
+                               TmfExperimentLocation expLocation = (TmfExperimentLocation) expContext.getLocation();
+                               expLocation.getLocation()[lastTrace] = traceContext.getLocation().clone();
+                               expContext.updateRank(1);
+                       }
                        int trace = -1;
                        TmfTimestamp timestamp = TmfTimestamp.BigCrunch;
                        for (int i = 0; i < expContext.getTraces().length; i++) {
@@ -387,12 +398,14 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
                        }
 
                        if (trace >= 0) {
-                               TmfContext trcloc = expContext.getContexts()[trace];
-                               TmfEvent event = expContext.getTraces()[trace].getNextEvent(trcloc);
-                               TmfExperimentLocation exploc = (TmfExperimentLocation) expContext.getLocation();
-                               exploc.getLocation()[trace] = trcloc.getLocation().clone();
-                               expContext.getEvents()[trace] = expContext.getTraces()[trace].parseEvent(trcloc);
-                               expContext.updateRank(1);
+                               expContext.setLastTrace(trace);
+//                             TmfContext traceContext = expContext.getContexts()[trace];
+                               TmfEvent event = expContext.getEvents()[trace];
+//                             TmfEvent event = expContext.getTraces()[trace].getNextEvent(trcloc);
+//                             TmfEvent event = expContext.getTraces()[trace].parseEvent(traceContext);
+//                             TmfExperimentLocation exploc = (TmfExperimentLocation) expContext.getLocation();
+//                             exploc.getLocation()[trace] = trcloc.getLocation().clone();
+//                             expContext.getEvents()[trace] = expContext.getTraces()[trace].parseEvent(trcloc);
                                return event;
                        }
                }
@@ -521,7 +534,7 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
                TmfExperimentLocation location = (TmfExperimentLocation) context.getLocation();
 
                 // Get the first event
-                       TmfEvent event = parseEvent(context);
+                       TmfEvent event = getNextEvent(context);
                        if (event != null) {
                     startTime = new TmfTimestamp(event.getTimestamp());
                        }
@@ -574,29 +587,30 @@ public class TmfExperiment<T extends TmfEvent> extends TmfEventProvider<T> imple
        broadcast(new TmfRangeSynchSignal(this, range, null));
        }
    
-//     // ========================================================================
-//     // Toubleshooting code
-//     // ========================================================================
-//
-//     private void dumpCheckpoints() {
-//             System.out.println("-----");
-//             System.out.println("Checkpoints of " + fExperimentId);
-//             for (int i = 0; i < fCheckpoints.size(); i++) {
-//             System.out.println("Entry:" + i);
-//             TmfCheckpoint checkpoint = fCheckpoints.get(i);
-////           long rank = 0; 
-//             for (int j = 0; j < fTraces.length; j++) {
-//                     ITmfTrace trace = fTraces[j];
-//             TmfExperimentContext context = seekLocation(checkpoint.getLocation());
-//             TmfContext[] traces = context.getContexts();
-////                   rank += context.getRank(); 
-//             TmfEvent event = fTraces[j].getNextEvent(new TmfContext(traces[j]));
+       // ========================================================================
+       // Toubleshooting code
+       // ========================================================================
+
+       private void dumpCheckpoints() {
+               System.out.println("-----");
+               System.out.println("Checkpoints of " + fExperimentId);
+               for (int i = 0; i < fCheckpoints.size(); i++) {
+               System.out.println("Entry:" + i);
+               TmfCheckpoint checkpoint = fCheckpoints.get(i);
+//             long rank = 0; 
+               for (int j = 0; j < fTraces.length; j++) {
+                       ITmfTrace trace = fTraces[j];
+               TmfExperimentContext context = seekLocation(checkpoint.getLocation());
+               TmfContext[] traces = context.getContexts();
+//                     rank += context.getRank(); 
+               TmfEvent event = fTraces[j].getNextEvent(new TmfContext(traces[j]));
 //             System.out.println("  ["  + trace.getName() + "] rank: " + context.getRank() + ", timestamp: " + event.getTimestamp());
-//             assert (checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0);
-//             }
-////           System.out.println("Sum of ranks: " + rank + " (expected: " + i * fIndexPageSize + ")");
-//        }
-//     }
+               System.out.println("  ["  + trace.getName() + "] timestamp: " + event.getTimestamp());
+               assert (checkpoint.getTimestamp().compareTo(event.getTimestamp(), false) == 0);
+               }
+//             System.out.println("Sum of ranks: " + rank + " (expected: " + i * fIndexPageSize + ")");
+        }
+       }
 
     // ------------------------------------------------------------------------
     // Signal handlers
index 2f01d008c2b6965cec8fcbf0a7d7392cf936ef2b..a0cb0271c33776194ccc58ae104586cb7e35433b 100644 (file)
@@ -27,6 +27,7 @@ public class TmfExperimentContext extends TmfContext {
        private ITmfTrace[]  fTraces = new ITmfTrace[0];
        private TmfContext[] fContexts;
        private TmfEvent[]   fEvents;
+       private int lastIndex;
 
        // ------------------------------------------------------------------------
        // Constructors
@@ -49,6 +50,7 @@ public class TmfExperimentContext extends TmfContext {
                
                setLocation(new TmfExperimentLocation(locations));
                setRank(rank);
+               lastIndex = -1;
        }
 
        public TmfExperimentContext(ITmfTrace[] traces) {
@@ -85,4 +87,12 @@ public class TmfExperimentContext extends TmfContext {
                return fEvents;
        }
 
+       public int getLastTrace() {
+               return lastIndex;
+       }
+
+       public void setLastTrace(int newIndex) {
+               lastIndex = newIndex;
+       }
+
 }
This page took 0.033433 seconds and 5 git commands to generate.