Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Ferrazzutti2014-02-21 19:04:01 +0000
committerSami Wagiaalla2014-04-01 18:12:50 +0000
commitdb1ab32aeb3884e1614b00222a6d976aee7ddc83 (patch)
treed83e736743bda9666fca548a366520192d8971f5 /systemtap
parentc9f1ffd96db98ee0b196c90972480984ed75a6d8 (diff)
downloadorg.eclipse.linuxtools-db1ab32aeb3884e1614b00222a6d976aee7ddc83.tar.gz
org.eclipse.linuxtools-db1ab32aeb3884e1614b00222a6d976aee7ddc83.tar.xz
org.eclipse.linuxtools-db1ab32aeb3884e1614b00222a6d976aee7ddc83.zip
Systemtap: Allow data filters to affect graphs.
Data filters that are applied to the Data View table (DataGrid) of a Graph Set are now also applied to all graphs in the Set. Also include SWTBot testing of adding filters to tables/charts. Change-Id: If9bb7df6ea3686f0930f8ce8bf8685ec5357c45e Signed-off-by: Andrew Ferrazzutti <aferrazz@redhat.com> Reviewed-on: https://git.eclipse.org/r/22394 Tested-by: Hudson CI Reviewed-by: Sami Wagiaalla <swagiaal@redhat.com> IP-Clean: Sami Wagiaalla <swagiaal@redhat.com> Tested-by: Sami Wagiaalla <swagiaal@redhat.com>
Diffstat (limited to 'systemtap')
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/GraphDisplaySet.java8
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/datadisplay/DataGrid.java26
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/views/GraphSelectorEditor.java6
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/wizards/dataset/DataSetFactory.java9
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.ide.tests/src/org/eclipse/linuxtools/systemtap/ui/ide/test/swtbot/TestCreateSystemtapScript.java124
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/ImportDataSetHandler.java10
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/RunScriptChartHandler.java6
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptGraphOptionsTab.java7
-rw-r--r--systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptLaunchConfigurationDelegate.java4
9 files changed, 140 insertions, 60 deletions
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/GraphDisplaySet.java b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/GraphDisplaySet.java
index ed49fe9a76..3a71e5de8c 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/GraphDisplaySet.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/GraphDisplaySet.java
@@ -22,6 +22,7 @@ import org.eclipse.linuxtools.internal.systemtap.graphing.ui.GraphingUIPlugin;
import org.eclipse.linuxtools.internal.systemtap.graphing.ui.Localization;
import org.eclipse.linuxtools.internal.systemtap.graphing.ui.preferences.GraphingPreferenceConstants;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.structures.GraphData;
import org.eclipse.linuxtools.systemtap.graphing.ui.charts.AbstractChartBuilder;
import org.eclipse.linuxtools.systemtap.graphing.ui.datadisplay.DataGrid;
@@ -62,7 +63,10 @@ public class GraphDisplaySet {
private IPropertyChangeListener propertyChangeListener;
private IPreferenceStore p;
- public GraphDisplaySet(Composite parent, IDataSet data) {
+ /**
+ * @since 3.0 set must be a IFilteredDataSet.
+ */
+ public GraphDisplaySet(Composite parent, IFilteredDataSet data) {
p = GraphingUIPlugin.getDefault().getPreferenceStore();
int delay = p.getInt(GraphingPreferenceConstants.P_GRAPH_UPDATE_DELAY);
@@ -283,7 +287,7 @@ public class GraphDisplaySet {
}
private int lastSelectedTab;
- private IDataSet dataSet;
+ private IFilteredDataSet dataSet;
private CTabFolder folder;
private ButtonClickListener listener;
private UpdateManager updater;
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/datadisplay/DataGrid.java b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/datadisplay/DataGrid.java
index 6bbaea6124..b1e4e7c438 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/datadisplay/DataGrid.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/datadisplay/DataGrid.java
@@ -24,7 +24,6 @@ import org.eclipse.linuxtools.internal.systemtap.graphing.ui.preferences.Graphin
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.filters.IDataSetFilter;
-import org.eclipse.linuxtools.systemtap.graphing.ui.wizards.dataset.DataSetFactory;
import org.eclipse.linuxtools.systemtap.graphing.ui.wizards.filter.AvailableFilterTypes;
import org.eclipse.linuxtools.systemtap.graphing.ui.wizards.filter.SelectFilterWizard;
import org.eclipse.linuxtools.systemtap.structures.IFormattingStyles;
@@ -52,14 +51,14 @@ import org.eclipse.ui.PlatformUI;
public class DataGrid implements IUpdateListener {
- public DataGrid(Composite composite, IDataSet set, int style) {
+ /**
+ * @since 3.0 set must be a IFilteredDataSet.
+ */
+ public DataGrid(Composite composite, IFilteredDataSet set, int style) {
prefs = GraphingUIPlugin.getDefault().getPreferenceStore();
manualResize = !prefs.getBoolean(GraphingPreferenceConstants.P_AUTO_RESIZE);
- dataSet = set;
- filteredDataSet = (dataSet instanceof IFilteredDataSet)
- ? (IFilteredDataSet)dataSet
- : DataSetFactory.createFilteredDataSet(dataSet);
+ filteredDataSet = set;
this.style = style;
clickLocation = new Point(-1, -1);
createPartControl(composite);
@@ -79,7 +78,7 @@ public class DataGrid implements IUpdateListener {
table.setLayoutData(data);
}
- public IDataSet getDataSet() { return dataSet; }
+ public IDataSet getDataSet() { return filteredDataSet; }
public Control getControl() { return table; }
public void createPartControl(Composite parent) {
@@ -88,7 +87,7 @@ public class DataGrid implements IUpdateListener {
table.setLinesVisible(true);
table.getVerticalBar().setVisible(true);
- String[] names = dataSet.getTitles();
+ String[] names = filteredDataSet.getTitles();
TableColumn column = new TableColumn(table, SWT.LEFT);
column.setText(Localization.getString("DataGrid.Row")); //$NON-NLS-1$
column.pack();
@@ -192,7 +191,7 @@ public class DataGrid implements IUpdateListener {
public class AddFilterSelection extends SelectionAdapter {
@Override
public void widgetSelected(SelectionEvent e) {
- SelectFilterWizard wizard = new SelectFilterWizard(dataSet.getTitles());
+ SelectFilterWizard wizard = new SelectFilterWizard(filteredDataSet.getTitles());
IWorkbench workbench = PlatformUI.getWorkbench();
wizard.init(workbench, null);
WizardDialog dialog = new WizardDialog(workbench.getActiveWorkbenchWindow().getShell(), wizard);
@@ -208,7 +207,7 @@ public class DataGrid implements IUpdateListener {
MenuItem item = new MenuItem(filterMenu, SWT.CASCADE);
item.setText(MessageFormat.format(Localization.getString("DataGrid.FilterLabel"), //$NON-NLS-1$
- AvailableFilterTypes.getFilterName(filter.getID()), dataSet.getTitles()[filter.getColumn()], filter.getInfo()));
+ AvailableFilterTypes.getFilterName(filter.getID()), filteredDataSet.getTitles()[filter.getColumn()], filter.getInfo()));
item.setData(filter);
item.addSelectionListener(new RemoveFilterSelection());
}
@@ -252,7 +251,7 @@ public class DataGrid implements IUpdateListener {
items[IFormattingStyles.UNFORMATED].setEnabled(true);
items[IFormattingStyles.STRING].setEnabled(true);
- itemText = dataSet.getRow(0)[selectedCol-1].toString();
+ itemText = filteredDataSet.getRow(0)[selectedCol-1].toString();
try {
Double.parseDouble(itemText);
doubleValid = true;
@@ -282,7 +281,7 @@ public class DataGrid implements IUpdateListener {
}
}
- Object[] data = dataSet.getColumn(column-1);
+ Object[] data = filteredDataSet.getColumn(column-1);
columnFormat[column-1].setFormat(format);
for(i=0; i<table.getItemCount(); i++) {
table.getItem(i).setText(column, columnFormat[column-1].format(data[i].toString()));
@@ -361,7 +360,7 @@ public class DataGrid implements IUpdateListener {
}
public void dispose() {
- dataSet = null;
+ filteredDataSet = null;
table.dispose();
table = null;
clickLocation = null;
@@ -370,7 +369,6 @@ public class DataGrid implements IUpdateListener {
propertyChangeListener = null;
}
- protected IDataSet dataSet;
protected IFilteredDataSet filteredDataSet;
protected IFormattingStyles columnFormat[];
protected int removedItems;
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/views/GraphSelectorEditor.java b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/views/GraphSelectorEditor.java
index a821699397..8866356fbc 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/views/GraphSelectorEditor.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/views/GraphSelectorEditor.java
@@ -16,7 +16,7 @@ import java.util.List;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.linuxtools.internal.systemtap.graphing.ui.views.Messages;
-import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.ui.GraphDisplaySet;
import org.eclipse.linuxtools.systemtap.structures.listeners.ITabListener;
import org.eclipse.osgi.util.NLS;
@@ -65,10 +65,10 @@ public class GraphSelectorEditor extends EditorPart {
* Each new script set will be given a new tab item at the end of the list.
* @param scriptName The full name of the script that is being monitored.
* @param titles The names to be shown on each new tab
- * @param dataSets The <code>IDataSet</code>s for each new script set
+ * @param dataSets The <code>IFilteredDataSet</code>s for each new script set
* @since 2.2
*/
- public void createScriptSets(String scriptName, List<String> titles, List<IDataSet> dataSets) {
+ public void createScriptSets(String scriptName, List<String> titles, List<IFilteredDataSet> dataSets) {
CTabItem item = null;
for (int i = 0, n = titles.size(); i < n; i++) {
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/wizards/dataset/DataSetFactory.java b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/wizards/dataset/DataSetFactory.java
index d5055946b9..76b47791a8 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/wizards/dataset/DataSetFactory.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.graphing.ui/src/org/eclipse/linuxtools/systemtap/graphing/ui/wizards/dataset/DataSetFactory.java
@@ -48,10 +48,11 @@ public final class DataSetFactory {
return null;
}
- public static DataGrid getDataGrid(Composite composite, IDataSet set) {
- if(set instanceof RowDataSet) {
- return new DataGrid(composite, set, DataGrid.NONE);
- } else if(set instanceof TableDataSet) {
+ /**
+ * @since 3.0 set must be a IFilteredDataSet.
+ */
+ public static DataGrid getDataGrid(Composite composite, IFilteredDataSet set) {
+ if(set instanceof RowDataSet || set instanceof TableDataSet) {
return new DataGrid(composite, set, DataGrid.FULL_UPDATE);
}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide.tests/src/org/eclipse/linuxtools/systemtap/ui/ide/test/swtbot/TestCreateSystemtapScript.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide.tests/src/org/eclipse/linuxtools/systemtap/ui/ide/test/swtbot/TestCreateSystemtapScript.java
index 1abcc60ae5..38dd2ee733 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide.tests/src/org/eclipse/linuxtools/systemtap/ui/ide/test/swtbot/TestCreateSystemtapScript.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide.tests/src/org/eclipse/linuxtools/systemtap/ui/ide/test/swtbot/TestCreateSystemtapScript.java
@@ -194,18 +194,21 @@ public class TestCreateSystemtapScript {
private String scriptName;
private int graphSetNum;
private int expectedRows;
+ private boolean exact;
/**
- * Wait for the provided GraphSelectorEditor to be fully updated. A table is considered to be updated
- * once the number of entries in the table is equal to the expectedRows parameter of this constructor.
+ * Wait for the provided GraphSelectorEditor to be fully updated.
* Note that using this will set focus to the Data View tab of the specified graph set.
- * @param graphEditor The SWTBotEditor of the GraphSelectorEditor to wait for.
+ * @param scriptName The name of the script that is being graphed.
* @param graphSetNum Which graph set to focus on & watch for updates.
* @param expectedRows How many entries/rows are expected to be in the table when it's fully updated.
+ * @param exact Set this to <code>true</code> if the number of graph columns should exactly match the
+ * expected amount, or <code>false</code> if it may be greater than the expected amount.
*/
- public TableHasUpdated(String scriptName, int graphSetNum, int expectedRows) {
+ public TableHasUpdated(String scriptName, int graphSetNum, int expectedRows, boolean exact) {
this.scriptName = scriptName;
this.graphSetNum = graphSetNum;
this.expectedRows = expectedRows;
+ this.exact = exact;
}
@Override
public boolean test() {
@@ -213,7 +216,11 @@ public class TestCreateSystemtapScript {
graphEditor.setFocus();
graphEditor.bot().cTabItem(MessageFormat.format(Messages.SystemTapScriptGraphOptionsTab_graphSetTitleBase, graphSetNum)).activate();
graphEditor.bot().cTabItem("Data View").activate();
- return bot.table(0).rowCount() >= expectedRows;
+ if (!exact) {
+ return bot.table().rowCount() >= expectedRows;
+ } else {
+ return bot.table().rowCount() == expectedRows;
+ }
}
@Override
@@ -228,8 +235,7 @@ public class TestCreateSystemtapScript {
int oldCount;
int expectedCount;
/**
- * Wait for the provided chart to become updated. The chart is considered
- * to be updated once a new point is added to one of its series sets.
+ * Wait for the provided chart to become updated.
* @param chart The chart to watch for an update.
* @param expectedCount The expected number of series points. Set to -1 to instead
* check for when there are more points than there were at the beginning.
@@ -574,7 +580,7 @@ public class TestCreateSystemtapScript {
combo.setText("sample");
combo.setSelection(1);
assertEquals(4, combo.itemCount());
- SWTBotTable table = bot.table(0);
+ SWTBotTable table = bot.table();
SWTBotButton button = bot.button(Messages.SystemTapScriptGraphOptionsTab_RemoveGraphButton);
assertTrue(!button.isEnabled());
table.select(0);
@@ -614,9 +620,9 @@ public class TestCreateSystemtapScript {
+ "\nprobe timer.ms(1000){exit()}");
editor.save();
- String val0 = "i";
- String val1 = "j";
- String val2 = "k";
+ final String val0 = "i";
+ final String val1 = "j";
+ final String val2 = "k";
openRunConfigurations(scriptName);
SWTBotShell shell = bot.shell("Run Configurations");
@@ -648,6 +654,8 @@ public class TestCreateSystemtapScript {
// Add a graph.
bot.button(Messages.SystemTapScriptGraphOptionsTab_AddGraphButton).click();
setupGraphWithTests("Values");
+ String setTitle1 = MessageFormat.format(Messages.SystemTapScriptGraphOptionsTab_graphSetTitleBase, 1);
+ String graphTitle1 = "Values - Scatter Graph";
// Make a second regex, and a graph for it.
shell.setFocus();
@@ -671,6 +679,8 @@ public class TestCreateSystemtapScript {
bot.button(Messages.SystemTapScriptGraphOptionsTab_AddGraphButton).click();
setupGraphWithTests("Others");
+ String setTitle2 = MessageFormat.format(Messages.SystemTapScriptGraphOptionsTab_graphSetTitleBase, 2);
+ String graphTitle2 = "Others - Scatter Graph";
// Apply the changes, then close the menu & reopen it to make sure settings were saved.
shell.setFocus();
@@ -687,7 +697,7 @@ public class TestCreateSystemtapScript {
combo = bot.comboBoxWithLabel(Messages.SystemTapScriptGraphOptionsTab_regexLabel);
text = bot.textWithLabel(Messages.SystemTapScriptGraphOptionsTab_sampleOutputLabel);
- SWTBotTable table = bot.table(0);
+ SWTBotTable table = bot.table();
assertEquals(3, combo.itemCount());
assertEquals("Value:(\\d+) (\\d+)", combo.getText());
assertEquals("Value:1 2", text.getText());
@@ -711,31 +721,95 @@ public class TestCreateSystemtapScript {
console.setFocus();
bot.waitUntil(new StapHasExited()); // The script should end on its own
- // Give time for the table to be fully constructed
+ // Give time for the table to be fully constructed.
SWTBotEditor graphEditor = bot.activeEditor();
- bot.waitUntil(new TableHasUpdated(scriptName, 1, 10));
- bot.waitUntil(new TableHasUpdated(scriptName, 2, 4));
+ bot.waitUntil(new TableHasUpdated(scriptName, 1, 10, false));
+ bot.waitUntil(new TableHasUpdated(scriptName, 2, 4, false));
+ // Test table & graph contents.
graphEditor.setFocus();
- graphEditor.bot().cTabItem(MessageFormat.format(Messages.SystemTapScriptGraphOptionsTab_graphSetTitleBase, 1)).activate();
+ graphEditor.bot().cTabItem(setTitle1).activate();
graphEditor.bot().cTabItem("Data View").activate();
- SWTBotTable dataTable = bot.table(0);
+ SWTBotTable dataTable = bot.table();
List<String> colNames = dataTable.columns();
assertEquals(3, colNames.size());
assertEquals(val0, colNames.get(1));
assertEquals(val1, colNames.get(2));
- assertEquals("3", dataTable.cell(3, 1));
- assertEquals("6", dataTable.cell(3, 2));
+ assertEquals("2", dataTable.cell(2, 1));
+ assertEquals("4", dataTable.cell(2, 2));
- graphEditor.bot().cTabItem(MessageFormat.format(Messages.SystemTapScriptGraphOptionsTab_graphSetTitleBase, 2)).activate();
+ graphEditor.bot().cTabItem(graphTitle1).activate();
+ Matcher<AbstractChartBuilder> matcher = widgetOfType(AbstractChartBuilder.class);
+ AbstractChartBuilder cb = bot.widget(matcher);
+ ISeries[] series = cb.getChart().getSeriesSet().getSeries();
+ assertEquals(2, series.length);
+ assertEquals(10, series[0].getXSeries().length);
+ assertEquals(10, series[1].getXSeries().length);
+ assertEquals(2, (int) series[0].getYSeries()[2]);
+ assertEquals(4, (int) series[1].getYSeries()[2]);
+
+ graphEditor.bot().cTabItem(setTitle2).activate();
graphEditor.bot().cTabItem("Data View").activate();
- dataTable = bot.table(0);
+ dataTable = bot.table();
colNames = dataTable.columns();
assertEquals(3, colNames.size());
assertEquals(val0, colNames.get(1));
assertEquals(val2, colNames.get(2));
- assertEquals("10", dataTable.cell(3, 1));
- assertEquals("3", dataTable.cell(3, 2));
+ assertEquals("7", dataTable.cell(2, 1));
+ assertEquals("2", dataTable.cell(2, 2));
+
+ graphEditor.bot().cTabItem(graphTitle2).activate();
+ cb = bot.widget(matcher);
+ series = cb.getChart().getSeriesSet().getSeries();
+ assertEquals(2, series.length);
+ assertEquals(4, series[0].getXSeries().length);
+ assertEquals(4, series[1].getXSeries().length);
+ assertEquals(7, (int) series[0].getYSeries()[2]);
+ assertEquals(2, (int) series[1].getYSeries()[2]);
+
+ // Test filters on the data table & graphs.
+ graphEditor.bot().cTabItem(setTitle1).activate();
+ graphEditor.bot().cTabItem("Data View").activate();
+ dataTable = bot.table();
+ click(ContextMenuHelper.contextMenu(dataTable, "Add filter..."));
+ shell = bot.shell("Create Filter");
+ shell.setFocus();
+
+ // Match Filter - Remove a matching
+ bot.button("Match Filter").click();
+ bot.button("Next >").click();
+ bot.text().setText("2");
+ deselectDefaultSelection(0);
+ bot.radio(1).click();
+ bot.button("Finish").click();
+ bot.waitUntil(new ShellIsClosed(shell));
+ bot.waitUntil(new TableHasUpdated(scriptName, 1, 9, true));
+ assertEquals("3", dataTable.cell(2, 1));
+ assertEquals("6", dataTable.cell(2, 2));
+
+ // Filters should be applied to graphs as well as data tables.
+ graphEditor.bot().cTabItem(graphTitle1).activate();
+ cb = bot.widget(matcher);
+ series = cb.getChart().getSeriesSet().getSeries();
+ bot.waitUntil(new ChartHasUpdated(cb.getChart(), 9));
+ assertEquals(3, (int) series[0].getYSeries()[2]);
+ assertEquals(6, (int) series[1].getYSeries()[2]);
+
+ // Each graph set should have its own filters.
+ graphEditor.bot().cTabItem(setTitle2).activate();
+ graphEditor.bot().cTabItem("Data View").activate();
+ dataTable = bot.table();
+ assertEquals(4, dataTable.rowCount());
+ assertEquals("2", dataTable.cell(0, 1));
+
+ // Test removing a filter.
+ graphEditor.bot().cTabItem(setTitle1).activate();
+ graphEditor.bot().cTabItem("Data View").activate();
+ dataTable = bot.table();
+ click(ContextMenuHelper.contextMenu(dataTable, "Remove filter...", "Match Filter: \"" + val0 + "\" removing \"2\""));
+ bot.waitUntil(new TableHasUpdated(scriptName, 1, 10, true));
+ assertEquals("2", dataTable.cell(2, 1));
+ assertEquals("4", dataTable.cell(2, 2));
clearAllTerminated();
}
@@ -836,9 +910,9 @@ public class TestCreateSystemtapScript {
console.setFocus();
bot.waitUntil(new StapHasExited()); // The script should end on its own
- // Give time for the table to be fully constructed
+ // Give time for the table to be fully constructed.
SWTBotEditor graphEditor = bot.activeEditor();
- bot.waitUntil(new TableHasUpdated(scriptName, 1, numItems));
+ bot.waitUntil(new TableHasUpdated(scriptName, 1, numItems, false));
// Confirm that the bar & pie charts display the String categories, but the line chart ignores them.
String titleBar = title + " - Bar Graph";
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/ImportDataSetHandler.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/ImportDataSetHandler.java
index db423d9313..13b549f6c8 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/ImportDataSetHandler.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/ImportDataSetHandler.java
@@ -20,8 +20,10 @@ import java.util.Arrays;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.IDEPerspective;
-import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.row.FilteredRowDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.row.RowDataSet;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.table.FilteredTableDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.table.TableDataSet;
import org.eclipse.linuxtools.systemtap.graphing.ui.views.GraphSelectorEditor;
import org.eclipse.linuxtools.systemtap.graphing.ui.views.GraphSelectorEditorInput;
@@ -50,7 +52,7 @@ public class ImportDataSetHandler extends AbstractHandler {
return null;
}
- IDataSet dataset = null;
+ IFilteredDataSet dataset = null;
File file = new File(path);
try (InputStreamReader fr = new InputStreamReader(new FileInputStream(file), Charset.defaultCharset());
BufferedReader br = new BufferedReader(fr)) {
@@ -60,9 +62,9 @@ public class ImportDataSetHandler extends AbstractHandler {
if (id == null && titles == null) {
throw new IOException();
} else if (id.equals(RowDataSet.ID)) {
- dataset = new RowDataSet(titles);
+ dataset = new FilteredRowDataSet(titles);
} else if (id.equals(TableDataSet.ID)) {
- dataset = new TableDataSet(titles);
+ dataset = new FilteredTableDataSet(titles);
} else {
throw new IOException();
}
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/RunScriptChartHandler.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/RunScriptChartHandler.java
index 68590be876..c8b04659ac 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/RunScriptChartHandler.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/actions/RunScriptChartHandler.java
@@ -15,8 +15,8 @@ import java.util.LinkedList;
import java.util.List;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.IDEPerspective;
-import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSetParser;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.structures.ChartStreamDaemon;
import org.eclipse.linuxtools.systemtap.graphing.core.structures.GraphData;
import org.eclipse.linuxtools.systemtap.graphing.ui.views.GraphSelectorEditor;
@@ -35,11 +35,11 @@ import org.eclipse.ui.WorkbenchException;
public class RunScriptChartHandler extends RunScriptHandler {
private List<IDataSetParser> parsers;
- private List<IDataSet> dataSets;
+ private List<IFilteredDataSet> dataSets;
private List<String> names;
private List<LinkedList<GraphData>> graphs;
- public RunScriptChartHandler(List<IDataSetParser> parsers, List<IDataSet> dataSet, List<String> names, List<LinkedList<GraphData>> graphs) {
+ public RunScriptChartHandler(List<IDataSetParser> parsers, List<IFilteredDataSet> dataSet, List<String> names, List<LinkedList<GraphData>> graphs) {
super();
this.parsers = parsers;
this.dataSets = dataSet;
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptGraphOptionsTab.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptGraphOptionsTab.java
index 8271acee3d..b735965bf4 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptGraphOptionsTab.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptGraphOptionsTab.java
@@ -39,6 +39,7 @@ import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.IDEPlugin;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSetParser;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.row.LineParser;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.row.RowDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.structures.GraphData;
@@ -510,10 +511,10 @@ public class SystemTapScriptGraphOptionsTab extends
* @param configuration
* @return
*/
- public static ArrayList<IDataSet> createDataset(ILaunchConfiguration configuration) {
+ public static ArrayList<IFilteredDataSet> createDataset(ILaunchConfiguration configuration) {
try {
int numberOfRegexs = configuration.getAttribute(NUMBER_OF_REGEXS, 0);
- ArrayList<IDataSet> datasets = new ArrayList<>(numberOfRegexs);
+ ArrayList<IFilteredDataSet> datasets = new ArrayList<>(numberOfRegexs);
for (int r = 0; r < numberOfRegexs; r++) {
int numberOfColumns = configuration.getAttribute(NUMBER_OF_COLUMNS + r, 0);
@@ -522,7 +523,7 @@ public class SystemTapScriptGraphOptionsTab extends
for (int c = 0; c < numberOfColumns; c++) {
labels.add(configuration.getAttribute(get2DConfigData(REGEX_BOX, r, c), "")); //$NON-NLS-1$
}
- datasets.add(DataSetFactory.createDataSet(RowDataSet.ID, labels.toArray(new String[] {})));
+ datasets.add(DataSetFactory.createFilteredDataSet(RowDataSet.ID, labels.toArray(new String[] {})));
}
return datasets;
diff --git a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptLaunchConfigurationDelegate.java b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptLaunchConfigurationDelegate.java
index 5532ef0bf8..369e1090f4 100644
--- a/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptLaunchConfigurationDelegate.java
+++ b/systemtap/org.eclipse.linuxtools.systemtap.ui.ide/src/org/eclipse/linuxtools/internal/systemtap/ui/ide/launcher/SystemTapScriptLaunchConfigurationDelegate.java
@@ -34,8 +34,8 @@ import org.eclipse.debug.core.model.LaunchConfigurationDelegate;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.actions.RunScriptChartHandler;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.actions.RunScriptHandler;
import org.eclipse.linuxtools.internal.systemtap.ui.ide.preferences.IDEPreferenceConstants;
-import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IDataSetParser;
+import org.eclipse.linuxtools.systemtap.graphing.core.datasets.IFilteredDataSet;
import org.eclipse.linuxtools.systemtap.graphing.core.structures.GraphData;
import org.eclipse.linuxtools.systemtap.structures.process.SystemTapRuntimeProcessFactory;
import org.eclipse.linuxtools.systemtap.ui.consolelog.structures.RemoteScriptOptions;
@@ -113,7 +113,7 @@ public class SystemTapScriptLaunchConfigurationDelegate extends
int numGraphs = configuration.getAttribute(SystemTapScriptGraphOptionsTab.NUMBER_OF_REGEXS, 0);
if (runWithChart && numGraphs > 0){
List<IDataSetParser> parsers = SystemTapScriptGraphOptionsTab.createDatasetParsers(configuration);
- List<IDataSet> dataSets = SystemTapScriptGraphOptionsTab.createDataset(configuration);
+ List<IFilteredDataSet> dataSets = SystemTapScriptGraphOptionsTab.createDataset(configuration);
List<String> names = SystemTapScriptGraphOptionsTab.createDatasetNames(configuration);
List<LinkedList<GraphData>> graphs = SystemTapScriptGraphOptionsTab.createGraphsFromConfiguration(configuration);
action = new RunScriptChartHandler(parsers, dataSets, names, graphs);

Back to the top