diff options
author | Geneviève Bastien | 2017-06-01 20:26:26 +0000 |
---|---|---|
committer | Genevieve Bastien | 2017-06-12 19:18:16 +0000 |
commit | 53ea60bb9238a83ee70c089c0121d7648a76923e (patch) | |
tree | 05244c21e4e6c5b100b39707ac28d9e9e858c165 /vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui | |
parent | 1f66aba9fdff90e6fd5d6e77c591ddb0c718f3bd (diff) | |
download | org.eclipse.tracecompass.incubator-53ea60bb9238a83ee70c089c0121d7648a76923e.tar.gz org.eclipse.tracecompass.incubator-53ea60bb9238a83ee70c089c0121d7648a76923e.tar.xz org.eclipse.tracecompass.incubator-53ea60bb9238a83ee70c089c0121d7648a76923e.zip |
vm: fixes, clean up and tests
* Add unit tests for the fused VM analysis
* Fix some warnings in used handlers
* View: fix the view for some use cases
* Temporarily disable the selections in the view
Change-Id: I7842ab8aa1c0d8a4d704b3220e3abe153743c994
Signed-off-by: Geneviève Bastien <gbastien+lttng@versatic.net>
Reviewed-on: https://git.eclipse.org/r/98814
Reviewed-by: Hudson CI
Reviewed-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Diffstat (limited to 'vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui')
11 files changed, 454 insertions, 490 deletions
diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/package-info.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/package-info.java index 185d48247..045388dfb 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/package-info.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/package-info.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2017 École Polytechnique de Montréal + * Copyright (c) 2017 É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 diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vcpuview/VirtualMachineView.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vcpuview/VirtualMachineView.java index b83ddaca6..787078481 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vcpuview/VirtualMachineView.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vcpuview/VirtualMachineView.java @@ -56,7 +56,7 @@ import com.google.common.collect.Multimap; public class VirtualMachineView extends AbstractTimeGraphView { /** View ID. */ - public static final String ID = "org.eclipse.tracecompass.lttng2.analysis.vm.ui.vmview"; //$NON-NLS-1$ + public static final String ID = "org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.vm.ui.vmview"; //$NON-NLS-1$ private static final String[] COLUMN_NAMES = new String[] { Messages.VmView_stateTypeName diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/AggregateFusedVMViewEntry.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/AggregateFusedVMViewEntry.java index faa2326d3..e9a263de5 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/AggregateFusedVMViewEntry.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/AggregateFusedVMViewEntry.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.ArrayList; import java.util.Comparator; @@ -25,7 +25,7 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeEvent; /** * @author Cédric Biancheri */ -public class AggregateFusedVMViewEntry extends FusedVMViewEntry { +public class AggregateFusedVMViewEntry extends VirtualResourceEntry { private final @NonNull List<ITimeGraphEntry> fContributors = new ArrayList<>(); private static final Comparator<ITimeEvent> COMPARATOR = new Comparator<ITimeEvent>() { diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Machine.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Machine.java index 0eb30e721..d58c32439 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Machine.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Machine.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.HashSet; import java.util.List; @@ -40,14 +40,14 @@ public class Machine { public Machine(String name, @NonNull ITmfStateValue type) { machineName = name; highlighted = true; - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; typeMachine = type; } public Machine(String name, Integer nbCPUs, @NonNull ITmfStateValue type) { machineName = name; highlighted = true; - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; typeMachine = type; for (Integer i = 0; i < nbCPUs; i++) { cpus.add(new Processor(i.toString(), this)); @@ -57,7 +57,7 @@ public class Machine { public Machine(String name, @NonNull ITmfStateValue type, List<String> pcpus) { machineName = name; highlighted = true; - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; typeMachine = type; for (String pcpu : pcpus) { this.pcpus.add(new Processor(pcpu, this)); @@ -127,9 +127,9 @@ public class Machine { public void setHighlightedWithAllCpu(Boolean b) { highlighted = b; if (b) { - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; } else { - heightFactory = FusedVMViewPresentationProvider.REDUCED_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.REDUCED_HEIGHT; } for (Processor p : cpus) { p.setHighlighted(b); @@ -139,9 +139,9 @@ public class Machine { public void setHighlightedWithAllContainers(Boolean b) { highlighted = b; if (b){ - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; } else { - heightFactory = FusedVMViewPresentationProvider.REDUCED_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.REDUCED_HEIGHT; } for (Machine c : containers) { c.setHighlighted(b); diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Messages.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Messages.java index 5e7b6c9b1..8bb214bf0 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Messages.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Messages.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import org.eclipse.osgi.util.NLS; diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Processor.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Processor.java index 777528975..1b7646d3c 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/Processor.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/Processor.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; /** * @author Cedric Biancheri @@ -21,7 +21,7 @@ public class Processor { public Processor(String p, Machine m){ n = p; highlighted = true; - heightFactory = FusedVMViewPresentationProvider.FULL_HEIGHT; + heightFactory = VirtualResourcePresentationProvider.FULL_HEIGHT; machine = m; } diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/SelectMachineDialog.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/SelectMachineDialog.java index ea65be29e..fd1ac7b63 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/SelectMachineDialog.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/SelectMachineDialog.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.ArrayList; import java.util.List; @@ -30,7 +30,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Tree; -import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.data.Attributes; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedAttributes; import org.eclipse.tracecompass.tmf.ui.project.model.TmfNavigatorContentProvider; import org.eclipse.tracecompass.tmf.ui.project.model.TmfNavigatorLabelProvider; import org.eclipse.ui.dialogs.FilteredTree; @@ -41,7 +41,7 @@ import org.eclipse.ui.dialogs.PatternFilter; */ public class SelectMachineDialog extends TitleAreaDialog { - private final FusedVMViewPresentationProvider provider; + private final VirtualResourcePresentationProvider provider; private CheckboxTreeViewer fCheckboxTreeViewer; private TmfNavigatorContentProvider fContentProvider; private TmfNavigatorLabelProvider fLabelProvider; @@ -54,7 +54,7 @@ public class SelectMachineDialog extends TitleAreaDialog { * @param provider * The presentation provider */ - public static void open(Shell parent, FusedVMViewPresentationProvider provider) { + public static void open(Shell parent, VirtualResourcePresentationProvider provider) { (new SelectMachineDialog(parent, provider)).open(); } @@ -66,7 +66,7 @@ public class SelectMachineDialog extends TitleAreaDialog { * @param provider * The presentation provider */ - public SelectMachineDialog(Shell parent, FusedVMViewPresentationProvider provider) { + public SelectMachineDialog(Shell parent, VirtualResourcePresentationProvider provider) { super(parent); this.provider = provider; this.setShellStyle(getShellStyle() | SWT.RESIZE); @@ -155,9 +155,9 @@ public class SelectMachineDialog extends TitleAreaDialog { if (!set.isEmpty()) { for (Object o : set) { if (o instanceof Machine) { - return Attributes.CONTAINERS; + return FusedAttributes.CONTAINERS; } else if (o instanceof Processor) { - return Attributes.CPUS; + return FusedAttributes.CPUS; } } } diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVMViewEntry.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourceEntry.java index e258a40bc..0625cd1ff 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVMViewEntry.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourceEntry.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.Iterator; @@ -21,7 +21,7 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry; /** * @author Cedric Biancheri */ -public class FusedVMViewEntry extends TimeGraphEntry implements Comparable<ITimeGraphEntry> { +public class VirtualResourceEntry extends TimeGraphEntry implements Comparable<ITimeGraphEntry> { /** Type of resource */ public static enum Type { @@ -75,7 +75,7 @@ public class FusedVMViewEntry extends TimeGraphEntry implements Comparable<ITime * @param id * The id of this entry */ - public FusedVMViewEntry(int quark, @NonNull ITmfTrace trace, String name, + public VirtualResourceEntry(int quark, @NonNull ITmfTrace trace, String name, long startTime, long endTime, Type type, int id) { super(name, startTime, endTime); fId = id; @@ -98,12 +98,12 @@ public class FusedVMViewEntry extends TimeGraphEntry implements Comparable<ITime * @param id * The id of this entry */ - public FusedVMViewEntry(@NonNull ITmfTrace trace, String name, + public VirtualResourceEntry(@NonNull ITmfTrace trace, String name, long startTime, long endTime, int id) { this(-1, trace, name, startTime, endTime, Type.NULL, id); } - public FusedVMViewEntry(@NonNull ITmfTrace trace, String name, + public VirtualResourceEntry(@NonNull ITmfTrace trace, String name, long startTime, long endTime, Type type, int id) { this(-1, trace, name, startTime, endTime, type, id); } @@ -124,7 +124,7 @@ public class FusedVMViewEntry extends TimeGraphEntry implements Comparable<ITime * @param id * The id of this entry */ - public FusedVMViewEntry(int quark, @NonNull ITmfTrace trace, + public VirtualResourceEntry(int quark, @NonNull ITmfTrace trace, long startTime, long endTime, Type type, int id) { this(quark, trace, computeEntryName(type, id), startTime, endTime, type, id); } @@ -180,15 +180,24 @@ public class FusedVMViewEntry extends TimeGraphEntry implements Comparable<ITime return true; } + /** + * Get the default expanded state of this entry + * + * @return The default expanded state of the entry + */ + public boolean getDefaultExpandedState() { + return fType != Type.CPU; + } + @Override public int compareTo(ITimeGraphEntry other) { - if (!(other instanceof FusedVMViewEntry)) { + if (!(other instanceof VirtualResourceEntry)) { /* * Should not happen, but if it does, put those entries at the end */ return -1; } - FusedVMViewEntry o = (FusedVMViewEntry) other; + VirtualResourceEntry o = (VirtualResourceEntry) other; /* * Resources entry names should all be of type "ABC 123" diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVMViewPresentationProvider.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourcePresentationProvider.java index 664039a34..e48eaca06 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVMViewPresentationProvider.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourcePresentationProvider.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.HashMap; import java.util.LinkedHashMap; @@ -21,13 +21,13 @@ import org.eclipse.swt.graphics.RGB; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelAnalysisEventLayout; import org.eclipse.tracecompass.analysis.os.linux.core.trace.IKernelTrace; -import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.data.Attributes; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedAttributes; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedVMInformationProvider; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedVirtualMachineAnalysis; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.module.StateValues; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.trace.VirtualMachineExperiment; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.Activator; -import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview.FusedVMViewEntry.Type; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources.VirtualResourceEntry.Type; import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem; import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException; import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException; @@ -40,7 +40,6 @@ import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.StateItem; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.TimeGraphPresentationProvider; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEvent; -import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeEventStyleStrings; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.ITimeGraphEntry; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.NullTimeEvent; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeEvent; @@ -49,13 +48,11 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils.Resolution; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils.TimeFormat; -import com.google.common.collect.ImmutableMap; - /** * @author Cedric Biancheri * */ -public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvider { +public class VirtualResourcePresentationProvider extends TimeGraphPresentationProvider { static final float FULL_HEIGHT = 1.0f; static final float REDUCED_HEIGHT = 0.25f; @@ -139,9 +136,9 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid return threadName; } - public float getHeightFactory() { - return fHeight; - } +// public float getHeightFactor() { +// return fHeight; +// } } private enum State { @@ -165,7 +162,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid /** * Default constructor */ - public FusedVMViewPresentationProvider() { + public VirtualResourcePresentationProvider() { super(); } @@ -175,7 +172,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid static private State getEventState(TimeEvent event) { if (event.hasValue()) { - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); + VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); int value = event.getValue(); if (entry.getType() == Type.CPU || entry.getType() == Type.PCPU_VM || entry.getType() == Type.PCPU_CONTAINER) { @@ -259,7 +256,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid if (event instanceof TimeEvent && ((TimeEvent) event).hasValue()) { TimeEvent tcEvent = (TimeEvent) event; - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); + VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); if (tcEvent.hasValue()) { ITmfTrace exp = entry.getTrace(); @@ -273,18 +270,18 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid String machineName = null; try { ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); + int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); interval = ss.querySingleState(hoverTime, machineNameQuark); ITmfStateValue value = interval.getStateValue(); machineName = value.unboxStr(); retMap.put("Virtual Machine", machineName); - int conditionQuark = ss.getQuarkRelative(cpuQuark, Attributes.CONDITION); + int conditionQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CONDITION); interval = ss.querySingleState(hoverTime, conditionQuark); value = interval.getStateValue(); int condition = value.unboxInt(); if (condition == StateValues.CONDITION_IN_VM) { - int machineVCpuQuark = ss.getQuarkRelative(cpuQuark, Attributes.VIRTUAL_CPU); + int machineVCpuQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.VIRTUAL_CPU); interval = ss.querySingleState(hoverTime, machineVCpuQuark); value = interval.getStateValue(); int vcpu = value.unboxInt(); @@ -318,7 +315,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid try { List<ITmfStateInterval> fullState = ss.queryFullState(event.getTime()); - List<Integer> irqQuarks = ss.getQuarks(Attributes.CPUS, Integer.toString(cpu), Attributes.IRQS, "*"); //$NON-NLS-1$ + List<Integer> irqQuarks = ss.getQuarks(FusedAttributes.CPUS, Integer.toString(cpu), FusedAttributes.IRQS, "*"); //$NON-NLS-1$ for (int irqQuark : irqQuarks) { if (fullState.get(irqQuark).getStateValue().unboxInt() == cpu) { @@ -342,7 +339,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid try { List<ITmfStateInterval> fullState = ss.queryFullState(event.getTime()); - List<Integer> softIrqQuarks = ss.getQuarks(Attributes.CPUS, Integer.toString(cpu), Attributes.SOFT_IRQS, "*"); //$NON-NLS-1$ + List<Integer> softIrqQuarks = ss.getQuarks(FusedAttributes.CPUS, Integer.toString(cpu), FusedAttributes.SOFT_IRQS, "*"); //$NON-NLS-1$ for (int softIrqQuark : softIrqQuarks) { if (fullState.get(softIrqQuark).getStateValue().unboxInt() == cpu) { @@ -365,7 +362,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid try { retMap.put(Messages.FusedVMView_attributeHoverTime, Utils.formatTime(hoverTime, TimeFormat.CALENDAR, Resolution.NANOSEC)); cpuQuark = entry.getQuark(); - int currentThreadQuark = ss.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD); + int currentThreadQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CURRENT_THREAD); ITmfStateInterval interval = ss.querySingleState(hoverTime, currentThreadQuark); if (!interval.getStateValue().isNull()) { ITmfStateValue value = interval.getStateValue(); @@ -381,33 +378,33 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid if (currentThreadId == 0) { currentThreadId++; } - int nsMaxLevelQuark = ss.getQuarkAbsolute(Attributes.THREADS, machineName, Integer.toString(currentThreadId), Attributes.NS_MAX_LEVEL); + int nsMaxLevelQuark = ss.getQuarkAbsolute(FusedAttributes.THREADS, machineName, Integer.toString(currentThreadId), FusedAttributes.NS_MAX_LEVEL); currentThreadId = saveTID; interval = ss.querySingleState(hoverTime, nsMaxLevelQuark); int nsMaxLevel = interval.getStateValue().unboxInt(); if (nsMaxLevel != 1) { int actualLevel = 1; - int virtualTIDQuark = ss.getQuarkAbsolute(Attributes.THREADS, machineName, Integer.toString(currentThreadId), Attributes.VTID); + int virtualTIDQuark = ss.getQuarkAbsolute(FusedAttributes.THREADS, machineName, Integer.toString(currentThreadId), FusedAttributes.VTID); actualLevel++; while (actualLevel < nsMaxLevel) { - virtualTIDQuark = ss.getQuarkRelative(virtualTIDQuark, Attributes.VTID); + virtualTIDQuark = ss.getQuarkRelative(virtualTIDQuark, FusedAttributes.VTID); actualLevel++; } int vtid = ss.querySingleState(hoverTime, virtualTIDQuark).getStateValue().unboxInt(); - int namespaceIDQuark = ss.getQuarkRelative(virtualTIDQuark, Attributes.NS_INUM); + int namespaceIDQuark = ss.getQuarkRelative(virtualTIDQuark, FusedAttributes.NS_INUM); long namespaceID = ss.querySingleState(hoverTime, namespaceIDQuark).getStateValue().unboxLong(); retMap.put("> vTID", Integer.toString(vtid)); retMap.put("> Container", Long.toString(namespaceID)); } - int execNameQuark = ss.getQuarkAbsolute(Attributes.THREADS, machineName, Integer.toString(currentThreadId), Attributes.EXEC_NAME); + int execNameQuark = ss.getQuarkAbsolute(FusedAttributes.THREADS, machineName, Integer.toString(currentThreadId), FusedAttributes.EXEC_NAME); interval = ss.querySingleState(hoverTime, execNameQuark); if (!interval.getStateValue().isNull()) { value = interval.getStateValue(); retMap.put(Messages.FusedVMView_attributeProcessName, value.unboxStr()); } if (status == StateValues.CPU_STATUS_RUN_SYSCALL) { - int syscallQuark = ss.getQuarkAbsolute(Attributes.THREADS, machineName, Integer.toString(currentThreadId), Attributes.SYSTEM_CALL); + int syscallQuark = ss.getQuarkAbsolute(FusedAttributes.THREADS, machineName, Integer.toString(currentThreadId), FusedAttributes.SYSTEM_CALL); interval = ss.querySingleState(hoverTime, syscallQuark); if (!interval.getStateValue().isNull()) { value = interval.getStateValue(); @@ -455,7 +452,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid return; } - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); + VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); if (!(entry.getType().equals(Type.CPU) || entry.getType().equals(Type.PCPU_VM) || entry.getType().equals(Type.PCPU_CONTAINER))) { return; } @@ -477,7 +474,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid String machineName = null; try { ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); + int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); interval = ss.querySingleState(time, machineNameQuark); ITmfStateValue value = interval.getStateValue(); machineName = value.unboxStr(); @@ -490,7 +487,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid try { while (time < event.getTime() + event.getDuration()) { cpuQuark = entry.getQuark(); - int currentThreadQuark = ss.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD); + int currentThreadQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CURRENT_THREAD); ITmfStateInterval tidInterval = ss.querySingleState(time, currentThreadQuark); long startTime = Math.max(tidInterval.getStartTime(), event.getTime()); int x = Math.max(drawingHelper.getXForTime(startTime), bounds.x); @@ -508,9 +505,9 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid String attribute = null; int beginIndex = 0; if (status == StateValues.CPU_STATUS_RUN_USERMODE && currentThreadId != fLastThreadId) { - attribute = Attributes.EXEC_NAME; + attribute = FusedAttributes.EXEC_NAME; } else if (status == StateValues.CPU_STATUS_RUN_SYSCALL) { - attribute = Attributes.SYSTEM_CALL; + attribute = FusedAttributes.SYSTEM_CALL; /* * Remove the "sys_" or "syscall_entry_" or * similar from what we draw in the rectangle. @@ -526,7 +523,7 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid } } if (attribute != null) { - int quark = ss.getQuarkAbsolute(Attributes.THREADS, machineName, Integer.toString(currentThreadId), attribute); + int quark = ss.getQuarkAbsolute(FusedAttributes.THREADS, machineName, Integer.toString(currentThreadId), attribute); ITmfStateInterval interval = ss.querySingleState(time, quark); if (!interval.getStateValue().isNull()) { value = interval.getStateValue(); @@ -566,209 +563,209 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid /** * Says for a specific event if the related machine is highlighted */ - private boolean isMachineHighlighted(ITimeEvent event) { - Map<String, Machine> map = getHighlightedMachines(); - boolean allDim = true; - boolean allHighlighted = true; - for (Machine m : map.values()) { - if (m.isHighlighted()) { - allDim = false; - } else { - allHighlighted = false; - } - } - if (allDim) { - return false; - } else if (allHighlighted) { - return true; - } - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); - ITmfTrace trace = entry.getTrace(); - ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); - int cpuQuark = entry.getQuark(); - long time = event.getTime(); - if (ss == null) { - return false; - } - - String machineName = null; - try { - ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); - interval = ss.querySingleState(time, machineNameQuark); - ITmfStateValue value = interval.getStateValue(); - machineName = value.unboxStr(); - } catch (AttributeNotFoundException e) { -// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ - /* Can happen for events at the beginning of the trace */ - } catch (StateSystemDisposedException e) { - /* Ignored */ - } - - Machine machine = map.get(machineName); - if (machine == null) { - return false; - } - return machine.isHighlighted(); - } - - /** - * Says for a specific event if the related cpu is highlighted - */ - private boolean isCpuHighlighted(ITimeEvent event) { - Map<String, Machine> map = getHighlightedMachines(); - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); - ITmfTrace trace = entry.getTrace(); - ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); - int cpuQuark = entry.getQuark(); - long time = event.getTime(); - if (ss == null) { - return false; - } - - try { - ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); - interval = ss.querySingleState(time, machineNameQuark); - ITmfStateValue value = interval.getStateValue(); - String machineName = value.unboxStr(); - - int conditionQuark = ss.getQuarkRelative(cpuQuark, Attributes.CONDITION); - interval = ss.querySingleState(time, conditionQuark); - if (!interval.getStateValue().isNull()) { - ITmfStateValue valueInVM = interval.getStateValue(); - int cpu; - int inVM = valueInVM.unboxInt(); - switch (inVM) { - case StateValues.CONDITION_IN_VM: - int machineVCpuQuark = ss.getQuarkRelative(cpuQuark, Attributes.VIRTUAL_CPU); - interval = ss.querySingleState(time, machineVCpuQuark); - value = interval.getStateValue(); - cpu = value.unboxInt(); - break; - case StateValues.CONDITION_OUT_VM: - cpu = Integer.parseInt(ss.getAttributeName(cpuQuark)); - break; - default: - return true; - } - Machine machine = map.get(machineName); - if (machine != null) { - return machine.isCpuHighlighted(Integer.toString(cpu)); - } - } - } catch (AttributeNotFoundException e) { -// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ - /* Can happen for events at the beginning of the trace */ - } catch (StateSystemDisposedException e) { - /* Ignored */ - } - return false; - } - - private boolean isContainerHighlighted(ITimeEvent event) { - Map<String, Machine> map = getHighlightedMachines(); - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); - ITmfTrace trace = entry.getTrace(); - ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); - int cpuQuark = entry.getQuark(); - long time = event.getTime(); - if (ss == null) { - return false; - } - String machineName = null; - String nsID = null; - try { - ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); - interval = ss.querySingleState(time, machineNameQuark); - ITmfStateValue value = interval.getStateValue(); - machineName = value.unboxStr(); - int quark = ss.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD); - interval = ss.querySingleState(time, quark); - int tid = interval.getStateValue().unboxInt(); - // quark = - // ss.getQuarkRelative(FusedVMInformationProvider.getNodeThreads(ss), - // machineName, Integer.toString(tid), "ns_max_level"); - // interval = ss.querySingleState(time, quark); - // quark = - // ss.getQuarkRelative(FusedVMInformationProvider.getNodeThreads(ss), - // machineName, Integer.toString(tid)); - // int nsMaxLevel = interval.getStateValue().unboxInt(); - // for (int i = 1; i < nsMaxLevel; i++) { - // quark = ss.getQuarkRelative(quark, "VTID"); - // } - // quark = ss.getQuarkRelative(quark, "ns_inum"); - if (tid == 0) { - /* We don't have infos about nsInum for tid 0 so we look at 1 */ - tid = 1; - } - quark = FusedVMInformationProvider.getNodeNsInum(ss, time, machineName, tid); - nsID = Long.toString(ss.querySingleState(time, quark).getStateValue().unboxLong()); - } catch (AttributeNotFoundException e) { -// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ - /* Can happen for events at the beginning of the trace */ - } catch (StateSystemDisposedException e) { - /* Ignored */ - } - Machine machine = map.get(machineName); - if (machine == null || nsID == null) { - return false; - } - if (machine.isContainerHighlighted(nsID)) { - return true; - } - return false; - } - - /** - * Says for a specific event if the related process is highlighted - */ - private float isProcessHighlighted(ITimeEvent event) { - if (highlightedTreads.isEmpty()) { - // return false; - return REDUCED_HEIGHT; - } - - FusedVMViewEntry entry = (FusedVMViewEntry) event.getEntry(); - ITmfTrace trace = entry.getTrace(); - ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); - int cpuQuark = entry.getQuark(); - long time = event.getTime(); - if (ss == null) { - // return false; - return REDUCED_HEIGHT; - } - try { - ITmfStateInterval interval; - int machineNameQuark = ss.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); - int currentThreadQuark = ss.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD); - interval = ss.querySingleState(time, machineNameQuark); - ITmfStateValue value = interval.getStateValue(); - String machineName = value.unboxStr(); - - interval = ss.querySingleState(time, currentThreadQuark); - value = interval.getStateValue(); - int currentThreadID = value.unboxInt(); - - // return highlightedTreads.containsValue(new Thread(machineName, - // currentThreadID)); - Thread t = highlightedTreads.get(new Thread(machineName, currentThreadID)); - if (t != null) { - return t.getHeightFactory(); - } - return REDUCED_HEIGHT; - - } catch (AttributeNotFoundException e) { -// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ - /* Can happen for events at the beginning of the trace */ - } catch (StateSystemDisposedException e) { - /* Ignored */ - } - - // return false; - return REDUCED_HEIGHT; - } +// private boolean isMachineHighlighted(ITimeEvent event) { +// Map<String, Machine> map = getHighlightedMachines(); +// boolean allDim = true; +// boolean allHighlighted = true; +// for (Machine m : map.values()) { +// if (m.isHighlighted()) { +// allDim = false; +// } else { +// allHighlighted = false; +// } +// } +// if (allDim) { +// return false; +// } else if (allHighlighted) { +// return true; +// } +// VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); +// ITmfTrace trace = entry.getTrace(); +// ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); +// int cpuQuark = entry.getQuark(); +// long time = event.getTime(); +// if (ss == null) { +// return false; +// } +// +// String machineName = null; +// try { +// ITmfStateInterval interval; +// int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); +// interval = ss.querySingleState(time, machineNameQuark); +// ITmfStateValue value = interval.getStateValue(); +// machineName = value.unboxStr(); +// } catch (AttributeNotFoundException e) { +//// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ +// /* Can happen for events at the beginning of the trace */ +// } catch (StateSystemDisposedException e) { +// /* Ignored */ +// } +// +// Machine machine = map.get(machineName); +// if (machine == null) { +// return false; +// } +// return machine.isHighlighted(); +// } +// +// /** +// * Says for a specific event if the related cpu is highlighted +// */ +// private boolean isCpuHighlighted(ITimeEvent event) { +// Map<String, Machine> map = getHighlightedMachines(); +// VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); +// ITmfTrace trace = entry.getTrace(); +// ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); +// int cpuQuark = entry.getQuark(); +// long time = event.getTime(); +// if (ss == null) { +// return false; +// } +// +// try { +// ITmfStateInterval interval; +// int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); +// interval = ss.querySingleState(time, machineNameQuark); +// ITmfStateValue value = interval.getStateValue(); +// String machineName = value.unboxStr(); +// +// int conditionQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CONDITION); +// interval = ss.querySingleState(time, conditionQuark); +// if (!interval.getStateValue().isNull()) { +// ITmfStateValue valueInVM = interval.getStateValue(); +// int cpu; +// int inVM = valueInVM.unboxInt(); +// switch (inVM) { +// case StateValues.CONDITION_IN_VM: +// int machineVCpuQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.VIRTUAL_CPU); +// interval = ss.querySingleState(time, machineVCpuQuark); +// value = interval.getStateValue(); +// cpu = value.unboxInt(); +// break; +// case StateValues.CONDITION_OUT_VM: +// cpu = Integer.parseInt(ss.getAttributeName(cpuQuark)); +// break; +// default: +// return true; +// } +// Machine machine = map.get(machineName); +// if (machine != null) { +// return machine.isCpuHighlighted(Integer.toString(cpu)); +// } +// } +// } catch (AttributeNotFoundException e) { +//// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ +// /* Can happen for events at the beginning of the trace */ +// } catch (StateSystemDisposedException e) { +// /* Ignored */ +// } +// return false; +// } +// +// private boolean isContainerHighlighted(ITimeEvent event) { +// Map<String, Machine> map = getHighlightedMachines(); +// VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); +// ITmfTrace trace = entry.getTrace(); +// ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); +// int cpuQuark = entry.getQuark(); +// long time = event.getTime(); +// if (ss == null) { +// return false; +// } +// String machineName = null; +// String nsID = null; +// try { +// ITmfStateInterval interval; +// int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); +// interval = ss.querySingleState(time, machineNameQuark); +// ITmfStateValue value = interval.getStateValue(); +// machineName = value.unboxStr(); +// int quark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CURRENT_THREAD); +// interval = ss.querySingleState(time, quark); +// int tid = interval.getStateValue().unboxInt(); +// // quark = +// // ss.getQuarkRelative(FusedVMInformationProvider.getNodeThreads(ss), +// // machineName, Integer.toString(tid), "ns_max_level"); +// // interval = ss.querySingleState(time, quark); +// // quark = +// // ss.getQuarkRelative(FusedVMInformationProvider.getNodeThreads(ss), +// // machineName, Integer.toString(tid)); +// // int nsMaxLevel = interval.getStateValue().unboxInt(); +// // for (int i = 1; i < nsMaxLevel; i++) { +// // quark = ss.getQuarkRelative(quark, "VTID"); +// // } +// // quark = ss.getQuarkRelative(quark, "ns_inum"); +// if (tid == 0) { +// /* We don't have infos about nsInum for tid 0 so we look at 1 */ +// tid = 1; +// } +// quark = FusedVMInformationProvider.getNodeNsInum(ss, time, machineName, tid); +// nsID = Long.toString(ss.querySingleState(time, quark).getStateValue().unboxLong()); +// } catch (AttributeNotFoundException e) { +//// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ +// /* Can happen for events at the beginning of the trace */ +// } catch (StateSystemDisposedException e) { +// /* Ignored */ +// } +// Machine machine = map.get(machineName); +// if (machine == null || nsID == null) { +// return false; +// } +// if (machine.isContainerHighlighted(nsID)) { +// return true; +// } +// return false; +// } +// +// /** +// * Says for a specific event if the related process is highlighted +// */ +// private float isProcessHighlighted(ITimeEvent event) { +// if (highlightedTreads.isEmpty()) { +// // return false; +// return REDUCED_HEIGHT; +// } +// +// VirtualResourceEntry entry = (VirtualResourceEntry) event.getEntry(); +// ITmfTrace trace = entry.getTrace(); +// ITmfStateSystem ss = TmfStateSystemAnalysisModule.getStateSystem(trace, FusedVirtualMachineAnalysis.ID); +// int cpuQuark = entry.getQuark(); +// long time = event.getTime(); +// if (ss == null) { +// // return false; +// return REDUCED_HEIGHT; +// } +// try { +// ITmfStateInterval interval; +// int machineNameQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); +// int currentThreadQuark = ss.getQuarkRelative(cpuQuark, FusedAttributes.CURRENT_THREAD); +// interval = ss.querySingleState(time, machineNameQuark); +// ITmfStateValue value = interval.getStateValue(); +// String machineName = value.unboxStr(); +// +// interval = ss.querySingleState(time, currentThreadQuark); +// value = interval.getStateValue(); +// int currentThreadID = value.unboxInt(); +// +// // return highlightedTreads.containsValue(new Thread(machineName, +// // currentThreadID)); +// Thread t = highlightedTreads.get(new Thread(machineName, currentThreadID)); +// if (t != null) { +// return t.getHeightFactory(); +// } +// return REDUCED_HEIGHT; +// +// } catch (AttributeNotFoundException e) { +//// Activator.getDefault().logError("Error in FusedVMViewPresentationProvider, timestamp: " + FusedVMInformationProvider.formatTime(event.getTime()), e); //$NON-NLS-1$ +// /* Can happen for events at the beginning of the trace */ +// } catch (StateSystemDisposedException e) { +// /* Ignored */ +// } +// +// // return false; +// return REDUCED_HEIGHT; +// } // // Getters, setter, and some short useful methods @@ -879,13 +876,11 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid * the machine name * @param threadID * the tid of the thread - * @param threadName - * the name of the thread * */ - public void setSelectedThread(String machineName, int threadID, String threadName) { + public void setSelectedThread(String machineName, int threadID) { // selectedThread = new Thread(machineName, threadID, threadName); - Thread t = new Thread(machineName, threadID, threadName); + Thread t = new Thread(machineName, threadID, String.valueOf(threadID)); selectedThread = highlightedTreads.get(t); if (selectedThread == null) { selectedThread = t; @@ -958,25 +953,26 @@ public class FusedVMViewPresentationProvider extends TimeGraphPresentationProvid fTimeEventHighlight.clear(); } - @Override - public Map<String, Object> getSpecificEventStyle(ITimeEvent event) { - float heightFactor = FULL_HEIGHT; - Float b = fTimeEventHighlight.get(event); - if (b != null) { - return ImmutableMap.of(ITimeEventStyleStrings.heightFactor(), b); - } - Type typeEntry = ((FusedVMViewEntry) event.getEntry()).getType(); - if (typeEntry == Type.IRQ || typeEntry == Type.SOFT_IRQ) { - heightFactor = FULL_HEIGHT; - } else { - heightFactor = isProcessHighlighted(event); - if ((isMachineHighlighted(event) && isCpuHighlighted(event)) || isContainerHighlighted(event)) { - heightFactor = FULL_HEIGHT; - } - } - fTimeEventHighlight.put(event, heightFactor); - return ImmutableMap.of(ITimeEventStyleStrings.heightFactor(), heightFactor); - } + // TODO: Uncomment this +// @Override +// public Map<String, Object> getSpecificEventStyle(ITimeEvent event) { +// float heightFactor = FULL_HEIGHT; +// Float b = fTimeEventHighlight.get(event); +// if (b != null) { +// return ImmutableMap.of(ITimeEventStyleStrings.heightFactor(), b); +// } +// Type typeEntry = ((VirtualResourceEntry) event.getEntry()).getType(); +// if (typeEntry == Type.IRQ || typeEntry == Type.SOFT_IRQ) { +// heightFactor = FULL_HEIGHT; +// } else { +// heightFactor = isProcessHighlighted(event); +// if ((isMachineHighlighted(event) && isCpuHighlighted(event)) || isContainerHighlighted(event)) { +// heightFactor = FULL_HEIGHT; +// } +// } +// fTimeEventHighlight.put(event, heightFactor); +// return ImmutableMap.of(ITimeEventStyleStrings.heightFactor(), heightFactor); +// } public void modifySelectedThreadAlpha(int delta) { if (selectedThread != null) { diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVirtualMachineView.java b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourcesView.java index c6e3656f8..a30d37314 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/FusedVirtualMachineView.java +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/VirtualResourcesView.java @@ -7,7 +7,7 @@ * http://www.eclipse.org/legal/epl-v10.html *******************************************************************************/ -package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview; +package org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources; import java.util.ArrayList; import java.util.Collections; @@ -26,28 +26,27 @@ import org.eclipse.jdt.annotation.Nullable; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IToolBarManager; -import org.eclipse.jface.action.Separator; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.MouseEvent; import org.eclipse.swt.events.MouseWheelListener; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; -import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.data.Attributes; +import org.eclipse.swt.widgets.Display; +import org.eclipse.tracecompass.analysis.os.linux.core.signals.TmfThreadSelectedSignal; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedAttributes; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedVMInformationProvider; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.fused.FusedVirtualMachineAnalysis; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.model.IVirtualMachineModel; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.module.StateValues; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.core.trace.VirtualMachineExperiment; import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.Activator; -import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.fusedvmview.FusedVMViewEntry.Type; -import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.controlflow.ControlFlowEntry; -import org.eclipse.tracecompass.internal.analysis.os.linux.ui.views.controlflow.ControlFlowView; +import org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.vresources.VirtualResourceEntry.Type; import org.eclipse.tracecompass.statesystem.core.ITmfStateSystem; import org.eclipse.tracecompass.statesystem.core.exceptions.AttributeNotFoundException; import org.eclipse.tracecompass.statesystem.core.exceptions.StateSystemDisposedException; import org.eclipse.tracecompass.statesystem.core.interval.ITmfStateInterval; import org.eclipse.tracecompass.statesystem.core.statevalue.ITmfStateValue; +import org.eclipse.tracecompass.tmf.core.signal.TmfSignalHandler; import org.eclipse.tracecompass.tmf.core.statesystem.TmfStateSystemAnalysisModule; import org.eclipse.tracecompass.tmf.core.trace.ITmfTrace; import org.eclipse.tracecompass.tmf.ui.views.timegraph.AbstractStateSystemTimeGraphView; @@ -64,21 +63,17 @@ import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.model.TimeGraphEntry; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils.Resolution; import org.eclipse.tracecompass.tmf.ui.widgets.timegraph.widgets.Utils.TimeFormat; -import org.eclipse.ui.ISelectionListener; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.PlatformUI; /** + * A view showing the virtual resources / CPUs for traces and their contained + * traces and containers + * * @author Cedric Biancheri */ -public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { +public class VirtualResourcesView extends AbstractStateSystemTimeGraphView { /** View ID. */ - public static final String ID = "org.eclipse.tracecompass.internal.lttng2.kernel.ui.views.vm.fusedvmview"; //$NON-NLS-1$ + public static final @NonNull String ID = "org.eclipse.tracecompass.incubator.internal.virtual.machine.analysis.ui.views.virtualresources"; //$NON-NLS-1$ private static final String[] FILTER_COLUMN_NAMES = new String[] { Messages.FusedVMView_stateTypeName @@ -91,7 +86,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private final Action fHighlightMachine = new Action(Messages.FusedVMView_ButtonMachineSelected, IAction.AS_CHECK_BOX) { @Override public void run() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); Map<String, Machine> highlightedMachines = presentationProvider.getHighlightedMachines(); Machine machine = highlightedMachines.get(presentationProvider.getSelectedMachine()); if (machine == null) { @@ -111,7 +106,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private final Action fHighlightCPU = new Action(Messages.FusedVMView_ButtonCPUSelected, IAction.AS_CHECK_BOX) { @Override public void run() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); Map<String, Machine> highlightedMachines = presentationProvider.getHighlightedMachines(); Machine machine = highlightedMachines.get(presentationProvider.getSelectedMachine()); if (machine == null) { @@ -129,7 +124,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private final Action fHighlightProcess = new Action(Messages.FusedVMView_ButtonProcessSelected, IAction.AS_CHECK_BOX) { @Override public void run() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); if (isChecked()) { presentationProvider.addHighlightedThread(); } else { @@ -144,7 +139,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private final Action fHighlightContainer = new Action(Messages.FusedVMView_ButtonContainerSelected, IAction.AS_CHECK_BOX) { @Override public void run() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); Map<String, Machine> highlightedMachines = presentationProvider.getHighlightedMachines(); Machine machine = highlightedMachines.get(presentationProvider.getSelectedMachine()); String container = presentationProvider.getSelectedContainer(); @@ -179,15 +174,15 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { long begin = getBeginSelectedTime(); long end = getEndSelectedTime(); if (begin == end) { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); Object o = presentationProvider.getSelectedFusedVMViewEntry(); if (o == null) { return; } - if (!(o instanceof FusedVMViewEntry)) { + if (!(o instanceof VirtualResourceEntry)) { return; } - FusedVMViewEntry entry = (FusedVMViewEntry) o; + VirtualResourceEntry entry = (VirtualResourceEntry) o; int cpuQuark = entry.getQuark(); ITmfTrace trace = getTrace(); if (trace == null) { @@ -200,30 +195,24 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { String machineName = null; try { ITmfStateInterval interval; - int machineNameQuark = ssq.getQuarkRelative(cpuQuark, Attributes.MACHINE_NAME); + int machineNameQuark = ssq.getQuarkRelative(cpuQuark, FusedAttributes.MACHINE_NAME); interval = ssq.querySingleState(begin, machineNameQuark); ITmfStateValue value = interval.getStateValue(); machineName = value.unboxStr(); presentationProvider.setSelectedMachine(machineName); - int threadQuark = ssq.getQuarkRelative(cpuQuark, Attributes.CURRENT_THREAD); + int threadQuark = ssq.getQuarkRelative(cpuQuark, FusedAttributes.CURRENT_THREAD); interval = ssq.querySingleState(begin, threadQuark); value = interval.getStateValue(); int threadID = value.unboxInt(); - String threadAttributeName = FusedVMInformationProvider.buildThreadAttributeName(threadID, Integer.parseInt(ssq.getAttributeName(cpuQuark))); - int execNameQuark = ssq.getQuarkAbsolute(Attributes.THREADS, machineName, threadAttributeName, Attributes.EXEC_NAME); - interval = ssq.querySingleState(begin, execNameQuark); - value = interval.getStateValue(); - String threadName = value.unboxStr(); - - presentationProvider.setSelectedThread(machineName, threadID, threadName); + presentationProvider.setSelectedThread(machineName, threadID); - int conditionQuark = ssq.getQuarkRelative(cpuQuark, Attributes.CONDITION); + int conditionQuark = ssq.getQuarkRelative(cpuQuark, FusedAttributes.CONDITION); interval = ssq.querySingleState(begin, conditionQuark); value = interval.getStateValue(); int condition = value.unboxInt(); - List<Integer> list = ssq.getQuarks(cpuQuark, Attributes.VIRTUAL_CPU); + List<Integer> list = ssq.getQuarks(cpuQuark, FusedAttributes.VIRTUAL_CPU); if (condition == StateValues.CONDITION_IN_VM && !list.isEmpty()) { /* * Trick to get the quark and don't generate an @@ -251,7 +240,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { presentationProvider.setSelectedContainer(container); } catch (AttributeNotFoundException e) { - Activator.getDefault().logError("Error in FusedVirtualMachineView, timestamp: " + FusedVMInformationProvider.formatTime(event.getBeginTime()), e); //$NON-NLS-1$ + Activator.getDefault().logError("Error in FusedVirtualMachineView, timestamp: " + FusedVMInformationProvider.formatTime(event.getBeginTime()), e); //$NON-NLS-1$ } catch (StateSystemDisposedException e) { /* Ignored */ } @@ -271,45 +260,20 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { @Override public void selectionChanged(TimeGraphSelectionEvent event) { ITimeGraphEntry entry = event.getSelection(); - if (entry instanceof FusedVMViewEntry) { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + if (entry instanceof VirtualResourceEntry) { + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); presentationProvider.setSelectedFusedVMViewEntry(entry); } } }; - /** Listener that handles a click on an entry in the Control Flow View */ - private final ISelectionListener fSelListenerControlFlowView = new ISelectionListener() { - @Override - public void selectionChanged(IWorkbenchPart part, ISelection selection) { - if (selection instanceof IStructuredSelection) { - Object element = ((IStructuredSelection) selection).getFirstElement(); - if (element instanceof ControlFlowEntry) { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); - ControlFlowEntry entry = (ControlFlowEntry) element; - String machineName = entry.getTrace().getName(); - String threadName = entry.getName(); - int threadID = entry.getThreadId(); - presentationProvider.setSelectedControlFlowViewEntry(element); - presentationProvider.setSelectedMachine(machineName); - // TODO: Find a way to access to the id of the cpu running - // the process - presentationProvider.setSelectedThread(machineName, threadID, threadName); - - updateButtonsSelection(); - updateToolTipTexts(); - } - } - } - }; - private final MouseWheelListener fWheelListener = new MouseWheelListener() { @Override public void mouseScrolled(MouseEvent e) { if ((e.stateMask & SWT.SHIFT) != 0) { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); presentationProvider.modifySelectedThreadAlpha(e.count); presentationProvider.destroyTimeEventHighlight(); refresh(); @@ -317,8 +281,8 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } }; - private Machine machineHierarchy; - private HashMap<String, Machine> machines; + private Machine fPhysicalMachine; + private HashMap<String, Machine> fMachines; // ------------------------------------------------------------------------ // Constructors @@ -327,21 +291,18 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { /** * Default constructor */ - public FusedVirtualMachineView() { - super(ID, new FusedVMViewPresentationProvider()); + public VirtualResourcesView() { + super(ID, new VirtualResourcePresentationProvider()); setFilterColumns(FILTER_COLUMN_NAMES); setFilterLabelProvider(new FusedVMFilterLabelProvider()); setEntryComparator(new FusedVMViewEntryComparator()); - registerListener(); - setAutoExpandLevel(1); - } private static class FusedVMViewEntryComparator implements Comparator<ITimeGraphEntry> { @Override public int compare(ITimeGraphEntry o1, ITimeGraphEntry o2) { - FusedVMViewEntry entry1 = (FusedVMViewEntry) o1; - FusedVMViewEntry entry2 = (FusedVMViewEntry) o2; + VirtualResourceEntry entry1 = (VirtualResourceEntry) o1; + VirtualResourceEntry entry2 = (VirtualResourceEntry) o2; Type typeE1 = entry1.getType(); Type typeE2 = entry2.getType(); if ((typeE1 == Type.VM || typeE1 == Type.CONTAINER) && (typeE2 == Type.VM || typeE2 == Type.CONTAINER)) { @@ -352,13 +313,13 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { if (entry1.getName() == Messages.FusedVMView_PhysicalCpusEntry) { return -1; } - if(entry2.getName() == Messages.FusedVMView_PhysicalCpusEntry) { + if (entry2.getName() == Messages.FusedVMView_PhysicalCpusEntry) { return 1; } - if(entry1.getName() == Messages.FusedVMView_ContainersEntry) { + if (entry1.getName() == Messages.FusedVMView_ContainersEntry) { return 1; } - if(entry2.getName() == Messages.FusedVMView_ContainersEntry) { + if (entry2.getName() == Messages.FusedVMView_ContainersEntry) { return -1; } } @@ -370,7 +331,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private static class FusedVMFilterLabelProvider extends TreeLabelProvider { @Override public String getColumnText(Object element, int columnIndex) { - FusedVMViewEntry entry = (FusedVMViewEntry) element; + VirtualResourceEntry entry = (VirtualResourceEntry) element; if (columnIndex == 0) { return entry.getName(); } @@ -379,6 +340,16 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } + private static final Comparator<ITimeGraphEntry> ENTRY_COMPARATOR = new Comparator<ITimeGraphEntry>() { + @Override + public int compare(ITimeGraphEntry o1, ITimeGraphEntry o2) { + if (!((o1 instanceof VirtualResourceEntry) && (o2 instanceof VirtualResourceEntry))) { + return 0; + } + return ((VirtualResourceEntry) o1).compareTo(o2); + } + }; + // ------------------------------------------------------------------------ // Internal // ------------------------------------------------------------------------ @@ -416,41 +387,24 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { if (ssq == null) { return; } - Comparator<ITimeGraphEntry> comparator = new Comparator<ITimeGraphEntry>() { - @Override - public int compare(ITimeGraphEntry o1, ITimeGraphEntry o2) { - return ((FusedVMViewEntry) o1).compareTo(o2); - } - }; - /* IF we don't wait we might don't see some machines */ + /* if we don't wait we might don't see some machines */ + /* TODO: make the view built incrementally with the analysis */ ssq.waitUntilBuilt(); - machines = new HashMap<>(); - machineHierarchy = createHierarchy(ssq); - if (machineHierarchy == null) { - return; - } - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); - - /* All traces are highlighted by default. */ + /* All machines should are highlighted by default. */ /* Remove highlighted machines from other analysis. */ + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); presentationProvider.destroyHightlightedMachines(); - // TODO: do this part in createHierarchy - for (String machineName : FusedVMInformationProvider.getMachinesTraced(ssq)) { - ITmfStateValue machineType = FusedVMInformationProvider.getTypeMachine(ssq, machineName); - if (machineType == null) { - continue; - } - Machine machine = new Machine(machineName, FusedVMInformationProvider.getNbCPUs(ssq, machineName), machineType); - /* Get all the containers for this machine */ - for (String containerID : FusedVMInformationProvider.getMachineContainers(ssq, machineName)) { - machine.addContainer(Machine.createContainer(containerID, machine)); - } - presentationProvider.getHighlightedMachines().put(machine.getMachineName(), machine); + + fMachines = new HashMap<>(); + fPhysicalMachine = createHierarchy(ssq); + + if (fPhysicalMachine == null) { + return; } - Map<Integer, FusedVMViewEntry> entryMap = new HashMap<>(); + Map<Integer, VirtualResourceEntry> entryMap = new HashMap<>(); TimeGraphEntry traceEntry = null; long startTime = ssq.getStartTime(); @@ -473,7 +427,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { long endTime = end + 1; setEndTime(Math.max(getEndTime(), endTime)); - List<Integer> machinesQuarks = ssq.getQuarks(Attributes.MACHINES, "*"); //$NON-NLS-1$ + List<Integer> machinesQuarks = ssq.getQuarks(FusedAttributes.MACHINES, "*"); //$NON-NLS-1$ String hostName = null; for (int quark : machinesQuarks) { try { @@ -486,19 +440,20 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } if (traceEntry == null) { - traceEntry = new FusedVMViewEntry(trace, hostName, startTime, endTime, Type.VM, 0); - traceEntry.sortChildren(comparator); + traceEntry = new VirtualResourceEntry(trace, hostName, startTime, endTime, Type.VM, 0); + traceEntry.sortChildren(ENTRY_COMPARATOR); List<TimeGraphEntry> entryList = Collections.singletonList(traceEntry); addToEntryList(parentTrace, ssq, entryList); } else { traceEntry.updateEndTime(endTime); } - List<Integer> cpuQuarks = ssq.getQuarks(Attributes.CPUS, "*"); //$NON-NLS-1$ + List<Integer> cpuQuarks = ssq.getQuarks(FusedAttributes.CPUS, "*"); //$NON-NLS-1$ + getFusedVMViewPresentationProvider().getHighlightedMachines().put(fPhysicalMachine.getMachineName(), fPhysicalMachine); createCpuEntriesWithQuark(trace, ssq, entryMap, traceEntry, startTime, endTime, cpuQuarks); /* Create entries for machines and containers */ - createMachineAndContainerEntries(trace, ssq, entryMap, machineHierarchy, traceEntry, startTime, endTime); + createMachineAndContainerEntries(trace, ssq, entryMap, fPhysicalMachine, traceEntry, startTime, endTime); if (parentTrace.equals(getTrace())) { refresh(); @@ -545,11 +500,11 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } - private static void createCpuEntriesWithQuark(@NonNull ITmfTrace trace, final ITmfStateSystem ssq, Map<Integer, FusedVMViewEntry> entryMap, TimeGraphEntry traceEntry, long startTime, long endTime, List<Integer> cpuQuarks) { - Integer cpusQuark = ssq.getQuarks(Attributes.CPUS).get(0); - FusedVMViewEntry physicalCpusEntry = entryMap.get(cpusQuark); + private void createCpuEntriesWithQuark(@NonNull ITmfTrace trace, final ITmfStateSystem ssq, Map<Integer, VirtualResourceEntry> entryMap, TimeGraphEntry traceEntry, long startTime, long endTime, List<Integer> cpuQuarks) { + Integer cpusQuark = ssq.getQuarks(FusedAttributes.CPUS).get(0); + VirtualResourceEntry physicalCpusEntry = entryMap.get(cpusQuark); if (physicalCpusEntry == null) { - physicalCpusEntry = new FusedVMViewEntry(cpusQuark, trace, Messages.FusedVMView_PhysicalCpusEntry, startTime, endTime, Type.NULL, cpusQuark); + physicalCpusEntry = new VirtualResourceEntry(cpusQuark, trace, Messages.FusedVMView_PhysicalCpusEntry, startTime, endTime, Type.NULL, cpusQuark); entryMap.put(cpusQuark, physicalCpusEntry); traceEntry.addChild(physicalCpusEntry); } else { @@ -558,39 +513,44 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { for (Integer cpuQuark : cpuQuarks) { final @NonNull String cpuName = ssq.getAttributeName(cpuQuark); int cpu = Integer.parseInt(cpuName); - FusedVMViewEntry cpuEntry = entryMap.get(cpuQuark); + VirtualResourceEntry cpuEntry = entryMap.get(cpuQuark); if (cpuEntry == null) { - cpuEntry = new FusedVMViewEntry(cpuQuark, trace, startTime, endTime, Type.CPU, cpu); + VirtualResourceEntry newCpuEntry = new VirtualResourceEntry(cpuQuark, trace, startTime, endTime, Type.CPU, cpu); + cpuEntry = newCpuEntry; entryMap.put(cpuQuark, cpuEntry); physicalCpusEntry.addChild(cpuEntry); + Display.getDefault().asyncExec(() -> { + getTimeGraphViewer().setExpandedState(newCpuEntry, false); + }); } else { cpuEntry.updateEndTime(endTime); } - List<Integer> irqQuarks = ssq.getQuarks(Attributes.CPUS, cpuName, Attributes.IRQS, "*"); //$NON-NLS-1$ + List<Integer> irqQuarks = ssq.getQuarks(FusedAttributes.CPUS, cpuName, FusedAttributes.IRQS, "*"); //$NON-NLS-1$ createCpuInterruptEntryWithQuark(trace, ssq, entryMap, startTime, endTime, physicalCpusEntry, cpuEntry, irqQuarks, Type.IRQ); - List<Integer> softIrqQuarks = ssq.getQuarks(Attributes.CPUS, cpuName, Attributes.SOFT_IRQS, "*"); //$NON-NLS-1$ + List<Integer> softIrqQuarks = ssq.getQuarks(FusedAttributes.CPUS, cpuName, FusedAttributes.SOFT_IRQS, "*"); //$NON-NLS-1$ createCpuInterruptEntryWithQuark(trace, ssq, entryMap, startTime, endTime, physicalCpusEntry, cpuEntry, softIrqQuarks, Type.SOFT_IRQ); } } - private static void createMachineAndContainerEntries(@NonNull ITmfTrace trace, final ITmfStateSystem ssq, Map<Integer, FusedVMViewEntry> entryMap, Machine machine, TimeGraphEntry machineEntry, long startTime, long endTime) { + private void createMachineAndContainerEntries(@NonNull ITmfTrace trace, final ITmfStateSystem ssq, Map<Integer, VirtualResourceEntry> entryMap, Machine machine, TimeGraphEntry machineEntry, long startTime, long endTime) { Set<Machine> vms = machine.getVirtualMachines(); Set<Machine> containers = machine.getContainers(); Set<Processor> pcpus = machine.getPCpus(); if (!vms.isEmpty()) { - FusedVMViewEntry virtualMachinesEntry = entryMap.get(3 * vms.hashCode()); + VirtualResourceEntry virtualMachinesEntry = entryMap.get(3 * vms.hashCode()); if (virtualMachinesEntry == null) { - virtualMachinesEntry = new FusedVMViewEntry(0, trace, Messages.FusedVMView_VirtualMachinesEntry, startTime, endTime, Type.NULL, 3 * vms.hashCode()); + virtualMachinesEntry = new VirtualResourceEntry(0, trace, Messages.FusedVMView_VirtualMachinesEntry, startTime, endTime, Type.NULL, 3 * vms.hashCode()); entryMap.put(3 * vms.hashCode(), virtualMachinesEntry); machineEntry.addChild(virtualMachinesEntry); } else { virtualMachinesEntry.updateEndTime(endTime); } for (Machine vm : vms) { - FusedVMViewEntry virtualMachineEntry = entryMap.get(vm.hashCode()); + VirtualResourceEntry virtualMachineEntry = entryMap.get(vm.hashCode()); if (virtualMachineEntry == null) { - virtualMachineEntry = new FusedVMViewEntry(0, trace, vm.getMachineName(), startTime, endTime, Type.VM, vm.hashCode()); + virtualMachineEntry = new VirtualResourceEntry(0, trace, vm.getMachineName(), startTime, endTime, Type.VM, vm.hashCode()); + getFusedVMViewPresentationProvider().getHighlightedMachines().put(vm.getMachineName(), vm); entryMap.put(vm.hashCode(), virtualMachineEntry); virtualMachinesEntry.addChild(virtualMachineEntry); } else { @@ -600,19 +560,21 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } } - if(!containers.isEmpty()) { - FusedVMViewEntry containersEntry = entryMap.get(3 * containers.hashCode()); + if (!containers.isEmpty()) { + VirtualResourceEntry containersEntry = entryMap.get(3 * containers.hashCode()); if (containersEntry == null) { - containersEntry = new FusedVMViewEntry(0, trace, Messages.FusedVMView_ContainersEntry, startTime, endTime, Type.NULL, 3 * containers.hashCode()); + containersEntry = new VirtualResourceEntry(0, trace, Messages.FusedVMView_ContainersEntry, startTime, endTime, Type.NULL, 3 * containers.hashCode()); + entryMap.put(3 * containers.hashCode(), containersEntry); machineEntry.addChild(containersEntry); } else { containersEntry.updateEndTime(endTime); } for (Machine container : containers) { - FusedVMViewEntry containerEntry = entryMap.get(container.hashCode()); + VirtualResourceEntry containerEntry = entryMap.get(container.hashCode()); if (containerEntry == null) { - containerEntry = new FusedVMViewEntry(0, trace, container.getMachineName(), startTime, endTime, Type.CONTAINER, container.hashCode()); + containerEntry = new VirtualResourceEntry(0, trace, container.getMachineName(), startTime, endTime, Type.CONTAINER, container.hashCode()); + getFusedVMViewPresentationProvider().getHighlightedMachines().put(container.getMachineName(), container); entryMap.put(container.hashCode(), containerEntry); containersEntry.addChild(containerEntry); } else { @@ -622,31 +584,31 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } } - if (!pcpus.isEmpty()) { - FusedVMViewEntry pCpusEntry = entryMap.get(3 * pcpus.hashCode()); + if (!pcpus.isEmpty() && !(machine == fPhysicalMachine)) { + VirtualResourceEntry pCpusEntry = entryMap.get(3 * pcpus.hashCode()); if (pCpusEntry == null) { - pCpusEntry = new FusedVMViewEntry(0, trace, Messages.FusedVMView_PhysicalCpusEntry, startTime, endTime, Type.NULL, 3 * pcpus.hashCode()); + pCpusEntry = new VirtualResourceEntry(0, trace, Messages.FusedVMView_PhysicalCpusEntry, startTime, endTime, Type.NULL, 3 * pcpus.hashCode()); entryMap.put(3 * pcpus.hashCode(), pCpusEntry); machineEntry.addChild(pCpusEntry); } else { pCpusEntry.updateEndTime(endTime); } for (Processor p : pcpus) { - FusedVMViewEntry pCpuEntry = entryMap.get(p.hashCode()); + VirtualResourceEntry pCpuEntry = entryMap.get(p.hashCode()); if (pCpuEntry == null) { - List<Integer> list = ssq.getQuarks(Attributes.CPUS, p.getNumber()); + List<Integer> list = ssq.getQuarks(FusedAttributes.CPUS, p.getNumber()); if (list.isEmpty()) { return; } int pCpuQuark = list.get(0); Type type = Type.NULL; - Type typeMachine = ((FusedVMViewEntry) machineEntry).getType(); + Type typeMachine = ((VirtualResourceEntry) machineEntry).getType(); if (typeMachine == Type.VM) { type = Type.PCPU_VM; } else if (typeMachine == Type.CONTAINER) { type = Type.PCPU_CONTAINER; } - pCpuEntry = new FusedVMViewEntry(pCpuQuark, trace, startTime, endTime, type, Integer.parseInt(p.getNumber())); + pCpuEntry = new VirtualResourceEntry(pCpuQuark, trace, startTime, endTime, type, Integer.parseInt(p.getNumber())); entryMap.put(p.hashCode(), pCpuEntry); pCpusEntry.addChild(pCpuEntry); } else { @@ -684,16 +646,16 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { * the type of entry being added */ private static void createCpuInterruptEntryWithQuark(@NonNull ITmfTrace trace, - final ITmfStateSystem ssq, Map<Integer, FusedVMViewEntry> entryMap, + final ITmfStateSystem ssq, Map<Integer, VirtualResourceEntry> entryMap, long startTime, long endTime, - TimeGraphEntry traceEntry, FusedVMViewEntry cpuEntry, + TimeGraphEntry traceEntry, VirtualResourceEntry cpuEntry, List<Integer> childrenQuarks, Type type) { for (Integer quark : childrenQuarks) { final @NonNull String resourceName = ssq.getAttributeName(quark); int resourceId = Integer.parseInt(resourceName); - FusedVMViewEntry interruptEntry = entryMap.get(quark); + VirtualResourceEntry interruptEntry = entryMap.get(quark); if (interruptEntry == null) { - interruptEntry = new FusedVMViewEntry(quark, trace, startTime, endTime, type, resourceId); + interruptEntry = new VirtualResourceEntry(quark, trace, startTime, endTime, type, resourceId); entryMap.put(quark, interruptEntry); cpuEntry.addChild(interruptEntry); } else { @@ -705,7 +667,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { @Override protected @Nullable List<ITimeEvent> getEventList(@NonNull TimeGraphEntry entry, ITmfStateSystem ssq, @NonNull List<List<ITmfStateInterval>> fullStates, @Nullable List<ITmfStateInterval> prevFullState, @NonNull IProgressMonitor monitor) { - FusedVMViewEntry fusedVMViewEntry = (FusedVMViewEntry) entry; + VirtualResourceEntry fusedVMViewEntry = (VirtualResourceEntry) entry; int quark = fusedVMViewEntry.getQuark(); if (fusedVMViewEntry.getType().equals(Type.CPU)) { @@ -728,9 +690,9 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { int currentThreadQuark; String machineName = null; try { - statusQuark = ssq.getQuarkRelative(quark, Attributes.STATUS); - machineQuark = ssq.getQuarkRelative(quark, Attributes.MACHINE_NAME); - currentThreadQuark = ssq.getQuarkRelative(quark, Attributes.CURRENT_THREAD); + statusQuark = ssq.getQuarkRelative(quark, FusedAttributes.STATUS); + machineQuark = ssq.getQuarkRelative(quark, FusedAttributes.MACHINE_NAME); + currentThreadQuark = ssq.getQuarkRelative(quark, FusedAttributes.CURRENT_THREAD); } catch (AttributeNotFoundException e) { /* * The sub-attribute "status" is not available. May happen if the @@ -772,16 +734,18 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } else if (type.equals(Type.PCPU_VM)) { // TODO: support vm's vms machineName = entry.getParent().getParent().getName(); -// if (!machineInterval.getStateValue().unboxStr().equals(machineName)) { + // if + // (!machineInterval.getStateValue().unboxStr().equals(machineName)) + // { if (!isInsideVM(machineInterval.getStateValue().unboxStr(), machineName)) { /* Skip that interval, it's not related to the machine */ continue; } } else if (type.equals(Type.PCPU_CONTAINER)) { /* Get the entry of the machine containing the container */ - FusedVMViewEntry machineEntry = (FusedVMViewEntry) entry.getParent(); + VirtualResourceEntry machineEntry = (VirtualResourceEntry) entry.getParent(); while (machineEntry.getType() != Type.VM) { - machineEntry = (FusedVMViewEntry) machineEntry.getParent(); + machineEntry = (VirtualResourceEntry) machineEntry.getParent(); } machineName = machineEntry.getName(); if (machineName == null || !machineInterval.getStateValue().unboxStr().equals(machineName)) { @@ -794,7 +758,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } int containerQuark = FusedVMInformationProvider.getContainerQuark(ssq, machineName, containerID); int threadID = currentThreadInterval.getStateValue().unboxInt(); - List<Integer> threadsQuarks = ssq.getQuarks(containerQuark, Attributes.THREADS, "*"); //$NON-NLS-1$ + List<Integer> threadsQuarks = ssq.getQuarks(containerQuark, FusedAttributes.THREADS, "*"); //$NON-NLS-1$ boolean foundThread = false; for (Integer threadQuark : threadsQuarks) { if (Integer.parseInt(ssq.getAttributeName(threadQuark)) == threadID) { @@ -859,7 +823,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { if (machine1.equals(machine2)) { return true; } - Machine m2 = machines.get(machine2); + Machine m2 = fMachines.get(machine2); if (m2 == null) { return false; } @@ -920,13 +884,12 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { IAction selectMachineAction = getSelectMachineAction(); selectMachineAction.setText(Messages.FusedVMView_selectMachineText); selectMachineAction.setToolTipText(Messages.FusedVMView_selectMachineText); - manager.add(selectMachineAction); - manager.add(new Separator()); - manager.add(fHighlightMachine); - manager.add(fHighlightCPU); - manager.add(fHighlightProcess); - manager.add(fHighlightContainer); - +// manager.add(selectMachineAction); +// manager.add(new Separator()); +// manager.add(fHighlightMachine); +// manager.add(fHighlightCPU); +// manager.add(fHighlightProcess); +// manager.add(fHighlightContainer); } @@ -983,12 +946,12 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { * * @return the FusedVMViewProvider */ - public FusedVMViewPresentationProvider getFusedVMViewPresentationProvider() { + public VirtualResourcePresentationProvider getFusedVMViewPresentationProvider() { ITimeGraphPresentationProvider2 pp = getPresentationProvider(); - if (!(pp instanceof FusedVMViewPresentationProvider)) { + if (!(pp instanceof VirtualResourcePresentationProvider)) { return null; } - return (FusedVMViewPresentationProvider) pp; + return (VirtualResourcePresentationProvider) pp; } private void printInformations() { @@ -1002,39 +965,11 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } /** - * Registers the listener that handles the click on a Control Flow View - * entry - */ - private void registerListener() { - if (!PlatformUI.isWorkbenchRunning()) { - return; - } - IWorkbench wb = PlatformUI.getWorkbench(); - if (wb == null) { - return; - } - IWorkbenchWindow wbw = wb.getActiveWorkbenchWindow(); - if (wbw == null) { - return; - } - final IWorkbenchPage activePage = wbw.getActivePage(); - if (activePage == null) { - return; - } - - /* Add the listener to the control flow view */ - IViewPart view = activePage.findView(ControlFlowView.ID); - if (view != null) { - view.getSite().getWorkbenchWindow().getSelectionService().addPostSelectionListener(fSelListenerControlFlowView); - } - } - - /** * Updates the tooltip text of the buttons so it corresponds to the machine, * cpu and process selected */ private void updateToolTipTexts() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); fHighlightMachine.setToolTipText(presentationProvider.getSelectedMachine()); fHighlightCPU.setToolTipText(Integer.toString((presentationProvider.getSelectedCpu()))); fHighlightProcess.setToolTipText(Messages.FusedVMView_ButtonProcessSelected + ": " + //$NON-NLS-1$ @@ -1048,7 +983,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { * Sets the checked state of the buttons */ private void updateButtonsSelection() { - FusedVMViewPresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); Map<String, Machine> highlightedMachines = presentationProvider.getHighlightedMachines(); Machine machine = highlightedMachines.get(presentationProvider.getSelectedMachine()); if (machine == null) { @@ -1063,6 +998,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { /** * Get the select machine action. + * * @return The select machine action */ public Action getSelectMachineAction() { @@ -1071,7 +1007,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { @Override public void run() { selectMachine(); - FusedVMViewPresentationProvider presentationProvider = (FusedVMViewPresentationProvider) getPresentationProvider(); + VirtualResourcePresentationProvider presentationProvider = (VirtualResourcePresentationProvider) getPresentationProvider(); presentationProvider.destroyTimeEventHighlight(); redraw(); } @@ -1107,22 +1043,30 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { for (String machineName : FusedVMInformationProvider.getMachinesTraced(ssq)) { ITmfStateValue typeMachine = FusedVMInformationProvider.getTypeMachine(ssq, machineName); - if (typeMachine != null) { - if ((typeMachine.unboxInt() & StateValues.MACHINE_GUEST) == StateValues.MACHINE_GUEST) { - Machine machine = new Machine(machineName, typeMachine, FusedVMInformationProvider.getPCpusUsedByMachine(ssq, machineName)); - machines.put(machine.getMachineName(), machine); - guests.add(machine); - } else if (typeMachine.unboxInt() == StateValues.MACHINE_HOST) { - Machine machine = new Machine(machineName, typeMachine); - machines.put(machine.getMachineName(), machine); - host = machine; + if (typeMachine == null) { + continue; + } + Machine machine = null; + if ((typeMachine.unboxInt() & StateValues.MACHINE_GUEST) == StateValues.MACHINE_GUEST) { + machine = new Machine(machineName, typeMachine, FusedVMInformationProvider.getPhysicalCpusUsedByMachine(ssq, machineName)); + fMachines.put(machine.getMachineName(), machine); + guests.add(machine); + } else if (typeMachine.unboxInt() == StateValues.MACHINE_HOST) { + machine = new Machine(machineName, typeMachine); + for (String cpus : FusedVMInformationProvider.getCpusUsedByMachine(ssq, machineName)) { + machine.addPCpu(cpus); } + fMachines.put(machine.getMachineName(), machine); + host = machine; + } + if (machine == null) { + continue; } } if (host == null) { return null; } - /* Complete construction for the host*/ + /* Complete construction for the host */ createContainersHierarchyForMachine(ssq, host); createMachineHierarchy(ssq, host, guests); /* Create container hierarchy for guests and add them to the host */ @@ -1135,13 +1079,13 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { private static void createMachineHierarchy(@NonNull ITmfStateSystem ssq, Machine host, List<Machine> guests) { for (Machine m : guests) { String parentName = FusedVMInformationProvider.getParentMachineName(ssq, m.getMachineName()); - if (parentName.equals(host.getMachineName())){ + if (parentName.equals(host.getMachineName())) { m.setHost(host); host.addVirtualMachine(m); } for (Machine m2 : guests) { parentName = FusedVMInformationProvider.getParentMachineName(ssq, m2.getMachineName()); - if (parentName.equals(m.getMachineName())){ + if (parentName.equals(m.getMachineName())) { m2.setHost(m); m.addVirtualMachine(m2); } @@ -1158,8 +1102,7 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { /* Look for not nested containers */ for (Integer quark : containersQuarks) { Long parentContainer = FusedVMInformationProvider.getParentContainer(ssq, quark); - /* TODO: Externalize the root namespace ID */ - if (parentContainer.toString().equals("4026531836")) { //$NON-NLS-1$ + if (parentContainer == IVirtualMachineModel.ROOT_NAMESPACE) { String containerName = ssq.getAttributeName(quark); List<String> pCpus = FusedVMInformationProvider.getPCpusUsedByContainer(ssq, quark); Machine container = new Machine(containerName, StateValues.MACHINE_CONTAINER_VALUE, pCpus); @@ -1184,4 +1127,20 @@ public class FusedVirtualMachineView extends AbstractStateSystemTimeGraphView { } } } + + /** + * Update the view when a thread is selected + * + * @param signal + * The thread selected signal + */ + @TmfSignalHandler + public void threadSelected(TmfThreadSelectedSignal signal) { + signal.getThreadId(); + VirtualResourcePresentationProvider presentationProvider = getFusedVMViewPresentationProvider(); + presentationProvider.setSelectedThread(signal.getHostId(), signal.getThreadId()); + + updateButtonsSelection(); + updateToolTipTexts(); + } } diff --git a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/messages.properties b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/messages.properties index 067df3438..067df3438 100644 --- a/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/fusedvmview/messages.properties +++ b/vm/org.eclipse.tracecompass.incubator.virtual.machine.analysis.ui/src/org/eclipse/tracecompass/incubator/internal/virtual/machine/analysis/ui/views/vresources/messages.properties |