<?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>
