You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ph...@apache.org on 2013/02/09 07:41:36 UTC
svn commit: r1444335 - in /qpid/trunk/qpid/java/perftests: etc/
src/main/java/org/apache/qpid/disttest/db/
visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/
visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/
...
Author: philharveyonline
Date: Sat Feb 9 06:41:36 2013
New Revision: 1444335
URL: http://svn.apache.org/r1444335
Log:
QPID-4533: Java Performance Tests - addressed bug in JdbcSeriesBuilder that caused it to ignore the CSV series directory.
Added:
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGenerator.java
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGeneratorTest.java
Modified:
qpid/trunk/qpid/java/perftests/etc/visualisation.sh
qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/SeriesDefinition.java
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilder.java
qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilderTest.java
Modified: qpid/trunk/qpid/java/perftests/etc/visualisation.sh
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/etc/visualisation.sh?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/etc/visualisation.sh (original)
+++ qpid/trunk/qpid/java/perftests/etc/visualisation.sh Sat Feb 9 06:41:36 2013
@@ -28,6 +28,8 @@ BASE_DIR=`dirname $0`
java -cp "${BASE_DIR}:${BASE_DIR}/../../build/lib/*" \
-Djava.awt.headless=true -Dlog4j.configuration=file:log4j.properties \
+ -DcsvCurrentDir=. \
+ -DcsvBaselineDir=. \
org.apache.qpid.disttest.charting.ChartingUtil \
chart-defs=chartdefs \
${JDBC_DRIVER} ${JDBC_URL}
Modified: qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java (original)
+++ qpid/trunk/qpid/java/perftests/src/main/java/org/apache/qpid/disttest/db/ResultsDbWriter.java Sat Feb 9 06:41:36 2013
@@ -25,7 +25,6 @@ import static org.apache.qpid.disttest.m
import static org.apache.qpid.disttest.message.ParticipantAttribute.THROUGHPUT;
import java.sql.Connection;
-import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -203,8 +202,7 @@ public class ResultsDbWriter
+ " missing from context environment: " + environment);
}
- @SuppressWarnings("unchecked")
- Class<? extends Driver> driverClass = (Class<? extends Driver>) Class.forName(driverName);
+ Class.forName(driverName);
Object url = environment.get(URL);
if(url == null)
@@ -411,6 +409,10 @@ public class ResultsDbWriter
statement.execute();
connection.commit();
}
+ catch(SQLException e)
+ {
+ _logger.error("Couldn't write " + participantResult, e);
+ }
finally
{
if (statement != null)
Modified: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java (original)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/ChartingUtil.java Sat Feb 9 06:41:36 2013
@@ -31,6 +31,7 @@ import org.apache.qpid.disttest.charting
import org.apache.qpid.disttest.charting.definition.ChartingDefinition;
import org.apache.qpid.disttest.charting.definition.ChartingDefinitionCreator;
import org.apache.qpid.disttest.charting.seriesbuilder.JdbcSeriesBuilder;
+import org.apache.qpid.disttest.charting.seriesbuilder.JdbcUrlGenerator;
import org.apache.qpid.disttest.charting.seriesbuilder.SeriesBuilder;
import org.apache.qpid.disttest.charting.writer.ChartWriter;
import org.jfree.chart.JFreeChart;
@@ -69,11 +70,11 @@ public class ChartingUtil
/** 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;
+ public static final String JDBC_DRIVER_NAME_DEFAULT = JdbcUrlGenerator.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;
+ public static final String JDBC_URL_DEFAULT = null;
private Map<String,String> _cliOptions = new HashMap<String, String>();
Modified: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/SeriesDefinition.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/SeriesDefinition.java?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/SeriesDefinition.java (original)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/definition/SeriesDefinition.java Sat Feb 9 06:41:36 2013
@@ -19,6 +19,9 @@
*/
package org.apache.qpid.disttest.charting.definition;
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
public class SeriesDefinition
{
private final String _seriesStatement;
@@ -60,4 +63,13 @@ public class SeriesDefinition
{
return _seriesStrokeWidth;
}
+
+ @Override
+ public String toString()
+ {
+ return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+ .append("seriesLegend", _seriesLegend)
+ .append("seriesStatement", _seriesStatement)
+ .append("seriesDirectory", _seriesDirectory).toString();
+ }
}
Modified: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilder.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilder.java?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilder.java (original)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilder.java Sat Feb 9 06:41:36 2013
@@ -35,24 +35,25 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
- * A {@link SeriesBuilder} that uses JDBC to read series data
+ * A {@link SeriesBuilder} that uses JDBC to read series data.
+ * The actual JDBC URL used is determined by my {@link JdbcUrlGenerator}.
*/
public class JdbcSeriesBuilder implements SeriesBuilder
{
private static final Logger LOGGER = LoggerFactory.getLogger(JdbcSeriesBuilder.class);
- 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)
+ private final JdbcUrlGenerator _jdbcUrlGenerator;
+
+ /**
+ * @param providedJdbcUrl the JDBC URL. Provide null if the value should be
+ * inferred by {@link #_jdbcUrlGenerator}.
+ */
+ public JdbcSeriesBuilder(String jdbcDriverClass, String providedJdbcUrl)
{
registerDriver(jdbcDriverClass);
- _jdbcUrl = jdbcUrl;
+ _jdbcUrlGenerator = new JdbcUrlGenerator(providedJdbcUrl);
LOGGER.info("Created: " + this);
}
@@ -78,7 +79,8 @@ public class JdbcSeriesBuilder implement
Statement stmt = null;
try
{
- conn = DriverManager.getConnection(_jdbcUrl);
+ String jdbcUrl = _jdbcUrlGenerator.getJdbcUrl(seriesDefinition);
+ conn = DriverManager.getConnection(jdbcUrl);
final String seriesStatement = seriesDefinition.getSeriesStatement();
@@ -146,6 +148,8 @@ public class JdbcSeriesBuilder implement
@Override
public String toString()
{
- return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE).append("jdbcUrl", _jdbcUrl).toString();
+ return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+ .append("jdbcUrlGenerator", _jdbcUrlGenerator)
+ .toString();
}
}
Added: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGenerator.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGenerator.java?rev=1444335&view=auto
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGenerator.java (added)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/main/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGenerator.java Sat Feb 9 06:41:36 2013
@@ -0,0 +1,81 @@
+/*
+ * 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 static org.apache.commons.lang.StringUtils.isBlank;
+import static org.apache.commons.lang.StringUtils.isNotBlank;
+
+import org.apache.commons.lang.builder.ToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+import org.apache.qpid.disttest.charting.definition.SeriesDefinition;
+
+public class JdbcUrlGenerator
+{
+ private String _providedJdbdUrl;
+
+ public static final String DEFAULT_JDBC_DRIVER_NAME = "org.relique.jdbc.csv.CsvDriver";
+
+ /**
+ * Used to create the JDBC URL if one has not been passed in.
+ */
+ private static final String CSV_JDBC_URL_BASE = "jdbc:relique:csv:";
+
+ /**
+ * @param providedJdbcUrl the JDBC URL. Provide null if the value should be
+ * inferred.
+ */
+ public JdbcUrlGenerator(String providedJdbcUrl)
+ {
+ _providedJdbdUrl = providedJdbcUrl;
+ }
+
+ /**
+ * Returns either the provided value ({@link #_providedJdbdUrl})
+ * or a CSV JDBC URL pointing at {@link SeriesDefinition#getSeriesDirectory()} value.
+ */
+ public String getJdbcUrl(SeriesDefinition seriesDefinition)
+ {
+ String seriesDir = seriesDefinition.getSeriesDirectory();
+
+ if(_providedJdbdUrl == null)
+ {
+ if(isBlank(seriesDir))
+ {
+ throw new IllegalArgumentException("Neither a series directory nor a JDBC url have been specified. Series definition: " + seriesDefinition);
+ }
+ return CSV_JDBC_URL_BASE + seriesDir;
+ }
+ else
+ {
+ if(isNotBlank(seriesDir))
+ {
+ throw new IllegalArgumentException("Both a series directory '" + seriesDir + "' and a JDBC url have been specified. Series definition: " + seriesDefinition);
+ }
+ return _providedJdbdUrl;
+ }
+ }
+
+ @Override
+ public String toString()
+ {
+ return new ToStringBuilder(this, ToStringStyle.SHORT_PREFIX_STYLE)
+ .append("providedJdbdUrl", _providedJdbdUrl)
+ .toString();
+ }
+}
\ No newline at end of file
Modified: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilderTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilderTest.java?rev=1444335&r1=1444334&r2=1444335&view=diff
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilderTest.java (original)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcSeriesBuilderTest.java Sat Feb 9 06:41:36 2013
@@ -58,9 +58,7 @@ public class JdbcSeriesBuilderTest exten
{
SeriesDefinition seriesDefinition = createTestSeriesDefinition();
- JdbcSeriesBuilder seriesBuilder = new JdbcSeriesBuilder(
- "org.relique.jdbc.csv.CsvDriver",
- "jdbc:relique:csv:" + _testTempDir.getAbsolutePath());
+ JdbcSeriesBuilder seriesBuilder = new JdbcSeriesBuilder("org.relique.jdbc.csv.CsvDriver", null);
seriesBuilder.setSeriesBuilderCallback(_seriesWalkerCallback);
Added: qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGeneratorTest.java
URL: http://svn.apache.org/viewvc/qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGeneratorTest.java?rev=1444335&view=auto
==============================================================================
--- qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGeneratorTest.java (added)
+++ qpid/trunk/qpid/java/perftests/visualisation-jfc/src/test/java/org/apache/qpid/disttest/charting/seriesbuilder/JdbcUrlGeneratorTest.java Sat Feb 9 06:41:36 2013
@@ -0,0 +1,84 @@
+/*
+ * 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 org.apache.qpid.disttest.charting.definition.SeriesDefinition;
+import static org.mockito.Mockito.*;
+
+import junit.framework.TestCase;
+
+public class JdbcUrlGeneratorTest extends TestCase
+{
+ public void testGetJdbcUrlWithoutProvidingAUrlReturnsCsvUrlWithCorrectDirectory()
+ {
+ JdbcUrlGenerator jdbcUrlGenerator = new JdbcUrlGenerator(null);
+ SeriesDefinition seriesDefinition = mock(SeriesDefinition.class);
+ when(seriesDefinition.getSeriesDirectory()).thenReturn("mydir");
+
+ String jdbcUrl = jdbcUrlGenerator.getJdbcUrl(seriesDefinition);
+
+ assertEquals("jdbc:relique:csv:mydir", jdbcUrl);
+ }
+
+ public void testGetJdbcUrlReturnsProvidedUrl()
+ {
+ String urlTemplate = "urlTemplate";
+ JdbcUrlGenerator jdbcUrlGenerator = new JdbcUrlGenerator(urlTemplate);
+ SeriesDefinition seriesDefinition = mock(SeriesDefinition.class);
+
+ String jdbcUrl = jdbcUrlGenerator.getJdbcUrl(seriesDefinition);
+
+ assertEquals(urlTemplate, jdbcUrl);
+ }
+
+ public void testGetJdbcUrlThrowsExceptionIfUrlProvidedAndSeriesDirectorySpecified()
+ {
+ String urlTemplate = "urlTemplate";
+ JdbcUrlGenerator jdbcUrlGenerator = new JdbcUrlGenerator(urlTemplate);
+ SeriesDefinition seriesDefinition = mock(SeriesDefinition.class);
+ when(seriesDefinition.getSeriesDirectory()).thenReturn("mydir");
+
+ try
+ {
+ jdbcUrlGenerator.getJdbcUrl(seriesDefinition);
+ fail("Expected exception not thrown");
+ }
+ catch (IllegalArgumentException e)
+ {
+ // pass
+ }
+ }
+
+ public void testGetJdbcUrlThrowsExceptionWithoutAProvidedUrlOrSeriesDirectory()
+ {
+ JdbcUrlGenerator jdbcUrlGenerator = new JdbcUrlGenerator(null);
+ SeriesDefinition seriesDefinition = mock(SeriesDefinition.class);
+ when(seriesDefinition.getSeriesDirectory()).thenReturn(null);
+
+ try
+ {
+ jdbcUrlGenerator.getJdbcUrl(seriesDefinition);
+ fail("Expected exception not thrown");
+ }
+ catch (IllegalArgumentException e)
+ {
+ // pass
+ }
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org