Author: pmouawad
Date: Thu Oct 27 20:40:43 2011
New Revision: 1190010
URL: http://svn.apache.org/viewvc?rev=1190010&view=rev
Log:
Bug 52099 - Allow to set the transaction isolation in the JDBC Connection
Configuration
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
jakarta/jmeter/trunk/xdocs/changes.xml
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java?rev=1190010&r1=1190009&r2=1190010&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElement.java
Thu Oct 27 20:40:43 2011
@@ -49,7 +49,7 @@ public class DataSourceElement extends A
private static final long serialVersionUID = 233L;
private transient String dataSource, driver, dbUrl, username, password,
checkQuery, poolMax, connectionAge, timeout,
- trimInterval;
+ trimInterval,transactionIsolation;
private transient boolean keepAlive, autocommit;
@@ -269,6 +269,18 @@ public class DataSourceElement extends A
}
if (dsc != null) {
conn=dsc.getConnection();
+ int transactionIsolation =
DataSourceElementBeanInfo.getTransactionIsolationMode(getTransactionIsolation());
+ if (transactionIsolation >= 0 &&
conn.getTransactionIsolation() != transactionIsolation) {
+ try {
+ // make sure setting the new isolation mode is done in
an auto committed transaction
+ conn.setTransactionIsolation(transactionIsolation);
+ log.debug("Setting transaction isolation: " +
transactionIsolation + " @"
+ + System.identityHashCode(dsc));
+ } catch (SQLException ex) {
+ log.error("Could not set transaction isolation: " +
transactionIsolation + " @"
+ + System.identityHashCode(dsc));
+ }
+ }
}
return conn;
}
@@ -464,4 +476,19 @@ public class DataSourceElement extends A
public void setKeepAlive(boolean keepAlive) {
this.keepAlive = keepAlive;
}
+
+ /**
+ * @return the transaction isolation level
+ */
+ public String getTransactionIsolation() {
+ return transactionIsolation;
+ }
+
+ /**
+ * @param transactionIsolation The transaction isolation level to set.
<code>NULL</code> to
+ * use the default of the driver.
+ */
+ public void setTransactionIsolation(String transactionIsolation) {
+ this.transactionIsolation = transactionIsolation;
+ }
}
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java?rev=1190010&r1=1190009&r2=1190010&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
(original)
+++
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementBeanInfo.java
Thu Oct 27 20:40:43 2011
@@ -22,15 +22,33 @@
package org.apache.jmeter.protocol.jdbc.config;
import java.beans.PropertyDescriptor;
+import java.sql.Connection;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+import org.apache.commons.lang.StringUtils;
import org.apache.jmeter.testbeans.BeanInfoSupport;
public class DataSourceElementBeanInfo extends BeanInfoSupport {
+ private static Map<String,Integer> TRANSACTION_ISOLATION_MAP = new
HashMap<String, Integer>(5);
+ static {
+ // Will use default isolation
+ TRANSACTION_ISOLATION_MAP.put("DEFAULT", Integer.valueOf(-1));
+ TRANSACTION_ISOLATION_MAP.put("TRANSACTION_NONE",
Integer.valueOf(Connection.TRANSACTION_NONE));
+ TRANSACTION_ISOLATION_MAP.put("TRANSACTION_READ_COMMITTED",
Integer.valueOf(Connection.TRANSACTION_READ_COMMITTED));
+ TRANSACTION_ISOLATION_MAP.put("TRANSACTION_READ_UNCOMMITTED",
Integer.valueOf(Connection.TRANSACTION_READ_UNCOMMITTED));
+ TRANSACTION_ISOLATION_MAP.put("TRANSACTION_REPEATABLE_READ",
Integer.valueOf(Connection.TRANSACTION_REPEATABLE_READ));
+ TRANSACTION_ISOLATION_MAP.put("TRANSACTION_SERIALIZABLE",
Integer.valueOf(Connection.TRANSACTION_SERIALIZABLE));
+ }
+
public DataSourceElementBeanInfo() {
super(DataSourceElement.class);
+
createPropertyGroup("varName", new String[] { "dataSource" });
- createPropertyGroup("pool", new String[] { "poolMax", "timeout",
"trimInterval", "autocommit" });
+ createPropertyGroup("pool", new String[] { "poolMax", "timeout",
+ "trimInterval", "autocommit", "transactionIsolation" });
createPropertyGroup("keep-alive", new String[] { "keepAlive",
"connectionAge", "checkQuery" });
@@ -51,6 +69,14 @@ public class DataSourceElementBeanInfo e
p = property("autocommit");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.TRUE);
+ p = property("transactionIsolation");
+ p.setValue(NOT_UNDEFINED, Boolean.TRUE);
+ p.setValue(DEFAULT, "DEFAULT");
+ p.setValue(NOT_EXPRESSION, true);
+ p.setValue(NOT_OTHER, true);
+ Set<String> modesSet = TRANSACTION_ISOLATION_MAP.keySet();
+ String[] modes = modesSet.toArray(new String[modesSet.size()]);
+ p.setValue(TAGS, modes);
p = property("keepAlive");
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, Boolean.TRUE);
@@ -73,4 +99,15 @@ public class DataSourceElementBeanInfo e
p.setValue(NOT_UNDEFINED, Boolean.TRUE);
p.setValue(DEFAULT, "");
}
+
+ /**
+ * @param tag
+ * @return int value for String
+ */
+ public static int getTransactionIsolationMode(String tag) {
+ if (!StringUtils.isEmpty(tag)) {
+ return TRANSACTION_ISOLATION_MAP.get(tag);
+ }
+ return -1;
+ }
}
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties?rev=1190010&r1=1190009&r2=1190010&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
(original)
+++
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources.properties
Thu Oct 27 20:40:43 2011
@@ -41,4 +41,6 @@ timeout.shortDescription=The pool blocks
trimInterval.displayName=Idle Cleanup Interval (ms)
trimInterval.shortDescription=The pool removes extra idle connections at
regular intervals
keepAlive.displayName=Keep-Alive
-keepAlive.shortDescription=Whether the pool should validate connections. If
no, Connection Age and Validation Query are ignored.
\ No newline at end of file
+keepAlive.shortDescription=Whether the pool should validate connections. If
no, Connection Age and Validation Query are ignored.
+transactionIsolation.displayName=Transaction Isolation
+transactionIsolation.shortDescription=Transaction Isolation Level
\ No newline at end of file
Modified:
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties?rev=1190010&r1=1190009&r2=1190010&view=diff
==============================================================================
---
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
(original)
+++
jakarta/jmeter/trunk/src/protocol/jdbc/org/apache/jmeter/protocol/jdbc/config/DataSourceElementResources_fr.properties
Thu Oct 27 20:40:43 2011
@@ -43,3 +43,5 @@ trimInterval.shortDescription=Le pool su
username.displayName=Identifiant
username.shortDescription=L'identifiant \u00E0 utiliser pour la connexion
\u00E0 la base de donn\u00E9es
varName.displayName=Nom de liaison du pool
+transactionIsolation.displayName=Isolation de la Transaction
+transactionIsolation.shortDescription=Niveau d'isolation de la transaction
\ No newline at end of file
Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL:
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=1190010&r1=1190009&r2=1190010&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Oct 27 20:40:43 2011
@@ -189,6 +189,7 @@ Mirror server now uses default port 8081
<li>Bug 52103 - Add automatic scrolling option to table visualizer</li>
<li>Bug 52097 - Save As should point to same folder that was used to open a
file if MRU list is used</li>
<li>Bug 52085 - Allow multiple selection in arguments panel</li>
+<li>Bug 52099 - Allow to set the transaction isolation in the JDBC Connection
Configuration</li>
</ul>
<h2>Non-functional changes</h2>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]