You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jmeter.apache.org by pm...@apache.org on 2019/11/14 18:03:15 UTC

[jmeter] branch master updated: JDBC Connection Configuration: Add connectionProperties

This is an automated email from the ASF dual-hosted git repository.

pmouawad pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jmeter.git


The following commit(s) were added to refs/heads/master by this push:
     new 7850afb  JDBC Connection Configuration: Add connectionProperties
7850afb is described below

commit 7850afbc573be212b1aed9b852f0cf3e63dd51de
Author: pmouawad <p....@ubik-ingenierie.com>
AuthorDate: Thu Nov 14 19:04:23 2019 +0100

    JDBC Connection Configuration: Add connectionProperties
    
    This resolves https://bz.apache.org/bugzilla/show_bug.cgi?id=63926
---
 bin/testfiles/JDBC_TESTS.jmx                           |  3 ++-
 .../jmeter/protocol/jdbc/config/DataSourceElement.java | 18 ++++++++++++++++++
 .../jdbc/config/DataSourceElementBeanInfo.java         |  5 ++++-
 .../jdbc/config/DataSourceElementResources.properties  |  2 ++
 .../config/DataSourceElementResources_fr.properties    |  2 ++
 xdocs/changes.xml                                      |  1 +
 xdocs/usermanual/component_reference.xml               |  1 +
 7 files changed, 30 insertions(+), 2 deletions(-)

diff --git a/bin/testfiles/JDBC_TESTS.jmx b/bin/testfiles/JDBC_TESTS.jmx
index c99b5e3..af83558 100644
--- a/bin/testfiles/JDBC_TESTS.jmx
+++ b/bin/testfiles/JDBC_TESTS.jmx
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.2-SNAPSHOT.20190723">
+<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.2.1-SNAPSHOT be1e864">
   <hashTree>
     <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
       <stringProp name="TestPlan.comments"></stringProp>
@@ -27,6 +27,7 @@
         <stringProp name="username">SA</stringProp>
         <boolProp name="preinit">true</boolProp>
         <stringProp name="initQuery"></stringProp>
+        <stringProp name="connectionProperties">ifexists=false</stringProp>
       </JDBCDataSource>
       <hashTree/>
       <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
diff --git a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
index 85912a0..743f032 100644
--- a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
+++ b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
@@ -52,6 +52,7 @@ public class DataSourceElement extends AbstractTestElement
     private transient String username;
     private transient String password;
     private transient String checkQuery;
+    private transient String connectionProperties;
     private transient String initQuery;
     private transient String poolMax;
     private transient String connectionAge;
@@ -235,6 +236,9 @@ public class DataSourceElement extends AbstractTestElement
         } else {
             dataSource.setConnectionInitSqls(Collections.emptyList());
         }
+        if(StringUtils.isNotEmpty(connectionProperties)) {
+            dataSource.setConnectionProperties(connectionProperties);
+        }
         dataSource.setRollbackOnReturn(false);
         dataSource.setMaxIdle(poolSize);
         dataSource.setMaxTotal(poolSize);
@@ -624,4 +628,18 @@ public class DataSourceElement extends AbstractTestElement
     public void setInitQuery(String initQuery) {
         this.initQuery = initQuery;
     }
+
+    /**
+     * @return the connectionProperties
+     */
+    public String getConnectionProperties() {
+        return connectionProperties;
+    }
+
+    /**
+     * @param connectionProperties the connectionProperties to set
+     */
+    public void setConnectionProperties(String connectionProperties) {
+        this.connectionProperties = connectionProperties;
+    }
 }
