From 5b901f94c336f41dd0fd17fb586c4f98f857b96b Mon Sep 17 00:00:00 2001 From: Jean-Christian Kouame Date: Wed, 23 Mar 2016 11:29:32 -0400 Subject: [PATCH] tmf : Add latency statistics view for the pattern analysis Change-Id: Ie4fe7e7e68e8e3b074ddb5f0b3ec97a554652166 Signed-off-by: Jean-Christian Kouame Reviewed-on: https://git.eclipse.org/r/67842 Reviewed-by: Genevieve Bastien Tested-by: Genevieve Bastien Reviewed-by: Hudson CI Reviewed-by: Matthew Khouzam --- ...emCallLatencyStatisticsAnalysisModule.java | 2 +- .../SystemCallLatencyStatisticsView.java | 4 +- .../SystemCallLatencyStatisticsViewer.java | 4 +- .../SegmentStoreStatisticsTest.java | 2 +- .../META-INF/MANIFEST.MF | 8 +- .../AbstractSegmentStatisticsAnalysis.java | 2 +- .../statistics/SegmentStoreStatistics.java | 2 +- .../segmentstore/statistics/package-info.java | 2 +- .../META-INF/MANIFEST.MF | 2 +- .../AbstractSegmentStoreStatisticsView.java | 2 +- .../AbstractSegmentStoreStatisticsViewer.java | 6 +- .../segmentstore/statistics/Messages.java | 4 +- .../statistics/messages.properties | 0 .../segmentstore/statistics/package-info.java | 2 +- .../XmlPatternLatencyStatisticsAnalysis.java | 53 +++++++++ .../icons/eview16/statistics_view.gif | Bin 0 -> 343 bytes .../plugin.properties | 1 + .../plugin.xml | 9 ++ .../tmf/analysis/xml/ui/module/Messages.java | 2 + .../xml/ui/module/messages.properties | 1 + .../views/latency/PatternStatisticsView.java | 65 +++++++++++ .../latency/PatternStatisticsViewer.java | 103 ++++++++++++++++++ .../ui/module/TmfXmlAnalysisOutputSource.java | 8 +- 23 files changed, 260 insertions(+), 24 deletions(-) rename analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/{internal => }/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java (98%) rename analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/{internal => }/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java (97%) rename analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/{internal => }/analysis/timing/core/segmentstore/statistics/package-info.java (84%) rename analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/{internal => }/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java (96%) rename analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/{internal => }/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java (97%) rename analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/{internal => }/analysis/timing/ui/views/segmentstore/statistics/Messages.java (89%) rename analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/{internal => }/analysis/timing/ui/views/segmentstore/statistics/messages.properties (100%) rename analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/{internal => }/analysis/timing/ui/views/segmentstore/statistics/package-info.java (84%) create mode 100644 tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/pattern/stateprovider/XmlPatternLatencyStatisticsAnalysis.java create mode 100755 tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/statistics_view.gif create mode 100644 tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsView.java create mode 100644 tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsViewer.java diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/SystemCallLatencyStatisticsAnalysisModule.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/SystemCallLatencyStatisticsAnalysisModule.java index 7408a5865a..46da158bbe 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/SystemCallLatencyStatisticsAnalysisModule.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.core/src/org/eclipse/tracecompass/internal/analysis/os/linux/core/latency/statistics/SystemCallLatencyStatisticsAnalysisModule.java @@ -16,7 +16,7 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.tracecompass.analysis.os.linux.core.latency.SystemCall; import org.eclipse.tracecompass.analysis.os.linux.core.latency.SystemCallLatencyAnalysis; import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider; -import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics.AbstractSegmentStatisticsAnalysis; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.AbstractSegmentStatisticsAnalysis; import org.eclipse.tracecompass.segmentstore.core.ISegment; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils; diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsView.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsView.java index daf9f9e3d0..509809edb8 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsView.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsView.java @@ -12,8 +12,8 @@ package org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.latency.statistics; import org.eclipse.swt.widgets.Composite; -import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsView; -import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsView; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; /** * View to display latency statistics. diff --git a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsViewer.java b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsViewer.java index 013b5c5fbd..49e8b376ff 100644 --- a/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsViewer.java +++ b/analysis/org.eclipse.tracecompass.analysis.os.linux.ui/src/org/eclipse/tracecompass/internal/analysis/os/linux/ui/views/latency/statistics/SystemCallLatencyStatisticsViewer.java @@ -19,9 +19,9 @@ import java.util.Map.Entry; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; import org.eclipse.tracecompass.internal.analysis.os.linux.core.latency.statistics.SystemCallLatencyStatisticsAnalysisModule; -import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; -import org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule; import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry; import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.core.tests/src/org/eclipse/tracecompass/analysis/timing/core/tests/segmentstore/statistics/SegmentStoreStatisticsTest.java b/analysis/org.eclipse.tracecompass.analysis.timing.core.tests/src/org/eclipse/tracecompass/analysis/timing/core/tests/segmentstore/statistics/SegmentStoreStatisticsTest.java index 67338a319d..2bda6263ac 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.core.tests/src/org/eclipse/tracecompass/analysis/timing/core/tests/segmentstore/statistics/SegmentStoreStatisticsTest.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.core.tests/src/org/eclipse/tracecompass/analysis/timing/core/tests/segmentstore/statistics/SegmentStoreStatisticsTest.java @@ -19,7 +19,7 @@ import java.util.Random; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.tracecompass.analysis.os.linux.core.latency.SystemCall; import org.eclipse.tracecompass.analysis.os.linux.core.latency.SystemCall.InitialInfo; -import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; import org.eclipse.tracecompass.segmentstore.core.ISegment; import org.junit.Test; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.core/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.timing.core/META-INF/MANIFEST.MF index 0938c3bfaf..97d6201df7 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.core/META-INF/MANIFEST.MF +++ b/analysis/org.eclipse.tracecompass.analysis.timing.core/META-INF/MANIFEST.MF @@ -15,11 +15,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.tracecompass.tmf.core, org.eclipse.tracecompass.segmentstore.core Export-Package: org.eclipse.tracecompass.analysis.timing.core.segmentstore, - org.eclipse.tracecompass.internal.analysis.timing.core, - org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics; - x-friends:="org.eclipse.tracecompass.analysis.os.linux.ui, - org.eclipse.tracecompass.analysis.timing.ui, - org.eclipse.tracecompass.analysis.timing.core.tests, - org.eclipse.tracecompass.analysis.os.linux.core" + org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics, + org.eclipse.tracecompass.internal.analysis.timing.core Import-Package: com.google.common.collect, com.google.common.hash diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java similarity index 98% rename from analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java rename to analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java index 7a79a340f9..efbd8b43ae 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/AbstractSegmentStatisticsAnalysis.java @@ -6,7 +6,7 @@ * accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics; import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java similarity index 97% rename from analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java rename to analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java index 892c404735..d1f4a1dfbd 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/SegmentStoreStatistics.java @@ -9,7 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation *******************************************************************************/ -package org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics; import org.eclipse.tracecompass.segmentstore.core.ISegment; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/package-info.java b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/package-info.java similarity index 84% rename from analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/package-info.java rename to analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/package-info.java index 8eccbb8b80..2bb909d0b7 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/internal/analysis/timing/core/segmentstore/statistics/package-info.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.core/src/org/eclipse/tracecompass/analysis/timing/core/segmentstore/statistics/package-info.java @@ -8,4 +8,4 @@ *******************************************************************************/ @org.eclipse.jdt.annotation.NonNullByDefault -package org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF b/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF index 1e09c3b392..8a8e5d3483 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF +++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/META-INF/MANIFEST.MF @@ -20,9 +20,9 @@ Require-Bundle: org.eclipse.ui, Export-Package: org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore, org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.density, org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.scatter, + org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics, org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.table, org.eclipse.tracecompass.internal.analysis.timing.ui, org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.density, org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.scatter, - org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics;x-friends:="org.eclipse.tracecompass.analysis.os.linux.ui", org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.table diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java similarity index 96% rename from analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java rename to analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java index 0091163939..069c67442f 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsView.java @@ -9,7 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation *******************************************************************************/ -package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics; import org.eclipse.jdt.annotation.Nullable; import org.eclipse.swt.widgets.Composite; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java similarity index 97% rename from analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java rename to analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java index 178ee1f6bb..30cfda37f7 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/AbstractSegmentStoreStatisticsViewer.java @@ -9,7 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation *******************************************************************************/ -package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics; import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; @@ -22,8 +22,8 @@ import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.SubSecondTimeWithUnitFormat; -import org.eclipse.tracecompass.internal.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; import org.eclipse.tracecompass.internal.analysis.timing.ui.Activator; import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule; import org.eclipse.tracecompass.tmf.core.exceptions.TmfAnalysisException; @@ -253,7 +253,7 @@ public abstract class AbstractSegmentStoreStatisticsViewer extends AbstractTmfTr */ protected class SegmentStoreStatisticsEntry extends TmfTreeViewerEntry { - private SegmentStoreStatistics fEntry; + private final SegmentStoreStatistics fEntry; /** * Constructor diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/Messages.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/Messages.java similarity index 89% rename from analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/Messages.java rename to analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/Messages.java index 1494f4b70a..9752956a28 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/Messages.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/Messages.java @@ -9,7 +9,7 @@ * Contributors: * Bernd Hufmann - Initial API and implementation *******************************************************************************/ -package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.osgi.util.NLS; @@ -22,7 +22,7 @@ import org.eclipse.osgi.util.NLS; @NonNullByDefault({}) public class Messages extends NLS { - private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics.messages"; //$NON-NLS-1$ + private static final String BUNDLE_NAME = "org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.messages"; //$NON-NLS-1$ /** Name of level column */ public static String SegmentStoreStatistics_LevelLabel; diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/messages.properties b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/messages.properties similarity index 100% rename from analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/messages.properties rename to analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/messages.properties diff --git a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/package-info.java b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/package-info.java similarity index 84% rename from analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/package-info.java rename to analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/package-info.java index ed72c6edb1..c352cf5e26 100644 --- a/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/internal/analysis/timing/ui/views/segmentstore/statistics/package-info.java +++ b/analysis/org.eclipse.tracecompass.analysis.timing.ui/src/org/eclipse/tracecompass/analysis/timing/ui/views/segmentstore/statistics/package-info.java @@ -8,4 +8,4 @@ *******************************************************************************/ @org.eclipse.jdt.annotation.NonNullByDefault -package org.eclipse.tracecompass.internal.analysis.timing.ui.views.segmentstore.statistics; +package org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics; diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/pattern/stateprovider/XmlPatternLatencyStatisticsAnalysis.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/pattern/stateprovider/XmlPatternLatencyStatisticsAnalysis.java new file mode 100644 index 0000000000..dd6e5f3ae1 --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.core/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/core/pattern/stateprovider/XmlPatternLatencyStatisticsAnalysis.java @@ -0,0 +1,53 @@ +/******************************************************************************* + * Copyright (c) 2016 École Polytechnique de Montréal + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.ISegmentStoreProvider; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.AbstractSegmentStatisticsAnalysis; +import org.eclipse.tracecompass.segmentstore.core.ISegment; +import org.eclipse.tracecompass.tmf.analysis.xml.core.model.TmfXmlPatternSegmentBuilder; +import org.eclipse.tracecompass.tmf.analysis.xml.core.segment.TmfXmlPatternSegment; +import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; +import org.eclipse.tracecompass.tmf.core.trace.TmfTraceUtils; + +/** + * Statistic analysis for segments generated by a pattern analysis + * + * @author Jean-Christian Kouame + */ +public class XmlPatternLatencyStatisticsAnalysis extends AbstractSegmentStatisticsAnalysis { + + private final @Nullable String fPatternAnalysisId; + + /** + * Constructor + * + * @param patternAnalysisId + * The pattern analysis ID + */ + public XmlPatternLatencyStatisticsAnalysis(@Nullable String patternAnalysisId) { + fPatternAnalysisId = patternAnalysisId; + } + + @Override + protected @Nullable String getSegmentType(@NonNull ISegment segment) { + if (segment instanceof TmfXmlPatternSegment) { + TmfXmlPatternSegment patternSegment = (TmfXmlPatternSegment) segment; + return patternSegment.getName().substring(TmfXmlPatternSegmentBuilder.PATTERN_SEGMENT_NAME_PREFIX.length()); + } + return null; + } + + @Override + protected @Nullable ISegmentStoreProvider getSegmentProviderAnalysis(@NonNull ITmfTrace trace) { + return fPatternAnalysisId != null ? TmfTraceUtils.getAnalysisModuleOfClass(trace, XmlPatternAnalysis.class, fPatternAnalysisId) : null; + } +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/statistics_view.gif b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/icons/eview16/statistics_view.gif new file mode 100755 index 0000000000000000000000000000000000000000..d11c996e570dfe06518631ba3f0f1893a21f88d1 GIT binary patch literal 343 zcmZ?wbhEHb6krfwxXQrL*t=xKh671O{Rss<85L8yrmfy{NYquZUcHsQZLl+L5ymsX5t;1(-R&*|??pfS0VOjI!mCch^v`<^zJ!{>P z4F{HOI<#fqnG+Z97BS&av~iHtadMe)ow93pN}%f9pROFrWg( zpDc_F3|0&}AYqW77}!c2<`#J9NcFq9Bq=Nq5EJEITyl^ne{-M)L)J|j!E0QmE(|jL zZi<^P7AVZU958kD?pHr{W$9TxC{U_5syC^2(yS1!tT1p^V-uRdHhBu0nzKrUPLqV50y literal 0 HcmV?d00001 diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties index be6d59631d..96cb5374e6 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.properties @@ -24,3 +24,4 @@ xmlxychart.view.name = XML XY Chart View latency.view.name = Latency Table latency.scatter.view.name = Latency vs Time latency.density.view.name = Latency vs Count +latency.statistic.view.name = Latency Statistics diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml index b2dfa942e4..6a834b93b3 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/plugin.xml @@ -105,5 +105,14 @@ name="%latency.density.view.name" restorable="true"> + + diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java index 48963e57d8..9d8af588e1 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/Messages.java @@ -19,6 +19,8 @@ public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.module.messages"; //$NON-NLS-1$ /** Density chart title */ public static String TmfXmlAnalysisOutputSource_DensityChartTitle; + /** Statistics Table Title */ + public static String TmfXmlAnalysisOutputSource_LatencyStatisticsTitle; /** Latency table */ public static String TmfXmlAnalysisOutputSource_LatencyTable; /** Scatter graph title */ diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties index eccaf2331e..80a6ebc831 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/module/messages.properties @@ -7,5 +7,6 @@ # http://www.eclipse.org/legal/epl-v10.html ############################################################################### TmfXmlAnalysisOutputSource_DensityChartTitle=Latency vs Count +TmfXmlAnalysisOutputSource_LatencyStatisticsTitle=Latency Statistics TmfXmlAnalysisOutputSource_LatencyTable=Latency Table TmfXmlAnalysisOutputSource_ScatterGraphTitle=Latency vs Time diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsView.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsView.java new file mode 100644 index 0000000000..13ca84d1fc --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsView.java @@ -0,0 +1,65 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsView; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.TmfXmlUiStrings; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.XmlLatencyViewInfo; + +/** + * The statistic view for pattern latency analysis + * + * @author Jean-Christian Kouame + */ +public class PatternStatisticsView extends AbstractSegmentStoreStatisticsView { + + private PatternStatisticsViewer fViewer; + /** The view's ID */ + public static final @NonNull String ID = "org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.statistics"; //$NON-NLS-1$ + + private final XmlLatencyViewInfo fViewInfo = new XmlLatencyViewInfo(ID); + + /** + * Constructor + */ + public PatternStatisticsView() { + this.addPartPropertyListener(new IPropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals(TmfXmlUiStrings.XML_LATENCY_OUTPUT_DATA)) { + Object newValue = event.getNewValue(); + if (newValue instanceof String) { + String data = (String) newValue; + fViewInfo.setViewData(data); + loadStatisticView(); + } + } + } + }); + } + + private void loadStatisticView() { + if (fViewer != null) { + fViewer.updateViewer(fViewInfo.getViewAnalysisId()); + } + } + + @Override + protected @NonNull AbstractSegmentStoreStatisticsViewer createSegmentStoreStatisticsViewer(@NonNull Composite parent) { + PatternStatisticsViewer viewer = new PatternStatisticsViewer(parent); + fViewer = viewer; + loadStatisticView(); + return viewer; + } +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsViewer.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsViewer.java new file mode 100644 index 0000000000..a0a6f16f4d --- /dev/null +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/internal/tmf/analysis/xml/ui/views/latency/PatternStatisticsViewer.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright (c) 2016 Ericsson + * + * All rights reserved. This program and the accompanying materials are + * made available under the terms of the Eclipse Public License v1.0 which + * accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + *******************************************************************************/ +package org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency; + +import static org.eclipse.tracecompass.common.core.NonNullUtils.checkNotNull; + +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.tracecompass.analysis.timing.core.segmentstore.statistics.SegmentStoreStatistics; +import org.eclipse.tracecompass.analysis.timing.ui.views.segmentstore.statistics.AbstractSegmentStoreStatisticsViewer; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.core.pattern.stateprovider.XmlPatternLatencyStatisticsAnalysis; +import org.eclipse.tracecompass.tmf.core.analysis.TmfAbstractAnalysisModule; +import org.eclipse.tracecompass.tmf.ui.viewers.tree.ITmfTreeViewerEntry; +import org.eclipse.tracecompass.tmf.ui.viewers.tree.TmfTreeViewerEntry; + +/** + * A tree viewer implementation for displaying pattern latency statistics + * + * @author Jean-Christian Kouame + */ +public class PatternStatisticsViewer extends AbstractSegmentStoreStatisticsViewer { + + private String fAnalysisId; + + private static final @NonNull String PATTERN_SEGMENTS_LEVEL = "Pattern Segments"; //$NON-NLS-1$ + + /** + * Constructor + * + * @param parent + * The parent composite + */ + public PatternStatisticsViewer(@NonNull Composite parent) { + super(parent); + } + + @Override + protected @Nullable TmfAbstractAnalysisModule createStatisticsAnalysiModule() { + return new XmlPatternLatencyStatisticsAnalysis(fAnalysisId); + } + + @Override + protected ITmfTreeViewerEntry updateElements(long start, long end, boolean isSelection) { + if (isSelection || (start == end)) { + return null; + } + + TmfAbstractAnalysisModule analysisModule = getStatisticsAnalysisModule(); + + if (getTrace() == null || !(analysisModule instanceof XmlPatternLatencyStatisticsAnalysis)) { + return null; + } + + XmlPatternLatencyStatisticsAnalysis module = (XmlPatternLatencyStatisticsAnalysis) analysisModule; + + module.waitForCompletion(); + + TmfTreeViewerEntry root = new TmfTreeViewerEntry(""); //$NON-NLS-1$ + final SegmentStoreStatistics entry = module.getTotalStats(); + if (entry != null) { + + List entryList = root.getChildren(); + + TmfTreeViewerEntry child = new SegmentStoreStatisticsEntry(checkNotNull("Total"), entry); //$NON-NLS-1$ + entryList.add(child); + HiddenTreeViewerEntry segments = new HiddenTreeViewerEntry(PATTERN_SEGMENTS_LEVEL); + child.addChild(segments); + + final Map<@NonNull String, @NonNull SegmentStoreStatistics> perTypeStats = module.getPerSegmentTypeStats(); + if (perTypeStats != null) { + for (Entry<@NonNull String, @NonNull SegmentStoreStatistics> statsEntry : perTypeStats.entrySet()) { + segments.addChild(new SegmentStoreStatisticsEntry(statsEntry.getKey(), statsEntry.getValue())); + } + } + } + return root; + } + + /** + * Set the analysis ID and update the view + * + * @param analysisId + * The analysis ID + */ + public void updateViewer(String analysisId) { + if (analysisId != null) { + fAnalysisId = analysisId; + initializeDataSource(); + } + } + +} diff --git a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java index 197718a66f..c216127ac5 100644 --- a/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java +++ b/tmf/org.eclipse.tracecompass.tmf.analysis.xml.ui/src/org/eclipse/tracecompass/tmf/analysis/xml/ui/module/TmfXmlAnalysisOutputSource.java @@ -29,6 +29,7 @@ import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.module.Messages; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternDensityView; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternLatencyTableView; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternScatterGraphView; +import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.latency.PatternStatisticsView; import org.eclipse.tracecompass.internal.tmf.analysis.xml.ui.views.xychart.XmlXYView; import org.eclipse.tracecompass.tmf.analysis.xml.core.module.XmlUtils; import org.eclipse.tracecompass.tmf.analysis.xml.core.stateprovider.TmfXmlStrings; @@ -110,7 +111,12 @@ public class TmfXmlAnalysisOutputSource implements ITmfNewAnalysisModuleListener /** * Latency Density View type */ - DENSITY_VIEW(PatternDensityView.ID, Messages.TmfXmlAnalysisOutputSource_DensityChartTitle); + DENSITY_VIEW(PatternDensityView.ID, Messages.TmfXmlAnalysisOutputSource_DensityChartTitle), + + /** + * Latency Statistic View type + */ + STATISTIC_VIEW(PatternStatisticsView.ID, Messages.TmfXmlAnalysisOutputSource_LatencyStatisticsTitle); private @NonNull String fLatencyViewId; private String fLatencyViewLabel; -- 2.34.1