On 4 December 2011 16:31, Philippe Mouawad <[email protected]> wrote: > On Sun, Dec 4, 2011 at 4:13 PM, sebb <[email protected]> wrote: > >> On 3 December 2011 20:53, <[email protected]> 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("Building Portfolio List") >> > + def pfoList = "<PfoList>" >> > + def pfoNr = 1 >> > + def pfo = vars.get("Pfo_" + pfoNr) >> > + while(pfo != null) { >> > + println("Pfo: $pfo"); >> > + pfoList = pfoList + "<Pfo ID='$pfo' >> EmptyValuation='true' PropagatePrice='true'/>" >> > + pfoNr++ >> > + pfo = vars.get("Pfo_" + pfoNr) >> > + } >> > + pfoList = pfoList + "</PfoList>" >> > + vars.put("PfoListXML", 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="§-num;.9 Miscellaneous Features" >> anchor="Miscellaneous_Features"> >> > >> > >> > > > > -- > Cordialement. > Philippe Mouawad.
