You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@jmeter.apache.org by Jean FX <xo...@gmail.com> on 2012/08/14 13:50:29 UTC

Fwd: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

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">&lt;?xml
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;methodCall&gt;
  &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
  &lt;params&gt;
    &lt;param&gt;
      &lt;value&gt;
        &lt;struct&gt;
          &lt;member&gt;
            &lt;name&gt;originNodeType&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;EXT&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originHostName&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;USSDGW&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originTransactionID&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;2012080619175629676&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originTimeStamp&lt;/name&gt;
            &lt;value&gt;

&lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
            &lt;value&gt;
              &lt;i4&gt;1&lt;/i4&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;subscriberNumber&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;${msisdn}&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
        &lt;/struct&gt;
      &lt;/value&gt;
    &lt;/param&gt;
  &lt;/params&gt;
&lt;/methodCall&gt;
</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;methodCall&gt;
  &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
  &lt;params&gt;
    &lt;param&gt;
      &lt;value&gt;
        &lt;struct&gt;
          &lt;member&gt;
            &lt;name&gt;originNodeType&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;${originNodeType}&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originHostName&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;${originHostName}&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originTransactionID&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;${transaction_id}&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;originTimeStamp&lt;/name&gt;
            &lt;value&gt;
              &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
            &lt;value&gt;
              &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;subscriberNumber&lt;/name&gt;
            &lt;value&gt;
              &lt;string&gt;${subscriberNumber}&lt;/string&gt;
            &lt;/value&gt;
          &lt;/member&gt;
          &lt;member&gt;
            &lt;name&gt;requestedInformationFlags&lt;/name&gt;
            &lt;value&gt;
              &lt;struct&gt;
                &lt;member&gt;
                  &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
                  &lt;value&gt;
                    &lt;boolean&gt;1&lt;/boolean&gt;
                  &lt;/value&gt;
                &lt;/member&gt;
              &lt;/struct&gt;
            &lt;/value&gt;
          &lt;/member&gt;
        &lt;/struct&gt;
      &lt;/value&gt;
    &lt;/param&gt;
  &lt;/params&gt;
&lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Yes!

If I nest an if controller inside the while controller with the same
condition and put all the samplers to run repeatedly on the CSV Data file
as children of the if controller, it works perfectly.

Thanks a lot Deepak!

Kind Regards,
Jean
On Wed, Aug 22, 2012 at 4:43 PM, Deepak Shetty <sh...@gmail.com> wrote:

> Ah I forgot about that add an if controller under the while with the same
> condition
> On Aug 22, 2012 7:27 AM, "Jean FX" <xo...@gmail.com> wrote:
>
> > Hello Deepak,
> >
> > Many thanks!
> >
> > This works almost perfectly as required.
> >
> > But I have to set CSV Data config (Stop thread on EOF=false) and then I
> get
> > an extra run with every value =<EOF>(which fails as expected) before
> step 3
> > is run.  But at least I get to fully run my test plan except that I have
> to
> > ignore that one line of failure.
> >
> > If set CSV Data config (Stop thread on EOF=true), step 3 does not run.
> >
> > There is an "edit" value for Stop thread on EOF that I need to explore
> > though.
> >
> > Jean
> >
> > On Tue, Aug 21, 2012 at 5:47 PM, Deepak Shetty <sh...@gmail.com>
> wrote:
> >
> > > +Step1
> > > +WhileController(${__javaScript("${anyvariablenamefromcsv}" !=
> "<EOF>")}
> > > ++Step2
> > > ++CSV Data Set config (recycle on EOF= false)
> > > +Step3
> > >
> > > doesnt work for you?
> > > Again when you want multiple threads you may need to change this
> > >
> > > regards
> > > deepak
> > >
> > > On Tue, Aug 21, 2012 at 12:57 AM, Jean FX <xo...@gmail.com> wrote:
> > >
> > > > Hello.
> > > >
> > > > Yes the idea is to process every row in the CSV. I am only using a
> > while
> > > > loop because it is necessary (I believe) to restrict the CSV Data
> > config
> > > > element to the XML-RPC Sampler in step2.
> > > >
> > > > On Fri, Aug 17, 2012 at 6:03 PM, Deepak Shetty <sh...@gmail.com>
> > > wrote:
> > > >
> > > > > hi
> > > > > Im still having trouble understanding what your issue is
> > > > > a. Step1 is fine and you are retrieving a value called rCode.
> > > > > b. Step 2 has a while controller which has no condition -- what is
> > the
> > > > > condition for your loop? Process every row in the CSV?
> > > >
> > > > Yes
> > > >
> > > > > execute it for rCode
> > > > > iterations?
> > > >
> > > > No. This is a proof of concept. In real implementation I am
> retrieving
> > > the
> > > > value of a different element .
> > > >
> > > > > The sampler under the while loop is also extracting out rCode -
> > > > > is that correct?
> > > >
> > > > Yes but I could remove this: I only need to assert that it is 0 in
> > every
> > > > response.
> > > >
> > > > > where is this rCode being used?
> > > > >
> > > > It is a proof of concept. In real test I would need to use the
> > extracted
> > > > value in a subsequent XML-RPC Sampler within the same loop. But in
> > order
> > > to
> > > > simply the problem I removed that step.
> > > >
> > > > > c. Step 3 is fine
> > > > >
> > > > > regards
> > > > > deepak
> > > > >
> > > > >
> > > > > On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:
> > > > >
> > > > > > Hello Deepak.
> > > > > >
> > > > > > The original plan is not exactly what I uploaded because of it
> > > > contained
> > > > > > real information, so it is not have step 1. I have done a better
> > mock
> > > > > test
> > > > > > plan with all the steps here: http://pastebin.com/g7J4KiHF.
> > > > > >
> > > > > > I have given further clarifications inline.
> > > > > >
> > > > > > On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <
> shettyd@gmail.com>
> > > > > wrote:
> > > > > >
> > > > > > > Hi
> > > > > > > i dont see your test case reflecting your original requirement
> > > > > > >
> > > > > > > >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.
> > > > > > >
> > > > > > > How is step 2 being determined?
> > > > > >
> > > > > > A variable is set in step 1 that is used for every line in step
> 2.
> > > > > >
> > > > > > > Is only the number varying?
> > > > > >
> > > > > > In this mock test yes there is only one variable used but in real
> > > test
> > > > > > there are multiple values per csv line.
> > > > > >
> > > > > > > If you have
> > > > > > > multiple threads do they read the same data ,
> > > > > >
> > > > > > different data ?
> > > > > >
> > > > > > This test is functional and will use a single thread.
> > > > > >
> > > > > > It might be necessary to run a multi thread stress test at a
> later
> > > > stage
> > > > > > but I could potentially use different instances for this.
> > > > > >
> > > > > > > Do you have
> > > > > > > to read specific rows?
> > > > > > >
> > > > > > No. For step 2, rows are equal and independent and could
> > potentially
> > > > run
> > > > > in
> > > > > > a different order.
> > > > > >
> > > > > > >
> > > > > > > regards
> > > > > > > deepak
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com>
> > wrote:
> > > > > > >
> > > > > > > > Thanks a lot for your reply!
> > > > > > > >
> > > > > > > > Will try to understand the functions to see if I can
> implement
> > > with
> > > > > > > > functions. I want to avoid implementing a custom Sampler if
> > > > possible.
> > > > > > > >
> > > > > > > > I have tried making the CSV Data sampler a child of a while
> > logic
> > > > > > > > controller together with the Sampler to be repeated but it
> > still
> > > > > tries
> > > > > > to
> > > > > > > > use the data to repeat the Sampler that follows the While
> > > > controller
> > > > > in
> > > > > > > the
> > > > > > > > testplan, which should only run once.
> > > > > > > >
> > > > > > > > I have pasted my Test Plan here :
> http://pastebin.com/0P7bCVTP
> > > > > > > >
> > > > > > > > Kind Regards,
> > > > > > > > Jean
> > > > > > > >
> > > > > > > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <
> > > shettyd@gmail.com>
> > > > > > > wrote:
> > > > > > > >
> > > > > > > > > Hi
> > > > > > > > > I dont remember the scoping rules now (but I believe the
>  CSV
> > > > > config
> > > > > > > had
> > > > > > > > to
> > > > > > > > > be a child of a while controller or equivalent to do what
> you
> > > > want
> > > > > -
> > > > > > > but
> > > > > > > > my
> > > > > > > > > memory has always been poor :) )
> > > > > > > > >
> > > > > > > > > In any case it looks like the csvread or stringfromfile
> > > functions
> > > > > > would
> > > > > > > > > work for you
> > > > > > > > > http://jmeter.apache.org/usermanual/functions.html
> > > > > > > > >
> > > > > > > > > P.S. if you attached your test script it didnt come to the
> > > > mailing
> > > > > > > list -
> > > > > > > > > you should upload the script and provide a link to it.
> > > > > > > > > regards
> > > > > > > > > deepak
> > > > > > > > >
> > > > > > > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <
> xor007@gmail.com>
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Hello Shaba.
> > > > > > > > > >
> > > > > > > > > > I had tried putting the CSV Data config element in both a
> > > Logic
> > > > > > > > > Controller
> > > > > > > > > > and a Sampler. In both case jMeter did not respect this.
> It
> > > > > > repeated
> > > > > > > > > > execution for every line in the csv file even beyond the
> > > Logic
> > > > > > > > > > Controller(see my test plan bellow).
> > > > > > > > > >
> > > > > > > > > > Your site does not address this topic.
> > > > > > > > > >
> > > > > > > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <
> > > shabazia09@gmail.com
> > > > >
> > > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > Yes we can include CSV data config as a child to that
> > > > sampler.
> > > > > > > > > > >
> > > > > > > > > > > Here's a little write up about JMeter hope it helps.
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > >
> > > > >
> > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > > > > > > >
> > > > > > > > > > > cheers,
> > > > > > > > > > > s
> > > > > > > > > > >
> > > > > > > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <
> > > xor007@gmail.com>
> > > > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > 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">&lt;?xml
> > > > > > > > > > > > version=&quot;1.0&quot;
> encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > > > >
> > &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > > > > > > >   &lt;params&gt;
> > > > > > > > > > > >     &lt;param&gt;
> > > > > > > > > > > >       &lt;value&gt;
> > > > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >
> > &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > > &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > > > > > > > > >
> > > > > > > > >
> > > > > >
> > > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >
> > &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > > > &lt;/methodCall&gt;
> > > > > > > > > > > > </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=&quot;responseCode&quot;
> > > > 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > > > > > > version=&quot;1.0&quot;
> encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > > > >
> > &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > > > > > > >   &lt;params&gt;
> > > > > > > > > > > >     &lt;param&gt;
> > > > > > > > > > > >       &lt;value&gt;
> > > > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >
> > &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > > > > > > > >
> > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >
> > &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >
> > > > > &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > > >
> > > > > &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > > >               &lt;struct&gt;
> > > > > > > > > > > >                 &lt;member&gt;
> > > > > > > > > > > >
> > > > > > > > > > >
> &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > > > > > > >                   &lt;value&gt;
> > > > > > > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > > > > > > >                   &lt;/value&gt;
> > > > > > > > > > > >                 &lt;/member&gt;
> > > > > > > > > > > >               &lt;/struct&gt;
> > > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot;
> > > > 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=&quot;responseCode&quot;]/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>
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Deepak Shetty <sh...@gmail.com>.
Ah I forgot about that add an if controller under the while with the same
condition
On Aug 22, 2012 7:27 AM, "Jean FX" <xo...@gmail.com> wrote:

