Partial fixes for experiment indexing with CTF traces
authorFrancois Chouinard <fchouinard@gmail.com>
Wed, 16 May 2012 18:21:57 +0000 (14:21 -0400)
committerFrancois Chouinard <fchouinard@gmail.com>
Wed, 16 May 2012 18:21:57 +0000 (14:21 -0400)
12 files changed:
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/internal/tmf/core/Tracer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfDataProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/component/TmfEventProvider.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/ctfadaptor/CtfTmfTrace.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/event/TmfTimeRange.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/experiment/TmfExperiment.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfCoalescedDataRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfCoalescedEventRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/request/TmfEventRequest.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfCheckpointIndexer.java
org.eclipse.linuxtools.tmf.core/src/org/eclipse/linuxtools/tmf/core/trace/TmfTrace.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java

index 03e34092a98731aed2a3392235fc26f88929873b..c09790649e658f225d36ae349600e1c131c9e101 100644 (file)
@@ -153,7 +153,7 @@ public class Tracer {
     }\r
 \r
     public static void traceComponent(ITmfComponent component, String msg) {\r
-        String message = ("[CMP] Thread=" + Thread.currentThread().getId() + " Cmp=" + component.getName() + " " + msg);\r
+        String message = ("[CMP] Cmp=" + component.getName() + " " + msg);\r
         trace(message);\r
     }\r
 \r
@@ -163,23 +163,22 @@ public class Tracer {
     }\r
 \r
     public static void traceSignal(TmfSignal signal, String msg) {\r
-        String message = ("[SIG] Type=" + signal.getClass().getSimpleName() + " Target=" + msg);\r
+        String message = ("[SIG] Sig=" + signal.getClass().getSimpleName() + " Target=" + msg);\r
         trace(message);\r
     }\r
 \r
