June 4, 2010
authorAlvaro Sanchez-Leon <alvsan09@gmail.com>
Fri, 4 Jun 2010 21:15:54 +0000 (21:15 +0000)
committerAlvaro Sanchez-Leon <alvsan09@gmail.com>
Fri, 4 Jun 2010 21:15:54 +0000 (21:15 +0000)
Fixed - bug 315828: [LTTng] Control flow view states not initialised properly
https://bugs.eclipse.org/bugs/show_bug.cgi?id=315828

org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/AbsTimeUpdateView.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/common/ParamsUpdater.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/controlflow/evProcessor/AbsFlowTRangeUpdate.java
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/resources/evProcessor/AbsResourcesTRangeUpdate.java
org.eclipse.linuxtools.lttng/src/org/eclipse/linuxtools/lttng/state/trace/StateTraceManager.java

index 85d110267398bd1e00fb1fc03c686538041216fe..cdd3659f474973ba61a56449cd480b970f626394 100644 (file)
@@ -26,7 +26,6 @@ import org.eclipse.linuxtools.lttng.request.RequestStartedSignal;
 import org.eclipse.linuxtools.lttng.state.evProcessor.ITransEventProcessor;
 import org.eclipse.linuxtools.lttng.ui.TraceDebug;
 import org.eclipse.linuxtools.lttng.ui.model.trange.ItemContainer;
-import org.eclipse.linuxtools.lttng.ui.views.resources.model.ResourceModelFactory;
 import org.eclipse.linuxtools.tmf.event.TmfEvent;
 import org.eclipse.linuxtools.tmf.event.TmfTimeRange;
 import org.eclipse.linuxtools.tmf.event.TmfTimestamp;
