jmeter-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Felix Schumacher <felix.schumac...@internetallee.de>
Subject Re: svn commit: r1807103 - in /jmeter/trunk: bin/jmeter.properties src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java xdocs/changes.xml xdocs/usermanual/component_reference.xml
Date Sun, 03 Sep 2017 10:45:41 GMT
Am 03.09.2017 um 00:15 schrieb agomes@apache.org:
> Author: agomes
> Date: Sat Sep  2 22:15:28 2017
> New Revision: 1807103
>
> URL: http://svn.apache.org/viewvc?rev=1807103&view=rev
> Log:
> Add a list for "JDBC Connection Configuration" "Validation Query" attribut. Screenshot
later after I modified another attribute
I am not quite happy with this change. It is great to have a list of 
possible validation statements for different databases, but as modern 
jdbc drivers should provide an isValid method, the default value for the 
validation query should be empty.

More notes below.

> Modified:
>      jmeter/trunk/bin/jmeter.properties
>      jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
>      jmeter/trunk/xdocs/changes.xml
>      jmeter/trunk/xdocs/usermanual/component_reference.xml
>
> Modified: jmeter/trunk/bin/jmeter.properties
> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/jmeter.properties?rev=1807103&r1=1807102&r2=1807103&view=diff
> ==============================================================================
> --- jmeter/trunk/bin/jmeter.properties (original)
> +++ jmeter/trunk/bin/jmeter.properties Sat Sep  2 22:15:28 2017
> @@ -714,6 +714,10 @@ wmlParser.types=text/vnd.wap.wml
>   # Max size of BLOBs and CLOBs to store in JDBC sampler. Result will be cut off
>   #jdbcsampler.max_retain_result_size=65536
>   
> +# Database validation query
> +# based in https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases
list
> +jdbc.config.check.query=select 1 from INFORMATION_SCHEMA.SYSTEM_USERS|select 1 from
dual|select 1 from sysibm.sysdummy1|select 1|select 1 from rdb$database
> +
>   #---------------------------------------------------------------------------
>   # OS Process Sampler configuration
>   #---------------------------------------------------------------------------
>
> Modified: jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
> URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java?rev=1807103&r1=1807102&r2=1807103&view=diff
> ==============================================================================
> --- jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
(original)
> +++ jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
Sat Sep  2 22:15:28 2017
> @@ -30,6 +30,8 @@ import java.util.Set;
>   import org.apache.commons.lang3.StringUtils;
>   import org.apache.jmeter.testbeans.BeanInfoSupport;
>   import org.apache.jmeter.testbeans.gui.TypeEditor;
> +import org.apache.jmeter.util.JMeterUtils;
> +import org.apache.jorphan.util.JOrphanUtils;
>   import org.slf4j.Logger;
>   import org.slf4j.LoggerFactory;
>   
> @@ -86,9 +88,11 @@ public class DataSourceElementBeanInfo e
>           p = property("connectionAge");
>           p.setValue(NOT_UNDEFINED, Boolean.TRUE);
>           p.setValue(DEFAULT, "5000");
> -        p = property("checkQuery");
> +        p = property("checkQuery", TypeEditor.ComboStringEditor);
>           p.setValue(NOT_UNDEFINED, Boolean.TRUE);
>           p.setValue(DEFAULT, "Select 1");
> +        String[] CHECK_QUERY = getCheckQuery();
> +        p.setValue(TAGS, CHECK_QUERY);
Don't name a local variable all upper case, as it would indicate a 
constant. This variable seems not to be used anywhere else and is 
initialized with a self describing method call, so I think it should be 
inlined.

>           p = property("dbUrl");
>           p.setValue(NOT_UNDEFINED, Boolean.TRUE);
>           p.setValue(DEFAULT, "");
> @@ -132,4 +136,13 @@ public class DataSourceElementBeanInfo e
>           }
>           return -1;
>       }
> +
> +    /**
> +     * Get the check queris for the main databases
> +     * Based in https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases
> +     * @return a String[] with the list of check queries
> +     */
> +    private String[] getCheckQuery() {
> +        return JOrphanUtils.split(JMeterUtils.getPropDefault("jdbc.config.check.query",
""), "|"); //$NON-NLS-1$
> +    }
>   }
>
> Modified: jmeter/trunk/xdocs/changes.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1807103&r1=1807102&r2=1807103&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/changes.xml [utf-8] (original)
> +++ jmeter/trunk/xdocs/changes.xml [utf-8] Sat Sep  2 22:15:28 2017
> @@ -103,6 +103,7 @@ Incorporated feed back about unclear doc
>   <ul>
>       <li><bug>61320</bug>Test Action : Set duration to <code>0</code>
by default</li>
>       <li>JDBC Connection Configuration : Set Max Number of Connections to <code>0</code>
by default</li>
> +    <li>JDBC Connection Configuration : Add a list for main databases validation
queries for "Validation Query" attribute</li>
>   </ul>
>   
>   <h3>Controllers</h3>
>
> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1807103&r1=1807102&r2=1807103&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
> +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Sep  2 22:15:28 2017
> @@ -4028,6 +4028,20 @@ instead. (see figures 12 and 13).</p>
>           <property name="Validation Query" required="No">A simple query used to
determine if the database is still responding.
>           This defaults to the '<code>isValid()</code>' method of the jdbc
driver, which is suitable for many databases.
>           However some may require a different query; for example Oracle something like
'<code>SELECT 1 FROM DUAL</code>' could be used.
> +        <p>The list of the validation queries can be configured with <code>jdbc.config.check.query</code>
property and are by default:</p>
> +            <ul>
> +              <li>hsqldb - select 1 from INFORMATION_SCHEMA.SYSTEM_USERS</li>
This markup should be a definition list <dl><dt>hsqldb</dt><dd>select

...</dd>...</dl>
> +              <li>Oracle - select 1 from dual</li>
> +              <li>DB2 - select 1 from sysibm.sysdummy1</li>
> +              <li>mysql - select 1</li>
> +              <li>microsoft SQL Server - select 1</li>
> +              <li>postgresql - select 1</li>
> +              <li>ingres - select 1</li>
> +              <li>derby - values 1</li>
> +              <li>H2 - select 1</li>
> +              <li>Firebird - select 1 from rdb$database</li>
> +            </ul>
> +        <note>The list come from <a href="https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases">https://stackoverflow.com/questions/10684244/dbcp-validationquery-for-different-databases</a>
and it can be incorrect</note>
The text of the link could probably be changed to a descriptive type 
like "stackoverflow entry on different database validation queries".

Regards,
  Felix

>           <note>Note this validation query is used on pool creation to validate
it even if "<code>Test While Idle</code>" suggests query would only be used on
idle connections.
>           This is DBCP behaviour.</note>
>           </property>
>
>


Mime
View raw message