> Hello Deepak,
>
> Many thanks!
>
> This works almost perfectly as required.
>
> But I have to set CSV Data config (Stop thread on EOF=false) and then I get
> an extra run with every value =<EOF>(which fails as expected) before step 3
> is run.  But at least I get to fully run my test plan except that I have to
> ignore that one line of failure.
>
> If set CSV Data config (Stop thread on EOF=true), step 3 does not run.
>
> There is an "edit" value for Stop thread on EOF that I need to explore
> though.
>
> Jean
>
> On Tue, Aug 21, 2012 at 5:47 PM, Deepak Shetty <sh...@gmail.com> wrote:
>
> > +Step1
> > +WhileController(${__javaScript("${anyvariablenamefromcsv}" != "<EOF>")}
> > ++Step2
> > ++CSV Data Set config (recycle on EOF= false)
> > +Step3
> >
> > doesnt work for you?
> > Again when you want multiple threads you may need to change this
> >
> > regards
> > deepak
> >
> > On Tue, Aug 21, 2012 at 12:57 AM, Jean FX <xo...@gmail.com> wrote:
> >
> > > Hello.
> > >
> > > Yes the idea is to process every row in the CSV. I am only using a
> while
> > > loop because it is necessary (I believe) to restrict the CSV Data
> config
> > > element to the XML-RPC Sampler in step2.
> > >
> > > On Fri, Aug 17, 2012 at 6:03 PM, Deepak Shetty <sh...@gmail.com>
> > wrote:
> > >
> > > > hi
> > > > Im still having trouble understanding what your issue is
> > > > a. Step1 is fine and you are retrieving a value called rCode.
> > > > b. Step 2 has a while controller which has no condition -- what is
> the
> > > > condition for your loop? Process every row in the CSV?
> > >
> > > Yes
> > >
> > > > execute it for rCode
> > > > iterations?
> > >
> > > No. This is a proof of concept. In real implementation I am retrieving
> > the
> > > value of a different element .
> > >
> > > > The sampler under the while loop is also extracting out rCode -
> > > > is that correct?
> > >
> > > Yes but I could remove this: I only need to assert that it is 0 in
> every
> > > response.
> > >
> > > > where is this rCode being used?
> > > >
> > > It is a proof of concept. In real test I would need to use the
> extracted
> > > value in a subsequent XML-RPC Sampler within the same loop. But in
> order
> > to
> > > simply the problem I removed that step.
> > >
> > > > c. Step 3 is fine
> > > >
> > > > regards
> > > > deepak
> > > >
> > > >
> > > > On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:
> > > >
> > > > > Hello Deepak.
> > > > >
> > > > > The original plan is not exactly what I uploaded because of it
> > > contained
> > > > > real information, so it is not have step 1. I have done a better
> mock
> > > > test
> > > > > plan with all the steps here: http://pastebin.com/g7J4KiHF.
> > > > >
> > > > > I have given further clarifications inline.
> > > > >
> > > > > On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com>
> > > > wrote:
> > > > >
> > > > > > Hi
> > > > > > i dont see your test case reflecting your original requirement
> > > > > >
> > > > > > >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.
> > > > > >
> > > > > > How is step 2 being determined?
> > > > >
> > > > > A variable is set in step 1 that is used for every line in step 2.
> > > > >
> > > > > > Is only the number varying?
> > > > >
> > > > > In this mock test yes there is only one variable used but in real
> > test
> > > > > there are multiple values per csv line.
> > > > >
> > > > > > If you have
> > > > > > multiple threads do they read the same data ,
> > > > >
> > > > > different data ?
> > > > >
> > > > > This test is functional and will use a single thread.
> > > > >
> > > > > It might be necessary to run a multi thread stress test at a later
> > > stage
> > > > > but I could potentially use different instances for this.
> > > > >
> > > > > > Do you have
> > > > > > to read specific rows?
> > > > > >
> > > > > No. For step 2, rows are equal and independent and could
> potentially
> > > run
> > > > in
> > > > > a different order.
> > > > >
> > > > > >
> > > > > > regards
> > > > > > deepak
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com>
> wrote:
> > > > > >
> > > > > > > Thanks a lot for your reply!
> > > > > > >
> > > > > > > Will try to understand the functions to see if I can implement
> > with
> > > > > > > functions. I want to avoid implementing a custom Sampler if
> > > possible.
> > > > > > >
> > > > > > > I have tried making the CSV Data sampler a child of a while
> logic
> > > > > > > controller together with the Sampler to be repeated but it
> still
> > > > tries
> > > > > to
> > > > > > > use the data to repeat the Sampler that follows the While
> > > controller
> > > > in
> > > > > > the
> > > > > > > testplan, which should only run once.
> > > > > > >
> > > > > > > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> > > > > > >
> > > > > > > Kind Regards,
> > > > > > > Jean
> > > > > > >
> > > > > > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <
> > shettyd@gmail.com>
> > > > > > wrote:
> > > > > > >
> > > > > > > > Hi
> > > > > > > > I dont remember the scoping rules now (but I believe the  CSV
> > > > config
> > > > > > had
> > > > > > > to
> > > > > > > > be a child of a while controller or equivalent to do what you
> > > want
> > > > -
> > > > > > but
> > > > > > > my
> > > > > > > > memory has always been poor :) )
> > > > > > > >
> > > > > > > > In any case it looks like the csvread or stringfromfile
> > functions
> > > > > would
> > > > > > > > work for you
> > > > > > > > http://jmeter.apache.org/usermanual/functions.html
> > > > > > > >
> > > > > > > > P.S. if you attached your test script it didnt come to the
> > > mailing
> > > > > > list -
> > > > > > > > you should upload the script and provide a link to it.
> > > > > > > > regards
> > > > > > > > deepak
> > > > > > > >
> > > > > > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com>
> > > > wrote:
> > > > > > > >
> > > > > > > > > Hello Shaba.
> > > > > > > > >
> > > > > > > > > I had tried putting the CSV Data config element in both a
> > Logic
> > > > > > > > Controller
> > > > > > > > > and a Sampler. In both case jMeter did not respect this. It
> > > > > repeated
> > > > > > > > > execution for every line in the csv file even beyond the
> > Logic
> > > > > > > > > Controller(see my test plan bellow).
> > > > > > > > >
> > > > > > > > > Your site does not address this topic.
> > > > > > > > >
> > > > > > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <
> > shabazia09@gmail.com
> > > >
> > > > > > wrote:
> > > > > > > > >
> > > > > > > > > > Yes we can include CSV data config as a child to that
> > > sampler.
> > > > > > > > > >
> > > > > > > > > > Here's a little write up about JMeter hope it helps.
> > > > > > > > > >
> > > > > > > > > >
> > > > > > >
> > > >
> http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > > > > > >
> > > > > > > > > > cheers,
> > > > > > > > > > s
> > > > > > > > > >
> > > > > > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <
> > xor007@gmail.com>
> > > > > > wrote:
> > > > > > > > > >
> > > > > > > > > > > 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">&lt;?xml
> > > > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > > >
> &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > > > > > >   &lt;params&gt;
> > > > > > > > > > >     &lt;param&gt;
> > > > > > > > > > >       &lt;value&gt;
> > > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >
> &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > > &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > >
> > > > >
> > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >
> &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > > &lt;/methodCall&gt;
> > > > > > > > > > > </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=&quot;responseCode&quot;
> > > 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > > >
> &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > > > > > >   &lt;params&gt;
> > > > > > > > > > >     &lt;param&gt;
> > > > > > > > > > >       &lt;value&gt;
> > > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >
> &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > > > > > > > >
> > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >
> &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >
> > > > &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >           &lt;member&gt;
> > > > > > > > > > >
> > > > &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > > > > > >             &lt;value&gt;
> > > > > > > > > > >               &lt;struct&gt;
> > > > > > > > > > >                 &lt;member&gt;
> > > > > > > > > > >
> > > > > > > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > > > > > >                   &lt;value&gt;
> > > > > > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > > > > > >                   &lt;/value&gt;
> > > > > > > > > > >                 &lt;/member&gt;
> > > > > > > > > > >               &lt;/struct&gt;
> > > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot;
> > > 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=&quot;responseCode&quot;]/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>
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Hello Deepak,

