On 01/06/2009, Kenneth Cox <[email protected]> wrote:
> I just started using JMeter-2.3.3 and set up a simple test plan with a
> postgres JDBC data source while reading the User Manual.  A simple test plan
> works with a Select Statement.  When I use a Prepared Select Statement
> instead, execution fails on the 2nd and subsequent queries with "This
> statement has been closed".
>
>  Am I doing something obviously wrong or are Prepared Select Statements not
> working with jmeter-2.3.3 and postgres-8.3.7?

There may be some interaction between the connection pooling and the
prepared statement cache.

Try setting "Max number of Connections" to 0 - this means the
connection pool will be bypassed, i.e. each thread will have its own
connection.

>  I have read the Component Reference in the User Manual, and have googled
> "jmeter prepared select postgresql" and "jmeter
> org.postgresql.util.PSQLException: This statement has been
> closed."  to no avail.
>
>  I have boiled the test plan down to one integer and the template1 database,
> provided below.
>
>  Thanks for any assistance,
>  Ken
>  --
>  <?xml version="1.0" encoding="UTF-8"?>
>  <jmeterTestPlan version="1.2" properties="2.1">
>    <hashTree>
>      <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test
>  Plan" enabled="true">
>        <stringProp name="TestPlan.comments"></stringProp>
>        <boolProp
> name="TestPlan.functional_mode">true</boolProp>
>        <boolProp
> name="TestPlan.serialize_threadgroups">false</boolProp>
>        <elementProp name="TestPlan.user_defined_variables"
>  elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments"
>  testname="User Defined Variables" enabled="true">
>          <collectionProp name="Arguments.arguments"/>
>        </elementProp>
>        <stringProp
> name="TestPlan.user_define_classpath"></stringProp>
>      </TestPlan>
>      <hashTree>
>        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>  testname="Thread Group" enabled="true">
>          <elementProp name="ThreadGroup.main_controller"
>  elementType="LoopController" guiclass="LoopControlPanel"
>  testclass="LoopController" testname="Loop Controller" enabled="true">
>            <boolProp
> name="LoopController.continue_forever">false</boolProp>
>            <stringProp
> name="LoopController.loops">2</stringProp>
>          </elementProp>
>          <stringProp
> name="ThreadGroup.num_threads">2</stringProp>
>          <stringProp
> name="ThreadGroup.ramp_time">0</stringProp>
>          <longProp
> name="ThreadGroup.start_time">1243879156000</longProp>
>          <longProp
> name="ThreadGroup.end_time">1243879156000</longProp>
>          <boolProp
> name="ThreadGroup.scheduler">false</boolProp>
>          <stringProp
>  name="ThreadGroup.on_sample_error">continue</stringProp>
>          <stringProp
> name="ThreadGroup.duration"></stringProp>
>          <stringProp name="ThreadGroup.delay"></stringProp>
>        </ThreadGroup>
>        <hashTree>
>          <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource"
>  testname="pool1 cfg" enabled="true">
>            <boolProp name="autocommit">true</boolProp>
>            <stringProp name="checkQuery">Select 1</stringProp>
>            <stringProp
> name="connectionAge">5000</stringProp>
>            <stringProp
> name="dataSource">pgpool1</stringProp>
>            <stringProp
> name="dbUrl">jdbc:postgresql://${dbhost}/${dbname}</stringProp>
>            <stringProp
> name="driver">org.postgresql.Driver</stringProp>
>            <boolProp name="keepAlive">true</boolProp>
>            <stringProp name="password"></stringProp>
>            <stringProp name="poolMax">4</stringProp>
>            <stringProp name="timeout">10000</stringProp>
>            <stringProp
> name="trimInterval">60000</stringProp>
>            <stringProp
> name="username">${dbuser}</stringProp>
>          </JDBCDataSource>
>          <hashTree/>
>          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
>  testname="JDBC Request" enabled="true">
>            <stringProp
> name="dataSource">pgpool1</stringProp>
>            <stringProp name="query">select ?</stringProp>
>            <stringProp name="queryArguments">1</stringProp>
>            <stringProp
> name="queryArgumentsTypes">INTEGER</stringProp>
>            <stringProp name="queryType">Prepared Select
>  Statement</stringProp>
>            <stringProp name="variableNames"></stringProp>
>          </JDBCSampler>
>          <hashTree/>
>          <ResultCollector guiclass="TableVisualizer"
>  testclass="ResultCollector" testname="View Results in Table"
>  enabled="true">
>            <boolProp
> name="ResultCollector.error_logging">false</boolProp>
>            <objProp>
>              <name>saveConfig</name>
>              <value class="SampleSaveConfiguration">
>                <time>true</time>
>                <latency>true</latency>
>                <timestamp>true</timestamp>
>                <success>true</success>
>                <label>true</label>
>                <code>true</code>
>                <message>true</message>
>                <threadName>true</threadName>
>                <dataType>true</dataType>
>                <encoding>false</encoding>
>                <assertions>true</assertions>
>                <subresults>true</subresults>
>                <responseData>false</responseData>
>                <samplerData>false</samplerData>
>                <xml>true</xml>
>                <fieldNames>false</fieldNames>
>                <responseHeaders>false</responseHeaders>
>                <requestHeaders>false</requestHeaders>
>
> <responseDataOnError>false</responseDataOnError>
>
> <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
>
> <assertionsResultsToSave>0</assertionsResultsToSave>
>                <bytes>true</bytes>
>              </value>
>            </objProp>
>            <stringProp
> name="filename">/tmp/take1.log</stringProp>
>          </ResultCollector>
>          <hashTree/>
>        </hashTree>
>        <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>  testname="User Defined Variables" enabled="true">
>          <collectionProp name="Arguments.arguments">
>            <elementProp name="dbhost" elementType="Argument">
>              <stringProp
> name="Argument.name">dbhost</stringProp>
>              <stringProp
> name="Argument.value">localhost</stringProp>
>              <stringProp
> name="Argument.metadata">=</stringProp>
>            </elementProp>
>            <elementProp name="dbname" elementType="Argument">
>              <stringProp
> name="Argument.name">dbname</stringProp>
>              <stringProp
> name="Argument.value">template1</stringProp>
>              <stringProp
> name="Argument.metadata">=</stringProp>
>            </elementProp>
>            <elementProp name="dbuser" elementType="Argument">
>              <stringProp
> name="Argument.name">dbuser</stringProp>
>              <stringProp
> name="Argument.value">postgres</stringProp>
>              <stringProp
> name="Argument.metadata">=</stringProp>
>            </elementProp>
>          </collectionProp>
>        </Arguments>
>        <hashTree/>
>      </hashTree>
>    </hashTree>
>  </jmeterTestPlan>
>
>  --
>  Using Opera's revolutionary e-mail client: http://www.opera.com/mail/
>
> ---------------------------------------------------------------------
>  To unsubscribe, e-mail:
> [email protected]
>  For additional commands, e-mail:
> [email protected]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to