Am 03.09.2017 um 00:15 schrieb [email protected]:
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>