Many thanks!

This works almost perfectly as required.

But I have to set CSV Data config (Stop thread on EOF=false) and then I get
an extra run with every value =<EOF>(which fails as expected) before step 3
is run.  But at least I get to fully run my test plan except that I have to
ignore that one line of failure.

If set CSV Data config (Stop thread on EOF=true), step 3 does not run.

There is an "edit" value for Stop thread on EOF that I need to explore
though.

Jean

On Tue, Aug 21, 2012 at 5:47 PM, Deepak Shetty <sh...@gmail.com> wrote:

> +Step1
> +WhileController(${__javaScript("${anyvariablenamefromcsv}" != "<EOF>")}
> ++Step2
> ++CSV Data Set config (recycle on EOF= false)
> +Step3
>
> doesnt work for you?
> Again when you want multiple threads you may need to change this
>
> regards
> deepak
>
> On Tue, Aug 21, 2012 at 12:57 AM, Jean FX <xo...@gmail.com> wrote:
>
> > Hello.
> >
> > Yes the idea is to process every row in the CSV. I am only using a while
> > loop because it is necessary (I believe) to restrict the CSV Data config
> > element to the XML-RPC Sampler in step2.
> >
> > On Fri, Aug 17, 2012 at 6:03 PM, Deepak Shetty <sh...@gmail.com>
> wrote:
> >
> > > hi
> > > Im still having trouble understanding what your issue is
> > > a. Step1 is fine and you are retrieving a value called rCode.
> > > b. Step 2 has a while controller which has no condition -- what is the
> > > condition for your loop? Process every row in the CSV?
> >
> > Yes
> >
> > > execute it for rCode
> > > iterations?
> >
> > No. This is a proof of concept. In real implementation I am retrieving
> the
> > value of a different element .
> >
> > > The sampler under the while loop is also extracting out rCode -
> > > is that correct?
> >
> > Yes but I could remove this: I only need to assert that it is 0 in every
> > response.
> >
> > > where is this rCode being used?
> > >
> > It is a proof of concept. In real test I would need to use the extracted
> > value in a subsequent XML-RPC Sampler within the same loop. But in order
> to
> > simply the problem I removed that step.
> >
> > > c. Step 3 is fine
> > >
> > > regards
> > > deepak
> > >
> > >
> > > On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:
> > >
> > > > Hello Deepak.
> > > >
> > > > The original plan is not exactly what I uploaded because of it
> > contained
> > > > real information, so it is not have step 1. I have done a better mock
> > > test
> > > > plan with all the steps here: http://pastebin.com/g7J4KiHF.
> > > >
> > > > I have given further clarifications inline.
> > > >
> > > > On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com>
> > > wrote:
> > > >
> > > > > Hi
> > > > > i dont see your test case reflecting your original requirement
> > > > >
> > > > > >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.
> > > > >
> > > > > How is step 2 being determined?
> > > >
> > > > A variable is set in step 1 that is used for every line in step 2.
> > > >
> > > > > Is only the number varying?
> > > >
> > > > In this mock test yes there is only one variable used but in real
> test
> > > > there are multiple values per csv line.
> > > >
> > > > > If you have
> > > > > multiple threads do they read the same data ,
> > > >
> > > > different data ?
> > > >
> > > > This test is functional and will use a single thread.
> > > >
> > > > It might be necessary to run a multi thread stress test at a later
> > stage
> > > > but I could potentially use different instances for this.
> > > >
> > > > > Do you have
> > > > > to read specific rows?
> > > > >
> > > > No. For step 2, rows are equal and independent and could potentially
> > run
> > > in
> > > > a different order.
> > > >
> > > > >
> > > > > regards
> > > > > deepak
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:
> > > > >
> > > > > > Thanks a lot for your reply!
> > > > > >
> > > > > > Will try to understand the functions to see if I can implement
> with
> > > > > > functions. I want to avoid implementing a custom Sampler if
> > possible.
> > > > > >
> > > > > > I have tried making the CSV Data sampler a child of a while logic
> > > > > > controller together with the Sampler to be repeated but it still
> > > tries
> > > > to
> > > > > > use the data to repeat the Sampler that follows the While
> > controller
> > > in
> > > > > the
> > > > > > testplan, which should only run once.
> > > > > >
> > > > > > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> > > > > >
> > > > > > Kind Regards,
> > > > > > Jean
> > > > > >
> > > > > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <
> shettyd@gmail.com>
> > > > > wrote:
> > > > > >
> > > > > > > Hi
> > > > > > > I dont remember the scoping rules now (but I believe the  CSV
> > > config
> > > > > had
> > > > > > to
> > > > > > > be a child of a while controller or equivalent to do what you
> > want
> > > -
> > > > > but
> > > > > > my
> > > > > > > memory has always been poor :) )
> > > > > > >
> > > > > > > In any case it looks like the csvread or stringfromfile
> functions
> > > > would
> > > > > > > work for you
> > > > > > > http://jmeter.apache.org/usermanual/functions.html
> > > > > > >
> > > > > > > P.S. if you attached your test script it didnt come to the
> > mailing
> > > > > list -
> > > > > > > you should upload the script and provide a link to it.
> > > > > > > regards
> > > > > > > deepak
> > > > > > >
> > > > > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com>
> > > wrote:
> > > > > > >
> > > > > > > > Hello Shaba.
> > > > > > > >
> > > > > > > > I had tried putting the CSV Data config element in both a
> Logic
> > > > > > > Controller
> > > > > > > > and a Sampler. In both case jMeter did not respect this. It
> > > > repeated
> > > > > > > > execution for every line in the csv file even beyond the
> Logic
> > > > > > > > Controller(see my test plan bellow).
> > > > > > > >
> > > > > > > > Your site does not address this topic.
> > > > > > > >
> > > > > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <
> shabazia09@gmail.com
> > >
> > > > > wrote:
> > > > > > > >
> > > > > > > > > Yes we can include CSV data config as a child to that
> > sampler.
> > > > > > > > >
> > > > > > > > > Here's a little write up about JMeter hope it helps.
> > > > > > > > >
> > > > > > > > >
> > > > > >
> > > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > > > > >
> > > > > > > > > cheers,
> > > > > > > > > s
> > > > > > > > >
> > > > > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <
> xor007@gmail.com>
> > > > > wrote:
> > > > > > > > >
> > > > > > > > > > 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">&lt;?xml
> > > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > > > > >   &lt;params&gt;
> > > > > > > > > >     &lt;param&gt;
> > > > > > > > > >       &lt;value&gt;
> > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > > &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > > > > > > > > >
> > > > > > >
> > > >
> &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > &lt;/methodCall&gt;
> > > > > > > > > > </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=&quot;responseCode&quot;
> > 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > > &lt;methodCall&gt;
> > > > > > > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > > > > >   &lt;params&gt;
> > > > > > > > > >     &lt;param&gt;
> > > > > > > > > >       &lt;value&gt;
> > > > > > > > > >         &lt;struct&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > > > > > > > >
> &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >
> > > &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >           &lt;member&gt;
> > > > > > > > > >
> > > &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > > > > >             &lt;value&gt;
> > > > > > > > > >               &lt;struct&gt;
> > > > > > > > > >                 &lt;member&gt;
> > > > > > > > > >
> > > > > > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > > > > >                   &lt;value&gt;
> > > > > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > > > > >                   &lt;/value&gt;
> > > > > > > > > >                 &lt;/member&gt;
> > > > > > > > > >               &lt;/struct&gt;
> > > > > > > > > >             &lt;/value&gt;
> > > > > > > > > >           &lt;/member&gt;
> > > > > > > > > >         &lt;/struct&gt;
> > > > > > > > > >       &lt;/value&gt;
> > > > > > > > > >     &lt;/param&gt;
> > > > > > > > > >   &lt;/params&gt;
> > > > > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot;
> > 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=&quot;responseCode&quot;]/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>
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Deepak Shetty <sh...@gmail.com>.
+Step1
+WhileController(${__javaScript("${anyvariablenamefromcsv}" != "<EOF>")}
++Step2
++CSV Data Set config (recycle on EOF= false)
+Step3

doesnt work for you?
Again when you want multiple threads you may need to change this

regards
deepak

On Tue, Aug 21, 2012 at 12:57 AM, Jean FX <xo...@gmail.com> wrote:

> Hello.
>
> Yes the idea is to process every row in the CSV. I am only using a while
> loop because it is necessary (I believe) to restrict the CSV Data config
> element to the XML-RPC Sampler in step2.
>
> On Fri, Aug 17, 2012 at 6:03 PM, Deepak Shetty <sh...@gmail.com> wrote:
>
> > hi
> > Im still having trouble understanding what your issue is
> > a. Step1 is fine and you are retrieving a value called rCode.
> > b. Step 2 has a while controller which has no condition -- what is the
> > condition for your loop? Process every row in the CSV?
>
> Yes
>
> > execute it for rCode
> > iterations?
>
> No. This is a proof of concept. In real implementation I am retrieving the
> value of a different element .
>
> > The sampler under the while loop is also extracting out rCode -
> > is that correct?
>
> Yes but I could remove this: I only need to assert that it is 0 in every
> response.
>
> > where is this rCode being used?
> >
> It is a proof of concept. In real test I would need to use the extracted
> value in a subsequent XML-RPC Sampler within the same loop. But in order to
> simply the problem I removed that step.
>
> > c. Step 3 is fine
> >
> > regards
> > deepak
> >
> >
> > On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:
> >
> > > Hello Deepak.
> > >
> > > The original plan is not exactly what I uploaded because of it
> contained
> > > real information, so it is not have step 1. I have done a better mock
> > test
> > > plan with all the steps here: http://pastebin.com/g7J4KiHF.
> > >
> > > I have given further clarifications inline.
> > >
> > > On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com>
> > wrote:
> > >
> > > > Hi
> > > > i dont see your test case reflecting your original requirement
> > > >
> > > > >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.
> > > >
> > > > How is step 2 being determined?
> > >
> > > A variable is set in step 1 that is used for every line in step 2.
> > >
> > > > Is only the number varying?
> > >
> > > In this mock test yes there is only one variable used but in real test
> > > there are multiple values per csv line.
> > >
> > > > If you have
> > > > multiple threads do they read the same data ,
> > >
> > > different data ?
> > >
> > > This test is functional and will use a single thread.
> > >
> > > It might be necessary to run a multi thread stress test at a later
> stage
> > > but I could potentially use different instances for this.
> > >
> > > > Do you have
> > > > to read specific rows?
> > > >
> > > No. For step 2, rows are equal and independent and could potentially
> run
> > in
> > > a different order.
> > >
> > > >
> > > > regards
> > > > deepak
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:
> > > >
> > > > > Thanks a lot for your reply!
> > > > >
> > > > > Will try to understand the functions to see if I can implement with
> > > > > functions. I want to avoid implementing a custom Sampler if
> possible.
> > > > >
> > > > > I have tried making the CSV Data sampler a child of a while logic
> > > > > controller together with the Sampler to be repeated but it still
> > tries
> > > to
> > > > > use the data to repeat the Sampler that follows the While
> controller
> > in
> > > > the
> > > > > testplan, which should only run once.
> > > > >
> > > > > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> > > > >
> > > > > Kind Regards,
> > > > > Jean
> > > > >
> > > > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com>
> > > > wrote:
> > > > >
> > > > > > Hi
> > > > > > I dont remember the scoping rules now (but I believe the  CSV
> > config
> > > > had
> > > > > to
> > > > > > be a child of a while controller or equivalent to do what you
> want
> > -
> > > > but
> > > > > my
> > > > > > memory has always been poor :) )
> > > > > >
> > > > > > In any case it looks like the csvread or stringfromfile functions
> > > would
> > > > > > work for you
> > > > > > http://jmeter.apache.org/usermanual/functions.html
> > > > > >
> > > > > > P.S. if you attached your test script it didnt come to the
> mailing
> > > > list -
> > > > > > you should upload the script and provide a link to it.
> > > > > > regards
> > > > > > deepak
> > > > > >
> > > > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com>
> > wrote:
> > > > > >
> > > > > > > Hello Shaba.
> > > > > > >
> > > > > > > I had tried putting the CSV Data config element in both a Logic
> > > > > > Controller
> > > > > > > and a Sampler. In both case jMeter did not respect this. It
> > > repeated
> > > > > > > execution for every line in the csv file even beyond the Logic
> > > > > > > Controller(see my test plan bellow).
> > > > > > >
> > > > > > > Your site does not address this topic.
> > > > > > >
> > > > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <shabazia09@gmail.com
> >
> > > > wrote:
> > > > > > >
> > > > > > > > Yes we can include CSV data config as a child to that
> sampler.
> > > > > > > >
> > > > > > > > Here's a little write up about JMeter hope it helps.
> > > > > > > >
> > > > > > > >
> > > > >
> > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > > > >
> > > > > > > > cheers,
> > > > > > > > s
> > > > > > > >
> > > > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com>
> > > > wrote:
> > > > > > > >
> > > > > > > > > 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">&lt;?xml
> > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > &lt;methodCall&gt;
> > > > > > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > > > >   &lt;params&gt;
> > > > > > > > >     &lt;param&gt;
> > > > > > > > >       &lt;value&gt;
> > > > > > > > >         &lt;struct&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> > &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> > > > > > > > >
> > > > > >
> > > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >         &lt;/struct&gt;
> > > > > > > > >       &lt;/value&gt;
> > > > > > > > >     &lt;/param&gt;
> > > > > > > > >   &lt;/params&gt;
> > > > > > > > > &lt;/methodCall&gt;
> > > > > > > > > </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=&quot;responseCode&quot;
> 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > > &lt;methodCall&gt;
> > > > > > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > > > >   &lt;params&gt;
> > > > > > > > >     &lt;param&gt;
> > > > > > > > >       &lt;value&gt;
> > > > > > > > >         &lt;struct&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> > > > > > > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >
> > &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >           &lt;member&gt;
> > > > > > > > >
> > &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > > > >             &lt;value&gt;
> > > > > > > > >               &lt;struct&gt;
> > > > > > > > >                 &lt;member&gt;
> > > > > > > > >
> > > > > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > > > >                   &lt;value&gt;
> > > > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > > > >                   &lt;/value&gt;
> > > > > > > > >                 &lt;/member&gt;
> > > > > > > > >               &lt;/struct&gt;
> > > > > > > > >             &lt;/value&gt;
> > > > > > > > >           &lt;/member&gt;
> > > > > > > > >         &lt;/struct&gt;
> > > > > > > > >       &lt;/value&gt;
> > > > > > > > >     &lt;/param&gt;
> > > > > > > > >   &lt;/params&gt;
> > > > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot;
> 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=&quot;responseCode&quot;]/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>
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Hello.

