Hello,
I am a really new user of jMeter. Trying to implement a set of functional
tests in one single test plan.
In this plan, I need to :
1- Send a constant XML-RPC request to a server and grab a value from the
result(doing this with Xpath Extractor).
2- Then send a variable number of XML-RPC requests with values coming from
a csv file(Trying to use a CSV Data config for this)
3- Finally, send another last XML-RPC request only once.
It all works as expected (almost) but the last XML-RPC request is repeated
for every line in the CSV Data config file.
Is it possible to restrict the CSV Data config element to a specific
Sampler or even Logic Controller?
Thanks in advance,
Jean
Bellow My current test plan:
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.3">
<hashTree>
<TestPlan guiclass="TestPlanGui" testclass="TestPlan"
testname="ATPZero" enabled="true">
<stringProp name="TestPlan.comments"></stringProp>
<boolProp name="TestPlan.functional_mode">true</boolProp>
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
<elementProp name="TestPlan.user_defined_variables"
elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments"
testname="User Defined Variables" enabled="true">
<collectionProp name="Arguments.arguments">
<elementProp name="MSISDN" elementType="Argument">
<stringProp name="Argument.name">MSISDN</stringProp>
<stringProp name="Argument.value">66349528</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="volDA" elementType="Argument">
<stringProp name="Argument.name">volDA</stringProp>
<stringProp name="Argument.value">17</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="countDA" elementType="Argument">
<stringProp name="Argument.name">countDA</stringProp>
<stringProp name="Argument.value">29</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="bonusDA" elementType="Argument">
<stringProp name="Argument.name">bonusDA</stringProp>
<stringProp name="Argument.value">42</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
<elementProp name="MSISDN1" elementType="Argument">
<stringProp name="Argument.name">MSISDN1</stringProp>
<stringProp name="Argument.value">66349528</stringProp>
<stringProp name="Argument.metadata">=</stringProp>
</elementProp>
</collectionProp>
</elementProp>
<stringProp name="TestPlan.user_define_classpath"></stringProp>
</TestPlan>
<hashTree>
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
testname="AutoTester" enabled="true">
<elementProp name="ThreadGroup.main_controller"
elementType="LoopController" guiclass="LoopControlPanel"
testclass="LoopController" testname="Loop Controller" enabled="true">
<boolProp name="LoopController.continue_forever">false</boolProp>
<stringProp name="LoopController.loops">20</stringProp>
</elementProp>
<stringProp name="ThreadGroup.num_threads">1</stringProp>
<stringProp name="ThreadGroup.ramp_time">1</stringProp>
<longProp name="ThreadGroup.start_time">1344265518000</longProp>
<longProp name="ThreadGroup.end_time">1344265518000</longProp>
<boolProp name="ThreadGroup.scheduler">false</boolProp>
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
<stringProp name="ThreadGroup.duration"></stringProp>
<stringProp name="ThreadGroup.delay"></stringProp>
</ThreadGroup>
<hashTree>
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager"
testname="HeaderTestLab" enabled="true">
<collectionProp name="HeaderManager.headers">
<elementProp name="" elementType="Header">
<stringProp name="Header.name">User-Agent</stringProp>
<stringProp name="Header.value">UGw
Server/4.1/1.0</stringProp>
</elementProp>
<elementProp name="" elementType="Header">
<stringProp name="Header.name">Content-Type</stringProp>
<stringProp name="Header.value">text/xml</stringProp>
</elementProp>
<elementProp name="" elementType="Header">
<stringProp name="Header.name">Authorization</stringProp>
<stringProp name="Header.value">Basic
2hda-=asfafaad1</stringProp>
</elementProp>
</collectionProp>
<stringProp name="TestPlan.comments">default ucip headers for
pssim</stringProp>
</HeaderManager>
<hashTree/>
<GenericController guiclass="LogicControllerGui"
testclass="GenericController" testname="BatchRequests" enabled="true"/>
<hashTree>
<SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler"
testname="PingUser" enabled="true">
<elementProp name="HTTPsampler.Arguments"
elementType="Arguments">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="SoapSampler.URL_DATA">
http://192.168.101.120:10010/Air</stringProp>
<stringProp name="HTTPSamper.xml_data"><?xml
version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>GetBalanceAndDate</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>originNodeType</name>
<value>
<string>EXT</string>
</value>
</member>
<member>
<name>originHostName</name>
<value>
<string>USSDGW</string>
</value>
</member>
<member>
<name>originTransactionID</name>
<value>
<string>2012080619175629676</string>
</value>
</member>
<member>
<name>originTimeStamp</name>
<value>
<dateTime.iso8601>20120806T19:17:56+0500</dateTime.iso8601>
</value>
</member>
<member>
<name>subscriberNumberNAI</name>
<value>
<i4>1</i4>
</value>
</member>
<member>
<name>subscriberNumber</name>
<value>
<string>${msisdn}</string>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall>
</stringProp>
<stringProp name="SoapSampler.xml_data_file"></stringProp>
<stringProp name="SoapSampler.SOAP_ACTION"></stringProp>
<stringProp
name="SoapSampler.SEND_SOAP_ACTION">false</stringProp>
<boolProp name="HTTPSampler.use_keepalive">false</boolProp>
</SoapSampler>
<hashTree>
<XPathAssertion guiclass="XPathAssertionGui"
testclass="XPathAssertion" testname="responseOK" enabled="true">
<boolProp name="XPath.negate">false</boolProp>
<stringProp
name="XPath.xpath">//member[name="responseCode" and
value/*=0]</stringProp>
<boolProp name="XPath.validate">false</boolProp>
<boolProp name="XPath.whitespace">false</boolProp>
<boolProp name="XPath.tolerant">false</boolProp>
<boolProp name="XPath.namespace">false</boolProp>
</XPathAssertion>
<hashTree/>
<XPathExtractor guiclass="XPathExtractorGui"
testclass="XPathExtractor" testname="GetResponseCode" enabled="true">
<stringProp name="TestPlan.comments">contains the response
code</stringProp>
<stringProp name="XPathExtractor.default">100</stringProp>
<stringProp name="XPathExtractor.refname">rCode</stringProp>
<stringProp
name="XPathExtractor.xpathQuery">//member[name="responseCode"]/value/*[1]</stringProp>
<boolProp name="XPathExtractor.tolerant">false</boolProp>
<boolProp name="XPathExtractor.namespace">true</boolProp>
<boolProp name="XPathExtractor.validate">false</boolProp>
</XPathExtractor>
<hashTree/>
</hashTree>
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet"
testname="ListOfUsers" enabled="true">
<stringProp
name="filename">/home/jean/Integration/testmses.csv</stringProp>
<stringProp name="fileEncoding"></stringProp>
<stringProp
name="variableNames">msisdn,volDa,volVal,countDa,countVal</stringProp>
<stringProp name="delimiter">,</stringProp>
<boolProp name="quotedData">false</boolProp>
<boolProp name="recycle">true</boolProp>
<boolProp name="stopThread">false</boolProp>
<stringProp name="shareMode">All threads</stringProp>
</CSVDataSet>
<hashTree/>
</hashTree>
<SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler"
testname="GetAccountDetails" enabled="true">
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
<collectionProp name="Arguments.arguments"/>
</elementProp>
<stringProp name="SoapSampler.URL_DATA">
http://192.168.101.120:10010/Air</stringProp>
<stringProp name="HTTPSamper.xml_data"><?xml
version="1.0" encoding="UTF-8"?>
<methodCall>
<methodName>GetAccountDetails</methodName>
<params>
<param>
<value>
<struct>
<member>
<name>originNodeType</name>
<value>
<string>${originNodeType}</string>
</value>
</member>
<member>
<name>originHostName</name>
<value>
<string>${originHostName}</string>
</value>
</member>
<member>
<name>originTransactionID</name>
<value>
<string>${transaction_id}</string>
</value>
</member>
<member>
<name>originTimeStamp</name>
<value>
<dateTime.iso8601>${timestamp}</dateTime.iso8601>
</value>
</member>
<member>
<name>subscriberNumberNAI</name>
<value>
<i4>${subscriberNumberNAI}</i4>
</value>
</member>
<member>
<name>subscriberNumber</name>
<value>
<string>${subscriberNumber}</string>
</value>
</member>
<member>
<name>requestedInformationFlags</name>
<value>
<struct>
<member>
<name>requestMasterAccountBalanceFlag</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
</member>
</struct>
</value>
</param>
</params>
</methodCall></stringProp>
<stringProp name="SoapSampler.xml_data_file"></stringProp>
<stringProp name="SoapSampler.SOAP_ACTION"></stringProp>
<stringProp name="SoapSampler.SEND_SOAP_ACTION">false</stringProp>
<boolProp name="HTTPSampler.use_keepalive">false</boolProp>
</SoapSampler>
<hashTree>
<XPathAssertion guiclass="XPathAssertionGui"
testclass="XPathAssertion" testname="responseOK" enabled="true">
<boolProp name="XPath.negate">false</boolProp>
<stringProp
name="XPath.xpath">//member[name="responseCode" and
value/*=0]</stringProp>
<boolProp name="XPath.validate">false</boolProp>
<boolProp name="XPath.whitespace">false</boolProp>
<boolProp name="XPath.tolerant">false</boolProp>
<boolProp name="XPath.namespace">false</boolProp>
</XPathAssertion>
<hashTree/>
<XPathExtractor guiclass="XPathExtractorGui"
testclass="XPathExtractor" testname="GetResponseCode" enabled="true">
<stringProp name="TestPlan.comments">contains the response
code</stringProp>
<stringProp name="XPathExtractor.default">100</stringProp>
<stringProp name="XPathExtractor.refname">rCode2</stringProp>
<stringProp
name="XPathExtractor.xpathQuery">//member[name="responseCode"]/value/*[1]</stringProp>
<boolProp name="XPathExtractor.tolerant">false</boolProp>
<boolProp name="XPathExtractor.namespace">true</boolProp>
<boolProp name="XPathExtractor.validate">false</boolProp>
</XPathExtractor>
<hashTree/>
</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/>
</hashTree>
</hashTree>
</hashTree>
</jmeterTestPlan>