Terkon
4 years agoContributor
How to keep database connection open or how to use one connection per testcase
Hi community, For reasons I want to open a database connection to Oracle manually in groovy, not with the JDBC teststep. And I want to keep this connection open the whole testcase or maybe even ...
- 4 years ago
Hi JKolosova ,
thanks for the reply. Actually I was able to keep the connection as described in that link in my first post.
I put up the following script as "setup script" in the testcase level
//In a Setup Script import groovy.sql.Sql //try to create connection to database, if available. load this connection on context //if not, log error and continue //In order for this to work, you need to have jdbc driver jar file in $SOAPUI_HOME/bin/ext folder def dbString = context.expand( '${#Project#dbString}' ) def dbDriver = context.expand( '${#Project#dbDriver}' ) def dbUserName = context.expand( '${#Project#dbUserName}' ) def dbPassword = context.expand( '${#Project#dbPassword}' ) if ( (null != dbString) && (null != dbDriver) && (null != dbUserName) && (null != dbPassword) ) { try { connection = Sql.newInstance(dbString, dbUserName, dbPassword, dbDriver) context.setProperty("dbConn", connection) log.info "Hello DB" } catch (Exception e) { log.error "Could not establish connection to the database. " + e.toString() } }
The following I set up as a tear down script in the Testcase level
//In a TearDown Script //Close db connection if (context.dbConn) { context.dbConn.close() log.info "Byebye DB Connection." }
Then in a groovy teststep I am able to use this context.dbConn until the testcase is finished. Like this:
The query result are bit strange in format, thats why I put the log.info, so everybody who uses this, will see right away.
if (context.dbConn) { try{ log.info "Hello -connection available" //connection to the database def sql = context.dbConn rowSerienNr = sql.firstRow("select nSerienNr from TableSerialNr where product = 'Screen'") log.info "QueryResult " + rowSerienNr.toString() } catch(Exception e) { log.error e.toString() } } else {log.error "Error"}
With these scripts I was able to just open 200 DB connections on Oracle instead of serveral 10.000 in a load test using the default JDBC request.
All kudos should go to the guy who posted the info in the link I copied in my first post