Yes the idea is to process every row in the CSV. I am only using a while
loop because it is necessary (I believe) to restrict the CSV Data config
element to the XML-RPC Sampler in step2.

On Fri, Aug 17, 2012 at 6:03 PM, Deepak Shetty <sh...@gmail.com> wrote:

> hi
> Im still having trouble understanding what your issue is
> a. Step1 is fine and you are retrieving a value called rCode.
> b. Step 2 has a while controller which has no condition -- what is the
> condition for your loop? Process every row in the CSV?

Yes

> execute it for rCode
> iterations?

No. This is a proof of concept. In real implementation I am retrieving the
value of a different element .

> The sampler under the while loop is also extracting out rCode -
> is that correct?

Yes but I could remove this: I only need to assert that it is 0 in every
response.

> where is this rCode being used?
>
It is a proof of concept. In real test I would need to use the extracted
value in a subsequent XML-RPC Sampler within the same loop. But in order to
simply the problem I removed that step.

> c. Step 3 is fine
>
> regards
> deepak
>
>
> On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:
>
> > Hello Deepak.
> >
> > The original plan is not exactly what I uploaded because of it contained
> > real information, so it is not have step 1. I have done a better mock
> test
> > plan with all the steps here: http://pastebin.com/g7J4KiHF.
> >
> > I have given further clarifications inline.
> >
> > On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com>
> wrote:
> >
> > > Hi
> > > i dont see your test case reflecting your original requirement
> > >
> > > >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.
> > >
> > > How is step 2 being determined?
> >
> > A variable is set in step 1 that is used for every line in step 2.
> >
> > > Is only the number varying?
> >
> > In this mock test yes there is only one variable used but in real test
> > there are multiple values per csv line.
> >
> > > If you have
> > > multiple threads do they read the same data ,
> >
> > different data ?
> >
> > This test is functional and will use a single thread.
> >
> > It might be necessary to run a multi thread stress test at a later stage
> > but I could potentially use different instances for this.
> >
> > > Do you have
> > > to read specific rows?
> > >
> > No. For step 2, rows are equal and independent and could potentially run
> in
> > a different order.
> >
> > >
> > > regards
> > > deepak
> > >
> > >
> > >
> > >
> > >
> > > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:
> > >
> > > > Thanks a lot for your reply!
> > > >
> > > > Will try to understand the functions to see if I can implement with
> > > > functions. I want to avoid implementing a custom Sampler if possible.
> > > >
> > > > I have tried making the CSV Data sampler a child of a while logic
> > > > controller together with the Sampler to be repeated but it still
> tries
> > to
> > > > use the data to repeat the Sampler that follows the While controller
> in
> > > the
> > > > testplan, which should only run once.
> > > >
> > > > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> > > >
> > > > Kind Regards,
> > > > Jean
> > > >
> > > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com>
> > > wrote:
> > > >
> > > > > Hi
> > > > > I dont remember the scoping rules now (but I believe the  CSV
> config
> > > had
> > > > to
> > > > > be a child of a while controller or equivalent to do what you want
> -
> > > but
> > > > my
> > > > > memory has always been poor :) )
> > > > >
> > > > > In any case it looks like the csvread or stringfromfile functions
> > would
> > > > > work for you
> > > > > http://jmeter.apache.org/usermanual/functions.html
> > > > >
> > > > > P.S. if you attached your test script it didnt come to the mailing
> > > list -
> > > > > you should upload the script and provide a link to it.
> > > > > regards
> > > > > deepak
> > > > >
> > > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com>
> wrote:
> > > > >
> > > > > > Hello Shaba.
> > > > > >
> > > > > > I had tried putting the CSV Data config element in both a Logic
> > > > > Controller
> > > > > > and a Sampler. In both case jMeter did not respect this. It
> > repeated
> > > > > > execution for every line in the csv file even beyond the Logic
> > > > > > Controller(see my test plan bellow).
> > > > > >
> > > > > > Your site does not address this topic.
> > > > > >
> > > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com>
> > > wrote:
> > > > > >
> > > > > > > Yes we can include CSV data config as a child to that sampler.
> > > > > > >
> > > > > > > Here's a little write up about JMeter hope it helps.
> > > > > > >
> > > > > > >
> > > >
> http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > > >
> > > > > > > cheers,
> > > > > > > s
> > > > > > >
> > > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com>
> > > wrote:
> > > > > > >
> > > > > > > > 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">&lt;?xml
> > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > &lt;methodCall&gt;
> > > > > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > > >   &lt;params&gt;
> > > > > > > >     &lt;param&gt;
> > > > > > > >       &lt;value&gt;
> > > > > > > >         &lt;struct&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >
> &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >
> > > > > > > >
> > > > >
> > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >         &lt;/struct&gt;
> > > > > > > >       &lt;/value&gt;
> > > > > > > >     &lt;/param&gt;
> > > > > > > >   &lt;/params&gt;
> > > > > > > > &lt;/methodCall&gt;
> > > > > > > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > > &lt;methodCall&gt;
> > > > > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > > >   &lt;params&gt;
> > > > > > > >     &lt;param&gt;
> > > > > > > >       &lt;value&gt;
> > > > > > > >         &lt;struct&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >
> > > > > > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >
> &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >           &lt;member&gt;
> > > > > > > >
> &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > > >             &lt;value&gt;
> > > > > > > >               &lt;struct&gt;
> > > > > > > >                 &lt;member&gt;
> > > > > > > >
> > > > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > > >                   &lt;value&gt;
> > > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > > >                   &lt;/value&gt;
> > > > > > > >                 &lt;/member&gt;
> > > > > > > >               &lt;/struct&gt;
> > > > > > > >             &lt;/value&gt;
> > > > > > > >           &lt;/member&gt;
> > > > > > > >         &lt;/struct&gt;
> > > > > > > >       &lt;/value&gt;
> > > > > > > >     &lt;/param&gt;
> > > > > > > >   &lt;/params&gt;
> > > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Deepak Shetty <sh...@gmail.com>.
hi
Im still having trouble understanding what your issue is
a. Step1 is fine and you are retrieving a value called rCode.
b. Step 2 has a while controller which has no condition -- what is the
condition for your loop? Process every row in the CSV? execute it for rCode
iterations? The sampler under the while loop is also extracting out rCode -
is that correct? where is this rCode being used?
c. Step 3 is fine

