Mercurial > hg > thermostat-ng > agent
changeset 2482:e8cf2946b207
[Byteman] Refactor GraphDataset to take proper filter param.
Reviewed-by: aazores
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-October/021305.html
author | Severin Gehwolf <sgehwolf@redhat.com> |
---|---|
date | Tue, 18 Oct 2016 11:45:10 +0200 |
parents | bcf729e138c8 |
children | 366dfa1b9f2d |
files | vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java |
diffstat | 3 files changed, 77 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java Mon Oct 17 20:50:14 2016 +0200 +++ b/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDataset.java Tue Oct 18 11:45:10 2016 +0200 @@ -104,8 +104,7 @@ private static final CategoryTimePlotData emptyCategoryTimePlotData = new CategoryTimePlotData(emptyXYDataset, new String[] {}); private static final Number frequencyUnit = Long.valueOf(1); - public GraphDataset(List<BytemanMetric> metrics, String xkey, String ykey, String filter, String value) - { + public GraphDataset(List<BytemanMetric> metrics, String xkey, String ykey, Filter dataFilter) { this.xkey = xkey; this.ykey = ykey; xtype = CoordinateType.INTEGRAL; @@ -126,6 +125,8 @@ ytype = CoordinateType.CATEGORY; } // if we have a filter value then convert it to a number if it is numeric + String value = dataFilter != null ? dataFilter.getFilterValue() : null; + String filter = dataFilter != null ? dataFilter.getFilterKey() : null; Object filterValue = value; if (filter != null && value != null) { // may need to convert String to Numeric @@ -178,8 +179,7 @@ return data.size(); } - public XYDataset getXYDataset() - { + public XYDataset getXYDataset() { if (xtype == CoordinateType.CATEGORY || ytype == CoordinateType.CATEGORY) { return emptyXYDataset; @@ -210,8 +210,7 @@ return xycollection; } - public CategoryDataset getCategoryDataset() - { + public CategoryDataset getCategoryDataset() { if (xtype == CoordinateType.TIME) { return emptyCategoryDataset; } @@ -252,8 +251,7 @@ } // alternative option for presenting category xkey with numeric ykey - public PieDataset getPieDataset() - { + public PieDataset getPieDataset() { if (xtype != CoordinateType.CATEGORY || ytype == CoordinateType.CATEGORY) { return emptyPieDataset; } @@ -275,8 +273,7 @@ return pieDataset; } - public CategoryTimePlotData getCategoryTimePlot() - { + public CategoryTimePlotData getCategoryTimePlot() { if (xtype != CoordinateType.TIME || ytype != CoordinateType.CATEGORY) { return emptyCategoryTimePlotData; } @@ -416,4 +413,28 @@ return symbols; } } + + /** + * A filter which has to match for each metric in order for it + * to get included in the data set. + * + */ + static class Filter { + + private final String filterKey; + private final String filterValue; + + Filter(String filterKey, String filterValue) { + this.filterKey = filterKey; + this.filterValue = filterValue; + } + + String getFilterKey() { + return filterKey; + } + + String getFilterValue() { + return filterValue; + } + } } \ No newline at end of file
--- a/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java Mon Oct 17 20:50:14 2016 +0200 +++ b/vm-byteman/client-swing/src/main/java/com/redhat/thermostat/vm/byteman/client/swing/internal/SwingVmBytemanView.java Tue Oct 18 11:45:10 2016 +0200 @@ -115,6 +115,7 @@ import com.redhat.thermostat.shared.locale.Translate; import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CategoryTimePlotData; import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.CoordinateType; +import com.redhat.thermostat.vm.byteman.client.swing.internal.GraphDataset.Filter; import com.redhat.thermostat.vm.byteman.client.swing.internal.PredefinedKeysMapper.MapDirection; import com.redhat.thermostat.vm.byteman.common.BytemanMetric; @@ -863,15 +864,20 @@ final List<BytemanMetric> ms = metrics; final String xk = xkey; final String yk = ykey; - final String f = filter; - final String v = value; + final Filter dataFilter; + if (filter != null && value != null) { + dataFilter = new Filter(filter, value); + } else { + dataFilter = null; + } final String t = graphtype; final String[] keyItems = MetricsKeysAggregator.aggregate(metrics).toArray(new String[] {}); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { + String f = dataFilter == null ? null : dataFilter.getFilterKey(); updateComboKeyItems(keyItems, xk, yk, f); - GraphDataset dataset = makeGraphDataset(ms, xk, yk, f, v); + GraphDataset dataset = makeGraphDataset(ms, xk, yk, dataFilter); if (dataset != null) { switchGraph(dataset, t); } @@ -912,8 +918,8 @@ } } - private GraphDataset makeGraphDataset(List<BytemanMetric> metrics, String xkey, String ykey, String filter, String value) { - GraphDataset dataset = new GraphDataset(metrics, xkey, ykey, filter, value); + private GraphDataset makeGraphDataset(List<BytemanMetric> metrics, String xkey, String ykey, Filter filter) { + GraphDataset dataset = new GraphDataset(metrics, xkey, ykey, filter); if (dataset.size() == 0) { return null; }
--- a/vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java Mon Oct 17 20:50:14 2016 +0200 +++ b/vm-byteman/client-swing/src/test/java/com/redhat/thermostat/vm/byteman/client/swing/internal/GraphDatasetTest.java Tue Oct 18 11:45:10 2016 +0200 @@ -76,12 +76,12 @@ public void testEmptyXYDataSet() { final List<BytemanMetric> empty = Collections.emptyList(); // x => marker - GraphDataset dataset = new GraphDataset(empty, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + GraphDataset dataset = new GraphDataset(empty, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null); XYDataset actualDataset = dataset.getXYDataset(); assertEquals(0, actualDataset.getSeriesCount()); // y => marker - dataset = new GraphDataset(empty, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + dataset = new GraphDataset(empty, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); actualDataset = dataset.getXYDataset(); assertEquals(0, actualDataset.getSeriesCount()); } @@ -98,7 +98,7 @@ } }); // plots (x, y) where (x_i, y_i) == (i, i) - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); XYDataset xyDataSet = dataSet.getXYDataset(); assertEquals(1, xyDataSet.getSeriesCount()); assertEquals(DefaultMetricConfig.DEFAULT_NUM, xyDataSet.getItemCount(0)); @@ -132,7 +132,8 @@ } } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, filterKey, filterValue); + GraphDataset.Filter filter = new GraphDataset.Filter(filterKey, filterValue); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, filter); XYDataset xyDataSet = dataSet.getXYDataset(); assertEquals(1, xyDataSet.getSeriesCount()); assertEquals(DefaultMetricConfig.DEFAULT_NUM/2, xyDataSet.getItemCount(0)); @@ -175,7 +176,7 @@ return timeStamp; // same timestamp for all metrics } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); XYDataset xyDataSet = dataSet.getXYDataset(); assertEquals(1, xyDataSet.getSeriesCount()); assertEquals(1, xyDataSet.getItemCount(0)); @@ -210,7 +211,7 @@ return timestamps[idx]; // same timestamp every repeatAmount times } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); XYDataset xyDataSet = dataSet.getXYDataset(); assertEquals(1, xyDataSet.getSeriesCount()); assertEquals(repeatAmount, xyDataSet.getItemCount(0)); @@ -254,7 +255,7 @@ return timestamps[idx]; // same timestamp every repeatAmount times } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); XYDataset xyDataSet = dataSet.getXYDataset(); assertEquals(1, xyDataSet.getSeriesCount()); assertEquals(repeatAmount, xyDataSet.getItemCount(0)); @@ -270,7 +271,7 @@ @Test public void testCategoryDatasetEmpty() { final List<BytemanMetric> empty = Collections.emptyList(); - GraphDataset dataSet = new GraphDataset(empty /* no matter */, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(empty /* no matter */, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); CategoryDataset actualSet = dataSet.getCategoryDataset(); assertEquals(0, actualSet.getColumnCount()); assertEquals(0, actualSet.getRowCount()); @@ -311,7 +312,7 @@ return 12; } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, COUNT_FIELD, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, COUNT_FIELD, null); CategoryDataset actualSet = dataSet.getCategoryDataset(); assertEquals("two different markers", 2, actualSet.getRowCount()); assertEquals("one value per marker", 1, actualSet.getColumnCount()); @@ -353,7 +354,7 @@ return 100 - 1; } }); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.MARKER_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.MARKER_KEY, null); CategoryDataset actualSet = dataSet.getCategoryDataset(); assertEquals("two different markers", 2, actualSet.getRowCount()); assertEquals(2, actualSet.getColumnCount()); @@ -373,12 +374,12 @@ public void testEmptyCategoryTimePlot() { final List<BytemanMetric> empty = Collections.emptyList(); // x => marker - GraphDataset dataset = new GraphDataset(empty, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + GraphDataset dataset = new GraphDataset(empty, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null); CategoryTimePlotData actualDataset = dataset.getCategoryTimePlot(); assertEquals(0, actualDataset.getXYDataSet().getSeriesCount()); // y => timestamp - dataset = new GraphDataset(empty, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + dataset = new GraphDataset(empty, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null); actualDataset = dataset.getCategoryTimePlot(); assertEquals(0, actualDataset.getXYDataSet().getSeriesCount()); } @@ -412,7 +413,7 @@ } }); - GraphDataset dataset = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + GraphDataset dataset = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); CategoryTimePlotData actualData = dataset.getCategoryTimePlot(); XYDataset actualDataset = actualData.getXYDataSet(); assertEquals("Expected one series, exactly", 1, actualDataset.getSeriesCount()); @@ -444,11 +445,11 @@ @Test public void testXType() { List<BytemanMetric> mList = buildMetrics(new DefaultMetricConfig()); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null); assertEquals(CoordinateType.CATEGORY, dataSet.getXType()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); assertEquals(CoordinateType.TIME, dataSet.getXType()); - dataSet = new GraphDataset(mList, GraphDataset.FREQUENCY_KEY, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.FREQUENCY_KEY, GraphDataset.MARKER_KEY, null); assertEquals(CoordinateType.INTEGRAL, dataSet.getXType()); mList = buildMetrics(new DefaultMetricConfig() { @Override @@ -459,18 +460,18 @@ .build(); } }); - dataSet = new GraphDataset(mList, COUNT_FIELD, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, COUNT_FIELD, GraphDataset.MARKER_KEY, null); assertEquals(CoordinateType.REAL, dataSet.getXType()); } @Test public void testXLabel() { List<BytemanMetric> mList = buildMetrics(new DefaultMetricConfig()); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.MARKER_KEY, GraphDataset.TIMESTAMP_KEY, null); assertEquals(GraphDataset.MARKER_KEY, dataSet.getXLabel()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); assertEquals(GraphDataset.TIMESTAMP_KEY, dataSet.getXLabel()); - dataSet = new GraphDataset(mList, GraphDataset.FREQUENCY_KEY, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.FREQUENCY_KEY, GraphDataset.MARKER_KEY, null); assertEquals(GraphDataset.FREQUENCY_KEY, dataSet.getXLabel()); mList = buildMetrics(new DefaultMetricConfig() { @@ -482,18 +483,18 @@ .build(); } }); - dataSet = new GraphDataset(mList, COUNT_FIELD, GraphDataset.MARKER_KEY, null, null); + dataSet = new GraphDataset(mList, COUNT_FIELD, GraphDataset.MARKER_KEY, null); assertEquals(COUNT_FIELD, dataSet.getXLabel()); } @Test public void testYType() { List<BytemanMetric> mList = buildMetrics(new DefaultMetricConfig()); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); assertEquals(CoordinateType.CATEGORY, dataSet.getYType()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null); assertEquals(CoordinateType.TIME, dataSet.getYType()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.FREQUENCY_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.FREQUENCY_KEY, null); assertEquals(CoordinateType.INTEGRAL, dataSet.getYType()); mList = buildMetrics(new DefaultMetricConfig() { @Override @@ -504,18 +505,18 @@ .build(); } }); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); assertEquals(CoordinateType.REAL, dataSet.getYType()); } @Test public void testYLabel() { List<BytemanMetric> mList = buildMetrics(new DefaultMetricConfig()); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); assertEquals(GraphDataset.MARKER_KEY, dataSet.getYLabel()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.TIMESTAMP_KEY, null); assertEquals(GraphDataset.TIMESTAMP_KEY, dataSet.getYLabel()); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.FREQUENCY_KEY, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.FREQUENCY_KEY, null); assertEquals(GraphDataset.FREQUENCY_KEY, dataSet.getYLabel()); mList = buildMetrics(new DefaultMetricConfig() { @Override @@ -526,14 +527,14 @@ .build(); } }); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); assertEquals(COUNT_FIELD, dataSet.getYLabel()); } @Test public void testSize() { List<BytemanMetric> mList = buildMetrics(new DefaultMetricConfig()); - GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null, null); + GraphDataset dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, GraphDataset.MARKER_KEY, null); assertEquals(DefaultMetricConfig.DEFAULT_NUM, dataSet.size()); final int numMetrics = 10; mList = buildMetrics(new DefaultMetricConfig() { @@ -550,7 +551,7 @@ .build(); } }); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); assertEquals(numMetrics, dataSet.size()); // some metrics are filtered (implicitly) so should not add to the data @@ -568,7 +569,7 @@ } } }); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null, null); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, null); assertEquals(DefaultMetricConfig.DEFAULT_NUM/2, dataSet.size()); // explicit filtering @@ -591,7 +592,8 @@ } } }); - dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, fooKey, String.valueOf(fooValue)); + GraphDataset.Filter filter = new GraphDataset.Filter(fooKey, String.valueOf(fooValue)); + dataSet = new GraphDataset(mList, GraphDataset.TIMESTAMP_KEY, COUNT_FIELD, filter); assertEquals("0, 30, 60, 90 => 4", 4, dataSet.size()); }