You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by sebb <se...@gmail.com> on 2011/12/04 16:13:03 UTC

Re: svn commit: r1210001 - in /jmeter/trunk/xdocs: images/screenshots/jdbc-post-processor.png images/screenshots/jdbc-pre-processor.png usermanual/JDBC-Pre-Post-Processor.jmx usermanual/component_reference.xml

On 3 December 2011 20:53,  <pm...@apache.org> wrote:
> Author: pmouawad
> Date: Sat Dec  3 20:53:32 2011
> New Revision: 1210001
>
> URL: http://svn.apache.org/viewvc?rev=1210001&view=rev
> Log:
> Bug 52128 - Add JDBC pre- and post-processor
>
> Added:
>    jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png   (with props)
>    jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png   (with props)
>    jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx

Should really be in the demos/ subdirectory; please move it there (and
change any links)

Also needs EOL setting the same as other JMXs, ie LF (not native)

> Modified:
>    jmeter/trunk/xdocs/usermanual/component_reference.xml
>
> Added: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png?rev=1210001&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png?rev=1210001&view=auto
> ==============================================================================
> Binary file - no diff available.
>
> Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
> ------------------------------------------------------------------------------
>    svn:mime-type = application/octet-stream
>
> Added: jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx?rev=1210001&view=auto
> ==============================================================================
> --- jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx (added)
> +++ jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx Sat Dec  3 20:53:32 2011
> @@ -0,0 +1,445 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<jmeterTestPlan version="1.2" properties="2.1">
> +  <hashTree>
> +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Concurrent Valuation Test Plan" enabled="true">
> +      <stringProp name="TestPlan.comments">Execute a series of concurrent valuations</stringProp>
> +      <boolProp name="TestPlan.functional_mode">false</boolProp>
> +      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
> +      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="CalculateFees" elementType="Argument">
> +            <stringProp name="Argument.name">CalculateFees</stringProp>
> +            <stringProp name="Argument.value">1</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="CalculatePerformanceDetails" elementType="Argument">
> +            <stringProp name="Argument.name">CalculatePerformanceDetails</stringProp>
> +            <stringProp name="Argument.value">1</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="DriverURL" elementType="Argument">
> +            <stringProp name="Argument.name">DriverURL</stringProp>
> +            <stringProp name="Argument.value">jdbc:jtds:sqlserver:</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="DatabasePort" elementType="Argument">
> +            <stringProp name="Argument.name">DatabasePort</stringProp>
> +            <stringProp name="Argument.value">1433</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="UseMiddleTierValuationEngine" elementType="Argument">
> +            <stringProp name="Argument.name">UseMiddleTierValuationEngine</stringProp>
> +            <stringProp name="Argument.value">0</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="MiddleTierRequestTimeout" elementType="Argument">
> +            <stringProp name="Argument.name">MiddleTierRequestTimeout</stringProp>
> +            <stringProp name="Argument.value">500000</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="PricePropagationMode" elementType="Argument">
> +            <stringProp name="Argument.name">PricePropagationMode</stringProp>
> +            <stringProp name="Argument.value">2</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </elementProp>
> +      <stringProp name="TestPlan.user_define_classpath"></stringProp>
> +    </TestPlan>
> +    <hashTree>
> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="MI PCO config" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="PCOQuality" elementType="Argument">
> +            <stringProp name="Argument.name">PCOQuality</stringProp>
> +            <stringProp name="Argument.value">5</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="ValueDate" elementType="Argument">
> +            <stringProp name="Argument.name">ValueDate</stringProp>
> +            <stringProp name="Argument.value">2011-07-21</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="ReportingDate" elementType="Argument">
> +            <stringProp name="Argument.name">ReportingDate</stringProp>
> +            <stringProp name="Argument.value">2011-07-21 12:30:08.337</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </Arguments>
> +      <hashTree/>
> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="MI 440 SSD GAIA Config" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="Database" elementType="Argument">
> +            <stringProp name="Argument.name">Database</stringProp>
> +            <stringProp name="Argument.value">HSPAD_MI_440_SSD</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="DatabaseHost" elementType="Argument">
> +            <stringProp name="Argument.name">DatabaseHost</stringProp>
> +            <stringProp name="Argument.value">GAIA</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="DatabaseUser" elementType="Argument">
> +            <stringProp name="Argument.name">DatabaseUser</stringProp>
> +            <stringProp name="Argument.value">sa</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="DatabasePassword" elementType="Argument">
> +            <stringProp name="Argument.name">DatabasePassword</stringProp>
> +            <stringProp name="Argument.value">sa2008</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </Arguments>
> +      <hashTree/>
> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="MI PCO Pfo List" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="Pfo_1" elementType="Argument">
> +            <stringProp name="Argument.name">Pfo_1</stringProp>
> +            <stringProp name="Argument.value">1548</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="Pfo_2" elementType="Argument">
> +            <stringProp name="Argument.name">Pfo_2</stringProp>
> +            <stringProp name="Argument.value">1611</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="Pfo_3" elementType="Argument">
> +            <stringProp name="Argument.name">Pfo_3</stringProp>
> +            <stringProp name="Argument.value">1613</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +        <stringProp name="TestPlan.comments">CutOff Nr 11249,  2011-07-2 / 2011-07-21 12:30:08.337 / DailyNAV Estimate / Within Price Cut-Off</stringProp>
> +      </Arguments>
> +      <hashTree/>
> +      <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
> +        <boolProp name="autocommit">false</boolProp>
> +        <stringProp name="checkQuery"></stringProp>
> +        <stringProp name="connectionAge">5000</stringProp>
> +        <stringProp name="dataSource"></stringProp>
> +        <stringProp name="dbUrl">${DriverURL}//${DatabaseHost}:${DatabasePort}/${Database}</stringProp>
> +        <stringProp name="driver">net.sourceforge.jtds.jdbc.Driver</stringProp>
> +        <boolProp name="keepAlive">true</boolProp>
> +        <stringProp name="password">${DatabasePassword}</stringProp>
> +        <stringProp name="poolMax">25</stringProp>
> +        <stringProp name="timeout">10000</stringProp>
> +        <stringProp name="trimInterval">60000</stringProp>
> +        <stringProp name="username">${DatabaseUser}</stringProp>
> +        <stringProp name="transactionIsolation">4096</stringProp>
> +        <stringProp name="TestPlan.comments">Connect to local HSPAD_Demo_CO and set its isolation mode to SNAPSHOT (4096) and disable auto commit.</stringProp>
> +      </JDBCDataSource>
> +      <hashTree/>
> +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="3 Users" enabled="true">
> +        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
> +        <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">3</stringProp>
> +        </elementProp>
> +        <stringProp name="ThreadGroup.num_threads">3</stringProp>
> +        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
> +        <longProp name="ThreadGroup.start_time">1316530469000</longProp>
> +        <longProp name="ThreadGroup.end_time">1316530469000</longProp>
> +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
> +        <stringProp name="ThreadGroup.duration"></stringProp>
> +        <stringProp name="ThreadGroup.delay"></stringProp>
> +      </ThreadGroup>
> +      <hashTree>
> +        <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="PCO Valuation" enabled="true">
> +          <collectionProp name="ModuleController.node_path">
> +            <stringProp name="-1227702913">WorkBench</stringProp>
> +            <stringProp name="1465685679">Concurrent Valuation Test Plan</stringProp>
> +            <stringProp name="1372988285">PCO Valuation</stringProp>
> +          </collectionProp>
> +        </ModuleController>
> +        <hashTree/>
> +      </hashTree>
> +      <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
> +        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
> +        <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">1</stringProp>
> +        </elementProp>
> +        <stringProp name="ThreadGroup.num_threads">1</stringProp>
> +        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
> +        <longProp name="ThreadGroup.start_time">1320821253000</longProp>
> +        <longProp name="ThreadGroup.end_time">1320821253000</longProp>
> +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
> +        <stringProp name="ThreadGroup.duration"></stringProp>
> +        <stringProp name="ThreadGroup.delay"></stringProp>
> +      </SetupThreadGroup>
> +      <hashTree>
> +        <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Setup Middle Tier usage" enabled="true">
> +          <intProp name="ActionProcessor.action">1</intProp>
> +          <intProp name="ActionProcessor.target">0</intProp>
> +          <stringProp name="ActionProcessor.duration"></stringProp>
> +        </TestAction>
> +        <hashTree>
> +          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Set UseMiddleTierValuationEngine and Timeout" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="query">UPDATE T_SettingGlobal SET UseMiddleTierValuationEngine=?, MiddleTierRequestTimeout=?</stringProp>
> +            <stringProp name="queryArguments">${UseMiddleTierValuationEngine}, ${MiddleTierRequestTimeout}</stringProp>
> +            <stringProp name="queryArgumentsTypes">BIT, INTEGER</stringProp>
> +            <stringProp name="queryType">Prepared Update Statement</stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +          </JDBCPreProcessor>
> +          <hashTree/>
> +          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Commit" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="queryType">Commit</stringProp>
> +            <stringProp name="query"></stringProp>
> +            <stringProp name="queryArguments"></stringProp>
> +            <stringProp name="queryArgumentsTypes"></stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +          </JDBCPreProcessor>
> +          <hashTree/>
> +        </hashTree>
> +        <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Clear caches" enabled="true">
> +          <intProp name="ActionProcessor.action">1</intProp>
> +          <intProp name="ActionProcessor.target">0</intProp>
> +          <stringProp name="ActionProcessor.duration">0</stringProp>
> +        </TestAction>
> +        <hashTree>
> +          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Clear Buffers" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="queryType">Update Statement</stringProp>
> +            <stringProp name="query">DBCC DROPCLEANBUFFERS</stringProp>
> +            <stringProp name="queryArguments"></stringProp>
> +            <stringProp name="queryArgumentsTypes"></stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +          </JDBCPreProcessor>
> +          <hashTree/>
> +          <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Clear Proc Cache" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="queryType">Update Statement</stringProp>
> +            <stringProp name="query">DBCC FREEPROCCACHE</stringProp>
> +            <stringProp name="queryArguments"></stringProp>
> +            <stringProp name="queryArgumentsTypes"></stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +          </JDBCPreProcessor>
> +          <hashTree/>
> +        </hashTree>
> +      </hashTree>
> +      <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="PCO Valuation" enabled="true"/>
> +      <hashTree>
> +        <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Calculate PCO Transaction" enabled="true">
> +          <boolProp name="TransactionController.parent">true</boolProp>
> +        </TransactionController>
> +        <hashTree>
> +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="Begin Tran" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="queryType">Update Statement</stringProp>
> +            <stringProp name="query">BEGIN TRAN COMMIT TRAN</stringProp>
> +            <stringProp name="queryArguments"></stringProp>
> +            <stringProp name="queryArgumentsTypes"></stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +            <boolProp name="collectDiagnostics">false</boolProp>
> +          </JDBCSampler>
> +          <hashTree/>
> +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="Calculate Price cut off" enabled="true">
> +            <stringProp name="dataSource"></stringProp>
> +            <stringProp name="queryType">Callable Statement</stringProp>
> +            <stringProp name="query">PfoVal_Recalculate ?, ?, 1</stringProp>
> +            <stringProp name="queryArguments">${Pfo_1}, ${PfoValInstance}</stringProp>
> +            <stringProp name="queryArgumentsTypes">INTEGER, INTEGER</stringProp>
> +            <stringProp name="variableNames"></stringProp>
> +            <stringProp name="resultVariable"></stringProp>
> +            <boolProp name="collectDiagnostics">true</boolProp>
> +          </JDBCSampler>
> +          <hashTree>
> +            <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="Prepare Portfolio List for Price Cut-Off" enabled="true">
> +              <stringProp name="scriptLanguage">groovy</stringProp>
> +              <stringProp name="parameters"></stringProp>
> +              <stringProp name="filename"></stringProp>
> +              <stringProp name="script">import groovy.sql.Sql
> +import org.apache.jmeter.protocol.jdbc.config.DataSourceElement
> +try {
> +       // build Pfo List
> +       println(&quot;Building Portfolio List&quot;)
> +       def pfoList = &quot;&lt;PfoList&gt;&quot;
> +       def pfoNr = 1
> +       def pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
> +       while(pfo != null) {
> +               println(&quot;Pfo: $pfo&quot;);
> +               pfoList = pfoList + &quot;&lt;Pfo ID=&apos;$pfo&apos; EmptyValuation=&apos;true&apos; PropagatePrice=&apos;true&apos;/&gt;&quot;
> +               pfoNr++
> +               pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
> +       }
> +       pfoList = pfoList + &quot;&lt;/PfoList&gt;&quot;
> +       vars.put(&quot;PfoListXML&quot;, pfoList)
> +} catch (Exception e) {
> +       println(e.toString());
> +}</stringProp>
> +            </BSFPreProcessor>
> +            <hashTree/>
> +            <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Create Price Cut-Off" enabled="true">
> +              <stringProp name="dataSource"></stringProp>
> +              <stringProp name="query">CreatePriceCutOff ?, ?, ?, ?, ?, ?, ?, ?</stringProp>
> +              <stringProp name="queryArguments">${__threadNum},${ValueDate},${PCOQuality},${ReportingDate},]NULL[,${PCO},${PfoListXML},${PricePropagationMode}</stringProp>
> +              <stringProp name="queryArgumentsTypes">VARCHAR, DATE, INTEGER,TIMESTAMP,INTEGER,OUT INTEGER,CLOB,INTEGER</stringProp>
> +              <stringProp name="queryType">Callable Statement</stringProp>
> +              <stringProp name="resultVariable"></stringProp>
> +              <stringProp name="variableNames"></stringProp>
> +            </JDBCPreProcessor>
> +            <hashTree/>
> +            <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="Get Portfolio Valuation Instance from Price Cut-Off" enabled="true">
> +              <stringProp name="dataSource"></stringProp>
> +              <stringProp name="queryType">Prepared Select Statement</stringProp>
> +              <stringProp name="query">select Nr from PfoValInstance where Pfo=? AND PriceCutOff=?</stringProp>
> +              <stringProp name="queryArguments">${Pfo_1},${PCO}</stringProp>
> +              <stringProp name="queryArgumentsTypes">INTEGER,INTEGER</stringProp>
> +              <stringProp name="variableNames">PfoValInstance</stringProp>
> +              <stringProp name="resultVariable"></stringProp>
> +            </JDBCPreProcessor>
> +            <hashTree/>
> +            <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
> +              <stringProp name="dataSource"></stringProp>
> +              <stringProp name="query">DeletePriceCutOff ?</stringProp>
> +              <stringProp name="queryArguments">${PCO}</stringProp>
> +              <stringProp name="queryArgumentsTypes">INTEGER</stringProp>
> +              <stringProp name="queryType">Callable Statement</stringProp>
> +              <stringProp name="resultVariable"></stringProp>
> +              <stringProp name="variableNames"></stringProp>
> +            </JDBCPostProcessor>
> +            <hashTree/>
> +          </hashTree>
> +          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
> +            <stringProp name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp>
> +            <boolProp name="IfController.evaluateAll">false</boolProp>
> +          </IfController>
> +          <hashTree>
> +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="Commit" enabled="true">
> +              <stringProp name="dataSource"></stringProp>
> +              <stringProp name="queryType">Commit</stringProp>
> +              <stringProp name="query"></stringProp>
> +              <stringProp name="queryArguments"></stringProp>
> +              <stringProp name="queryArgumentsTypes"></stringProp>
> +              <stringProp name="variableNames"></stringProp>
> +              <stringProp name="resultVariable"></stringProp>
> +              <stringProp name="TestPlan.comments">Commit the transaction of the valuation</stringProp>
> +              <boolProp name="collectDiagnostics">false</boolProp>
> +            </JDBCSampler>
> +            <hashTree/>
> +          </hashTree>
> +          <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
> +            <stringProp name="IfController.condition">${JMeterThread.last_sample_ok}==false</stringProp>
> +            <boolProp name="IfController.evaluateAll">false</boolProp>
> +          </IfController>
> +          <hashTree>
> +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="Rollback" enabled="true">
> +              <stringProp name="dataSource"></stringProp>
> +              <stringProp name="queryType">Rollback</stringProp>
> +              <stringProp name="query"></stringProp>
> +              <stringProp name="queryArguments"></stringProp>
> +              <stringProp name="queryArgumentsTypes"></stringProp>
> +              <stringProp name="variableNames"></stringProp>
> +              <stringProp name="resultVariable"></stringProp>
> +              <boolProp name="collectDiagnostics">false</boolProp>
> +            </JDBCSampler>
> +            <hashTree/>
> +          </hashTree>
> +        </hashTree>
> +      </hashTree>
> +      <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
> +        <boolProp name="ResultCollector.error_logging">false</boolProp>
> +        <objProp>
> +          <name>saveConfig</name>
> +          <value class="SampleSaveConfiguration">
> +            <time>true</time>
> +            <latency>false</latency>
> +            <timestamp>true</timestamp>
> +            <success>false</success>
> +            <label>true</label>
> +            <code>false</code>
> +            <message>false</message>
> +            <threadName>true</threadName>
> +            <dataType>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>false</assertions>
> +            <subresults>false</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>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" 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"></stringProp>
> +      </ResultCollector>
> +      <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"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +    </hashTree>
> +  </hashTree>
> +</jmeterTestPlan>
>
> Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1210001&r1=1210000&r2=1210001&view=diff
> ==============================================================================
> --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
> +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Dec  3 20:53:32 2011
> @@ -4455,9 +4455,21 @@ For details, see <complink name="BSF Pre
>  <description>
>  <p>
>  The JDBC PreProcessor enables you to run some SQL statement just before a sample runs.
> -This can be useful if your JDBC Sample changes some data and you want to reset state to what it was before the JDBC sample run.
> +This can be useful if your JDBC Sample requires some data to be in DataBase and you cannot compute this in a setup Thread group.
> +</p>
> +<p>
> +See the following Test plan:
>  </p>
> +<links>
> +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC Pre/Post Processor</link>
> +</links>
> +<p>
> +In the linked test plan,"Create Price Cut-Off" JDBC PreProcessor calls a stored procedure to create a Price Cut-Off in Database,
> +this one will be used by "Calculate Price cut off".
> +
> +<figure width="1346" height="636" image="jdbc-pre-processor.png">Create Price Cut-Off Preprocessor</figure>
>
> +</p>
>  </description>
>  </component>
>
> @@ -4791,13 +4803,17 @@ For details, see the <complink name="BSF
>  <description>
>  <p>
>  The JDBC PostProcessor enables you to run some SQL statement just after a sample has run.
> -This can be useful if your JDBC Sample requires some data to be in DataBase and you cannot compute this in a setup Thread group.
> +This can be useful if your JDBC Sample changes some data and you want to reset state to what it was before the JDBC sample run.
>  </p>
>  </description>
>  </component>
> -
> -<a href="#">^</a>
> -
> +<links>
> +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC Pre/Post Processor</link>
> +</links>
> +<p>
> +In the linked test plan,"JDBC PostProcessor" JDBC PostProcessor calls a stored procedure to delete the Price Cut-Off that was created by PreProcessor from Database.
> +<figure width="1343" height="631" image="jdbc-post-processor.png">JDBC PostProcessor</figure>
> +</p>
>  </section>
>
>  <section name="&sect-num;.9 Miscellaneous Features" anchor="Miscellaneous_Features">
>
>

Re: svn commit: r1210001 - in /jmeter/trunk/xdocs: images/screenshots/jdbc-post-processor.png images/screenshots/jdbc-pre-processor.png usermanual/JDBC-Pre-Post-Processor.jmx usermanual/component_reference.xml

Posted by sebb <se...@gmail.com>.
On 4 December 2011 16:31, Philippe Mouawad <ph...@gmail.com> wrote:
> On Sun, Dec 4, 2011 at 4:13 PM, sebb <se...@gmail.com> wrote:
>
>> On 3 December 2011 20:53,  <pm...@apache.org> wrote:
>> > Author: pmouawad
>> > Date: Sat Dec  3 20:53:32 2011
>> > New Revision: 1210001
>> >
>> > URL: http://svn.apache.org/viewvc?rev=1210001&view=rev
>> > Log:
>> > Bug 52128 - Add JDBC pre- and post-processor
>> >
>> > Added:
>> >    jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png   (with
>> props)
>> >    jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png   (with
>> props)
>> >    jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx
>>
>> Should really be in the demos/ subdirectory; please move it there (and
>> change any links)
>>
>> FIxed
>
>> Also needs EOL setting the same as other JMXs, ie LF (not native)
>>
>> How do you do that ? I am on a Mac OSX

I meant the SVN eol-style property.

The JMX files are always created with LF line endings.

>> > Modified:
>> >    jmeter/trunk/xdocs/usermanual/component_reference.xml
>> >
>> > Added: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png?rev=1210001&view=auto
>> >
>> ==============================================================================
>> > Binary file - no diff available.
>> >
>> > Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
>> >
>> ------------------------------------------------------------------------------
>> >    svn:mime-type = application/octet-stream
>> >
>> > Added: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png?rev=1210001&view=auto
>> >
>> ==============================================================================
>> > Binary file - no diff available.
>> >
>> > Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
>> >
>> ------------------------------------------------------------------------------
>> >    svn:mime-type = application/octet-stream
>> >
>> > Added: jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx?rev=1210001&view=auto
>> >
>> ==============================================================================
>> > --- jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx (added)
>> > +++ jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx Sat Dec  3
>> 20:53:32 2011
>> > @@ -0,0 +1,445 @@
>> > +<?xml version="1.0" encoding="UTF-8"?>
>> > +<jmeterTestPlan version="1.2" properties="2.1">
>> > +  <hashTree>
>> > +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan"
>> testname="Concurrent Valuation Test Plan" enabled="true">
>> > +      <stringProp name="TestPlan.comments">Execute a series of
>> concurrent valuations</stringProp>
>> > +      <boolProp name="TestPlan.functional_mode">false</boolProp>
>> > +      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
>> > +      <elementProp name="TestPlan.user_defined_variables"
>> elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="User Defined Variables" enabled="true">
>> > +        <collectionProp name="Arguments.arguments">
>> > +          <elementProp name="CalculateFees" elementType="Argument">
>> > +            <stringProp name="Argument.name">CalculateFees</stringProp>
>> > +            <stringProp name="Argument.value">1</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="CalculatePerformanceDetails"
>> elementType="Argument">
>> > +            <stringProp
>> name="Argument.name">CalculatePerformanceDetails</stringProp>
>> > +            <stringProp name="Argument.value">1</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="DriverURL" elementType="Argument">
>> > +            <stringProp name="Argument.name">DriverURL</stringProp>
>> > +            <stringProp
>> name="Argument.value">jdbc:jtds:sqlserver:</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="DatabasePort" elementType="Argument">
>> > +            <stringProp name="Argument.name">DatabasePort</stringProp>
>> > +            <stringProp name="Argument.value">1433</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="UseMiddleTierValuationEngine"
>> elementType="Argument">
>> > +            <stringProp
>> name="Argument.name">UseMiddleTierValuationEngine</stringProp>
>> > +            <stringProp name="Argument.value">0</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="MiddleTierRequestTimeout"
>> elementType="Argument">
>> > +            <stringProp
>> name="Argument.name">MiddleTierRequestTimeout</stringProp>
>> > +            <stringProp name="Argument.value">500000</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="PricePropagationMode"
>> elementType="Argument">
>> > +            <stringProp
>> name="Argument.name">PricePropagationMode</stringProp>
>> > +            <stringProp name="Argument.value">2</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +        </collectionProp>
>> > +      </elementProp>
>> > +      <stringProp name="TestPlan.user_define_classpath"></stringProp>
>> > +    </TestPlan>
>> > +    <hashTree>
>> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="MI PCO config" enabled="true">
>> > +        <collectionProp name="Arguments.arguments">
>> > +          <elementProp name="PCOQuality" elementType="Argument">
>> > +            <stringProp name="Argument.name">PCOQuality</stringProp>
>> > +            <stringProp name="Argument.value">5</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="ValueDate" elementType="Argument">
>> > +            <stringProp name="Argument.name">ValueDate</stringProp>
>> > +            <stringProp name="Argument.value">2011-07-21</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="ReportingDate" elementType="Argument">
>> > +            <stringProp name="Argument.name">ReportingDate</stringProp>
>> > +            <stringProp name="Argument.value">2011-07-21
>> 12:30:08.337</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +        </collectionProp>
>> > +      </Arguments>
>> > +      <hashTree/>
>> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="MI 440 SSD GAIA Config" enabled="true">
>> > +        <collectionProp name="Arguments.arguments">
>> > +          <elementProp name="Database" elementType="Argument">
>> > +            <stringProp name="Argument.name">Database</stringProp>
>> > +            <stringProp
>> name="Argument.value">HSPAD_MI_440_SSD</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="DatabaseHost" elementType="Argument">
>> > +            <stringProp name="Argument.name">DatabaseHost</stringProp>
>> > +            <stringProp name="Argument.value">GAIA</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="DatabaseUser" elementType="Argument">
>> > +            <stringProp name="Argument.name">DatabaseUser</stringProp>
>> > +            <stringProp name="Argument.value">sa</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="DatabasePassword" elementType="Argument">
>> > +            <stringProp
>> name="Argument.name">DatabasePassword</stringProp>
>> > +            <stringProp name="Argument.value">sa2008</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +        </collectionProp>
>> > +      </Arguments>
>> > +      <hashTree/>
>> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="MI PCO Pfo List" enabled="true">
>> > +        <collectionProp name="Arguments.arguments">
>> > +          <elementProp name="Pfo_1" elementType="Argument">
>> > +            <stringProp name="Argument.name">Pfo_1</stringProp>
>> > +            <stringProp name="Argument.value">1548</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="Pfo_2" elementType="Argument">
>> > +            <stringProp name="Argument.name">Pfo_2</stringProp>
>> > +            <stringProp name="Argument.value">1611</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +          <elementProp name="Pfo_3" elementType="Argument">
>> > +            <stringProp name="Argument.name">Pfo_3</stringProp>
>> > +            <stringProp name="Argument.value">1613</stringProp>
>> > +            <stringProp name="Argument.metadata">=</stringProp>
>> > +          </elementProp>
>> > +        </collectionProp>
>> > +        <stringProp name="TestPlan.comments">CutOff Nr 11249,
>>  2011-07-2 / 2011-07-21 12:30:08.337 / DailyNAV Estimate / Within Price
>> Cut-Off</stringProp>
>> > +      </Arguments>
>> > +      <hashTree/>
>> > +      <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource"
>> testname="JDBC Connection Configuration" enabled="true">
>> > +        <boolProp name="autocommit">false</boolProp>
>> > +        <stringProp name="checkQuery"></stringProp>
>> > +        <stringProp name="connectionAge">5000</stringProp>
>> > +        <stringProp name="dataSource"></stringProp>
>> > +        <stringProp
>> name="dbUrl">${DriverURL}//${DatabaseHost}:${DatabasePort}/${Database}</stringProp>
>> > +        <stringProp
>> name="driver">net.sourceforge.jtds.jdbc.Driver</stringProp>
>> > +        <boolProp name="keepAlive">true</boolProp>
>> > +        <stringProp name="password">${DatabasePassword}</stringProp>
>> > +        <stringProp name="poolMax">25</stringProp>
>> > +        <stringProp name="timeout">10000</stringProp>
>> > +        <stringProp name="trimInterval">60000</stringProp>
>> > +        <stringProp name="username">${DatabaseUser}</stringProp>
>> > +        <stringProp name="transactionIsolation">4096</stringProp>
>> > +        <stringProp name="TestPlan.comments">Connect to local
>> HSPAD_Demo_CO and set its isolation mode to SNAPSHOT (4096) and disable
>> auto commit.</stringProp>
>> > +      </JDBCDataSource>
>> > +      <hashTree/>
>> > +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>> testname="3 Users" enabled="true">
>> > +        <stringProp
>> name="ThreadGroup.on_sample_error">continue</stringProp>
>> > +        <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">3</stringProp>
>> > +        </elementProp>
>> > +        <stringProp name="ThreadGroup.num_threads">3</stringProp>
>> > +        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
>> > +        <longProp name="ThreadGroup.start_time">1316530469000</longProp>
>> > +        <longProp name="ThreadGroup.end_time">1316530469000</longProp>
>> > +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
>> > +        <stringProp name="ThreadGroup.duration"></stringProp>
>> > +        <stringProp name="ThreadGroup.delay"></stringProp>
>> > +      </ThreadGroup>
>> > +      <hashTree>
>> > +        <ModuleController guiclass="ModuleControllerGui"
>> testclass="ModuleController" testname="PCO Valuation" enabled="true">
>> > +          <collectionProp name="ModuleController.node_path">
>> > +            <stringProp name="-1227702913">WorkBench</stringProp>
>> > +            <stringProp name="1465685679">Concurrent Valuation Test
>> Plan</stringProp>
>> > +            <stringProp name="1372988285">PCO Valuation</stringProp>
>> > +          </collectionProp>
>> > +        </ModuleController>
>> > +        <hashTree/>
>> > +      </hashTree>
>> > +      <SetupThreadGroup guiclass="SetupThreadGroupGui"
>> testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
>> > +        <stringProp
>> name="ThreadGroup.on_sample_error">continue</stringProp>
>> > +        <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">1</stringProp>
>> > +        </elementProp>
>> > +        <stringProp name="ThreadGroup.num_threads">1</stringProp>
>> > +        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
>> > +        <longProp name="ThreadGroup.start_time">1320821253000</longProp>
>> > +        <longProp name="ThreadGroup.end_time">1320821253000</longProp>
>> > +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
>> > +        <stringProp name="ThreadGroup.duration"></stringProp>
>> > +        <stringProp name="ThreadGroup.delay"></stringProp>
>> > +      </SetupThreadGroup>
>> > +      <hashTree>
>> > +        <TestAction guiclass="TestActionGui" testclass="TestAction"
>> testname="Setup Middle Tier usage" enabled="true">
>> > +          <intProp name="ActionProcessor.action">1</intProp>
>> > +          <intProp name="ActionProcessor.target">0</intProp>
>> > +          <stringProp name="ActionProcessor.duration"></stringProp>
>> > +        </TestAction>
>> > +        <hashTree>
>> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Set UseMiddleTierValuationEngine and
>> Timeout" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="query">UPDATE T_SettingGlobal SET
>> UseMiddleTierValuationEngine=?, MiddleTierRequestTimeout=?</stringProp>
>> > +            <stringProp
>> name="queryArguments">${UseMiddleTierValuationEngine},
>> ${MiddleTierRequestTimeout}</stringProp>
>> > +            <stringProp name="queryArgumentsTypes">BIT,
>> INTEGER</stringProp>
>> > +            <stringProp name="queryType">Prepared Update
>> Statement</stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +          </JDBCPreProcessor>
>> > +          <hashTree/>
>> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Commit" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="queryType">Commit</stringProp>
>> > +            <stringProp name="query"></stringProp>
>> > +            <stringProp name="queryArguments"></stringProp>
>> > +            <stringProp name="queryArgumentsTypes"></stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +          </JDBCPreProcessor>
>> > +          <hashTree/>
>> > +        </hashTree>
>> > +        <TestAction guiclass="TestActionGui" testclass="TestAction"
>> testname="Clear caches" enabled="true">
>> > +          <intProp name="ActionProcessor.action">1</intProp>
>> > +          <intProp name="ActionProcessor.target">0</intProp>
>> > +          <stringProp name="ActionProcessor.duration">0</stringProp>
>> > +        </TestAction>
>> > +        <hashTree>
>> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Clear Buffers" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="queryType">Update Statement</stringProp>
>> > +            <stringProp name="query">DBCC DROPCLEANBUFFERS</stringProp>
>> > +            <stringProp name="queryArguments"></stringProp>
>> > +            <stringProp name="queryArgumentsTypes"></stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +          </JDBCPreProcessor>
>> > +          <hashTree/>
>> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Clear Proc Cache" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="queryType">Update Statement</stringProp>
>> > +            <stringProp name="query">DBCC FREEPROCCACHE</stringProp>
>> > +            <stringProp name="queryArguments"></stringProp>
>> > +            <stringProp name="queryArgumentsTypes"></stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +          </JDBCPreProcessor>
>> > +          <hashTree/>
>> > +        </hashTree>
>> > +      </hashTree>
>> > +      <TestFragmentController guiclass="TestFragmentControllerGui"
>> testclass="TestFragmentController" testname="PCO Valuation" enabled="true"/>
>> > +      <hashTree>
>> > +        <TransactionController guiclass="TransactionControllerGui"
>> testclass="TransactionController" testname="Calculate PCO Transaction"
>> enabled="true">
>> > +          <boolProp name="TransactionController.parent">true</boolProp>
>> > +        </TransactionController>
>> > +        <hashTree>
>> > +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
>> testname="Begin Tran" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="queryType">Update Statement</stringProp>
>> > +            <stringProp name="query">BEGIN TRAN COMMIT TRAN</stringProp>
>> > +            <stringProp name="queryArguments"></stringProp>
>> > +            <stringProp name="queryArgumentsTypes"></stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +            <boolProp name="collectDiagnostics">false</boolProp>
>> > +          </JDBCSampler>
>> > +          <hashTree/>
>> > +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
>> testname="Calculate Price cut off" enabled="true">
>> > +            <stringProp name="dataSource"></stringProp>
>> > +            <stringProp name="queryType">Callable Statement</stringProp>
>> > +            <stringProp name="query">PfoVal_Recalculate ?, ?,
>> 1</stringProp>
>> > +            <stringProp name="queryArguments">${Pfo_1},
>> ${PfoValInstance}</stringProp>
>> > +            <stringProp name="queryArgumentsTypes">INTEGER,
>> INTEGER</stringProp>
>> > +            <stringProp name="variableNames"></stringProp>
>> > +            <stringProp name="resultVariable"></stringProp>
>> > +            <boolProp name="collectDiagnostics">true</boolProp>
>> > +          </JDBCSampler>
>> > +          <hashTree>
>> > +            <BSFPreProcessor guiclass="TestBeanGUI"
>> testclass="BSFPreProcessor" testname="Prepare Portfolio List for Price
>> Cut-Off" enabled="true">
>> > +              <stringProp name="scriptLanguage">groovy</stringProp>
>> > +              <stringProp name="parameters"></stringProp>
>> > +              <stringProp name="filename"></stringProp>
>> > +              <stringProp name="script">import groovy.sql.Sql
>> > +import org.apache.jmeter.protocol.jdbc.config.DataSourceElement
>> > +try {
>> > +       // build Pfo List
>> > +       println(&quot;Building Portfolio List&quot;)
>> > +       def pfoList = &quot;&lt;PfoList&gt;&quot;
>> > +       def pfoNr = 1
>> > +       def pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
>> > +       while(pfo != null) {
>> > +               println(&quot;Pfo: $pfo&quot;);
>> > +               pfoList = pfoList + &quot;&lt;Pfo ID=&apos;$pfo&apos;
>> EmptyValuation=&apos;true&apos; PropagatePrice=&apos;true&apos;/&gt;&quot;
>> > +               pfoNr++
>> > +               pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
>> > +       }
>> > +       pfoList = pfoList + &quot;&lt;/PfoList&gt;&quot;
>> > +       vars.put(&quot;PfoListXML&quot;, pfoList)
>> > +} catch (Exception e) {
>> > +       println(e.toString());
>> > +}</stringProp>
>> > +            </BSFPreProcessor>
>> > +            <hashTree/>
>> > +            <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Create Price Cut-Off" enabled="true">
>> > +              <stringProp name="dataSource"></stringProp>
>> > +              <stringProp name="query">CreatePriceCutOff ?, ?, ?, ?, ?,
>> ?, ?, ?</stringProp>
>> > +              <stringProp
>> name="queryArguments">${__threadNum},${ValueDate},${PCOQuality},${ReportingDate},]NULL[,${PCO},${PfoListXML},${PricePropagationMode}</stringProp>
>> > +              <stringProp name="queryArgumentsTypes">VARCHAR, DATE,
>> INTEGER,TIMESTAMP,INTEGER,OUT INTEGER,CLOB,INTEGER</stringProp>
>> > +              <stringProp name="queryType">Callable
>> Statement</stringProp>
>> > +              <stringProp name="resultVariable"></stringProp>
>> > +              <stringProp name="variableNames"></stringProp>
>> > +            </JDBCPreProcessor>
>> > +            <hashTree/>
>> > +            <JDBCPreProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPreProcessor" testname="Get Portfolio Valuation Instance
>> from Price Cut-Off" enabled="true">
>> > +              <stringProp name="dataSource"></stringProp>
>> > +              <stringProp name="queryType">Prepared Select
>> Statement</stringProp>
>> > +              <stringProp name="query">select Nr from PfoValInstance
>> where Pfo=? AND PriceCutOff=?</stringProp>
>> > +              <stringProp
>> name="queryArguments">${Pfo_1},${PCO}</stringProp>
>> > +              <stringProp
>> name="queryArgumentsTypes">INTEGER,INTEGER</stringProp>
>> > +              <stringProp
>> name="variableNames">PfoValInstance</stringProp>
>> > +              <stringProp name="resultVariable"></stringProp>
>> > +            </JDBCPreProcessor>
>> > +            <hashTree/>
>> > +            <JDBCPostProcessor guiclass="TestBeanGUI"
>> testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
>> > +              <stringProp name="dataSource"></stringProp>
>> > +              <stringProp name="query">DeletePriceCutOff ?</stringProp>
>> > +              <stringProp name="queryArguments">${PCO}</stringProp>
>> > +              <stringProp
>> name="queryArgumentsTypes">INTEGER</stringProp>
>> > +              <stringProp name="queryType">Callable
>> Statement</stringProp>
>> > +              <stringProp name="resultVariable"></stringProp>
>> > +              <stringProp name="variableNames"></stringProp>
>> > +            </JDBCPostProcessor>
>> > +            <hashTree/>
>> > +          </hashTree>
>> > +          <IfController guiclass="IfControllerPanel"
>> testclass="IfController" testname="If Controller" enabled="true">
>> > +            <stringProp
>> name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp>
>> > +            <boolProp name="IfController.evaluateAll">false</boolProp>
>> > +          </IfController>
>> > +          <hashTree>
>> > +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
>> testname="Commit" enabled="true">
>> > +              <stringProp name="dataSource"></stringProp>
>> > +              <stringProp name="queryType">Commit</stringProp>
>> > +              <stringProp name="query"></stringProp>
>> > +              <stringProp name="queryArguments"></stringProp>
>> > +              <stringProp name="queryArgumentsTypes"></stringProp>
>> > +              <stringProp name="variableNames"></stringProp>
>> > +              <stringProp name="resultVariable"></stringProp>
>> > +              <stringProp name="TestPlan.comments">Commit the
>> transaction of the valuation</stringProp>
>> > +              <boolProp name="collectDiagnostics">false</boolProp>
>> > +            </JDBCSampler>
>> > +            <hashTree/>
>> > +          </hashTree>
>> > +          <IfController guiclass="IfControllerPanel"
>> testclass="IfController" testname="If Controller" enabled="true">
>> > +            <stringProp
>> name="IfController.condition">${JMeterThread.last_sample_ok}==false</stringProp>
>> > +            <boolProp name="IfController.evaluateAll">false</boolProp>
>> > +          </IfController>
>> > +          <hashTree>
>> > +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
>> testname="Rollback" enabled="true">
>> > +              <stringProp name="dataSource"></stringProp>
>> > +              <stringProp name="queryType">Rollback</stringProp>
>> > +              <stringProp name="query"></stringProp>
>> > +              <stringProp name="queryArguments"></stringProp>
>> > +              <stringProp name="queryArgumentsTypes"></stringProp>
>> > +              <stringProp name="variableNames"></stringProp>
>> > +              <stringProp name="resultVariable"></stringProp>
>> > +              <boolProp name="collectDiagnostics">false</boolProp>
>> > +            </JDBCSampler>
>> > +            <hashTree/>
>> > +          </hashTree>
>> > +        </hashTree>
>> > +      </hashTree>
>> > +      <ResultCollector guiclass="SummaryReport"
>> testclass="ResultCollector" testname="Summary Report" enabled="true">
>> > +        <boolProp name="ResultCollector.error_logging">false</boolProp>
>> > +        <objProp>
>> > +          <name>saveConfig</name>
>> > +          <value class="SampleSaveConfiguration">
>> > +            <time>true</time>
>> > +            <latency>false</latency>
>> > +            <timestamp>true</timestamp>
>> > +            <success>false</success>
>> > +            <label>true</label>
>> > +            <code>false</code>
>> > +            <message>false</message>
>> > +            <threadName>true</threadName>
>> > +            <dataType>false</dataType>
>> > +            <encoding>false</encoding>
>> > +            <assertions>false</assertions>
>> > +            <subresults>false</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>
>> > +          </value>
>> > +        </objProp>
>> > +        <stringProp name="filename"></stringProp>
>> > +      </ResultCollector>
>> > +      <hashTree/>
>> > +      <ResultCollector guiclass="ViewResultsFullVisualizer"
>> testclass="ResultCollector" testname="View Results Tree" 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"></stringProp>
>> > +      </ResultCollector>
>> > +      <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"></stringProp>
>> > +      </ResultCollector>
>> > +      <hashTree/>
>> > +    </hashTree>
>> > +  </hashTree>
>> > +</jmeterTestPlan>
>> >
>> > Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
>> > URL:
>> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1210001&r1=1210000&r2=1210001&view=diff
>> >
>> ==============================================================================
>> > --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
>> > +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Dec  3
>> 20:53:32 2011
>> > @@ -4455,9 +4455,21 @@ For details, see <complink name="BSF Pre
>> >  <description>
>> >  <p>
>> >  The JDBC PreProcessor enables you to run some SQL statement just before
>> a sample runs.
>> > -This can be useful if your JDBC Sample changes some data and you want
>> to reset state to what it was before the JDBC sample run.
>> > +This can be useful if your JDBC Sample requires some data to be in
>> DataBase and you cannot compute this in a setup Thread group.
>> > +</p>
>> > +<p>
>> > +See the following Test plan:
>> >  </p>
>> > +<links>
>> > +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC
>> Pre/Post Processor</link>
>> > +</links>
>> > +<p>
>> > +In the linked test plan,"Create Price Cut-Off" JDBC PreProcessor calls
>> a stored procedure to create a Price Cut-Off in Database,
>> > +this one will be used by "Calculate Price cut off".
>> > +
>> > +<figure width="1346" height="636" image="jdbc-pre-processor.png">Create
>> Price Cut-Off Preprocessor</figure>
>> >
>> > +</p>
>> >  </description>
>> >  </component>
>> >
>> > @@ -4791,13 +4803,17 @@ For details, see the <complink name="BSF
>> >  <description>
>> >  <p>
>> >  The JDBC PostProcessor enables you to run some SQL statement just after
>> a sample has run.
>> > -This can be useful if your JDBC Sample requires some data to be in
>> DataBase and you cannot compute this in a setup Thread group.
>> > +This can be useful if your JDBC Sample changes some data and you want
>> to reset state to what it was before the JDBC sample run.
>> >  </p>
>> >  </description>
>> >  </component>
>> > -
>> > -<a href="#">^</a>
>> > -
>> > +<links>
>> > +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC
>> Pre/Post Processor</link>
>> > +</links>
>> > +<p>
>> > +In the linked test plan,"JDBC PostProcessor" JDBC PostProcessor calls a
>> stored procedure to delete the Price Cut-Off that was created by
>> PreProcessor from Database.
>> > +<figure width="1343" height="631" image="jdbc-post-processor.png">JDBC
>> PostProcessor</figure>
>> > +</p>
>> >  </section>
>> >
>> >  <section name="&sect-num;.9 Miscellaneous Features"
>> anchor="Miscellaneous_Features">
>> >
>> >
>>
>
>
>
> --
> Cordialement.
> Philippe Mouawad.

Re: svn commit: r1210001 - in /jmeter/trunk/xdocs: images/screenshots/jdbc-post-processor.png images/screenshots/jdbc-pre-processor.png usermanual/JDBC-Pre-Post-Processor.jmx usermanual/component_reference.xml

Posted by Philippe Mouawad <ph...@gmail.com>.
On Sun, Dec 4, 2011 at 4:13 PM, sebb <se...@gmail.com> wrote:

> On 3 December 2011 20:53,  <pm...@apache.org> wrote:
> > Author: pmouawad
> > Date: Sat Dec  3 20:53:32 2011
> > New Revision: 1210001
> >
> > URL: http://svn.apache.org/viewvc?rev=1210001&view=rev
> > Log:
> > Bug 52128 - Add JDBC pre- and post-processor
> >
> > Added:
> >    jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png   (with
> props)
> >    jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png   (with
> props)
> >    jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx
>
> Should really be in the demos/ subdirectory; please move it there (and
> change any links)
>
> FIxed

> Also needs EOL setting the same as other JMXs, ie LF (not native)
>
> How do you do that ? I am on a Mac OSX

> > Modified:
> >    jmeter/trunk/xdocs/usermanual/component_reference.xml
> >
> > Added: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png?rev=1210001&view=auto
> >
> ==============================================================================
> > Binary file - no diff available.
> >
> > Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-post-processor.png
> >
> ------------------------------------------------------------------------------
> >    svn:mime-type = application/octet-stream
> >
> > Added: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png?rev=1210001&view=auto
> >
> ==============================================================================
> > Binary file - no diff available.
> >
> > Propchange: jmeter/trunk/xdocs/images/screenshots/jdbc-pre-processor.png
> >
> ------------------------------------------------------------------------------
> >    svn:mime-type = application/octet-stream
> >
> > Added: jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx?rev=1210001&view=auto
> >
> ==============================================================================
> > --- jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx (added)
> > +++ jmeter/trunk/xdocs/usermanual/JDBC-Pre-Post-Processor.jmx Sat Dec  3
> 20:53:32 2011
> > @@ -0,0 +1,445 @@
> > +<?xml version="1.0" encoding="UTF-8"?>
> > +<jmeterTestPlan version="1.2" properties="2.1">
> > +  <hashTree>
> > +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan"
> testname="Concurrent Valuation Test Plan" enabled="true">
> > +      <stringProp name="TestPlan.comments">Execute a series of
> concurrent valuations</stringProp>
> > +      <boolProp name="TestPlan.functional_mode">false</boolProp>
> > +      <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
> > +      <elementProp name="TestPlan.user_defined_variables"
> elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments"
> testname="User Defined Variables" enabled="true">
> > +        <collectionProp name="Arguments.arguments">
> > +          <elementProp name="CalculateFees" elementType="Argument">
> > +            <stringProp name="Argument.name">CalculateFees</stringProp>
> > +            <stringProp name="Argument.value">1</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="CalculatePerformanceDetails"
> elementType="Argument">
> > +            <stringProp
> name="Argument.name">CalculatePerformanceDetails</stringProp>
> > +            <stringProp name="Argument.value">1</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="DriverURL" elementType="Argument">
> > +            <stringProp name="Argument.name">DriverURL</stringProp>
> > +            <stringProp
> name="Argument.value">jdbc:jtds:sqlserver:</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="DatabasePort" elementType="Argument">
> > +            <stringProp name="Argument.name">DatabasePort</stringProp>
> > +            <stringProp name="Argument.value">1433</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="UseMiddleTierValuationEngine"
> elementType="Argument">
> > +            <stringProp
> name="Argument.name">UseMiddleTierValuationEngine</stringProp>
> > +            <stringProp name="Argument.value">0</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="MiddleTierRequestTimeout"
> elementType="Argument">
> > +            <stringProp
> name="Argument.name">MiddleTierRequestTimeout</stringProp>
> > +            <stringProp name="Argument.value">500000</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="PricePropagationMode"
> elementType="Argument">
> > +            <stringProp
> name="Argument.name">PricePropagationMode</stringProp>
> > +            <stringProp name="Argument.value">2</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +        </collectionProp>
> > +      </elementProp>
> > +      <stringProp name="TestPlan.user_define_classpath"></stringProp>
> > +    </TestPlan>
> > +    <hashTree>
> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
> testname="MI PCO config" enabled="true">
> > +        <collectionProp name="Arguments.arguments">
> > +          <elementProp name="PCOQuality" elementType="Argument">
> > +            <stringProp name="Argument.name">PCOQuality</stringProp>
> > +            <stringProp name="Argument.value">5</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="ValueDate" elementType="Argument">
> > +            <stringProp name="Argument.name">ValueDate</stringProp>
> > +            <stringProp name="Argument.value">2011-07-21</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="ReportingDate" elementType="Argument">
> > +            <stringProp name="Argument.name">ReportingDate</stringProp>
> > +            <stringProp name="Argument.value">2011-07-21
> 12:30:08.337</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +        </collectionProp>
> > +      </Arguments>
> > +      <hashTree/>
> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
> testname="MI 440 SSD GAIA Config" enabled="true">
> > +        <collectionProp name="Arguments.arguments">
> > +          <elementProp name="Database" elementType="Argument">
> > +            <stringProp name="Argument.name">Database</stringProp>
> > +            <stringProp
> name="Argument.value">HSPAD_MI_440_SSD</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="DatabaseHost" elementType="Argument">
> > +            <stringProp name="Argument.name">DatabaseHost</stringProp>
> > +            <stringProp name="Argument.value">GAIA</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="DatabaseUser" elementType="Argument">
> > +            <stringProp name="Argument.name">DatabaseUser</stringProp>
> > +            <stringProp name="Argument.value">sa</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="DatabasePassword" elementType="Argument">
> > +            <stringProp
> name="Argument.name">DatabasePassword</stringProp>
> > +            <stringProp name="Argument.value">sa2008</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +        </collectionProp>
> > +      </Arguments>
> > +      <hashTree/>
> > +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
> testname="MI PCO Pfo List" enabled="true">
> > +        <collectionProp name="Arguments.arguments">
> > +          <elementProp name="Pfo_1" elementType="Argument">
> > +            <stringProp name="Argument.name">Pfo_1</stringProp>
> > +            <stringProp name="Argument.value">1548</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="Pfo_2" elementType="Argument">
> > +            <stringProp name="Argument.name">Pfo_2</stringProp>
> > +            <stringProp name="Argument.value">1611</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +          <elementProp name="Pfo_3" elementType="Argument">
> > +            <stringProp name="Argument.name">Pfo_3</stringProp>
> > +            <stringProp name="Argument.value">1613</stringProp>
> > +            <stringProp name="Argument.metadata">=</stringProp>
> > +          </elementProp>
> > +        </collectionProp>
> > +        <stringProp name="TestPlan.comments">CutOff Nr 11249,
>  2011-07-2 / 2011-07-21 12:30:08.337 / DailyNAV Estimate / Within Price
> Cut-Off</stringProp>
> > +      </Arguments>
> > +      <hashTree/>
> > +      <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource"
> testname="JDBC Connection Configuration" enabled="true">
> > +        <boolProp name="autocommit">false</boolProp>
> > +        <stringProp name="checkQuery"></stringProp>
> > +        <stringProp name="connectionAge">5000</stringProp>
> > +        <stringProp name="dataSource"></stringProp>
> > +        <stringProp
> name="dbUrl">${DriverURL}//${DatabaseHost}:${DatabasePort}/${Database}</stringProp>
> > +        <stringProp
> name="driver">net.sourceforge.jtds.jdbc.Driver</stringProp>
> > +        <boolProp name="keepAlive">true</boolProp>
> > +        <stringProp name="password">${DatabasePassword}</stringProp>
> > +        <stringProp name="poolMax">25</stringProp>
> > +        <stringProp name="timeout">10000</stringProp>
> > +        <stringProp name="trimInterval">60000</stringProp>
> > +        <stringProp name="username">${DatabaseUser}</stringProp>
> > +        <stringProp name="transactionIsolation">4096</stringProp>
> > +        <stringProp name="TestPlan.comments">Connect to local
> HSPAD_Demo_CO and set its isolation mode to SNAPSHOT (4096) and disable
> auto commit.</stringProp>
> > +      </JDBCDataSource>
> > +      <hashTree/>
> > +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
> testname="3 Users" enabled="true">
> > +        <stringProp
> name="ThreadGroup.on_sample_error">continue</stringProp>
> > +        <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">3</stringProp>
> > +        </elementProp>
> > +        <stringProp name="ThreadGroup.num_threads">3</stringProp>
> > +        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
> > +        <longProp name="ThreadGroup.start_time">1316530469000</longProp>
> > +        <longProp name="ThreadGroup.end_time">1316530469000</longProp>
> > +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
> > +        <stringProp name="ThreadGroup.duration"></stringProp>
> > +        <stringProp name="ThreadGroup.delay"></stringProp>
> > +      </ThreadGroup>
> > +      <hashTree>
> > +        <ModuleController guiclass="ModuleControllerGui"
> testclass="ModuleController" testname="PCO Valuation" enabled="true">
> > +          <collectionProp name="ModuleController.node_path">
> > +            <stringProp name="-1227702913">WorkBench</stringProp>
> > +            <stringProp name="1465685679">Concurrent Valuation Test
> Plan</stringProp>
> > +            <stringProp name="1372988285">PCO Valuation</stringProp>
> > +          </collectionProp>
> > +        </ModuleController>
> > +        <hashTree/>
> > +      </hashTree>
> > +      <SetupThreadGroup guiclass="SetupThreadGroupGui"
> testclass="SetupThreadGroup" testname="setUp Thread Group" enabled="true">
> > +        <stringProp
> name="ThreadGroup.on_sample_error">continue</stringProp>
> > +        <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">1</stringProp>
> > +        </elementProp>
> > +        <stringProp name="ThreadGroup.num_threads">1</stringProp>
> > +        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
> > +        <longProp name="ThreadGroup.start_time">1320821253000</longProp>
> > +        <longProp name="ThreadGroup.end_time">1320821253000</longProp>
> > +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
> > +        <stringProp name="ThreadGroup.duration"></stringProp>
> > +        <stringProp name="ThreadGroup.delay"></stringProp>
> > +      </SetupThreadGroup>
> > +      <hashTree>
> > +        <TestAction guiclass="TestActionGui" testclass="TestAction"
> testname="Setup Middle Tier usage" enabled="true">
> > +          <intProp name="ActionProcessor.action">1</intProp>
> > +          <intProp name="ActionProcessor.target">0</intProp>
> > +          <stringProp name="ActionProcessor.duration"></stringProp>
> > +        </TestAction>
> > +        <hashTree>
> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Set UseMiddleTierValuationEngine and
> Timeout" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="query">UPDATE T_SettingGlobal SET
> UseMiddleTierValuationEngine=?, MiddleTierRequestTimeout=?</stringProp>
> > +            <stringProp
> name="queryArguments">${UseMiddleTierValuationEngine},
> ${MiddleTierRequestTimeout}</stringProp>
> > +            <stringProp name="queryArgumentsTypes">BIT,
> INTEGER</stringProp>
> > +            <stringProp name="queryType">Prepared Update
> Statement</stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +          </JDBCPreProcessor>
> > +          <hashTree/>
> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Commit" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="queryType">Commit</stringProp>
> > +            <stringProp name="query"></stringProp>
> > +            <stringProp name="queryArguments"></stringProp>
> > +            <stringProp name="queryArgumentsTypes"></stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +          </JDBCPreProcessor>
> > +          <hashTree/>
> > +        </hashTree>
> > +        <TestAction guiclass="TestActionGui" testclass="TestAction"
> testname="Clear caches" enabled="true">
> > +          <intProp name="ActionProcessor.action">1</intProp>
> > +          <intProp name="ActionProcessor.target">0</intProp>
> > +          <stringProp name="ActionProcessor.duration">0</stringProp>
> > +        </TestAction>
> > +        <hashTree>
> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Clear Buffers" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="queryType">Update Statement</stringProp>
> > +            <stringProp name="query">DBCC DROPCLEANBUFFERS</stringProp>
> > +            <stringProp name="queryArguments"></stringProp>
> > +            <stringProp name="queryArgumentsTypes"></stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +          </JDBCPreProcessor>
> > +          <hashTree/>
> > +          <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Clear Proc Cache" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="queryType">Update Statement</stringProp>
> > +            <stringProp name="query">DBCC FREEPROCCACHE</stringProp>
> > +            <stringProp name="queryArguments"></stringProp>
> > +            <stringProp name="queryArgumentsTypes"></stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +          </JDBCPreProcessor>
> > +          <hashTree/>
> > +        </hashTree>
> > +      </hashTree>
> > +      <TestFragmentController guiclass="TestFragmentControllerGui"
> testclass="TestFragmentController" testname="PCO Valuation" enabled="true"/>
> > +      <hashTree>
> > +        <TransactionController guiclass="TransactionControllerGui"
> testclass="TransactionController" testname="Calculate PCO Transaction"
> enabled="true">
> > +          <boolProp name="TransactionController.parent">true</boolProp>
> > +        </TransactionController>
> > +        <hashTree>
> > +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
> testname="Begin Tran" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="queryType">Update Statement</stringProp>
> > +            <stringProp name="query">BEGIN TRAN COMMIT TRAN</stringProp>
> > +            <stringProp name="queryArguments"></stringProp>
> > +            <stringProp name="queryArgumentsTypes"></stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +            <boolProp name="collectDiagnostics">false</boolProp>
> > +          </JDBCSampler>
> > +          <hashTree/>
> > +          <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
> testname="Calculate Price cut off" enabled="true">
> > +            <stringProp name="dataSource"></stringProp>
> > +            <stringProp name="queryType">Callable Statement</stringProp>
> > +            <stringProp name="query">PfoVal_Recalculate ?, ?,
> 1</stringProp>
> > +            <stringProp name="queryArguments">${Pfo_1},
> ${PfoValInstance}</stringProp>
> > +            <stringProp name="queryArgumentsTypes">INTEGER,
> INTEGER</stringProp>
> > +            <stringProp name="variableNames"></stringProp>
> > +            <stringProp name="resultVariable"></stringProp>
> > +            <boolProp name="collectDiagnostics">true</boolProp>
> > +          </JDBCSampler>
> > +          <hashTree>
> > +            <BSFPreProcessor guiclass="TestBeanGUI"
> testclass="BSFPreProcessor" testname="Prepare Portfolio List for Price
> Cut-Off" enabled="true">
> > +              <stringProp name="scriptLanguage">groovy</stringProp>
> > +              <stringProp name="parameters"></stringProp>
> > +              <stringProp name="filename"></stringProp>
> > +              <stringProp name="script">import groovy.sql.Sql
> > +import org.apache.jmeter.protocol.jdbc.config.DataSourceElement
> > +try {
> > +       // build Pfo List
> > +       println(&quot;Building Portfolio List&quot;)
> > +       def pfoList = &quot;&lt;PfoList&gt;&quot;
> > +       def pfoNr = 1
> > +       def pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
> > +       while(pfo != null) {
> > +               println(&quot;Pfo: $pfo&quot;);
> > +               pfoList = pfoList + &quot;&lt;Pfo ID=&apos;$pfo&apos;
> EmptyValuation=&apos;true&apos; PropagatePrice=&apos;true&apos;/&gt;&quot;
> > +               pfoNr++
> > +               pfo = vars.get(&quot;Pfo_&quot; + pfoNr)
> > +       }
> > +       pfoList = pfoList + &quot;&lt;/PfoList&gt;&quot;
> > +       vars.put(&quot;PfoListXML&quot;, pfoList)
> > +} catch (Exception e) {
> > +       println(e.toString());
> > +}</stringProp>
> > +            </BSFPreProcessor>
> > +            <hashTree/>
> > +            <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Create Price Cut-Off" enabled="true">
> > +              <stringProp name="dataSource"></stringProp>
> > +              <stringProp name="query">CreatePriceCutOff ?, ?, ?, ?, ?,
> ?, ?, ?</stringProp>
> > +              <stringProp
> name="queryArguments">${__threadNum},${ValueDate},${PCOQuality},${ReportingDate},]NULL[,${PCO},${PfoListXML},${PricePropagationMode}</stringProp>
> > +              <stringProp name="queryArgumentsTypes">VARCHAR, DATE,
> INTEGER,TIMESTAMP,INTEGER,OUT INTEGER,CLOB,INTEGER</stringProp>
> > +              <stringProp name="queryType">Callable
> Statement</stringProp>
> > +              <stringProp name="resultVariable"></stringProp>
> > +              <stringProp name="variableNames"></stringProp>
> > +            </JDBCPreProcessor>
> > +            <hashTree/>
> > +            <JDBCPreProcessor guiclass="TestBeanGUI"
> testclass="JDBCPreProcessor" testname="Get Portfolio Valuation Instance
> from Price Cut-Off" enabled="true">
> > +              <stringProp name="dataSource"></stringProp>
> > +              <stringProp name="queryType">Prepared Select
> Statement</stringProp>
> > +              <stringProp name="query">select Nr from PfoValInstance
> where Pfo=? AND PriceCutOff=?</stringProp>
> > +              <stringProp
> name="queryArguments">${Pfo_1},${PCO}</stringProp>
> > +              <stringProp
> name="queryArgumentsTypes">INTEGER,INTEGER</stringProp>
> > +              <stringProp
> name="variableNames">PfoValInstance</stringProp>
> > +              <stringProp name="resultVariable"></stringProp>
> > +            </JDBCPreProcessor>
> > +            <hashTree/>
> > +            <JDBCPostProcessor guiclass="TestBeanGUI"
> testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
> > +              <stringProp name="dataSource"></stringProp>
> > +              <stringProp name="query">DeletePriceCutOff ?</stringProp>
> > +              <stringProp name="queryArguments">${PCO}</stringProp>
> > +              <stringProp
> name="queryArgumentsTypes">INTEGER</stringProp>
> > +              <stringProp name="queryType">Callable
> Statement</stringProp>
> > +              <stringProp name="resultVariable"></stringProp>
> > +              <stringProp name="variableNames"></stringProp>
> > +            </JDBCPostProcessor>
> > +            <hashTree/>
> > +          </hashTree>
> > +          <IfController guiclass="IfControllerPanel"
> testclass="IfController" testname="If Controller" enabled="true">
> > +            <stringProp
> name="IfController.condition">${JMeterThread.last_sample_ok}</stringProp>
> > +            <boolProp name="IfController.evaluateAll">false</boolProp>
> > +          </IfController>
> > +          <hashTree>
> > +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
> testname="Commit" enabled="true">
> > +              <stringProp name="dataSource"></stringProp>
> > +              <stringProp name="queryType">Commit</stringProp>
> > +              <stringProp name="query"></stringProp>
> > +              <stringProp name="queryArguments"></stringProp>
> > +              <stringProp name="queryArgumentsTypes"></stringProp>
> > +              <stringProp name="variableNames"></stringProp>
> > +              <stringProp name="resultVariable"></stringProp>
> > +              <stringProp name="TestPlan.comments">Commit the
> transaction of the valuation</stringProp>
> > +              <boolProp name="collectDiagnostics">false</boolProp>
> > +            </JDBCSampler>
> > +            <hashTree/>
> > +          </hashTree>
> > +          <IfController guiclass="IfControllerPanel"
> testclass="IfController" testname="If Controller" enabled="true">
> > +            <stringProp
> name="IfController.condition">${JMeterThread.last_sample_ok}==false</stringProp>
> > +            <boolProp name="IfController.evaluateAll">false</boolProp>
> > +          </IfController>
> > +          <hashTree>
> > +            <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler"
> testname="Rollback" enabled="true">
> > +              <stringProp name="dataSource"></stringProp>
> > +              <stringProp name="queryType">Rollback</stringProp>
> > +              <stringProp name="query"></stringProp>
> > +              <stringProp name="queryArguments"></stringProp>
> > +              <stringProp name="queryArgumentsTypes"></stringProp>
> > +              <stringProp name="variableNames"></stringProp>
> > +              <stringProp name="resultVariable"></stringProp>
> > +              <boolProp name="collectDiagnostics">false</boolProp>
> > +            </JDBCSampler>
> > +            <hashTree/>
> > +          </hashTree>
> > +        </hashTree>
> > +      </hashTree>
> > +      <ResultCollector guiclass="SummaryReport"
> testclass="ResultCollector" testname="Summary Report" enabled="true">
> > +        <boolProp name="ResultCollector.error_logging">false</boolProp>
> > +        <objProp>
> > +          <name>saveConfig</name>
> > +          <value class="SampleSaveConfiguration">
> > +            <time>true</time>
> > +            <latency>false</latency>
> > +            <timestamp>true</timestamp>
> > +            <success>false</success>
> > +            <label>true</label>
> > +            <code>false</code>
> > +            <message>false</message>
> > +            <threadName>true</threadName>
> > +            <dataType>false</dataType>
> > +            <encoding>false</encoding>
> > +            <assertions>false</assertions>
> > +            <subresults>false</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>
> > +          </value>
> > +        </objProp>
> > +        <stringProp name="filename"></stringProp>
> > +      </ResultCollector>
> > +      <hashTree/>
> > +      <ResultCollector guiclass="ViewResultsFullVisualizer"
> testclass="ResultCollector" testname="View Results Tree" 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"></stringProp>
> > +      </ResultCollector>
> > +      <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"></stringProp>
> > +      </ResultCollector>
> > +      <hashTree/>
> > +    </hashTree>
> > +  </hashTree>
> > +</jmeterTestPlan>
> >
> > Modified: jmeter/trunk/xdocs/usermanual/component_reference.xml
> > URL:
> http://svn.apache.org/viewvc/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=1210001&r1=1210000&r2=1210001&view=diff
> >
> ==============================================================================
> > --- jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
> > +++ jmeter/trunk/xdocs/usermanual/component_reference.xml Sat Dec  3
> 20:53:32 2011
> > @@ -4455,9 +4455,21 @@ For details, see <complink name="BSF Pre
> >  <description>
> >  <p>
> >  The JDBC PreProcessor enables you to run some SQL statement just before
> a sample runs.
> > -This can be useful if your JDBC Sample changes some data and you want
> to reset state to what it was before the JDBC sample run.
> > +This can be useful if your JDBC Sample requires some data to be in
> DataBase and you cannot compute this in a setup Thread group.
> > +</p>
> > +<p>
> > +See the following Test plan:
> >  </p>
> > +<links>
> > +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC
> Pre/Post Processor</link>
> > +</links>
> > +<p>
> > +In the linked test plan,"Create Price Cut-Off" JDBC PreProcessor calls
> a stored procedure to create a Price Cut-Off in Database,
> > +this one will be used by "Calculate Price cut off".
> > +
> > +<figure width="1346" height="636" image="jdbc-pre-processor.png">Create
> Price Cut-Off Preprocessor</figure>
> >
> > +</p>
> >  </description>
> >  </component>
> >
> > @@ -4791,13 +4803,17 @@ For details, see the <complink name="BSF
> >  <description>
> >  <p>
> >  The JDBC PostProcessor enables you to run some SQL statement just after
> a sample has run.
> > -This can be useful if your JDBC Sample requires some data to be in
> DataBase and you cannot compute this in a setup Thread group.
> > +This can be useful if your JDBC Sample changes some data and you want
> to reset state to what it was before the JDBC sample run.
> >  </p>
> >  </description>
> >  </component>
> > -
> > -<a href="#">^</a>
> > -
> > +<links>
> > +        <link href="JDBC-Pre-Post-Processor.jmx">Test Plan using JDBC
> Pre/Post Processor</link>
> > +</links>
> > +<p>
> > +In the linked test plan,"JDBC PostProcessor" JDBC PostProcessor calls a
> stored procedure to delete the Price Cut-Off that was created by
> PreProcessor from Database.
> > +<figure width="1343" height="631" image="jdbc-post-processor.png">JDBC
> PostProcessor</figure>
> > +</p>
> >  </section>
> >
> >  <section name="&sect-num;.9 Miscellaneous Features"
> anchor="Miscellaneous_Features">
> >
> >
>



-- 
Cordialement.
Philippe Mouawad.