regards
deepak


On Thu, Aug 16, 2012 at 1:33 AM, Jean FX <xo...@gmail.com> wrote:

> Hello Deepak.
>
> The original plan is not exactly what I uploaded because of it contained
> real information, so it is not have step 1. I have done a better mock test
> plan with all the steps here: http://pastebin.com/g7J4KiHF.
>
> I have given further clarifications inline.
>
> On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com> wrote:
>
> > Hi
> > i dont see your test case reflecting your original requirement
> >
> > >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.
> >
> > How is step 2 being determined?
>
> A variable is set in step 1 that is used for every line in step 2.
>
> > Is only the number varying?
>
> In this mock test yes there is only one variable used but in real test
> there are multiple values per csv line.
>
> > If you have
> > multiple threads do they read the same data ,
>
> different data ?
>
> This test is functional and will use a single thread.
>
> It might be necessary to run a multi thread stress test at a later stage
> but I could potentially use different instances for this.
>
> > Do you have
> > to read specific rows?
> >
> No. For step 2, rows are equal and independent and could potentially run in
> a different order.
>
> >
> > regards
> > deepak
> >
> >
> >
> >
> >
> > On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:
> >
> > > Thanks a lot for your reply!
> > >
> > > Will try to understand the functions to see if I can implement with
> > > functions. I want to avoid implementing a custom Sampler if possible.
> > >
> > > I have tried making the CSV Data sampler a child of a while logic
> > > controller together with the Sampler to be repeated but it still tries
> to
> > > use the data to repeat the Sampler that follows the While controller in
> > the
> > > testplan, which should only run once.
> > >
> > > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> > >
> > > Kind Regards,
> > > Jean
> > >
> > > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com>
> > wrote:
> > >
> > > > Hi
> > > > I dont remember the scoping rules now (but I believe the  CSV config
> > had
> > > to
> > > > be a child of a while controller or equivalent to do what you want -
> > but
> > > my
> > > > memory has always been poor :) )
> > > >
> > > > In any case it looks like the csvread or stringfromfile functions
> would
> > > > work for you
> > > > http://jmeter.apache.org/usermanual/functions.html
> > > >
> > > > P.S. if you attached your test script it didnt come to the mailing
> > list -
> > > > you should upload the script and provide a link to it.
> > > > regards
> > > > deepak
> > > >
> > > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com> wrote:
> > > >
> > > > > Hello Shaba.
> > > > >
> > > > > I had tried putting the CSV Data config element in both a Logic
> > > > Controller
> > > > > and a Sampler. In both case jMeter did not respect this. It
> repeated
> > > > > execution for every line in the csv file even beyond the Logic
> > > > > Controller(see my test plan bellow).
> > > > >
> > > > > Your site does not address this topic.
> > > > >
> > > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com>
> > wrote:
> > > > >
> > > > > > Yes we can include CSV data config as a child to that sampler.
> > > > > >
> > > > > > Here's a little write up about JMeter hope it helps.
> > > > > >
> > > > > >
> > > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > > >
> > > > > > cheers,
> > > > > > s
> > > > > >
> > > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com>
> > wrote:
> > > > > >
> > > > > > > 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">&lt;?xml
> > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > &lt;methodCall&gt;
> > > > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > > >   &lt;params&gt;
> > > > > > >     &lt;param&gt;
> > > > > > >       &lt;value&gt;
> > > > > > >         &lt;struct&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >
> > > > > > >
> > > >
> &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >         &lt;/struct&gt;
> > > > > > >       &lt;/value&gt;
> > > > > > >     &lt;/param&gt;
> > > > > > >   &lt;/params&gt;
> > > > > > > &lt;/methodCall&gt;
> > > > > > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > > &lt;methodCall&gt;
> > > > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > > >   &lt;params&gt;
> > > > > > >     &lt;param&gt;
> > > > > > >       &lt;value&gt;
> > > > > > >         &lt;struct&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >
> > > > > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >           &lt;member&gt;
> > > > > > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > > >             &lt;value&gt;
> > > > > > >               &lt;struct&gt;
> > > > > > >                 &lt;member&gt;
> > > > > > >
> > > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > > >                   &lt;value&gt;
> > > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > > >                   &lt;/value&gt;
> > > > > > >                 &lt;/member&gt;
> > > > > > >               &lt;/struct&gt;
> > > > > > >             &lt;/value&gt;
> > > > > > >           &lt;/member&gt;
> > > > > > >         &lt;/struct&gt;
> > > > > > >       &lt;/value&gt;
> > > > > > >     &lt;/param&gt;
> > > > > > >   &lt;/params&gt;
> > > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Hello Deepak.

