diff options
| author | Phil Harvey <philharveyonline@apache.org> | 2013-01-30 09:15:18 +0000 |
|---|---|---|
| committer | Phil Harvey <philharveyonline@apache.org> | 2013-01-30 09:15:18 +0000 |
| commit | 56ae5b5536cd437278fe50339f02993fcadf6980 (patch) | |
| tree | 758c5d3dbece4f0a044eb12048fdbda10f5f04a6 /qpid/java/perftests/visualisation-jfc/src | |
| parent | 9541aea473799f98d5aa34ef18548d586228ac00 (diff) | |
| download | qpid-python-56ae5b5536cd437278fe50339f02993fcadf6980.tar.gz | |
QPID-4533: Modified perftests to support writing results to a database, and enhanced visualisation-jfc to allow it to read these results.
Previously only CSV output/input was supported by these modules respectively.
Also modified files in perftests/etc/ to allow convenient running of perftests.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@1440312 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/java/perftests/visualisation-jfc/src')
12 files changed, 307 insertions, 71 deletions
diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java index a329f33b00..e1403be397 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java @@ -30,7 +30,7 @@ import org.apache.qpid.disttest.charting.chartbuilder.ChartBuilder; import org.apache.qpid.disttest.charting.chartbuilder.ChartBuilderFactory; import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.ChartingDefinitionCreator; -import org.apache.qpid.disttest.charting.seriesbuilder.JdbcCsvSeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.JdbcSeriesBuilder; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; import org.apache.qpid.disttest.charting.writer.ChartWriter; import org.jfree.chart.JFreeChart; @@ -44,28 +44,46 @@ import org.slf4j.LoggerFactory; * The following arguments are understood: * </p> * <ol> - * <li>chart-defs=<i>directory contain chartdef file(s)</i></li> - * <li>output-dir=<i>directory in which to produce the PNGs</i></li> + * <li>{@link #OUTPUT_DIR_PROP}</li> + * <li>{@link #CHART_DEFINITIONS_PROP}</li> + * <li>{@link #SUMMARY_TITLE_PROP}</li> + * <li>{@link #JDBC_DRIVER_NAME_PROP}</li> + * <li>{@link #JDBC_URL_PROP}</li> * </ol> + * Default values are indicated by the similarly named constants in this class. */ public class ChartingUtil { private static final Logger LOGGER = LoggerFactory.getLogger(ChartingUtil.class); + /** directory in which to produce the PNGs */ public static final String OUTPUT_DIR_PROP = "outputdir"; public static final String OUTPUT_DIR_DEFAULT = "."; + /** the path to the directory containing the chart definition files */ public static final String CHART_DEFINITIONS_PROP = "chart-defs"; public static final String CHART_DEFINITIONS_DEFAULT = "."; public static final String SUMMARY_TITLE_PROP = "summary-title"; public static final String SUMMARY_TITLE_DEFAULT = "Performance Charts"; + /** the class name of the JDBC driver to use for reading the chart data */ + public static final String JDBC_DRIVER_NAME_PROP = "jdbcDriverClass"; + public static final String JDBC_DRIVER_NAME_DEFAULT = JdbcSeriesBuilder.DEFAULT_JDBC_DRIVER_NAME; + + /** the JDBC URL of the data to be charted */ + public static final String JDBC_URL_PROP = "jdbcUrl"; + public static final String JDBC_URL_DEFAULT = JdbcSeriesBuilder.DEFAULT_JDBC_URL; + + private Map<String,String> _cliOptions = new HashMap<String, String>(); + { _cliOptions.put(OUTPUT_DIR_PROP, OUTPUT_DIR_DEFAULT); _cliOptions.put(CHART_DEFINITIONS_PROP, CHART_DEFINITIONS_DEFAULT); _cliOptions.put(SUMMARY_TITLE_PROP, SUMMARY_TITLE_DEFAULT); + _cliOptions.put(JDBC_DRIVER_NAME_PROP, JDBC_DRIVER_NAME_DEFAULT); + _cliOptions.put(JDBC_URL_PROP, JDBC_URL_DEFAULT); } public static void main(String[] args) throws Exception @@ -86,21 +104,20 @@ public class ChartingUtil private void produceAllCharts() { - final String chartingDefsDir = _cliOptions.get(CHART_DEFINITIONS_PROP); - final File chartDirectory = new File(_cliOptions.get(OUTPUT_DIR_PROP)); - LOGGER.info("Chart chartdef directory/file: {} output directory : {}", chartingDefsDir, chartDirectory); - - List<ChartingDefinition> definitions = loadChartDefinitions(chartingDefsDir); - - LOGGER.info("There are {} chart(s) to produce", definitions.size()); final ChartWriter writer = new ChartWriter(); - writer.setOutputDirectory(chartDirectory); + writer.setOutputDirectory(new File(_cliOptions.get(OUTPUT_DIR_PROP))); + + SeriesBuilder seriesBuilder = new JdbcSeriesBuilder( + _cliOptions.get(JDBC_DRIVER_NAME_PROP), + _cliOptions.get(JDBC_URL_PROP)); - final SeriesBuilder seriesBuilder = new JdbcCsvSeriesBuilder(); - for (ChartingDefinition chartingDefinition : definitions) + for (ChartingDefinition chartingDefinition : loadChartDefinitions()) { - ChartBuilder chartBuilder = ChartBuilderFactory.createChartBuilder(chartingDefinition.getChartType(), seriesBuilder); + ChartBuilder chartBuilder = ChartBuilderFactory.createChartBuilder( + chartingDefinition.getChartType(), + seriesBuilder); + JFreeChart chart = chartBuilder.buildChart(chartingDefinition); writer.writeChartToFileSystem(chart, chartingDefinition); } @@ -109,6 +126,18 @@ public class ChartingUtil writer.writeHtmlSummaryToFileSystem(summaryChartTitle); } + private List<ChartingDefinition> loadChartDefinitions() + { + final String chartingDefsDir = _cliOptions.get(CHART_DEFINITIONS_PROP); + + LOGGER.info("Chart chartdef directory/file: {}", chartingDefsDir); + + List<ChartingDefinition> definitions = loadChartDefinitions(chartingDefsDir); + + LOGGER.info("There are {} chart(s) to produce", definitions.size()); + return definitions; + } + private List<ChartingDefinition> loadChartDefinitions(String chartingDefsDir) { ChartingDefinitionCreator chartingDefinitionLoader = new ChartingDefinitionCreator(); 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 ba027d9d93..ffa85d5c50 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 @@ -27,6 +27,7 @@ import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesRow; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryLabelPositions; import org.jfree.data.category.DefaultCategoryDataset; @@ -52,11 +53,11 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() { @Override - public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) + public void addDataPointToSeries(SeriesDefinition seriesDefinition, SeriesRow row) { - String x = String.valueOf(row[0]); - double y = Double.parseDouble(row[1].toString()); - dataset.addValue( y, seriesDefinition.getSeriesLegend(), x); + String x = row.dimensionAsString(0); + double y = row.dimensionAsDouble(1); + dataset.addValue(y, seriesDefinition.getSeriesLegend(), x); } @Override @@ -71,6 +72,12 @@ public abstract class CategoryDataSetBasedChartBuilder extends BaseChartBuilder // unused } + @Override + public int getNumberOfDimensions() + { + return 2; + } + }); _seriesBuilder.build(chartingDefinition.getSeries()); 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 index 1669ee1bb2..61acc8cfdf 100644 --- 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 @@ -28,6 +28,7 @@ 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.apache.qpid.disttest.charting.seriesbuilder.SeriesRow; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.CategoryLabelPositions; @@ -62,11 +63,11 @@ public class StatisticalBarCharBuilder extends BaseChartBuilder _seriesBuilder.setSeriesBuilderCallback(new SeriesBuilderCallback() { @Override - public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row) + public void addDataPointToSeries(SeriesDefinition seriesDefinition, SeriesRow row) { - String x = String.valueOf(row[0]); - double mean = Double.parseDouble(row[1].toString()); - double stdDev = Double.parseDouble(row[2].toString()); + String x = row.dimensionAsString(0); + double mean = row.dimensionAsDouble(1); + double stdDev = row.dimensionAsDouble(2); dataset.add(mean, stdDev, seriesDefinition.getSeriesLegend(), x); } @@ -82,6 +83,12 @@ public class StatisticalBarCharBuilder extends BaseChartBuilder // unused } + @Override + public int getNumberOfDimensions() + { + return 3; + } + }); _seriesBuilder.build(chartingDefinition.getSeries()); 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 168794be50..46b6ac6fab 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 @@ -29,6 +29,7 @@ import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesRow; import org.jfree.chart.JFreeChart; import org.jfree.data.xy.DefaultXYDataset; @@ -61,11 +62,10 @@ public abstract class XYDataSetBasedChartBuilder extends BaseChartBuilder } @Override - public void addDataPointToSeries(SeriesDefinition seriesDefinition, - Object[] row) + public void addDataPointToSeries(SeriesDefinition seriesDefinition, SeriesRow row) { - double x = Double.parseDouble(row[0].toString()); - double y = Double.parseDouble(row[1].toString()); + double x = row.dimensionAsDouble(0); + double y = row.dimensionAsDouble(1); _xyPairs.add(new Double[] {x, y}); } @@ -77,6 +77,12 @@ public abstract class XYDataSetBasedChartBuilder extends BaseChartBuilder dataset.addSeries(seriesDefinition.getSeriesLegend(), seriesData); } + @Override + public int getNumberOfDimensions() + { + return 2; + } + private double[][] listToSeriesDataArray() { double[][] seriesData = new double[2][_xyPairs.size()]; 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/JdbcSeriesBuilder.java index a9adce0afc..2cd8d9951f 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/JdbcSeriesBuilder.java @@ -19,7 +19,6 @@ */ package org.apache.qpid.disttest.charting.seriesbuilder; -import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; @@ -28,19 +27,35 @@ import java.sql.Statement; import java.util.Iterator; import java.util.List; +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; import org.apache.qpid.disttest.charting.ChartingException; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; -public class JdbcCsvSeriesBuilder implements SeriesBuilder +/** + * A {@link SeriesBuilder} that uses JDBC to read series data + */ +public class JdbcSeriesBuilder implements SeriesBuilder { + private static final Logger LOGGER = LoggerFactory.getLogger(JdbcSeriesBuilder.class); - static - { - registerCsvDriver(); - } + public static final String DEFAULT_JDBC_DRIVER_NAME = "org.relique.jdbc.csv.CsvDriver"; + + /** the dot at the end denotes the current directory */ + public static final String DEFAULT_JDBC_URL = "jdbc:relique:csv:."; + private final String _jdbcUrl; private SeriesBuilderCallback _callback; + public JdbcSeriesBuilder(String jdbcDriverClass, String jdbcUrl) + { + registerDriver(jdbcDriverClass); + _jdbcUrl = jdbcUrl; + LOGGER.info("Created: " + this); + } + @Override public void setSeriesBuilderCallback(SeriesBuilderCallback callback) { @@ -63,9 +78,7 @@ public class JdbcCsvSeriesBuilder implements SeriesBuilder Statement stmt = null; try { - File seriesDir = getValidatedSeriesDirectory(seriesDefinition); - - conn = DriverManager.getConnection("jdbc:relique:csv:" + seriesDir.getAbsolutePath()); + conn = DriverManager.getConnection(_jdbcUrl); final String seriesStatement = seriesDefinition.getSeriesStatement(); @@ -81,7 +94,8 @@ public class JdbcCsvSeriesBuilder implements SeriesBuilder row[i] = results.getObject(i+1); } - _callback.addDataPointToSeries(seriesDefinition, row); + SeriesRow seriesRow = SeriesRow.createValidSeriesRow(_callback.getNumberOfDimensions(), row); + _callback.addDataPointToSeries(seriesDefinition, seriesRow); } _callback.endSeries(seriesDefinition); } @@ -116,26 +130,22 @@ public class JdbcCsvSeriesBuilder implements SeriesBuilder } } - private File getValidatedSeriesDirectory(SeriesDefinition series) - { - File seriesDir = new File(series.getSeriesDirectory()); - if (!seriesDir.isDirectory()) - { - throw new ChartingException("seriesDirectory must be a directory : " + seriesDir); - } - return seriesDir; - } - - private static void registerCsvDriver() throws ExceptionInInitializerError + private void registerDriver(String driverClassName) throws ExceptionInInitializerError { try { - Class.forName("org.relique.jdbc.csv.CsvDriver"); + Class.forName(driverClassName); + LOGGER.info("Loaded JDBC driver class " + driverClassName); } catch (ClassNotFoundException e) { - throw new RuntimeException("Could not load CSV/JDBC driver", e); + throw new RuntimeException("Could not load JDBC driver " + driverClassName, e); } } + @Override + public String toString() + { + return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("jdbcUrl", _jdbcUrl).toString(); + } } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilder.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilder.java index 86e471efaf..0dfba304a9 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilder.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesBuilder.java @@ -25,8 +25,15 @@ import org.apache.qpid.disttest.charting.definition.SeriesDefinition; public interface SeriesBuilder { + /** + * Uses the supplied {@link SeriesDefinition}s to read the series data + * and pass it to the callback set up in {@link #setSeriesBuilderCallback(SeriesBuilderCallback)}. + */ void build(List<SeriesDefinition> seriesDefinitions); + /** + * Stores the supplied callback so it can be used in {@link #build(List)}. + */ void setSeriesBuilderCallback(SeriesBuilderCallback seriesBuilderCallback); }
\ No newline at end of file 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 7e23953fdb..c9c35d26b4 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,8 @@ import org.apache.qpid.disttest.charting.definition.SeriesDefinition; public interface SeriesBuilderCallback { public void beginSeries(SeriesDefinition seriesDefinition); - public void addDataPointToSeries(SeriesDefinition seriesDefinition, Object[] row); - public void endSeries(SeriesDefinition seriesDefinition); + public int getNumberOfDimensions(); + public void addDataPointToSeries(SeriesDefinition seriesDefinition, SeriesRow row); + public void endSeries(SeriesDefinition seriesDefinition); } diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRow.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRow.java new file mode 100644 index 0000000000..6c87b88c45 --- /dev/null +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRow.java @@ -0,0 +1,92 @@ +/* + * 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.seriesbuilder; + +import java.util.Arrays; + +import org.apache.commons.lang.builder.EqualsBuilder; +import org.apache.commons.lang.builder.HashCodeBuilder; + +/** + * A data point in a chart. Thinly wraps an array to provide a convenient place to validate the number of dimensions, + * and to access dimensions in a typesafe manner. + */ +public class SeriesRow +{ + private final Object[] _dimensions; + + public static SeriesRow createValidSeriesRow(int expectedNumberOfDimensions, Object[] dimensions) + { + int actualNumberOfDimensions = dimensions.length; + if(expectedNumberOfDimensions != actualNumberOfDimensions) + { + throw new IllegalArgumentException("Expected " + expectedNumberOfDimensions + + " dimensions but found " + actualNumberOfDimensions + + " in: " + Arrays.asList(dimensions)); + } + return new SeriesRow(dimensions); + } + + public SeriesRow(Object... dimensions) + { + _dimensions = dimensions; + } + + public Object dimension(int dimension) + { + return _dimensions[dimension]; + } + + public String dimensionAsString(int dimension) + { + return String.valueOf(dimension(dimension)); + } + + public double dimensionAsDouble(int dimension) + { + return Double.parseDouble(dimensionAsString(dimension)); + } + + @Override + public int hashCode() + { + return new HashCodeBuilder().append(_dimensions).toHashCode(); + } + + @Override + public boolean equals(Object obj) + { + if (obj == null) + { + return false; + } + if (obj == this) + { + return true; + } + if (obj.getClass() != getClass()) + { + return false; + } + SeriesRow rhs = (SeriesRow) obj; + return new EqualsBuilder().append(_dimensions, rhs._dimensions).isEquals(); + } + + +}
\ No newline at end of file diff --git a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/writer/ChartWriter.java b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/writer/ChartWriter.java index 888d7dc3d7..341f01ccd1 100644 --- a/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/writer/ChartWriter.java +++ b/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/writer/ChartWriter.java @@ -153,5 +153,6 @@ public class ChartWriter public void setOutputDirectory(final File chartDirectory) { _chartDirectory = chartDirectory; + LOGGER.info("Set chart directory: {}", chartDirectory); } } 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 96ec917932..fe9cb2aefe 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 @@ -31,6 +31,7 @@ import org.apache.qpid.disttest.charting.definition.ChartingDefinition; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilderCallback; import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.SeriesRow; import org.apache.qpid.disttest.charting.writer.ChartWriter; import org.apache.qpid.test.utils.TestFileUtils; import org.jfree.chart.JFreeChart; @@ -143,11 +144,11 @@ public class ChartProductionTest extends TestCase { SeriesDefinition seriesDefinition = iterator.next(); _dataPointCallback.beginSeries(seriesDefinition); - _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{1d, 1d, 0.5d}); - _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{2d, 2d, 0.4d}); - _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{4d, 4d, 0.3d}); - _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{5d, 5d, 0.2d}); - _dataPointCallback.addDataPointToSeries(seriesDefinition, new Object[]{6d, 3d, 0.1d}); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(1d, 1d, 0.5d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(2d, 2d, 0.4d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(4d, 4d, 0.3d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(5d, 5d, 0.2d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(6d, 3d, 0.1d)); _dataPointCallback.endSeries(seriesDefinition); } } @@ -192,11 +193,11 @@ public class ChartProductionTest extends TestCase { SeriesDefinition seriesDefinition = iterator.next(); _dataPointCallback.beginSeries(seriesDefinition); - _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.addDataPointToSeries(seriesDefinition, new SeriesRow(1d, 1d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(2d, 2d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(4d, 4d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(5d, 5d)); + _dataPointCallback.addDataPointToSeries(seriesDefinition, new SeriesRow(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/JdbcSeriesBuilderTest.java index dfe35ee199..bd66e8e888 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/JdbcSeriesBuilderTest.java @@ -21,6 +21,7 @@ package org.apache.qpid.disttest.charting.seriesbuilder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; import java.io.BufferedWriter; import java.io.File; @@ -31,9 +32,9 @@ import java.util.Collections; import junit.framework.TestCase; import org.apache.qpid.disttest.charting.definition.SeriesDefinition; -import org.apache.qpid.disttest.charting.seriesbuilder.JdbcCsvSeriesBuilder; +import org.apache.qpid.disttest.charting.seriesbuilder.JdbcSeriesBuilder; -public class JdbcCsvSeriesBuilderTest extends TestCase +public class JdbcSeriesBuilderTest extends TestCase { private static final String TEST_SERIES_1_SELECT_STATEMENT = "SELECT A, B FROM test"; private static final String TEST_SERIES_1_LEGEND = "SERIES_1_LEGEND"; @@ -41,7 +42,6 @@ public class JdbcCsvSeriesBuilderTest extends TestCase private static final Integer TEST_SERIES1_STROKE_WIDTH = 3; private SeriesBuilderCallback _seriesWalkerCallback = mock(SeriesBuilderCallback.class); - private JdbcCsvSeriesBuilder _seriesBuilder = new JdbcCsvSeriesBuilder(); private File _testTempDir; @@ -49,21 +49,27 @@ public class JdbcCsvSeriesBuilderTest extends TestCase protected void setUp() throws Exception { super.setUp(); - _seriesBuilder.setSeriesBuilderCallback(_seriesWalkerCallback); + when(_seriesWalkerCallback.getNumberOfDimensions()).thenReturn(2); _testTempDir = createTestTemporaryDirectory(); + createTestCsvIn(_testTempDir); } public void testBuildOneSeries() throws Exception { - createTestCsvIn(_testTempDir); SeriesDefinition seriesDefinition = createTestSeriesDefinition(); - _seriesBuilder.build(Collections.singletonList(seriesDefinition)); + JdbcSeriesBuilder seriesBuilder = new JdbcSeriesBuilder( + "org.relique.jdbc.csv.CsvDriver", + "jdbc:relique:csv:" + _testTempDir.getAbsolutePath()); + + seriesBuilder.setSeriesBuilderCallback(_seriesWalkerCallback); + + seriesBuilder.build(Collections.singletonList(seriesDefinition)); verify(_seriesWalkerCallback).beginSeries(seriesDefinition); - 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).addDataPointToSeries(seriesDefinition, new SeriesRow("elephant", "2")); + verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, new SeriesRow("lion", "3")); + verify(_seriesWalkerCallback).addDataPointToSeries(seriesDefinition, new SeriesRow("tiger", "4")); verify(_seriesWalkerCallback).endSeries(seriesDefinition); } @@ -81,7 +87,12 @@ public class JdbcCsvSeriesBuilderTest extends TestCase private SeriesDefinition createTestSeriesDefinition() { - SeriesDefinition definition = new SeriesDefinition(TEST_SERIES_1_SELECT_STATEMENT, TEST_SERIES_1_LEGEND, _testTempDir.getAbsolutePath(), TEST_SERIES1_COLOUR_NAME, TEST_SERIES1_STROKE_WIDTH); + SeriesDefinition definition = new SeriesDefinition( + TEST_SERIES_1_SELECT_STATEMENT, + TEST_SERIES_1_LEGEND, + _testTempDir.getAbsolutePath(), + TEST_SERIES1_COLOUR_NAME, + TEST_SERIES1_STROKE_WIDTH); return definition; } diff --git a/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRowTest.java b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRowTest.java new file mode 100644 index 0000000000..645d443f13 --- /dev/null +++ b/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/SeriesRowTest.java @@ -0,0 +1,64 @@ +/* + * 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.seriesbuilder; + +import junit.framework.TestCase; + +public class SeriesRowTest extends TestCase +{ + private static final Integer[] PAIR = new Integer[] {10, 11}; + + public void testValidSeriesRow() + { + assertEquals(11, SeriesRow.createValidSeriesRow(2, PAIR).dimension(1)); + } + + public void testValidSeriesRowThrowsExceptionIfArrayTooSmall() + { + try + { + SeriesRow.createValidSeriesRow(1, PAIR); + fail("Expected exception not thrown"); + } + catch(IllegalArgumentException e) + { + // pass + } + } + + public void testDimension() + { + SeriesRow seriesRow = new SeriesRow(10, 11); + assertEquals(10, seriesRow.dimension(0)); + assertEquals(11, seriesRow.dimension(1)); + } + + public void testDimensionAsString() + { + SeriesRow seriesRow = new SeriesRow(10); + assertEquals("10", seriesRow.dimensionAsString(0)); + } + + public void testDimensionAsDouble() + { + SeriesRow seriesRow = new SeriesRow(10.1); + assertEquals(10.1, seriesRow.dimensionAsDouble(0), 0.0); + } + +} |
