diff options
| author | Keith Wall <kwall@apache.org> | 2012-07-02 14:26:36 +0000 |
|---|---|---|
| committer | Keith Wall <kwall@apache.org> | 2012-07-02 14:26:36 +0000 |
| commit | 220f542e8e00932cfcd3d4c4f7832c58b7fef4cd (patch) | |
| tree | 257838ce9fa6491e2333ef15fd0203c24bb23297 /qpid/java/perftests/visualisation-jfc | |
| parent | 7d96daca11cde3df099c652b671e3bf8ab2627b6 (diff) | |
| download | qpid-python-220f542e8e00932cfcd3d4c4f7832c58b7fef4cd.tar.gz | |
QPID-4089: Add latency tests into java performance test framework
Applied patch from Oleksandr Rudyy <orudyy@gmail.com>.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1356250 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/perftests/visualisation-jfc')
9 files changed, 135 insertions, 21 deletions
diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java index 8bddfd1379..ed09f4a77e 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartType.java @@ -21,5 +21,5 @@ package org.apache.qpid.disttest.charting; public enum ChartType { - LINE, LINE3D, BAR, BAR3D, XYLINE + LINE, LINE3D, BAR, BAR3D, XYLINE, STATISTICAL_BAR } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java index ad33da8311..5617b9c330 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/CategoryDataSetBasedChartBuilder.java @@ -19,6 +19,7 @@ */ package org.apache.qpid.disttest.charting.chartbuilder; + import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; @@ -47,11 +48,10 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() { @Override - public void addDataPointToSeries(SeriesDefinition seriesDefinition, - Object xValue, Object yValue) + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) { - String x = String.valueOf(xValue); - double y = Double.parseDouble(yValue.toString()); + String x = String.valueOf(row[0]); + double y = Double.parseDouble(row[1].toString()); dataset.addValue( y, seriesDefinition.getSeriesLegend(), x); } @@ -66,6 +66,7 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder { // unused } + }); _seriesBuilder.build(chartingDefinition.getSeries()); diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java index f9d5a5a0df..f4e11a2c4d 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/ChartBuilderFactory.java @@ -39,6 +39,8 @@ public class ChartBuilderFactory return new BarChart3DBuilder(seriesBuilder); case XYLINE: return new XYLineChartBuilder(seriesBuilder); + case STATISTICAL_BAR: + return new StatisticalBarCharBuilder(seriesBuilder); default: throw new IllegalArgumentException("Unknown chart type " + chartType); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java new file mode 100644 index 0000000000..843b57939f --- /dev/null +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/StatisticalBarCharBuilder.java @@ -0,0 +1,108 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ +package org.apache.qpid.disttest.charting.chartbuilder; + +import java.awt.Font; + +import org.apache.qpid.disttest.charting.definition.ChartingDefinition; +import org.apache.qpid.disttest.charting.definition.SeriesDefinition; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; +import org.jfree.chart.JFreeChart; +import org.jfree.chart.axis.CategoryAxis; +import org.jfree.chart.axis.NumberAxis; +import org.jfree.chart.axis.ValueAxis; +import org.jfree.chart.plot.CategoryPlot; +import org.jfree.chart.plot.PlotOrientation; +import org.jfree.chart.renderer.category.CategoryItemRenderer; +import org.jfree.chart.renderer.category.StatisticalBarRenderer; +import org.jfree.data.general.Dataset; +import org.jfree.data.statistics.DefaultStatisticalCategoryDataset; +import org.jfree.data.statistics.StatisticalCategoryDataset; + +public class StatisticalBarCharBuilder extends BaseChartBuilder +{ + private final SeriesBuilder _seriesBuilder; + + public StatisticalBarCharBuilder(SeriesBuilder seriesBuilder) + { + _seriesBuilder = seriesBuilder; + } + + @Override + public JFreeChart buildChart(ChartingDefinition chartingDefinition) + { + String title = chartingDefinition.getChartTitle(); + String xAxisTitle = chartingDefinition.getXAxisTitle(); + String yAxisTitle = chartingDefinition.getYAxisTitle(); + + final DefaultStatisticalCategoryDataset dataset = new DefaultStatisticalCategoryDataset(); + + _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() + { + @Override + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) + { + String x = String.valueOf(row[0]); + double mean = Double.parseDouble(row[1].toString()); + double stdDev = Double.parseDouble(row[2].toString()); + dataset.add(mean, stdDev, seriesDefinition.getSeriesLegend(), x); + } + + @Override + public void beginSeries(SeriesDefinition seriesDefinition) + { + // unused + } + + @Override + public void endSeries(SeriesDefinition seriesDefinition) + { + // unused + } + + }); + + _seriesBuilder.build(chartingDefinition.getSeries()); + + JFreeChart chart = createChartImpl(title, xAxisTitle, yAxisTitle, dataset, PLOT_ORIENTATION, SHOW_LEGEND, + SHOW_TOOL_TIPS, SHOW_URLS); + + addCommonChartAttributes(chart, chartingDefinition); + + return chart; + } + + @Override + public JFreeChart createChartImpl(String title, String xAxisTitle, String yAxisTitle, final Dataset dataset, + PlotOrientation plotOrientation, boolean showLegend, boolean showToolTips, boolean showUrls) + { + CategoryAxis xAxis = new CategoryAxis(xAxisTitle); + ValueAxis yAxis = new NumberAxis(yAxisTitle); + CategoryItemRenderer renderer = new StatisticalBarRenderer(); + + CategoryPlot plot = new CategoryPlot((StatisticalCategoryDataset) dataset, xAxis, yAxis, renderer); + + JFreeChart chart = new JFreeChart(title, new Font("Arial", Font.PLAIN, 10), plot, true); + return chart; + } + +} diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java index 6814272b8e..8d5332c126 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/chartbuilder/XYDataSetBasedChartBuilder.java @@ -60,10 +60,10 @@ public abstract class XYDataSetBasedChartBuilder extends BaseChartBuilder @Override public void addDataPointToSeries(SeriesDefinition seriesDefinition, - Object xValue, Object yValue) + Object[] row) { - double x = Double.parseDouble(xValue.toString()); - double y = Double.parseDouble(yValue.toString()); + double x = Double.parseDouble(row[0].toString()); + double y = Double.parseDouble(row[1].toString()); _xyPairs.add(new Double[] {x, y}); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java index 8b4c2ab382..a9adce0afc 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilder.java @@ -71,14 +71,17 @@ public class JdbcCsvSeriesBuilder implements SeriesBuilder stmt = conn.createStatement(); ResultSet results = stmt.executeQuery(seriesStatement); - + int columnCount = results.getMetaData().getColumnCount(); _callback.beginSeries(seriesDefinition); while (results.next()) { - Object xValue = results.getObject(1); - Object yValue = results.getObject(2); + Object[] row = new Object[columnCount]; + for (int i = 0; i < row.length; i++) + { + row[i] = results.getObject(i+1); + } - _callback.addDataPointToSeries(seriesDefinition, xValue, yValue); + _callback.addDataPointToSeries(seriesDefinition, row); } _callback.endSeries(seriesDefinition); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java index 22c99deca0..7e23953fdb 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilderCallback.java @@ -24,7 +24,7 @@ import org.apache.qpid.disttest.charting.definition.SeriesDefinition; public interface SeriesBuilderCallback { public void beginSeries(SeriesDefinition seriesDefinition); - public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object xValue, Object yValue); + public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row); public void endSeries(SeriesDefinition seriesDefinition); } diff --git a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java index 51bde1327b..d2f988f7c8 100644 --- a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java +++ b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/chartbuilder/ChartProductionTest.java @@ -146,11 +146,11 @@ public class ChartProductionTest extends TestCase { SeriesDefinition seriesDefinition = iterator.next(); _dataPointCallback.beginSeries(seriesDefinition); - _dataPointCallback.addDataPointToSeries(seriesDefinition, Double.valueOf(1), Double.valueOf(1)); - _dataPointCallback.addDataPointToSeries(seriesDefinition, Double.valueOf(2), Double.valueOf(2)); - _dataPointCallback.addDataPointToSeries(seriesDefinition, Double.valueOf(4), Double.valueOf(4)); - _dataPointCallback.addDataPointToSeries(seriesDefinition, Double.valueOf(5), Double.valueOf(5)); - _dataPointCallback.addDataPointToSeries(seriesDefinition, Double.valueOf(6), Double.valueOf(3)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{1d, 1d}); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{2d, 2d}); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{4d, 4d}); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{5d, 5d}); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{6d, 3d}); _dataPointCallback.endSeries(seriesDefinition); } } diff --git a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilderTest.java b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilderTest.java index ae241b453d..5148a25bec 100644 --- a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilderTest.java +++ b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcCsvSeriesBuilderTest.java @@ -59,9 +59,9 @@ public class JdbcCsvSeriesBuilderTest extends TestCase _seriesBuilder.build(Collections.singletonList(seriesDefinition)); verify(_seriesWalkerCallback).beginSeries(seriesDefinition); - verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, (Object)"elephant", (Object)"2"); - verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, (Object)"lion", (Object)"3"); - verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, (Object)"tiger", (Object)"4"); + verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, new Object[]{"elephant", "2"}); + verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, new Object[]{"lion", "3"}); + verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, new Object[]{"tiger", "4"}); verify(_seriesWalkerCallback).endSeries(seriesDefinition); } |
