From 6394923922639bf117f9fb9d0ba121b52a87765d Mon Sep 17 00:00:00 2001 From: Matthew Khouzam Date: Wed, 20 Apr 2016 18:23:37 -0400 Subject: [PATCH] linux.ui: make Kernel Memory view handle out of range requests This is a common use case with experiments that have multiple nodes Change-Id: I3a2bcd583473cb9bd9fa6f5a2d69eecb9e4fb291 Signed-off-by: Matthew Khouzam Reviewed-on: https://git.eclipse.org/r/71105 Reviewed-by: Hudson CI Reviewed-by: Marc-Andre Laperle Tested-by: Marc-Andre Laperle --- .../KernelMemoryUsageTreeViewer.java | 7 ++++++- .../kernelmemoryusage/KernelMemoryUsageViewer.java | 13 ++++++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java index 2a239a6fad..7b009a0bb1 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageTreeViewer.java @@ -170,7 +170,12 @@ public class KernelMemoryUsageTreeViewer extends AbstractTmfTreeViewer { List entryList = root.getChildren(); try { - List 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 memoryStates = ss.queryFullState(newStart); List threadQuarkList = ss.getSubAttributes(ITmfStateSystem.ROOT_ATTRIBUTE, false); for (Integer threadQuark : threadQuarkList) { diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java index 64bf89a8d9..37077fd173 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/kernelmemoryusage/KernelMemoryUsageViewer.java @@ -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 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 kernelState = ss.queryFullState(end); + List kernelState = ss.queryFullState(clampedEnd); List threadQuarkList = ss.getSubAttributes(-1, false); /* We add the lowest value of each thread */ for (Integer threadQuark : threadQuarkList) { -- 2.34.1