@@ -570,7 +569,7 @@ public abstract class AbsTimeUpdateView extends TmfView implements
 
                if (complete) {
                        // reselect to original time
-                       ParamsUpdater paramUpdater = ResourceModelFactory.getParamsUpdater();
+                       ParamsUpdater paramUpdater = getParamsUpdater();
                        if (paramUpdater != null && tsfviewer != null) {
                                final Long selTime = paramUpdater.getSelectedTime();
                                if (selTime != null) {
@@ -590,13 +589,17 @@ public abstract class AbsTimeUpdateView extends TmfView implements
                                                eventCount += itemArr[pos].getTraceEvents().size();
                                        }
 
-                                       int discarded = getParamsUpdater().getEventsDiscarded();
+                                       int discarded = paramUpdater.getEventsDiscarded();
                                        int discardedOutofOrder = paramUpdater.getEventsDiscardedWrongOrder();
+                                       int discardedOutofViewRange = paramUpdater.getEventsDiscardedOutOfViewRange();
+                                       int dicardedNotVisible = paramUpdater.getEventsDiscardedNotVisible();
+
                                        TmfTimeRange range = request.getRange();
                                        StringBuilder sb = new StringBuilder("View: " + getName() + ", Events handled: " + count
                                                        + ", Events loaded in view: " + eventCount + ", Number of events discarded: " + discarded
                                                        + "\n\tNumber of events discarded with start time earlier than next good time: "
-                                                       + discardedOutofOrder);
+                                                       + discardedOutofOrder + "\n\tDiscarded Not visible: " + dicardedNotVisible
+                                                       + "\n\tDiscarded out of view Range: " + discardedOutofViewRange);
 
                                        sb.append("\n\t\tRequested Time Range: " + range.getStartTime() + "-" + range.getEndTime());
                                        sb.append("\n\t\tExperiment Time Range: " + experimentStartTime + "-" + experimentEndTime);
index ae9c3a5bb3a35c03f9fa0ff234fdc733d6e88160..0126177a409da4840360b67824484655c1058b06 100644 (file)
@@ -40,9 +40,14 @@ public class ParamsUpdater {
        // time interval
        private double pixelsPerNs = 0;
        private int eventsDiscarded = 0;
+       private int eventsDiscardedOutOfView = 0;
+       private int eventsDiscardedNotVisible = 0;
        private int eventsDiscardedWrongOrder = 0;
        private TmfTimeRange trange = null;
 
+       public static final int OUT_OF_VIEWRANGE = 0;
+       public static final int NOT_VISIBLE = 1;
+
        // ========================================================================
        // Methods
        // ========================================================================
@@ -218,13 +223,23 @@ public class ParamsUpdater {
                eventsDiscarded = value;
                if (value == 0) {
                        eventsDiscardedWrongOrder = 0;
+                       eventsDiscardedNotVisible = 0;
+                       eventsDiscardedOutOfView = 0;
                }
        }
 
        /**
         * 
         */
-       public void incrementEventsDiscarded() {
+       public void incrementEventsDiscarded(int reason) {
+               if (reason == OUT_OF_VIEWRANGE) {
+                       this.eventsDiscardedOutOfView++;
+               }
+
+               if (reason == NOT_VISIBLE) {
+                       this.eventsDiscardedNotVisible++;
+               }
+
                this.eventsDiscarded++;
        }
 
@@ -252,6 +267,22 @@ public class ParamsUpdater {
 
        }
 
+       /**
+        * @return
+        */
+       public int getEventsDiscardedNotVisible() {
+               return eventsDiscardedNotVisible;
+
+       }
+
+       /**
+        * @return
+        */
+       public int getEventsDiscardedOutOfViewRange() {
+               return eventsDiscardedOutOfView;
+
+       }
+
        /**
         * @return
         */
index 0417d058502657b1a3ffb6d5d0f4a6aae4905ed6..c0a9ccc5993277e855d6d0fc919966bef0c030ac 100644 (file)
@@ -109,6 +109,10 @@ public abstract class AbsFlowTRangeUpdate extends AbsTRangeUpdate implements ILt
                Long stime = startTime;
                Long etime = endTime;
 
+//             if (etime == 13589873239052L || etime == 13589878374675L) {
+//                     System.out.println("probe here, " + stime + "->" + etime);
+//             }
+
                if (etime < stime) {
                        // Validate the sequential order of events
                        params.incrementEventsDiscardedWrongOrder();
@@ -124,7 +128,7 @@ public abstract class AbsFlowTRangeUpdate extends AbsTRangeUpdate implements ILt
                if (!withinViewRange(stime, etime)) {
                        // No use to process the event since it's outside
                        // the visible time range of the window
-                       params.incrementEventsDiscarded();
+                       params.incrementEventsDiscarded(ParamsUpdater.OUT_OF_VIEWRANGE);
                        return false;
                }
 
@@ -159,7 +163,7 @@ public abstract class AbsFlowTRangeUpdate extends AbsTRangeUpdate implements ILt
                                                && ((double) eventSpan * k) < 2) {
 
                                        // discard the item
-                                       params.incrementEventsDiscarded();
+                                       params.incrementEventsDiscarded(ParamsUpdater.NOT_VISIBLE);
                                        return false;
 
                                }
index fa92ab1dbbc7ca10129528b2f698db69f7a7d4df..8b9b511b68615e1dcd5d208b5b86cea5a92d00ac 100644 (file)
@@ -197,7 +197,7 @@ public abstract class AbsResourcesTRangeUpdate extends AbsTRangeUpdate
 
                // Check if the event is out of range
                if (!withinViewRange(stime, etime)) {
-                       params.incrementEventsDiscarded();
+                       params.incrementEventsDiscarded(ParamsUpdater.OUT_OF_VIEWRANGE);
                        return false;
                }
 
@@ -243,7 +243,7 @@ public abstract class AbsResourcesTRangeUpdate extends AbsTRangeUpdate
                                Long eventSpan = stime - prevEvent.getStartTime();
                                if (prevEventVisibility == false
                                                && ((double) eventSpan * k) < 2) {
-                                       params.incrementEventsDiscarded();
+                                       params.incrementEventsDiscarded(ParamsUpdater.NOT_VISIBLE);
                                        return false;
                                }
                        }
index c41c48a3b9ac756f852db77e5450cb4476cc2c7b..7e533bfc9c6426b4584b6388654c7bb9e60cdc59 100644 (file)
@@ -204,38 +204,38 @@ public class StateTraceManager extends LTTngTreeNode implements IStateTraceManag
                // can handle multiple traces
                if ((eventTime.getValue() < fTrace.getStartTime().getValue())) {
                        eventTime = fTrace.getStartTime();
+               }
 
-                       Collections.sort(timestampCheckpointsList);
-                       // Initiate the compare with a checkpoint containing the target time
-                       // stamp to find
-                       int index = Collections.binarySearch(timestampCheckpointsList, new TmfCheckpoint(eventTime,
-                                       new TmfLocation<Long>(0L)));
-                       // adjust index to round down to earlier checkpoint when exact match
-                       // not
-                       // found
-                       index = getPrevIndex(index);
-
-                       LttngTraceState traceState;
-                       if (index == 0) {
-                               // No checkpoint restore is needed, start with a brand new
-                               // TraceState
-                               traceState = StateModelFactory.getStateEntryInstance(this);
-                       } else {
-                               synchronized (checkPointsLock) {
-                                       // Useful CheckPoint found
-                                       TmfCheckpoint checkpoint = timestampCheckpointsList.get(index);
-                                       nearestTimeStamp = checkpoint.getTimestamp();
-                                       // get the location associated with the checkpoint
-                                       TmfLocation<Long> location = (TmfLocation<Long>) checkpoint.getLocation();
-                                       // reference a new copy of the checkpoint template
-                                       traceState = stateCheckpointsList.get(location.getLocation()).clone();
-                               }
+               Collections.sort(timestampCheckpointsList);
+               // Initiate the compare with a checkpoint containing the target time
+               // stamp to find
+               int index = Collections.binarySearch(timestampCheckpointsList, new TmfCheckpoint(eventTime,
+                               new TmfLocation<Long>(0L)));
+               // adjust index to round down to earlier checkpoint when exact match
+               // not
+               // found
+               index = getPrevIndex(index);
+
+               LttngTraceState traceState;
+               if (index == 0) {
+                       // No checkpoint restore is needed, start with a brand new
+                       // TraceState
+                       traceState = StateModelFactory.getStateEntryInstance(this);
+               } else {
+                       synchronized (checkPointsLock) {
+                               // Useful CheckPoint found
+                               TmfCheckpoint checkpoint = timestampCheckpointsList.get(index);
+                               nearestTimeStamp = checkpoint.getTimestamp();
+                               // get the location associated with the checkpoint
+                               TmfLocation<Long> location = (TmfLocation<Long>) checkpoint.getLocation();
+                               // reference a new copy of the checkpoint template
+                               traceState = stateCheckpointsList.get(location.getLocation()).clone();
                        }
+               }
 
-                       // Restore the stored traceState
-                       synchronized (this) {
-                               fStateModel = traceState;
-                       }
+               // Restore the stored traceState
+               synchronized (this) {
+                       fStateModel = traceState;
                }
 
                return nearestTimeStamp;
This page took 0.030879 seconds and 5 git commands to generate.