diff --git a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
index e1b95f3..fe785d3 100644
--- a/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
+++ b/src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
@@ -55,7 +55,7 @@ public class DataSourceElementBeanInfo extends BeanInfoSupport {
 
         createPropertyGroup("keep-alive", new String[] { "keepAlive", "connectionAge", "checkQuery" });
 
-        createPropertyGroup("database", new String[] { "dbUrl", "driver", "username", "password" });
+        createPropertyGroup("database", new String[] { "dbUrl", "driver", "username", "password", "connectionProperties" });
 
         PropertyDescriptor p = property("dataSource");
         p.setValue(NOT_UNDEFINED, Boolean.TRUE);
@@ -108,6 +108,9 @@ public class DataSourceElementBeanInfo extends BeanInfoSupport {
         p = property("password", TypeEditor.PasswordEditor);
         p.setValue(NOT_UNDEFINED, Boolean.TRUE);
         p.setValue(DEFAULT, "");
+        p = property("connectionProperties");
+        p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+        p.setValue(DEFAULT, "");
     }
 
     /**
diff --git a/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties b/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
index 16571c0..d7dc8b2 100644
--- a/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
+++ b/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
@@ -24,6 +24,8 @@ poolMax.displayName=Max Number of Connections
 poolMax.shortDescription=Maximum number of connections the pool will open at one time
 connectionAge.displayName=Soft Min Evictable Idle Time(ms)
 connectionAge.shortDescription=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 "minIdle" connections remain in the pool.
+connectionProperties.displayName=Connection Properties
+connectionProperties.shortDescription=Connection Properties to set when establishing connection (like internal_logon=sysdba for Oracle for example) 
 driver.displayName=JDBC Driver class
 driver.shortDescription=Full package and class name of the JDBC driver to be used (Must be in JMeter's classpath)
 dbUrl.displayName=Database URL
diff --git a/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties b/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
index 0ff2a48..01c87b5 100644
--- a/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
+++ b/src/protocol/jdbc/src/main/resources/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
@@ -20,6 +20,8 @@ checkQuery.displayName=Requête de validation
 checkQuery.shortDescription=Une requête à utiliser pour valider que la connexion fonctionne. Utilisé seulement si le paramétre connexion persistante (keep-alive) est activé (true).
 connectionAge.displayName=Durée de vie maximum d'une connexion (ms)
 connectionAge.shortDescription=Nombre maximum en millisecondes pendant lequel une connexion disponible est gardée avant d'être fermée.
+connectionProperties.displayName=Propriétés de la connexion
+connectionProperties.shortDescription=Propriétés positionnées pour établir la connexion (exemple: internal_logon=sysdba pour Oracle)
 dataSource.displayName=Nom de liaison
 dataSource.shortDescription=Nom de la variable JMeter sur laquelle le pool sera lié.
 database.displayName=Configuration de connexion à la base de données
diff --git a/xdocs/changes.xml b/xdocs/changes.xml
index 18625df..f660e7a 100644
--- a/xdocs/changes.xml
+++ b/xdocs/changes.xml
@@ -86,6 +86,7 @@ to view the last release notes of version 5.2.
 
 <h3>Other samplers</h3>
 <ul>
+    <li><bug>63926</bug>JDBC Connection Configuration: Add ability to set connection properties</li>
 </ul>
 
 <h3>Controllers</h3>
diff --git a/xdocs/usermanual/component_reference.xml b/xdocs/usermanual/component_reference.xml
index a106792..fae98ca 100644
--- a/xdocs/usermanual/component_reference.xml
+++ b/xdocs/usermanual/component_reference.xml
@@ -4032,6 +4032,7 @@ instead. (see figures 12 and 13).</p>
         </property>
         <property name="Username" required="No">Name of user to connect as.</property>
         <property name="Password" required="No">Password to connect with. (N.B. this is stored unencrypted in the test plan)</property>
+        <property name="Connection Properties" required="No">Connection Properties to set when establishing connection (like <code>internal_logon=sysdba</code> for Oracle for example)</property>
     </properties>
 <p>Different databases and JDBC drivers require different JDBC settings. 
 The Database URL and JDBC Driver class are defined by the provider of the JDBC implementation.</p>