The original plan is not exactly what I uploaded because of it contained
real information, so it is not have step 1. I have done a better mock test
plan with all the steps here: http://pastebin.com/g7J4KiHF.

I have given further clarifications inline.

On Wed, Aug 15, 2012 at 8:27 PM, Deepak Shetty <sh...@gmail.com> wrote:

> Hi
> i dont see your test case reflecting your original requirement
>
> >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.
>
> How is step 2 being determined?

A variable is set in step 1 that is used for every line in step 2.

> Is only the number varying?

In this mock test yes there is only one variable used but in real test
there are multiple values per csv line.

> If you have
> multiple threads do they read the same data ,

different data ?

This test is functional and will use a single thread.

It might be necessary to run a multi thread stress test at a later stage
but I could potentially use different instances for this.

> Do you have
> to read specific rows?
>
No. For step 2, rows are equal and independent and could potentially run in
a different order.

>
> regards
> deepak
>
>
>
>
>
> On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:
>
> > Thanks a lot for your reply!
> >
> > Will try to understand the functions to see if I can implement with
> > functions. I want to avoid implementing a custom Sampler if possible.
> >
> > I have tried making the CSV Data sampler a child of a while logic
> > controller together with the Sampler to be repeated but it still tries to
> > use the data to repeat the Sampler that follows the While controller in
> the
> > testplan, which should only run once.
> >
> > I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
> >
> > Kind Regards,
> > Jean
> >
> > On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com>
> wrote:
> >
> > > Hi
> > > I dont remember the scoping rules now (but I believe the  CSV config
> had
> > to
> > > be a child of a while controller or equivalent to do what you want -
> but
> > my
> > > memory has always been poor :) )
> > >
> > > In any case it looks like the csvread or stringfromfile functions would
> > > work for you
> > > http://jmeter.apache.org/usermanual/functions.html
> > >
> > > P.S. if you attached your test script it didnt come to the mailing
> list -
> > > you should upload the script and provide a link to it.
> > > regards
> > > deepak
> > >
> > > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com> wrote:
> > >
> > > > Hello Shaba.
> > > >
> > > > I had tried putting the CSV Data config element in both a Logic
> > > Controller
> > > > and a Sampler. In both case jMeter did not respect this. It repeated
> > > > execution for every line in the csv file even beyond the Logic
> > > > Controller(see my test plan bellow).
> > > >
> > > > Your site does not address this topic.
> > > >
> > > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com>
> wrote:
> > > >
> > > > > Yes we can include CSV data config as a child to that sampler.
> > > > >
> > > > > Here's a little write up about JMeter hope it helps.
> > > > >
> > > > >
> > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > > >
> > > > > cheers,
> > > > > s
> > > > >
> > > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com>
> wrote:
> > > > >
> > > > > > 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">&lt;?xml
> > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > &lt;methodCall&gt;
> > > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > > >   &lt;params&gt;
> > > > > >     &lt;param&gt;
> > > > > >       &lt;value&gt;
> > > > > >         &lt;struct&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >
> > > > > >
> > > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >         &lt;/struct&gt;
> > > > > >       &lt;/value&gt;
> > > > > >     &lt;/param&gt;
> > > > > >   &lt;/params&gt;
> > > > > > &lt;/methodCall&gt;
> > > > > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > > &lt;methodCall&gt;
> > > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > > >   &lt;params&gt;
> > > > > >     &lt;param&gt;
> > > > > >       &lt;value&gt;
> > > > > >         &lt;struct&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >
> > > > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >           &lt;member&gt;
> > > > > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > > >             &lt;value&gt;
> > > > > >               &lt;struct&gt;
> > > > > >                 &lt;member&gt;
> > > > > >
> > > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > > >                   &lt;value&gt;
> > > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > > >                   &lt;/value&gt;
> > > > > >                 &lt;/member&gt;
> > > > > >               &lt;/struct&gt;
> > > > > >             &lt;/value&gt;
> > > > > >           &lt;/member&gt;
> > > > > >         &lt;/struct&gt;
> > > > > >       &lt;/value&gt;
> > > > > >     &lt;/param&gt;
> > > > > >   &lt;/params&gt;
> > > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > > > > >
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Deepak Shetty <sh...@gmail.com>.
Hi
i dont see your test case reflecting your original requirement

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