-    public static void traceEvent(ITmfDataProvider<?> provider, ITmfDataRequest<?> request, ITmfEvent data) {\r
-        String message = ("[EVT] Provider=" + provider.toString() + ", Req=" + request.getRequestId() + ", Event=" + data\r
-                .toString());\r
+    public static void traceEvent(ITmfDataProvider<?> provider, ITmfDataRequest<?> request, ITmfEvent event) {\r
+        String message = ("[EVT] Provider=" + provider.toString() + ", Req=" + request.getRequestId() + ", Event=" + event.getTimestamp());\r
         trace(message);\r
     }\r
 \r
     public static void traceError(String msg) {\r
-        String message = ("[ERR] Thread=" + Thread.currentThread().getId() + " " + msg);\r
+        String message = ("[ERR] Err=" + msg);\r
         trace(message);\r
     }\r
 \r
     public static void traceInfo(String msg) {\r
-        String message = ("[INF] Thread=" + Thread.currentThread().getId() + " " + msg);\r
+        String message = ("[INF] " + msg);\r
         trace(message);\r
     }\r
 \r
index 779725501a9c64315f5cfb93b2947d3071b4530c..fcc6e3ee0eecbc7c94a7375ec70c8f6c5edbe721 100644 (file)
@@ -248,8 +248,9 @@ public abstract class TmfDataProvider<T extends ITmfEvent> extends TmfComponent
             @Override
             public void run() {
 
-                if (Tracer.isRequestTraced())
+                if (Tracer.isRequestTraced()) {
                     Tracer.traceRequest(request, "is being serviced by " + provider.getName()); //$NON-NLS-1$
+                }
 
                 // Extract the generic information
                 request.start();
@@ -269,8 +270,8 @@ public abstract class TmfDataProvider<T extends ITmfEvent> extends TmfComponent
                     if (Tracer.isRequestTraced())
                         Tracer.traceRequest(request, "read first event"); //$NON-NLS-1$
                     while (data != null && !isCompleted(request, data, nbRead)) {
-                        if (fLogData)
-                            Tracer.traceEvent(provider, request, data);
+//                        if (fLogData)
+//                            Tracer.traceEvent(provider, request, data);
                         if (request.getDataType().isInstance(data)) {
                             request.handleData(data);
                         }
@@ -313,9 +314,16 @@ public abstract class TmfDataProvider<T extends ITmfEvent> extends TmfComponent
 
     protected void queueBackgroundRequest(final ITmfDataRequest<T> request, final int blockSize, final boolean indexing) {
 
+        final TmfDataProvider<T> provider = this;
+
         Thread thread = new Thread() {
             @Override
             public void run() {
+
+                if (Tracer.isRequestTraced()) {
+                    Tracer.traceRequest(request, "is being serviced by " + provider.getName()); //$NON-NLS-1$
+                }
+
                 request.start();
 
                 final Integer[] CHUNK_SIZE = new Integer[1];
index 8e0209f6d5f30be89c2b9d838c9af49a7d300769..9e33f57f5cf0c5134294b90be0b41fee00f55f5f 100644 (file)
@@ -91,10 +91,17 @@ public abstract class TmfEventProvider<T extends ITmfEvent> extends TmfDataProvi
                        return;
                }
 
+        final TmfDataProvider<T> provider = this;
+
                Thread thread = new Thread() {
                        @Override
                        public void run() {
-                               request.start();
+
+                if (Tracer.isRequestTraced()) {
+                    Tracer.traceRequest(request, "is being serviced by " + provider.getName()); //$NON-NLS-1$
+                }
+
+                           request.start();
 
                                final Integer[] CHUNK_SIZE = new Integer[1];
                                CHUNK_SIZE[0] = Math.min(request.getNbRequested(), blockSize + ((indexing) ? 1 : 0));
index 1534b4bc57b4932f5ecbc828d9cd5d611ace63a5..09d5acbd102bea1eaeb1a16e7b0b5dbd74f51d1d 100644 (file)
@@ -395,8 +395,8 @@ public class CtfTmfTrace extends TmfEventProvider<CtfTmfEvent> implements ITmfTr
         CtfIterator context = new CtfIterator(this);
         
         if (currentLocation.getLocation() == CtfLocation.INVALID_LOCATION) {
-            ((CtfTmfTimestamp)getEndTime()).setType(TimestampType.NANOS);
-            currentLocation.setLocation( getEndTime().getValue() + 1);
+            ((CtfTmfTimestamp) getEndTime()).setType(TimestampType.NANOS);
+            currentLocation.setLocation(getEndTime().getValue() + 1);
         }
         context.setLocation(currentLocation);
         context.setRank(ITmfContext.UNKNOWN_RANK);
index 7852199f80bd9a5d2870a569f58d5c48188b1d01..5b52285ab2228b3cdeb546f8f160c675400cbd39 100644 (file)
@@ -37,7 +37,7 @@ public final class TmfTimeRange implements Cloneable {
      * The null time range
      */
     public static final TmfTimeRange NULL_RANGE =
-            new TmfTimeRange(TmfTimestamp.BIG_CRUNCH, TmfTimestamp.BIG_BANG);
+            new TmfTimeRange(TmfTimestamp.BIG_BANG, TmfTimestamp.BIG_BANG);
 
     // ------------------------------------------------------------------------
     // Attributes
index 74a3d0e09972f8a57e2407f807414211146b7aef..2d0b0fcdc10a56226c43436f8b7b9f908b6bf6a3 100644 (file)
@@ -208,6 +208,9 @@ public class TmfExperiment<T extends ITmfEvent> extends TmfTrace<T> implements I
             timestamp = null;
         }
 
+        if (request.getIndex() == 600001) {
+            System.out.println("Aie"); //$NON-NLS-1$
+        }
         ITmfContext context = null;
         if (timestamp != null) { // Seek by timestamp
             context = seekEvent(timestamp);
index d139125f4aad114b0e3014111472ee0887b86b8f..3976c6720e7fdf5267ad149028a7eebefc7db3bb 100644 (file)
@@ -142,9 +142,8 @@ public class TmfCoalescedDataRequest<T extends ITmfEvent> extends TmfDataRequest
        public boolean isCompatible(ITmfDataRequest<T> request) {
 
                boolean ok = request.getIndex() == getIndex();
-               ok &= request.getNbRequested()  == getNbRequested();
-               ok &= request.getExecType()     == getExecType();
-               //ok &= request.getDataType()     == getDataType();
+               ok &= request.getNbRequested() == getNbRequested();
+               ok &= request.getExecType() == getExecType();
                
                return ok;
        }
index ac2b5892ff6d273f30580030527b1cb165de57dd..9a22633158fb3e26b80a2b87dad49d9f3f4bd58a 100644 (file)
@@ -12,6 +12,7 @@
 
 package org.eclipse.linuxtools.tmf.core.request;
 
+import org.eclipse.linuxtools.internal.tmf.core.Tracer;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
@@ -111,8 +112,7 @@ public class TmfCoalescedEventRequest<T extends ITmfEvent> extends TmfCoalescedD
      * @param blockSize the number of events per block
      */
     public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize) {
-        super(dataType, 0, nbRequested, blockSize, ExecutionType.FOREGROUND);
-        fRange = range;
+        this(dataType, range, 0, nbRequested, blockSize, ExecutionType.FOREGROUND);
     }
 
     /**
@@ -126,8 +126,7 @@ public class TmfCoalescedEventRequest<T extends ITmfEvent> extends TmfCoalescedD
      * @param priority the requested execution priority
      */
     public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int nbRequested, int blockSize, ExecutionType priority) {
-        super(dataType, 0, nbRequested, blockSize, priority);
-        fRange = range;
+        this(dataType, range, 0, nbRequested, blockSize, priority);
     }
 
     /**
@@ -144,6 +143,18 @@ public class TmfCoalescedEventRequest<T extends ITmfEvent> extends TmfCoalescedD
     public TmfCoalescedEventRequest(Class<T> dataType, TmfTimeRange range, int index, int nbRequested, int blockSize, ExecutionType priority) {
         super(dataType, index, nbRequested, blockSize, priority);
         fRange = range;
+
+        if (Tracer.isRequestTraced()) {
+            String type = getClass().getName();
+            type = type.substring(type.lastIndexOf('.') + 1);
+            @SuppressWarnings("nls")
+            String message = "CREATED " 
+                    + (getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? "(BG)" : "(FG)") 
+                    + " Type=" + type + " Index=" + getIndex() + " NbReq=" + getNbRequested() 
+                    + " Range=" + getRange()
+                    + " DataType=" + getDataType().getSimpleName();
+            Tracer.traceRequest(this, message);
+        }
     }
 
     // ------------------------------------------------------------------------
@@ -152,22 +163,24 @@ public class TmfCoalescedEventRequest<T extends ITmfEvent> extends TmfCoalescedD
 
        @Override
        public boolean isCompatible(ITmfDataRequest<T> request) {
-               if (request instanceof ITmfEventRequest<?>) {
-                       boolean ok = getNbRequested() == request.getNbRequested();
-                       ok &= getIndex() == request.getIndex();
-                       ok &= getExecType() == request.getExecType();
-            //ok &= getDataType() == request.getDataType();
-                       if (ok) {
-                               ITmfTimestamp startTime = ((ITmfEventRequest<T>) request).getRange().getStartTime();
-                               ITmfTimestamp endTime   = ((ITmfEventRequest<T>) request).getRange().getEndTime();
-                               if (!fRange.contains(startTime))
-                                       fRange = new TmfTimeRange(startTime, fRange.getEndTime());
-                               if (!fRange.contains(endTime))
-                                       fRange = new TmfTimeRange(fRange.getStartTime(), endTime);
-                       }
-                       return ok;
-               }
-               return false;
+           if (request instanceof ITmfEventRequest<?>) {
+               boolean ok = super.isCompatible(request);
+               if (ok) {
+                   ITmfTimestamp startTime = ((ITmfEventRequest<T>) request).getRange().getStartTime();
+                   ITmfTimestamp endTime   = ((ITmfEventRequest<T>) request).getRange().getEndTime();
+                   ok &= (startTime.compareTo(endTime) <= 0) && (fRange.getStartTime().compareTo(fRange.getEndTime()) <= 0);
+                   if (ok) {
+                       if (!fRange.contains(startTime) && fRange.getStartTime().compareTo(startTime) > 0) {
+                           fRange = new TmfTimeRange(startTime, fRange.getEndTime());
+                       }
+                       if (!fRange.contains(endTime) && fRange.getEndTime().compareTo(endTime) < 0) {
+                           fRange = new TmfTimeRange(fRange.getStartTime(), endTime);
+                       }
+                   }
+               }
+               return ok;
+           }
+           return false;
        }
 
     // ------------------------------------------------------------------------
index 946e23c83867293b23926f7bffbcd1fc10391f4c..824df46097f11ad43da0609d9e81171d81587153 100644 (file)
@@ -164,8 +164,8 @@ public abstract class TmfEventRequest<T extends ITmfEvent> extends TmfDataReques
             @SuppressWarnings("nls")
             String message = "CREATED " 
                     + (getExecType() == ITmfDataRequest.ExecutionType.BACKGROUND ? "(BG)" : "(FG)") 
-                    + " Type=" + type + " Index=" + getIndex() + " NbReq=" + getNbRequested()
-                    + " Range=" + getRange().toString()
+                    + " Type=" + type + " Index=" + getIndex() + " NbReq=" + getNbRequested() 
+                    + " Range=" + getRange()
                     + " DataType=" + getDataType().getSimpleName();
             Tracer.traceRequest(this, message);
         }
index 668cdf961356e26b7cbaacaaa09228a475d3d1c1..f1605e041913db3aff97c6c9d3336bdbd2fedb19 100644 (file)
@@ -20,6 +20,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Status;
 import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.linuxtools.internal.tmf.core.Tracer;
 import org.eclipse.linuxtools.tmf.core.event.ITmfEvent;
 import org.eclipse.linuxtools.tmf.core.event.ITmfTimestamp;
 import org.eclipse.linuxtools.tmf.core.event.TmfTimeRange;
@@ -148,6 +149,10 @@ public class TmfCheckpointIndexer<T extends ITmfTrace<ITmfEvent>> implements ITm
                     }
                     lastTime = timestamp.clone();
 
+                    if (Tracer.isEventTraced()) {
+                        Tracer.traceEvent(fTrace, this, event);
+                    }
+
                     // Update the trace status at regular intervals
                     if ((getNbRead() % fCheckpointInterval) == 0) {
                         updateTraceStatus();
index 9b1ec6397bbaecae3d0fe64c02ced22427e25e49..530169f56744cc2eef03969710fa6e2a25483ac5 100644 (file)
@@ -518,10 +518,10 @@ public abstract class TmfTrace<T extends ITmfEvent> extends TmfEventProvider<T>
      * @param timestamp the corresponding timestamp
      */
     protected synchronized void updateAttributes(final ITmfContext context, final ITmfTimestamp timestamp) {
-        if (fStartTime.compareTo(timestamp, false) > 0) {
+        if (fStartTime.equals(TmfTimestamp.BIG_BANG) || fStartTime.compareTo(timestamp, false) > 0) {
             fStartTime = timestamp;
         }
-        if (fEndTime.compareTo(timestamp, false) < 0) {
+        if (fEndTime.equals(TmfTimestamp.BIG_CRUNCH) || fEndTime.compareTo(timestamp, false) < 0) {
             fEndTime = timestamp;
         }
         if (context.hasValidRank()) {
index b31e881de832ebde8c4a6f307c71852cd3b71e95..8e16c1f046ad286d2a1d8159f7bb015dc49ca238 100644 (file)
@@ -463,6 +463,7 @@ public class HistogramView extends TmfView {
 
         fTimeRangeHistogram.clear();
         fTimeRangeHistogram.setTimeRange(startTime, endTime - startTime);
+
         int cacheSize = fCurrentExperiment.getCacheSize();
         fTimeRangeRequest = new HistogramRequest(fTimeRangeHistogram.getDataModel(), timeRange, 0, TmfDataRequest.ALL_DATA, cacheSize, ExecutionType.FOREGROUND);
         fCurrentExperiment.sendRequest(fTimeRangeRequest);
@@ -472,6 +473,9 @@ public class HistogramView extends TmfView {
         if (fFullTraceRequest != null && !fFullTraceRequest.isCompleted()) {
             fFullTraceRequest.cancel();
         }
+//        if (fullRange.equals(TmfTimeRange.NULL_RANGE)) {
+//            return;
+//        }
         int cacheSize = fCurrentExperiment.getCacheSize();
         fFullTraceRequest = new HistogramRequest(fFullTraceHistogram.getDataModel(), fullRange, (int) fFullTraceHistogram.fDataModel.getNbEvents(),
                 TmfDataRequest.ALL_DATA, cacheSize, ExecutionType.BACKGROUND);
This page took 0.032345 seconds and 5 git commands to generate.