Author: pmouawad Date: Wed Oct 17 19:33:23 2018 New Revision: 1844156 URL: http://svn.apache.org/viewvc?rev=1844156&view=rev Log: Bug 62832 - JDBC Connection Configuration: Be able to set init SQL statements Bugzilla Id: 62832
Modified: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties jmeter/trunk/xdocs/changes.xml jmeter/trunk/xdocs/usermanual/component_reference.xml Modified: jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java (original) +++ jmeter/trunk/src/core/org/apache/jmeter/testbeans/gui/TextAreaEditor.java Wed Oct 17 19:33:23 2018 @@ -84,7 +84,7 @@ public class TextAreaEditor extends Prop * to be used for the editor. Must not be <code>null</code> */ public TextAreaEditor(PropertyDescriptor descriptor) { - textUI = JSyntaxTextArea.getInstance(20, 20); + textUI = JSyntaxTextArea.getInstance(10, 60); textUI.setLanguage((String) descriptor.getValue(GenericTestBeanCustomizer.TEXT_LANGUAGE)); scroller = JTextScrollPane.getInstance(textUI, true); init(); Modified: jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java (original) +++ jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java Wed Oct 17 19:33:23 2018 @@ -18,6 +18,7 @@ package org.apache.jmeter.protocol.jdbc. import java.sql.Connection; import java.sql.SQLException; +import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; @@ -49,6 +50,7 @@ public class DataSourceElement extends A private transient String username; private transient String password; private transient String checkQuery; + private transient String initQuery; private transient String poolMax; private transient String connectionAge; private transient String timeout; @@ -222,6 +224,12 @@ public class DataSourceElement extends A dataSource.setMinIdle(0); dataSource.setInitialSize(poolSize); dataSource.setEnableAutoCommitOnReturn(false); + if(StringUtils.isNotEmpty(initQuery)) { + String[] sqls = initQuery.split("\n"); + dataSource.setConnectionInitSqls(Arrays.asList(sqls)); + } else { + dataSource.setConnectionInitSqls(Collections.emptyList()); + } dataSource.setRollbackOnReturn(false); dataSource.setMaxIdle(poolSize); dataSource.setMaxTotal(poolSize); @@ -564,4 +572,18 @@ public class DataSourceElement extends A public void setTransactionIsolation(String transactionIsolation) { this.transactionIsolation = transactionIsolation; } + + /** + * @return the initQuery + */ + public String getInitQuery() { + return initQuery; + } + + /** + * @param initQuery the initQuery to set + */ + public void setInitQuery(String initQuery) { + this.initQuery = initQuery; + } } 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=1844156&r1=1844155&r2=1844156&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 Wed Oct 17 19:33:23 2018 @@ -54,7 +54,7 @@ public class DataSourceElementBeanInfo e createPropertyGroup("varName", new String[] { "dataSource" }); createPropertyGroup("pool", new String[] { "poolMax", "timeout", - "trimInterval", "autocommit", "transactionIsolation" }); + "trimInterval", "autocommit", "transactionIsolation", "initQuery" }); createPropertyGroup("keep-alive", new String[] { "keepAlive", "connectionAge", "checkQuery" }); @@ -82,6 +82,9 @@ public class DataSourceElementBeanInfo e Set<String> modesSet = TRANSACTION_ISOLATION_MAP.keySet(); String[] modes = modesSet.toArray(new String[modesSet.size()]); p.setValue(TAGS, modes); + p = property("initQuery", TypeEditor.TextAreaEditor); + p.setValue(NOT_UNDEFINED, Boolean.TRUE); + p.setValue(DEFAULT, ""); p = property("keepAlive"); p.setValue(NOT_UNDEFINED, Boolean.TRUE); p.setValue(DEFAULT, Boolean.TRUE); Modified: jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties (original) +++ jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties Wed Oct 17 19:33:23 2018 @@ -34,6 +34,8 @@ password.displayName=Password password.shortDescription=Password used to connect to database checkQuery.displayName=Validation Query checkQuery.shortDescription=A query used to validate a connection still works. Only relevant if Validate connections is true. +initQuery.displayName=Init SQL statements separated by new line +initQuery.shortDescription=A Collection of SQL statements that will be used to initialize physical connections when they are first created. These statements are executed only once - when the configured connection factory creates the connection. dataSource.displayName=Variable Name for created pool dataSource.shortDescription=Name of the JMeter variable that the pool will be bound to. timeout.displayName=Max Wait (ms) Modified: jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties URL: http://svn.apache.org/viewvc/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties (original) +++ jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties Wed Oct 17 19:33:23 2018 @@ -28,6 +28,8 @@ dbUrl.shortDescription=URL compl\u00E8te displayName=Configuration de connexion JDBC driver.displayName=Classe du pilote JDBC driver.shortDescription=Nom (paquet+classe) complet du pilote JDBC \u00E0 utiliser. (Doit \u00EAtre dans le classpath de JMeter) +initQuery.displayName=Requ\u00eates SQL Init s\u00e9par\u00e9es par une nouvelle ligne +initQuery.shortDescription=Un ensemble d'instructions SQL qui seront utilis\u00e9es pour initialiser les connexions physiques lors de leur cr\u00e9ation initiale. Ces instructions ne sont ex\u00e9cut\u00e9es qu'une seule fois - lorsque la connexion est configur\u00e9e par la factory keep-alive.displayName=Validation des connexions par le pool keepAlive.displayName=Connexions persistantes (keep-alive) keepAlive.shortDescription=Est-ce que le pool doit valider les connexions. Sinon, la dur\u00E9e de vie des connexions et des validations de requ\u00EAtes sont ignor\u00E9es. Modified: jmeter/trunk/xdocs/changes.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/xdocs/changes.xml [utf-8] (original) +++ jmeter/trunk/xdocs/changes.xml [utf-8] Wed Oct 17 19:33:23 2018 @@ -94,6 +94,7 @@ Summary <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> <ul> <li><bug>62766</bug>Keystore Config : We should load all aliases by default. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> + <li><bug>62832</bug>JDBC Connection Configuration: Be able to set init SQL statements. Contributed by Ubik Load Pack (support at ubikloadpack.com)</li> </ul> <h3>Functions</h3> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1844156&r1=1844155&r2=1844156&view=diff ============================================================================== --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original) +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Wed Oct 17 19:33:23 2018 @@ -3933,6 +3933,8 @@ instead. (see figures 12 and 13).</p> <property name="Time Between Eviction Runs (ms)" required="Yes">The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run. (Defaults to "<code>60000</code>", 1 minute). See <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTimeBetweenEvictionRunsMillis--" >BasicDataSource.html#getTimeBetweenEvictionRunsMillis</a></property> <property name="Auto Commit" required="Yes">Turn auto commit on or off for the connections.</property> + <property name="Transaction isolation" required="Yes">Transaction isolation level</property> + <property name="Init SQL statements separated by new line" required="No">A Collection of SQL statements that will be used to initialize physical connections when they are first created. These statements are executed only once - when the configured connection factory creates the connection. </property> <property name="Test While Idle" required="Yes">Test idle connections of the pool, see <a href="https://commons.apache.org/proper/commons-dbcp/api-2.1.1/org/apache/commons/dbcp2/BasicDataSource.html#getTestWhileIdle--">BasicDataSource.html#getTestWhileIdle</a>. Validation Query will be used to test it.</property> <property name="Soft Min Evictable Idle Time(ms)" required="Yes">Minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle object evictor, with the extra condition that at least <code>minIdle</code> connections remain in the pool.