How is step 2 being determined? Is only the number varying? If you have
multiple threads do they read the same data , different data ? Do you have
to read specific rows?

regards
deepak





On Wed, Aug 15, 2012 at 9:21 AM, Jean FX <xo...@gmail.com> wrote:

> Thanks a lot for your reply!
>
> Will try to understand the functions to see if I can implement with
> functions. I want to avoid implementing a custom Sampler if possible.
>
> I have tried making the CSV Data sampler a child of a while logic
> controller together with the Sampler to be repeated but it still tries to
> use the data to repeat the Sampler that follows the While controller in the
> testplan, which should only run once.
>
> I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP
>
> Kind Regards,
> Jean
>
> On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com> wrote:
>
> > Hi
> > I dont remember the scoping rules now (but I believe the  CSV config had
> to
> > be a child of a while controller or equivalent to do what you want - but
> my
> > memory has always been poor :) )
> >
> > In any case it looks like the csvread or stringfromfile functions would
> > work for you
> > http://jmeter.apache.org/usermanual/functions.html
> >
> > P.S. if you attached your test script it didnt come to the mailing list -
> > you should upload the script and provide a link to it.
> > regards
> > deepak
> >
> > On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com> wrote:
> >
> > > Hello Shaba.
> > >
> > > I had tried putting the CSV Data config element in both a Logic
> > Controller
> > > and a Sampler. In both case jMeter did not respect this. It repeated
> > > execution for every line in the csv file even beyond the Logic
> > > Controller(see my test plan bellow).
> > >
> > > Your site does not address this topic.
> > >
> > > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com> wrote:
> > >
> > > > Yes we can include CSV data config as a child to that sampler.
> > > >
> > > > Here's a little write up about JMeter hope it helps.
> > > >
> > > >
> http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > > >
> > > > cheers,
> > > > s
> > > >
> > > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:
> > > >
> > > > > 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">&lt;?xml
> > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > &lt;methodCall&gt;
> > > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > > >   &lt;params&gt;
> > > > >     &lt;param&gt;
> > > > >       &lt;value&gt;
> > > > >         &lt;struct&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >
> > > > >
> > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >         &lt;/struct&gt;
> > > > >       &lt;/value&gt;
> > > > >     &lt;/param&gt;
> > > > >   &lt;/params&gt;
> > > > > &lt;/methodCall&gt;
> > > > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > > &lt;methodCall&gt;
> > > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > > >   &lt;params&gt;
> > > > >     &lt;param&gt;
> > > > >       &lt;value&gt;
> > > > >         &lt;struct&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >
> > > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >           &lt;member&gt;
> > > > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > > >             &lt;value&gt;
> > > > >               &lt;struct&gt;
> > > > >                 &lt;member&gt;
> > > > >
> > > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > > >                   &lt;value&gt;
> > > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > > >                   &lt;/value&gt;
> > > > >                 &lt;/member&gt;
> > > > >               &lt;/struct&gt;
> > > > >             &lt;/value&gt;
> > > > >           &lt;/member&gt;
> > > > >         &lt;/struct&gt;
> > > > >       &lt;/value&gt;
> > > > >     &lt;/param&gt;
> > > > >   &lt;/params&gt;
> > > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > > > >
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Thanks a lot for your reply!

Will try to understand the functions to see if I can implement with
functions. I want to avoid implementing a custom Sampler if possible.

I have tried making the CSV Data sampler a child of a while logic
controller together with the Sampler to be repeated but it still tries to
use the data to repeat the Sampler that follows the While controller in the
testplan, which should only run once.

I have pasted my Test Plan here : http://pastebin.com/0P7bCVTP

Kind Regards,
Jean

On Wed, Aug 15, 2012 at 5:52 PM, Deepak Shetty <sh...@gmail.com> wrote:

> Hi
> I dont remember the scoping rules now (but I believe the  CSV config had to
> be a child of a while controller or equivalent to do what you want - but my
> memory has always been poor :) )
>
> In any case it looks like the csvread or stringfromfile functions would
> work for you
> http://jmeter.apache.org/usermanual/functions.html
>
> P.S. if you attached your test script it didnt come to the mailing list -
> you should upload the script and provide a link to it.
> regards
> deepak
>
> On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com> wrote:
>
> > Hello Shaba.
> >
> > I had tried putting the CSV Data config element in both a Logic
> Controller
> > and a Sampler. In both case jMeter did not respect this. It repeated
> > execution for every line in the csv file even beyond the Logic
> > Controller(see my test plan bellow).
> >
> > Your site does not address this topic.
> >
> > On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com> wrote:
> >
> > > Yes we can include CSV data config as a child to that sampler.
> > >
> > > Here's a little write up about JMeter hope it helps.
> > >
> > > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> > >
> > > cheers,
> > > s
> > >
> > > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:
> > >
> > > > 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">&lt;?xml
> > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > &lt;methodCall&gt;
> > > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > > >   &lt;params&gt;
> > > >     &lt;param&gt;
> > > >       &lt;value&gt;
> > > >         &lt;struct&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;EXT&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >
> > > >
> &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;i4&gt;1&lt;/i4&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >         &lt;/struct&gt;
> > > >       &lt;/value&gt;
> > > >     &lt;/param&gt;
> > > >   &lt;/params&gt;
> > > > &lt;/methodCall&gt;
> > > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > > &lt;methodCall&gt;
> > > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > > >   &lt;params&gt;
> > > >     &lt;param&gt;
> > > >       &lt;value&gt;
> > > >         &lt;struct&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originHostName&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >
> > > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >           &lt;member&gt;
> > > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > > >             &lt;value&gt;
> > > >               &lt;struct&gt;
> > > >                 &lt;member&gt;
> > > >
> > > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > > >                   &lt;value&gt;
> > > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > > >                   &lt;/value&gt;
> > > >                 &lt;/member&gt;
> > > >               &lt;/struct&gt;
> > > >             &lt;/value&gt;
> > > >           &lt;/member&gt;
> > > >         &lt;/struct&gt;
> > > >       &lt;/value&gt;
> > > >     &lt;/param&gt;
> > > >   &lt;/params&gt;
> > > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > > >
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Deepak Shetty <sh...@gmail.com>.
Hi
I dont remember the scoping rules now (but I believe the  CSV config had to
be a child of a while controller or equivalent to do what you want - but my
memory has always been poor :) )

In any case it looks like the csvread or stringfromfile functions would
work for you
http://jmeter.apache.org/usermanual/functions.html

P.S. if you attached your test script it didnt come to the mailing list -
you should upload the script and provide a link to it.
regards
deepak

On Wed, Aug 15, 2012 at 12:03 AM, Jean FX <xo...@gmail.com> wrote:

> Hello Shaba.
>
> I had tried putting the CSV Data config element in both a Logic Controller
> and a Sampler. In both case jMeter did not respect this. It repeated
> execution for every line in the csv file even beyond the Logic
> Controller(see my test plan bellow).
>
> Your site does not address this topic.
>
> On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com> wrote:
>
> > Yes we can include CSV data config as a child to that sampler.
> >
> > Here's a little write up about JMeter hope it helps.
> >
> > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> >
> > cheers,
> > s
> >
> > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:
> >
> > > 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">&lt;?xml
> > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > &lt;methodCall&gt;
> > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > >   &lt;params&gt;
> > >     &lt;param&gt;
> > >       &lt;value&gt;
> > >         &lt;struct&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;EXT&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originHostName&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > >             &lt;value&gt;
> > >
> > > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;i4&gt;1&lt;/i4&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >         &lt;/struct&gt;
> > >       &lt;/value&gt;
> > >     &lt;/param&gt;
> > >   &lt;/params&gt;
> > > &lt;/methodCall&gt;
> > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > &lt;methodCall&gt;
> > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > >   &lt;params&gt;
> > >     &lt;param&gt;
> > >       &lt;value&gt;
> > >         &lt;struct&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originHostName&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > >             &lt;value&gt;
> > >
> > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;struct&gt;
> > >                 &lt;member&gt;
> > >
> > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > >                   &lt;value&gt;
> > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > >                   &lt;/value&gt;
> > >                 &lt;/member&gt;
> > >               &lt;/struct&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >         &lt;/struct&gt;
> > >       &lt;/value&gt;
> > >     &lt;/param&gt;
> > >   &lt;/params&gt;
> > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Shaba K <sh...@gmail.com>.
Am not sure if am understanding what you mean.

