linux.ui: make Kernel Memory view handle out of range requests
authorMatthew Khouzam <matthew.khouzam@ericsson.com>
Wed, 20 Apr 2016 22:23:37 +0000 (18:23 -0400)
committerMatthew Khouzam <matthew.khouzam@ericsson.com>
Fri, 27 May 2016 00:44:29 +0000 (20:44 -0400)
This is a common use case with experiments that have multiple nodes

Change-Id: I3a2bcd583473cb9bd9fa6f5a2d69eecb9e4fb291
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/71105
Reviewed-by: Hudson CI
Reviewed-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
Tested-by: Marc-Andre Laperle <marc-andre.laperle@ericsson.com>
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java
analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java

index 2a239a6fad8992b0d0a6c8c0b087c6eb99699245..7b009a0bb1ab81a5324b31f81b8a83a9888b52cd 100644 (file)
@@ -170,7 +170,12 @@ public class KernelMemoryUsageTreeViewer extends AbstractTmfTreeViewer {
         List<ITmfTreeViewerEntry> entryList = root.getChildren();
 
         try {
-            List<ITmfStateInterval> memoryStates = ss.queryFullState(start);
+            long newStart = Math.max(start, ss.getStartTime());
+            long newEnd = Math.min(end, ss.getCurrentEndTime());
+            if (ss.getStartTime() > newEnd || ss.getCurrentEndTime() < start) {
+                return root;
+            }
+            List<ITmfStateInterval> memoryStates = ss.queryFullState(newStart);
             List<Integer> threadQuarkList = ss.getSubAttributes(ITmfStateSystem.ROOT_ATTRIBUTE, false);
 
             for (Integer threadQuark : threadQuarkList) {
index 64bf89a8d9a6b7736f3a0f54c34127e421697f96..37077fd17308f592aa50a46d1ac1994e340cbd68 100644 (file)
@@ -78,13 +78,17 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
 
         ITmfStateSystem ss = module.getStateSystem();
         if (ss == null) {
-            throw new IllegalStateException();
+            throw new IllegalStateException("No state system for the module " + module.toString()); //$NON-NLS-1$
         }
 
         double[] xvalues = getXAxis(start, end, nb);
         if (xvalues.length == 0) {
             return;
         }
+        long clampedEnd = Math.min(end, ss.getCurrentEndTime());
+        if (clampedEnd < ss.getStartTime()) {
+            return;
+        }
         setXAxis(xvalues);
 
         try {
@@ -103,7 +107,10 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
 
                 double x = xvalues[i];
                 long t = (long) x + getTimeOffset();
-
+                if( ss.getCurrentEndTime() < t || ss.getStartTime() > t) {
+                    selectedThreadValues[i] = 0;
+                    continue;
+                }
                 List<ITmfStateInterval> kernelState = ss.queryFullState(t);
 
                 /* The subattributes of the root are the different threads */
@@ -132,7 +139,7 @@ public class KernelMemoryUsageViewer extends TmfCommonXLineChartViewer {
              * The lowest value we are searching is at the end of the current
              * selected zone
              */
-            List<ITmfStateInterval> kernelState = ss.queryFullState(end);
+            List<ITmfStateInterval> kernelState = ss.queryFullState(clampedEnd);
             List<Integer> threadQuarkList = ss.getSubAttributes(-1, false);
             /* We add the lowest value of each thread */
             for (Integer threadQuark : threadQuarkList) {
This page took 0.027632 seconds and 5 git commands to generate.