""

On Wed, Aug 15, 2012 at 8:03 AM, Jean FX <xo...@gmail.com> wrote:

> Hello Shaba.
>
> I had tried putting the CSV Data config element in both a Logic Controller
> and a Sampler. In both case jMeter did not respect this. It repeated
> execution for every line in the csv file even beyond the Logic
> Controller(see my test plan bellow).
>
> Your site does not address this topic.
>
> On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com> wrote:
>
> > Yes we can include CSV data config as a child to that sampler.
> >
> > Here's a little write up about JMeter hope it helps.
> >
> > http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
> >
> > cheers,
> > s
> >
> > On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:
> >
> > > 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">&lt;?xml
> > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > &lt;methodCall&gt;
> > >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> > >   &lt;params&gt;
> > >     &lt;param&gt;
> > >       &lt;value&gt;
> > >         &lt;struct&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;EXT&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originHostName&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;USSDGW&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > >             &lt;value&gt;
> > >
> > > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;i4&gt;1&lt;/i4&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${msisdn}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >         &lt;/struct&gt;
> > >       &lt;/value&gt;
> > >     &lt;/param&gt;
> > >   &lt;/params&gt;
> > > &lt;/methodCall&gt;
> > > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > > &lt;methodCall&gt;
> > >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> > >   &lt;params&gt;
> > >     &lt;param&gt;
> > >       &lt;value&gt;
> > >         &lt;struct&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originNodeType&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originHostName&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${originHostName}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTransactionID&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> > >             &lt;value&gt;
> > >
> > &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >           &lt;member&gt;
> > >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> > >             &lt;value&gt;
> > >               &lt;struct&gt;
> > >                 &lt;member&gt;
> > >
> > &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> > >                   &lt;value&gt;
> > >                     &lt;boolean&gt;1&lt;/boolean&gt;
> > >                   &lt;/value&gt;
> > >                 &lt;/member&gt;
> > >               &lt;/struct&gt;
> > >             &lt;/value&gt;
> > >           &lt;/member&gt;
> > >         &lt;/struct&gt;
> > >       &lt;/value&gt;
> > >     &lt;/param&gt;
> > >   &lt;/params&gt;
> > > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> > >
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Jean FX <xo...@gmail.com>.
Hello Shaba.

I had tried putting the CSV Data config element in both a Logic Controller
and a Sampler. In both case jMeter did not respect this. It repeated
execution for every line in the csv file even beyond the Logic
Controller(see my test plan bellow).

Your site does not address this topic.

On Tue, Aug 14, 2012 at 3:17 PM, Shaba K <sh...@gmail.com> wrote:

> Yes we can include CSV data config as a child to that sampler.
>
> Here's a little write up about JMeter hope it helps.
>
> http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html
>
> cheers,
> s
>
> On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:
>
> > 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">&lt;?xml
> > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > &lt;methodCall&gt;
> >   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
> >   &lt;params&gt;
> >     &lt;param&gt;
> >       &lt;value&gt;
> >         &lt;struct&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originNodeType&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;EXT&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originHostName&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;USSDGW&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originTransactionID&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;2012080619175629676&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> >             &lt;value&gt;
> >
> > &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;i4&gt;1&lt;/i4&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;${msisdn}&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >         &lt;/struct&gt;
> >       &lt;/value&gt;
> >     &lt;/param&gt;
> >   &lt;/params&gt;
> > &lt;/methodCall&gt;
> > </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> > version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> > &lt;methodCall&gt;
> >   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
> >   &lt;params&gt;
> >     &lt;param&gt;
> >       &lt;value&gt;
> >         &lt;struct&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originNodeType&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;${originNodeType}&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originHostName&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;${originHostName}&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originTransactionID&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;${transaction_id}&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;originTimeStamp&lt;/name&gt;
> >             &lt;value&gt;
> >
> &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;subscriberNumber&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >           &lt;member&gt;
> >             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
> >             &lt;value&gt;
> >               &lt;struct&gt;
> >                 &lt;member&gt;
> >
> &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
> >                   &lt;value&gt;
> >                     &lt;boolean&gt;1&lt;/boolean&gt;
> >                   &lt;/value&gt;
> >                 &lt;/member&gt;
> >               &lt;/struct&gt;
> >             &lt;/value&gt;
> >           &lt;/member&gt;
> >         &lt;/struct&gt;
> >       &lt;/value&gt;
> >     &lt;/param&gt;
> >   &lt;/params&gt;
> > &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
> >
>

Re: Is it possible to restrict the CSV Data config element to a specific Sampler or even Logic Controller?

Posted by Shaba K <sh...@gmail.com>.
Yes we can include CSV data config as a child to that sampler.

Here's a little write up about JMeter hope it helps.

http://automationwithselenium.blogspot.co.uk/2012/01/jmeter-proxy.html

cheers,
s

On Tue, Aug 14, 2012 at 12:50 PM, Jean FX <xo...@gmail.com> wrote:

> 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">&lt;?xml
> version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> &lt;methodCall&gt;
>   &lt;methodName&gt;GetBalanceAndDate&lt;/methodName&gt;
>   &lt;params&gt;
>     &lt;param&gt;
>       &lt;value&gt;
>         &lt;struct&gt;
>           &lt;member&gt;
>             &lt;name&gt;originNodeType&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;EXT&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originHostName&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;USSDGW&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originTransactionID&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;2012080619175629676&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originTimeStamp&lt;/name&gt;
>             &lt;value&gt;
>
> &lt;dateTime.iso8601&gt;20120806T19:17:56+0500&lt;/dateTime.iso8601&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
>             &lt;value&gt;
>               &lt;i4&gt;1&lt;/i4&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;subscriberNumber&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;${msisdn}&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>         &lt;/struct&gt;
>       &lt;/value&gt;
>     &lt;/param&gt;
>   &lt;/params&gt;
> &lt;/methodCall&gt;
> </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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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">&lt;?xml
> version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
> &lt;methodCall&gt;
>   &lt;methodName&gt;GetAccountDetails&lt;/methodName&gt;
>   &lt;params&gt;
>     &lt;param&gt;
>       &lt;value&gt;
>         &lt;struct&gt;
>           &lt;member&gt;
>             &lt;name&gt;originNodeType&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;${originNodeType}&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originHostName&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;${originHostName}&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originTransactionID&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;${transaction_id}&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;originTimeStamp&lt;/name&gt;
>             &lt;value&gt;
>               &lt;dateTime.iso8601&gt;${timestamp}&lt;/dateTime.iso8601&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;subscriberNumberNAI&lt;/name&gt;
>             &lt;value&gt;
>               &lt;i4&gt;${subscriberNumberNAI}&lt;/i4&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;subscriberNumber&lt;/name&gt;
>             &lt;value&gt;
>               &lt;string&gt;${subscriberNumber}&lt;/string&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>           &lt;member&gt;
>             &lt;name&gt;requestedInformationFlags&lt;/name&gt;
>             &lt;value&gt;
>               &lt;struct&gt;
>                 &lt;member&gt;
>                   &lt;name&gt;requestMasterAccountBalanceFlag&lt;/name&gt;
>                   &lt;value&gt;
>                     &lt;boolean&gt;1&lt;/boolean&gt;
>                   &lt;/value&gt;
>                 &lt;/member&gt;
>               &lt;/struct&gt;
>             &lt;/value&gt;
>           &lt;/member&gt;
>         &lt;/struct&gt;
>       &lt;/value&gt;
>     &lt;/param&gt;
>   &lt;/params&gt;
> &lt;/methodCall&gt;</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=&quot;responseCode&quot; 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=&quot;responseCode&quot;]/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>
>