You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jmeter.apache.org by Milamber <mi...@apache.org> on 2013/08/03 15:25:58 UTC

Re: svn commit: r1509971 - in /jmeter/trunk/bin/templates: build-web-test-plan.jmx build-webservice-test-plan.jmx templates.xml

Le 03/08/2013 12:41, pmouawad@apache.org a ecrit :
> Author: pmouawad
> Date: Sat Aug  3 12:41:36 2013
> New Revision: 1509971
>
> URL: http://svn.apache.org/r1509971
> Log:
> Bug 55085 - UX Improvement : Ability to create New Test Plan from Templates
> Add Webservice Template (not using deprecated Webservice Sampler)
> Enhance web test plan to show more features

Perhaps, we must keep the "simple" web test plan template (in sync with 
the docs), and add an advanced web test plan template.
Otherwise, you must update the user's manual section to build a web test 
plan to match with your jmx file.

Milamber


> Bugzilla Id: 55085
>
> Added:
>      jmeter/trunk/bin/templates/build-webservice-test-plan.jmx
> Modified:
>      jmeter/trunk/bin/templates/build-web-test-plan.jmx
>      jmeter/trunk/bin/templates/templates.xml
>
> Modified: jmeter/trunk/bin/templates/build-web-test-plan.jmx
> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff
> ==============================================================================
> --- jmeter/trunk/bin/templates/build-web-test-plan.jmx (original)
> +++ jmeter/trunk/bin/templates/build-web-test-plan.jmx Sat Aug  3 12:41:36 2013
> @@ -11,13 +11,77 @@
>         <stringProp name="TestPlan.user_define_classpath"></stringProp>
>       </TestPlan>
>       <hashTree>
> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="resources_folder" elementType="Argument">
> +            <stringProp name="Argument.name">resources_folder</stringProp>
> +            <stringProp name="Argument.value">${__P(resources_folder, CHANGE_FOLDER)}</stringProp>
> +            <stringProp name="Argument.desc">Change this value to folder containing your CSV files</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="host" elementType="Argument">
> +            <stringProp name="Argument.name">host</stringProp>
> +            <stringProp name="Argument.value">jmeter.apache.org</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +          <elementProp name="bugzilla_host" elementType="Argument">
> +            <stringProp name="Argument.name">bugzilla_host</stringProp>
> +            <stringProp name="Argument.value">issues.apache.org</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </Arguments>
> +      <hashTree/>
> +      <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
> +        <collectionProp name="CookieManager.cookies"/>
> +        <boolProp name="CookieManager.clearEachIteration">true</boolProp>
> +        <stringProp name="CookieManager.implementation">org.apache.jmeter.protocol.http.control.HC4CookieHandler</stringProp>
> +      </CookieManager>
> +      <hashTree/>
> +      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
> +        <collectionProp name="HeaderManager.headers">
> +          <elementProp name="User-Agent" elementType="Header">
> +            <stringProp name="Header.name">User-Agent</stringProp>
> +            <stringProp name="Header.value">Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp>
> +          </elementProp>
> +          <elementProp name="Connection" elementType="Header">
> +            <stringProp name="Header.name">Connection</stringProp>
> +            <stringProp name="Header.value">keep-alive</stringProp>
> +          </elementProp>
> +          <elementProp name="Accept-Language" elementType="Header">
> +            <stringProp name="Header.name">Accept-Language</stringProp>
> +            <stringProp name="Header.value">fr,en;q=0.8,fr-fr;q=0.5,en-us;q=0.3</stringProp>
> +          </elementProp>
> +          <elementProp name="Accept-Encoding" elementType="Header">
> +            <stringProp name="Header.name">Accept-Encoding</stringProp>
> +            <stringProp name="Header.value">gzip, deflate</stringProp>
> +          </elementProp>
> +          <elementProp name="Accept" elementType="Header">
> +            <stringProp name="Header.name">Accept</stringProp>
> +            <stringProp name="Header.value">text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </HeaderManager>
> +      <hashTree/>
> +      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="loginData" enabled="true">
> +        <stringProp name="TestPlan.comments">CSV file that must contains rows with 2 columns separated by comma, first column will be mapped to login, second one to password</stringProp>
> +        <stringProp name="delimiter">,</stringProp>
> +        <stringProp name="fileEncoding">UTF-8</stringProp>
> +        <stringProp name="filename">${resources_folder}/login.csv</stringProp>
> +        <boolProp name="quotedData">false</boolProp>
> +        <boolProp name="recycle">true</boolProp>
> +        <stringProp name="shareMode">All threads</stringProp>
> +        <boolProp name="stopThread">false</boolProp>
> +        <stringProp name="variableNames">login,password</stringProp>
> +      </CSVDataSet>
> +      <hashTree/>
>         <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="JMeter Users" enabled="true">
>           <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
>           <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
>             <boolProp name="LoopController.continue_forever">false</boolProp>
>             <stringProp name="LoopController.loops">2</stringProp>
>           </elementProp>
> -        <stringProp name="ThreadGroup.num_threads">5</stringProp>
> +        <stringProp name="ThreadGroup.num_threads">1</stringProp>
>           <stringProp name="ThreadGroup.ramp_time">5</stringProp>
>           <longProp name="ThreadGroup.start_time">1373789594000</longProp>
>           <longProp name="ThreadGroup.end_time">1373789594000</longProp>
> @@ -30,16 +94,27 @@
>             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
>               <collectionProp name="Arguments.arguments"/>
>             </elementProp>
> -          <stringProp name="HTTPSampler.domain">jmeter.apache.org</stringProp>
> +          <stringProp name="HTTPSampler.domain">${host}</stringProp>
>             <stringProp name="HTTPSampler.port"></stringProp>
>             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
>             <stringProp name="HTTPSampler.response_timeout"></stringProp>
>             <stringProp name="HTTPSampler.protocol"></stringProp>
>             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
>             <stringProp name="HTTPSampler.path"></stringProp>
> +          <stringProp name="TestPlan.comments">Shows how to set defaults on page</stringProp>
>             <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
>           </ConfigTestElement>
>           <hashTree/>
> +        <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="CheckResponseCode200" enabled="true">
> +          <collectionProp name="Asserion.test_strings">
> +            <stringProp name="49586">200</stringProp>
> +          </collectionProp>
> +          <stringProp name="TestPlan.comments">Check Response code for all children samplers of JMeter Users Thread Group</stringProp>
> +          <stringProp name="Assertion.test_field">Assertion.response_code</stringProp>
> +          <boolProp name="Assertion.assume_success">false</boolProp>
> +          <intProp name="Assertion.test_type">8</intProp>
> +        </ResponseAssertion>
> +        <hashTree/>
>           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Home Page" enabled="true">
>             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pré-définies" enabled="true">
>               <collectionProp name="Arguments.arguments"/>
> @@ -59,7 +134,18 @@
>             <boolProp name="HTTPSampler.monitor">false</boolProp>
>             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
>           </HTTPSamplerProxy>
> -        <hashTree/>
> +        <hashTree>
> +          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
> +            <collectionProp name="Asserion.test_strings">
> +              <stringProp name="605898121">&lt;title&gt;Apache JMeter - Apache JMeter&amp;trade;&lt;/title&gt;</stringProp>
> +            </collectionProp>
> +            <stringProp name="TestPlan.comments">We check page contains some text</stringProp>
> +            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
> +            <boolProp name="Assertion.assume_success">false</boolProp>
> +            <intProp name="Assertion.test_type">16</intProp>
> +          </ResponseAssertion>
> +          <hashTree/>
> +        </hashTree>
>           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Changes" enabled="true">
>             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pré-définies" enabled="true">
>               <collectionProp name="Arguments.arguments"/>
> @@ -79,52 +165,83 @@
>             <boolProp name="HTTPSampler.monitor">false</boolProp>
>             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
>           </HTTPSamplerProxy>
> -        <hashTree/>
> -        <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" 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>false</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>
> +          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Wait5s Before Page" enabled="true">
> +            <stringProp name="ConstantTimer.delay">5000</stringProp>
> +            <stringProp name="RandomTimer.range">500.0</stringProp>
> +          </GaussianRandomTimer>
> +          <hashTree/>
> +          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
> +            <collectionProp name="Asserion.test_strings">
> +              <stringProp name="-420601512">&lt;title&gt;Apache JMeter - Changes&lt;/title&gt;</stringProp>
> +            </collectionProp>
> +            <stringProp name="TestPlan.comments">We check page contains some text</stringProp>
> +            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
> +            <boolProp name="Assertion.assume_success">false</boolProp>
> +            <intProp name="Assertion.test_type">16</intProp>
> +          </ResponseAssertion>
> +          <hashTree/>
> +          <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="randomBugIdExtractor" enabled="true">
> +            <stringProp name="TestPlan.comments">Shows how to extract bug id from a link in response</stringProp>
> +            <stringProp name="RegexExtractor.useHeaders">false</stringProp>
> +            <stringProp name="RegexExtractor.refname">bugId</stringProp>
> +            <stringProp name="RegexExtractor.regex">https://issues.apache.org/bugzilla/show_bug.cgi\?id=([^&quot;]+?)&quot;</stringProp>
> +            <stringProp name="RegexExtractor.template">$1$</stringProp>
> +            <stringProp name="RegexExtractor.default">nv_bugId</stringProp>
> +            <stringProp name="RegexExtractor.match_number">0</stringProp>
> +          </RegexExtractor>
> +          <hashTree/>
> +        </hashTree>
> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="BugDetail Page" enabled="true">
> +          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pré-définies" enabled="true">
> +            <collectionProp name="Arguments.arguments"/>
> +          </elementProp>
> +          <stringProp name="HTTPSampler.domain">${bugzilla_host}</stringProp>
> +          <stringProp name="HTTPSampler.port"></stringProp>
> +          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
> +          <stringProp name="HTTPSampler.response_timeout"></stringProp>
> +          <stringProp name="HTTPSampler.protocol">https</stringProp>
> +          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
> +          <stringProp name="HTTPSampler.path">/bugzilla/show_bug.cgi?id=${bugId}</stringProp>
> +          <stringProp name="HTTPSampler.method">GET</stringProp>
> +          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
> +          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
> +          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
> +          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
> +          <boolProp name="HTTPSampler.monitor">false</boolProp>
> +          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
> +          <stringProp name="TestPlan.comments">We use bugId variable extracted in Changes by randomBugIdExtractor</stringProp>
> +        </HTTPSamplerProxy>
> +        <hashTree>
> +          <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Wait5s Before BugDetail Page" enabled="true">
> +            <stringProp name="ConstantTimer.delay">5000</stringProp>
> +            <stringProp name="RandomTimer.range">500.0</stringProp>
> +          </GaussianRandomTimer>
> +          <hashTree/>
> +          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
> +            <collectionProp name="Asserion.test_strings">
> +              <stringProp name="-1440480625">This is &lt;b&gt;ASF Bugzilla&lt;/b&gt;: the Apache Software Foundation bug system</stringProp>
> +            </collectionProp>
> +            <stringProp name="TestPlan.comments">We check page contains some text</stringProp>
> +            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
> +            <boolProp name="Assertion.assume_success">false</boolProp>
> +            <intProp name="Assertion.test_type">16</intProp>
> +          </ResponseAssertion>
> +          <hashTree/>
> +        </hashTree>
>           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="false">
>             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="Variables pré-définies" enabled="true">
>               <collectionProp name="Arguments.arguments">
>                 <elementProp name="username" elementType="HTTPArgument">
>                   <boolProp name="HTTPArgument.always_encode">true</boolProp>
> -                <stringProp name="Argument.value">johndoe</stringProp>
> +                <stringProp name="Argument.value">${login}</stringProp>
>                   <stringProp name="Argument.metadata">=</stringProp>
>                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
>                   <stringProp name="Argument.name">username</stringProp>
>                 </elementProp>
>                 <elementProp name="password" elementType="HTTPArgument">
>                   <boolProp name="HTTPArgument.always_encode">true</boolProp>
> -                <stringProp name="Argument.value">secret</stringProp>
> +                <stringProp name="Argument.value">${password}</stringProp>
>                   <stringProp name="Argument.metadata">=</stringProp>
>                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
>                   <stringProp name="Argument.name">password</stringProp>
> @@ -145,9 +262,151 @@
>             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
>             <boolProp name="HTTPSampler.monitor">false</boolProp>
>             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
> +          <stringProp name="TestPlan.comments">We use here data from loginData CSV DataSet</stringProp>
>           </HTTPSamplerProxy>
>           <hashTree/>
>         </hashTree>
> +      <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>true</assertions>
> +            <subresults>false</subresults>
> +            <responseData>false</responseData>
> +            <samplerData>false</samplerData>
> +            <xml>false</xml>
> +            <fieldNames>true</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>true</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +      <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" 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>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>true</assertions>
> +            <subresults>false</subresults>
> +            <responseData>false</responseData>
> +            <samplerData>false</samplerData>
> +            <xml>false</xml>
> +            <fieldNames>true</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>true</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +      <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="false">
> +        <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>false</xml>
> +            <fieldNames>false</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>false</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
> +        <boolProp name="ResultCollector.error_logging">false</boolProp>
> +        <objProp>
> +          <name>saveConfig</name>
> +          <value class="SampleSaveConfiguration">
> +            <time>true</time>
> +            <latency>true</latency>
> +            <timestamp>true</timestamp>
> +            <success>true</success>
> +            <label>true</label>
> +            <code>true</code>
> +            <message>true</message>
> +            <threadName>true</threadName>
> +            <dataType>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>true</assertions>
> +            <subresults>false</subresults>
> +            <responseData>false</responseData>
> +            <samplerData>false</samplerData>
> +            <xml>false</xml>
> +            <fieldNames>true</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>true</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="TestPlan.comments">Use only during debug of script</stringProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
>       </hashTree>
>     </hashTree>
>   </jmeterTestPlan>
>
> Added: jmeter/trunk/bin/templates/build-webservice-test-plan.jmx
> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-webservice-test-plan.jmx?rev=1509971&view=auto
> ==============================================================================
> --- jmeter/trunk/bin/templates/build-webservice-test-plan.jmx (added)
> +++ jmeter/trunk/bin/templates/build-webservice-test-plan.jmx Sat Aug  3 12:41:36 2013
> @@ -0,0 +1,184 @@
> +<?xml version="1.0" encoding="UTF-8"?>
> +<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10-SNAPSHOT.20130803">
> +  <hashTree>
> +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
> +      <stringProp name="TestPlan.comments"></stringProp>
> +      <boolProp name="TestPlan.functional_mode">false</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>
> +      <stringProp name="TestPlan.user_define_classpath"></stringProp>
> +    </TestPlan>
> +    <hashTree>
> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
> +        <collectionProp name="Arguments.arguments">
> +          <elementProp name="host" elementType="Argument">
> +            <stringProp name="Argument.name">host</stringProp>
> +            <stringProp name="Argument.value">wsf.cdyne.com</stringProp>
> +            <stringProp name="Argument.metadata">=</stringProp>
> +            <stringProp name="Argument.desc">Host of Webservice</stringProp>
> +          </elementProp>
> +        </collectionProp>
> +      </Arguments>
> +      <hashTree/>
> +      <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
> +        <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
> +          <collectionProp name="Arguments.arguments"/>
> +        </elementProp>
> +        <stringProp name="HTTPSampler.domain">${host}</stringProp>
> +        <stringProp name="HTTPSampler.port"></stringProp>
> +        <stringProp name="HTTPSampler.connect_timeout"></stringProp>
> +        <stringProp name="HTTPSampler.response_timeout"></stringProp>
> +        <stringProp name="HTTPSampler.protocol"></stringProp>
> +        <stringProp name="HTTPSampler.contentEncoding"></stringProp>
> +        <stringProp name="HTTPSampler.path"></stringProp>
> +        <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
> +      </ConfigTestElement>
> +      <hashTree/>
> +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Number of Users" enabled="true">
> +        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
> +        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
> +          <boolProp name="LoopController.continue_forever">false</boolProp>
> +          <stringProp name="LoopController.loops">2</stringProp>
> +        </elementProp>
> +        <stringProp name="ThreadGroup.num_threads">5</stringProp>
> +        <stringProp name="ThreadGroup.ramp_time">5</stringProp>
> +        <longProp name="ThreadGroup.start_time">1375525852000</longProp>
> +        <longProp name="ThreadGroup.end_time">1375525852000</longProp>
> +        <boolProp name="ThreadGroup.scheduler">false</boolProp>
> +        <stringProp name="ThreadGroup.duration"></stringProp>
> +        <stringProp name="ThreadGroup.delay"></stringProp>
> +      </ThreadGroup>
> +      <hashTree>
> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Soap Request" enabled="true">
> +          <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
> +          <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
> +            <collectionProp name="Arguments.arguments">
> +              <elementProp name="" elementType="HTTPArgument">
> +                <boolProp name="HTTPArgument.always_encode">false</boolProp>
> +                <stringProp name="Argument.value">&lt;soap:Envelope xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot; xmlns:xsd=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:soap=&quot;http://schemas.xmlsoap.org/soap/envelope/&quot;&gt;&#xd;
> +  &lt;soap:Body&gt;&#xd;
> +    &lt;GetCityForecastByZIP xmlns=&quot;http://ws.cdyne.com/WeatherWS/&quot;&gt;&#xd;
> +      &lt;ZIP&gt;60601&lt;/ZIP&gt;&#xd;
> +    &lt;/GetCityForecastByZIP&gt;&#xd;
> +  &lt;/soap:Body&gt;&#xd;
> +&lt;/soap:Envelope&gt;</stringProp>
> +                <stringProp name="Argument.metadata">=</stringProp>
> +              </elementProp>
> +            </collectionProp>
> +          </elementProp>
> +          <stringProp name="HTTPSampler.domain"></stringProp>
> +          <stringProp name="HTTPSampler.port"></stringProp>
> +          <stringProp name="HTTPSampler.connect_timeout"></stringProp>
> +          <stringProp name="HTTPSampler.response_timeout"></stringProp>
> +          <stringProp name="HTTPSampler.protocol"></stringProp>
> +          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
> +          <stringProp name="HTTPSampler.path">/WeatherWS/Weather.asmx</stringProp>
> +          <stringProp name="HTTPSampler.method">POST</stringProp>
> +          <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
> +          <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
> +          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
> +          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
> +          <boolProp name="HTTPSampler.monitor">false</boolProp>
> +          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
> +        </HTTPSamplerProxy>
> +        <hashTree>
> +          <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
> +            <collectionProp name="HeaderManager.headers">
> +              <elementProp name="" elementType="Header">
> +                <stringProp name="Header.name">Content-Type</stringProp>
> +                <stringProp name="Header.value">text/xml; charset=utf-8</stringProp>
> +              </elementProp>
> +              <elementProp name="" elementType="Header">
> +                <stringProp name="Header.name">SOAPAction</stringProp>
> +                <stringProp name="Header.value">&quot;http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP&quot;</stringProp>
> +              </elementProp>
> +            </collectionProp>
> +          </HeaderManager>
> +          <hashTree/>
> +          <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
> +            <collectionProp name="Asserion.test_strings">
> +              <stringProp name="130046656">&lt;/GetCityForecastByZIPResult&gt;</stringProp>
> +            </collectionProp>
> +            <stringProp name="TestPlan.comments">Verify content in response</stringProp>
> +            <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
> +            <boolProp name="Assertion.assume_success">false</boolProp>
> +            <intProp name="Assertion.test_type">16</intProp>
> +          </ResponseAssertion>
> +          <hashTree/>
> +        </hashTree>
> +      </hashTree>
> +      <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="false">
> +        <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>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>true</assertions>
> +            <subresults>false</subresults>
> +            <responseData>false</responseData>
> +            <samplerData>false</samplerData>
> +            <xml>false</xml>
> +            <fieldNames>true</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>true</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +      <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
> +            <encoding>false</encoding>
> +            <assertions>true</assertions>
> +            <subresults>false</subresults>
> +            <responseData>false</responseData>
> +            <samplerData>false</samplerData>
> +            <xml>false</xml>
> +            <fieldNames>true</fieldNames>
> +            <responseHeaders>false</responseHeaders>
> +            <requestHeaders>false</requestHeaders>
> +            <responseDataOnError>true</responseDataOnError>
> +            <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
> +            <assertionsResultsToSave>0</assertionsResultsToSave>
> +            <bytes>true</bytes>
> +            <hostname>true</hostname>
> +            <threadCounts>true</threadCounts>
> +            <sampleCount>true</sampleCount>
> +          </value>
> +        </objProp>
> +        <stringProp name="filename"></stringProp>
> +      </ResultCollector>
> +      <hashTree/>
> +    </hashTree>
> +  </hashTree>
> +</jmeterTestPlan>
>
> Modified: jmeter/trunk/bin/templates/templates.xml
> URL: http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/templates.xml?rev=1509971&r1=1509970&r2=1509971&view=diff
> ==============================================================================
> --- jmeter/trunk/bin/templates/templates.xml (original)
> +++ jmeter/trunk/bin/templates/templates.xml Sat Aug  3 12:41:36 2013
> @@ -106,6 +106,12 @@
>           <fileName>/bin/templates/build-web-test-plan.jmx</fileName>
>           <description><![CDATA[
>           <h1>Test plan from Building a Web Test Plan section in user's manual</h1>
> +        <h2>Configuration</h2>
> +        <p>In order to run the login sample inside plan, create a CSV file following description in <b>loginData</b> sample and put it in a folder of your choice and test running JMeter with:<br/>
> +            <ul>
> +                <li><b>jmeter -Jresources_folder=FOLDER TO CHANGE</b></li>
> +            </ul>
> +        </p>
>           <h2>Useful link</h2>
>               <ul>
>                   <li><a href="http://jmeter.apache.org/usermanual/build-web-test-plan.html" >http://jmeter.apache.org/usermanual/build-web-test-plan.html</a></li>
> @@ -113,6 +119,21 @@
>           ]]></description>
>       </template>
>       <template isTestPlan="true">
> +        <name>Building a WebService Test Plan</name>
> +        <fileName>/bin/templates/build-webservice-test-plan.jmx</fileName>
> +        <description><![CDATA[
> +        <h1>Test plan showing how to create a SOAP Webservice Test Plan </h1>
> +        <h2>Useful link</h2>
> +            <ul>
> +                <li><a href="http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables" >User Defined Variables</a></li>
> +                <li><a href="http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request_Defaults" >User Defined Variables</a></li>
> +                <li><a href="http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request" >HTTP Request</a></li>
> +                <li><a href="http://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion">Response Assertion</a></li>
> +                <li><a href="http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Header_Manager">HTTP Header Manager</a></li>
> +            </ul>
> +        ]]></description>
> +    </template>
> +    <template isTestPlan="true">
>           <name>Building an FTP Test Plan </name>
>           <fileName>/bin/templates/build-ftp-test-plan.jmx</fileName>
>           <description><![CDATA[
>
>
>


Re: svn commit: r1509971 - in /jmeter/trunk/bin/templates: build-web-test-plan.jmx build-webservice-test-plan.jmx templates.xml

Posted by Milamber <mi...@apache.org>.
Le 05/08/2013 07:41, Philippe Mouawad a ecrit :
> Agree.
> But no computer access these days, will do as soon as I have one.

I've get back the simple web test plan and add the advanced web test 
plan in templates folder.
Still adv doc update

Milamber

> Regards
>
> On Monday, August 5, 2013, Milamber wrote:
>
>> Le 03/08/2013 13:27, Philippe Mouawad a ecrit :
>>
>>> Hello Milamber,
>>> But don't you find the "simple" test plan is really too simple to be
>>> realistic ? and might be misleading as is ?
>>>
>> Yes and no. This simple test is a 'simple' introduction to web test plan,
>> it's not perfect but allow to the beginner to see how JMeter works.
>> Your advanced test plan may be to complex for a beginner for the first
>> time (a very lot of things to understand: cookies, assertion, header,
>> timers, regexp, CSV file, command line with parameter, etc.!)
>>
>> I thinks it will be better to have 2 templates :
>> * Building a (simple) web test plan (same as the doc)
>> * Building an advanced web test plan (your test plan, with some comments
>> in elements (why you should use this element? see this link, etc.) and/or
>> an update of the section 6 Building an Advanced Web Test Plan in User's
>> manual.
>>
>> If your are agree, please revert the simple test plan and and your
>> advanced test plan in templates folder.
>>
>>
>>
>>
>>> I see in previous one lots of common misuse:
>>>
>> Perhaps, add some warning/sentences in the section 6 in user's manual to
>> prevent these not optimal usages for a test plan in common conditions
>>
>> Milamber
>>
>>
>>>      - No pause
>>>      - No response checks
>>>      - No variabilisation
>>>      - No example of regexp which is almost always necessary
>>>
>>>
>>> I agree we should update manual anyway.
>>>
>>> Regards
>>>
>>> Philippe
>>>
>>> On Sat, Aug 3, 2013 at 3:25 PM, Milamber <mi...@apache.org> wrote:
>>>
>>>   Le 03/08/2013 12:41, pmouawad@apache.org a ecrit :
>>>>    Author: pmouawad
>>>>
>>>>> Date: Sat Aug  3 12:41:36 2013
>>>>> New Revision: 1509971
>>>>>
>>>>> URL: http://svn.apache.org/r1509971
>>>>> Log:
>>>>> Bug 55085 - UX Improvement : Ability to create New Test Plan from
>>>>> Templates
>>>>> Add Webservice Template (not using deprecated Webservice Sampler)
>>>>> Enhance web test plan to show more features
>>>>>
>>>>>   Perhaps, we must keep the "simple" web test plan template (in sync with
>>>> the docs), and add an advanced web test plan template.
>>>> Otherwise, you must update the user's manual section to build a web test
>>>> plan to match with your jmx file.
>>>>
>>>> Milamber
>>>>
>>>>
>>>>
>>>>    Bugzilla Id: 55085
>>>>
>>>>> Added:
>>>>>        jmeter/trunk/bin/templates/****build-webservice-test-plan.jmx
>>>>> Modified:
>>>>>        jmeter/trunk/bin/templates/****build-web-test-plan.jmx
>>>>>        jmeter/trunk/bin/templates/****templates.xml
>>>>>
>>>>> Modified: jmeter/trunk/bin/templates/****build-web-test-plan.jmx
>>>>> URL: http://svn.apache.org/viewvc/****jmeter/trunk/bin/templates/**<http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**>
>>>>> build-web-test-plan.jmx?rev=****1509971&r1=1509970&r2=1509971&**
>>>>> **view=diff<http://svn.apache.**org/viewvc/jmeter/trunk/bin/**
>>>>> templates/build-web-test-plan.**jmx?rev=1509971&r1=1509970&r2=**
>>>>> 1509971&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff>
>>>>> ==============================****============================**==**
>>>>> ==================
>>>>> --- jmeter/trunk/bin/templates/****build-web-test-plan.jmx (original)
>>>>> +++ jmeter/trunk/bin/templates/****build-web-test-plan.jmx Sat Aug  3
>>>>> 12:41:36 2013
>>>>> @@ -11,13 +11,77 @@
>>>>>           <stringProp name="TestPlan.user_define_****
>>>>> classpath"></stringProp>
>>>>>         </TestPlan>
>>>>>         <hashTree>
>>>>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>>>>> testname="User Defined Variables" enabled="true">
>>>>> +        <collectionProp name="Arguments.arguments">
>>>>> +          <elementProp name="resources_folder" elementType="Argument">
>>>>> +            <stringProp name="Argument.name">**
>>>>> resources_folder</stringProp>
>>>>> +            <stringProp name="Argument.value">${__P(****
>>>>> resources_folder,
>>>>> CHANGE_FOLDER)}</stringProp>
>>>>> +            <stringProp name="Argument.desc">Change this value to
>>>>> folder
>>>>> containing your CSV files</stringProp>
>>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="host" elementType="Argument">
>>>>> +            <stringProp name="Argument.name">host</****stringProp>
>>>>> +            <stringProp name="Argument.value">jmeter.****apache.org<
>>>>> http://jmeter.**apache.org <http://jmeter.apache.org>>
>>>>> </stringProp>
>>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="bugzilla_host" elementType="Argument">
>>>>> +            <stringProp name="Argument.name">bugzilla_****
>>>>> host</stringProp>
>>>>> +            <stringProp name="Argument.value">issues.****apache.org<
>>>>> http://issues.**apache.org <http://issues.apache.org>>
>>>>> </stringProp>
>>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>>> +          </elementProp>
>>>>> +        </collectionProp>
>>>>> +      </Arguments>
>>>>> +      <hashTree/>
>>>>> +      <CookieManager guiclass="CookiePanel" testclass="CookieManager"
>>>>> testname="HTTP Cookie Manager" enabled="true">
>>>>> +        <collectionProp name="CookieManager.cookies"/>
>>>>> +        <boolProp name="CookieManager.****clearEachIteration">true</**
>>>>> boolProp>
>>>>> +        <stringProp name="CookieManager.****
>>>>> implementation">org.apache.**
>>>>> jmeter.protocol.http.control.****HC4CookieHandler</stringProp>
>>>>> +      </CookieManager>
>>>>> +      <hashTree/>
>>>>> +      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager"
>>>>> testname="HTTP Header Manager" enabled="true">
>>>>> +        <collectionProp name="HeaderManager.headers">
>>>>> +          <elementProp name="User-Agent" elementType="Header">
>>>>> +            <stringProp name="Header.name">User-Agent<****/stringProp>
>>>>> +            <stringProp name="Header.value">Mozilla/5.****0
>>>>> (Macintosh;
>>>>> Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="Connection" elementType="Header">
>>>>> +            <stringProp name="Header.name">Connection<****/stringProp>
>>>>> +            <stringProp name="Header.value">keep-****
>>>>> alive</stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="Accept-Language" elementType="Header">
>>>>> +            <stringProp name="Header.name">Accept-**
>>>>> Language</stringProp>
>>>>> +            <stringProp name="Header.value">fr,en;q=0.****
>>>>> 8,fr-fr;q=0.5,en-us;q=0.3</****stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="Accept-Encoding" elementType="Header">
>>>>> +            <stringProp name="Header.name">Accept-**
>>>>> Encoding</stringProp>
>>>>> +            <stringProp name="Header.value">gzip, deflate</stringProp>
>>>>> +          </elementProp>
>>>>> +          <elementProp name="Accept" elementType="Header">
>>>>> +            <stringProp name="Header.name">Accept</****stringProp>
>>>>> +            <stringProp name="Header.value">text/html,****
>>>>> application/xhtml+xml,****application/xml;q=0.9,*/*;q=0.**
>>>>> **8</stringProp>
>>>>> +          </elementProp>
>>>>> +        </collectionProp>
>>>>> +      </HeaderManager>
>>>>> +      <hashTree/>
>>>>> +      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet"
>>>>> testname="loginData" enabled="true">
>>>>> +        <stringProp name="TestPlan.comments">CSV file that must
>>>>> contains
>>>>> rows with 2 columns separated by comma, first column will be mapped to
>>>>> login, second one to password</stringProp>
>>>>> +        <stringProp name="delimiter">,</****stringProp>
>>>>> +        <stringProp name="fileEncoding">UTF-8</****stringProp>
>>>>> +        <stringProp name="filename">${resources_**
>>>>> folder}/login.csv</stringProp>
>>>>> +        <boolProp name="quotedData">false</****boolProp>
>>>>> +        <boolProp name="recycle">true</boolProp>
>>>>> +        <stringProp name="shareMode">All threads</stringProp>
>>>>> +        <boolProp name="stopThread">false</****boolProp>
>>>>> +        <stringProp name="variableNames">login,****
>>>>> password</stringProp>
>>>>> +      </CSVDataSet>
>>>>> +      <hashTree/>
>>>>>           <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>>>>> testname="JMeter Users" enabled="true">
>>>>>             <stringProp name="ThreadGroup.on_sample_**
>>>>> error">continue</stringProp>
>>>>>             <elementProp name="ThreadGroup.main_****controller"
>>>>> elementType="LoopController" guiclass="LoopControlPanel"
>>>>> testclass="LoopController" testname="Loop Controller" enabled="true">
>>>>>               <boolProp name="LoopController.continue_****
>>>>> forever">false</boolProp>
>>>>>               <stringProp name="LoopController.loops">2<****/stringProp>
>>>>>             </elementProp>
>>>>> -        <stringProp name="ThreadGroup.num_threads"****>5</stringProp>
>>>>> +        <stringProp name="ThreadGroup.num_threads"****>1</stringProp>
>>>>>             <stringProp name="ThreadGroup.ramp_time">****5</stringProp>
>>>>>             <longProp name="ThreadGroup.start_time">****
>>>>> 1373789594000</longProp>
>>>>>             <longProp name="ThreadGroup.end_time">**
>>>>> 1373789594000</longProp>
>>>>> @@ -30,16 +94,27 @@
>>>>>               <elementProp name="HTTPsampler.Arguments"
>>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>>> testclass="Arguments"
>>>>> testname="User Defined Variables" enabled="true">
>>>>>                 <collectionProp name="Arguments.arguments"/>
>>>>>               </elementProp>
>>>>> -          <stringProp name="HTTPSampler.domain">**jmet**er.apache.org<
>>>>> http://**jmeter.apache.org <http://jmeter.apache.org>>
>>>>> </stringProp>
>>>>> +          <stringProp name="HTTPSampler.domain">${****
>>>>> host}</stringProp>
>>>>>               <stringProp name="HTTPSampler.port"></****stringProp>
>>>>>               <stringProp name="HTTPSampler.connect_**
>>>>> timeout"></stringProp>
>>>>>               <stringProp name="HTTPSampler.response_**
>>>>> timeout"></stringProp>
>>>>>               <stringProp name="HTTPSampler.protocol"></****stringProp>
>>>>>               <stringProp name="HTTPSampler.**
>>>>> contentEncoding"></stringProp>
>>>>>               <stringProp name="HTTPSampler.path"></****stringProp>
>>>>> +          <stringProp name="TestPlan.comments">Shows how to set
>>>>> defaults
>>>>> on page</stringProp>
>>>>>               <stringProp name="HTTPSampler.**
>>>>> concurrentPool">4</stringProp>
>>>>>             </ConfigTestElement>
>>>>>             <hashTree/>
>>>>> +        <ResponseAssertion guiclass="AssertionGui"
>>>>> testclass="ResponseAssertion" testname="****CheckResponseCode200"
>>>>> enabled="true">
>>>>> +          <collectionProp name="Asserion.test_strings">
>>>>> +            <stringProp name="49586">200</stringProp>
>>>>> +          </collectionProp>
>>>>> +          <stringProp name="TestPlan.comments">Check Response code for
>>>>> all children samplers of JMeter Users Thread Group</stringProp>
>>>>> +          <stringProp name="Assertion.test_field">**
>>>>> Assertion.response_code</****stringProp>
>>>>> +          <boolProp name="Assertion.assume_****
>>>>> success">false</boolProp>
>>>>> +          <intProp name="Assertion.test_type">8</****intProp>
>>>>> +        </ResponseAssertion>
>>>>> +        <hashTree/>
>>>>>             <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>>>> testclass="HTTPSamplerProxy" testname="Home Page" enabled="true">
>>>>>               <elementProp name="HTTPsampler.Arguments"
>>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>>> testclass="Arguments"
>>>>> testname="Variables pré-définies" enabled="true">
>>>>>                 <collectionProp name="Arguments.arguments"/>
>>>>> @@ -59,7 +134,18 @@
>>>>>               <boolProp name="HTTPSampler.monitor">****false</boolProp>
>>>>>               <stringProp name="HTTPSampler.embedded_**
>>>>> url_re"></stringProp>
>>>>>             </HTTPSamplerProxy>
>>>>> -        <hashTree/>
>>>>> +        <hashTree>
>>>>> +          <ResponseAssertion guiclass="AssertionGui"
>>>>> testclass="ResponseAssertion" testname="Response Assertion"
>>>>> enabled="true">
>>>>> +            <collectionProp name="Asserion.test_strings">
>>>>> +              <stringProp name="605898121">&lt;title&gt;****Apache
>>>>> JMeter
>>>>> - Apache JMeter&amp;trade;&lt;/title&****gt;</stringProp>
>>>>> +            </collectionProp>
>>>>> +            <stringProp name="TestPlan.comments">We check page contains
>>>>> some text</stringProp>
>>>>> +            <stringProp name="Assertion.test_field">**
>>>>> Assertion.response_data</****stringProp>
>>>>> +            <boolProp name="Assertion.assume_****
>>>>> success">false</boolProp>
>>>>> +            <intProp name="Assertion.test_type">16<****/intProp>
>>>>> +          </ResponseAssertion>
>>>>> +          <hashTree/>
>>>>> +        </hashTree>
>>>>>             <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>>>> testclass="HTTPSamplerProxy" testname="Changes" enabled="true">
>>>>>               <elementProp name="HTTPsampler.Arguments"
>>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>>> testclass="Arguments"
>>>>> testname="Variables pré-définies" enabled="true">
>>>>>                 <collectionProp name="Arguments.arguments"/>
>>>>> @@ -79,52 +165,83 @@
>>>>>               <boolProp name="HTTPSampler.monitor">****false</boolProp>
>>>>>               <stringProp name="HTTPSampler.embedded_**
>>>>> url_re"></stringProp>
>>>>>             </HTTPSamplerProxy>
>>>>> -        <hashTree/>
>>>>> -        <ResultCollector guiclass="GraphVisualizer"
>>>>> testclass="ResultCollector" testname="Graph Results" 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>false</xml>
>>>>> -              <fieldNames>false</fieldNames>
>>>>> -              <responseHeaders>false</****responseHeaders>
>>>>> -              <requestHeaders>false</****requestHeaders>
>>>>> -              <responseDataOnError>false</****responseDataOnError>
>>>>> -              <****saveAssertionResultsFailureMes****sage>false</**
>>>>> saveAssertionResultsFailureMes****sage>
>>>>> -              <assertionsResultsToSave>0</****assertionsResultsToSave>
>>>>> -              <bytes>true</bytes>
>>>>> -            </value>
>>>>> -          </objProp>
>>>>> -          <stringProp name="filename"></stringProp>
>>>>> -        </ResultCollector>
>>>>> -        <hashTree/>
>>>>> +        <hashTree>
>>>>> +          <GaussianRandomTimer guiclass="****GaussianRandomTimerGui"
>>>>> testclass="****GaussianRandomTimer" testname="Wait5s Before Page"
>>>>> enabled="true">
>>>>> +            <stringProp name="ConstantTimer.delay">****
>>>>> 5000</stringProp>
>>>>> +            <stringProp name="RandomTimer.range">500.***
>>>>> *0</stringProp>
>>>>> +          </GaussianRandomTimer>
>>>>> +          <hashTree/>
>>>>> +          <Respon
>>>>


Re: svn commit: r1509971 - in /jmeter/trunk/bin/templates: build-web-test-plan.jmx build-webservice-test-plan.jmx templates.xml

Posted by Philippe Mouawad <ph...@gmail.com>.
Agree.
But no computer access these days, will do as soon as I have one.
Regards

On Monday, August 5, 2013, Milamber wrote:

>
> Le 03/08/2013 13:27, Philippe Mouawad a ecrit :
>
>> Hello Milamber,
>> But don't you find the "simple" test plan is really too simple to be
>> realistic ? and might be misleading as is ?
>>
>
> Yes and no. This simple test is a 'simple' introduction to web test plan,
> it's not perfect but allow to the beginner to see how JMeter works.
> Your advanced test plan may be to complex for a beginner for the first
> time (a very lot of things to understand: cookies, assertion, header,
> timers, regexp, CSV file, command line with parameter, etc.!)
>
> I thinks it will be better to have 2 templates :
> * Building a (simple) web test plan (same as the doc)
> * Building an advanced web test plan (your test plan, with some comments
> in elements (why you should use this element? see this link, etc.) and/or
> an update of the section 6 Building an Advanced Web Test Plan in User's
> manual.
>
> If your are agree, please revert the simple test plan and and your
> advanced test plan in templates folder.
>
>
>
>
>> I see in previous one lots of common misuse:
>>
>
> Perhaps, add some warning/sentences in the section 6 in user's manual to
> prevent these not optimal usages for a test plan in common conditions
>
> Milamber
>
>
>>     - No pause
>>     - No response checks
>>     - No variabilisation
>>     - No example of regexp which is almost always necessary
>>
>>
>> I agree we should update manual anyway.
>>
>> Regards
>>
>> Philippe
>>
>> On Sat, Aug 3, 2013 at 3:25 PM, Milamber <mi...@apache.org> wrote:
>>
>>  Le 03/08/2013 12:41, pmouawad@apache.org a ecrit :
>>>
>>>   Author: pmouawad
>>>
>>>> Date: Sat Aug  3 12:41:36 2013
>>>> New Revision: 1509971
>>>>
>>>> URL: http://svn.apache.org/r1509971
>>>> Log:
>>>> Bug 55085 - UX Improvement : Ability to create New Test Plan from
>>>> Templates
>>>> Add Webservice Template (not using deprecated Webservice Sampler)
>>>> Enhance web test plan to show more features
>>>>
>>>>  Perhaps, we must keep the "simple" web test plan template (in sync with
>>> the docs), and add an advanced web test plan template.
>>> Otherwise, you must update the user's manual section to build a web test
>>> plan to match with your jmx file.
>>>
>>> Milamber
>>>
>>>
>>>
>>>   Bugzilla Id: 55085
>>>
>>>> Added:
>>>>       jmeter/trunk/bin/templates/****build-webservice-test-plan.jmx
>>>> Modified:
>>>>       jmeter/trunk/bin/templates/****build-web-test-plan.jmx
>>>>       jmeter/trunk/bin/templates/****templates.xml
>>>>
>>>> Modified: jmeter/trunk/bin/templates/****build-web-test-plan.jmx
>>>> URL: http://svn.apache.org/viewvc/****jmeter/trunk/bin/templates/**<http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**>
>>>> build-web-test-plan.jmx?rev=****1509971&r1=1509970&r2=1509971&**
>>>> **view=diff<http://svn.apache.**org/viewvc/jmeter/trunk/bin/**
>>>> templates/build-web-test-plan.**jmx?rev=1509971&r1=1509970&r2=**
>>>> 1509971&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff>
>>>> >
>>>> ==============================****============================**==**
>>>> ==================
>>>> --- jmeter/trunk/bin/templates/****build-web-test-plan.jmx (original)
>>>> +++ jmeter/trunk/bin/templates/****build-web-test-plan.jmx Sat Aug  3
>>>> 12:41:36 2013
>>>> @@ -11,13 +11,77 @@
>>>>          <stringProp name="TestPlan.user_define_****
>>>> classpath"></stringProp>
>>>>        </TestPlan>
>>>>        <hashTree>
>>>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>>>> testname="User Defined Variables" enabled="true">
>>>> +        <collectionProp name="Arguments.arguments">
>>>> +          <elementProp name="resources_folder" elementType="Argument">
>>>> +            <stringProp name="Argument.name">**
>>>> resources_folder</stringProp>
>>>> +            <stringProp name="Argument.value">${__P(****
>>>> resources_folder,
>>>> CHANGE_FOLDER)}</stringProp>
>>>> +            <stringProp name="Argument.desc">Change this value to
>>>> folder
>>>> containing your CSV files</stringProp>
>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="host" elementType="Argument">
>>>> +            <stringProp name="Argument.name">host</****stringProp>
>>>> +            <stringProp name="Argument.value">jmeter.****apache.org<
>>>> http://jmeter.**apache.org <http://jmeter.apache.org>>
>>>> </stringProp>
>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="bugzilla_host" elementType="Argument">
>>>> +            <stringProp name="Argument.name">bugzilla_****
>>>> host</stringProp>
>>>> +            <stringProp name="Argument.value">issues.****apache.org<
>>>> http://issues.**apache.org <http://issues.apache.org>>
>>>> </stringProp>
>>>> +            <stringProp name="Argument.metadata">=</****stringProp>
>>>> +          </elementProp>
>>>> +        </collectionProp>
>>>> +      </Arguments>
>>>> +      <hashTree/>
>>>> +      <CookieManager guiclass="CookiePanel" testclass="CookieManager"
>>>> testname="HTTP Cookie Manager" enabled="true">
>>>> +        <collectionProp name="CookieManager.cookies"/>
>>>> +        <boolProp name="CookieManager.****clearEachIteration">true</**
>>>> boolProp>
>>>> +        <stringProp name="CookieManager.****
>>>> implementation">org.apache.**
>>>> jmeter.protocol.http.control.****HC4CookieHandler</stringProp>
>>>> +      </CookieManager>
>>>> +      <hashTree/>
>>>> +      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager"
>>>> testname="HTTP Header Manager" enabled="true">
>>>> +        <collectionProp name="HeaderManager.headers">
>>>> +          <elementProp name="User-Agent" elementType="Header">
>>>> +            <stringProp name="Header.name">User-Agent<****/stringProp>
>>>> +            <stringProp name="Header.value">Mozilla/5.****0
>>>> (Macintosh;
>>>> Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="Connection" elementType="Header">
>>>> +            <stringProp name="Header.name">Connection<****/stringProp>
>>>> +            <stringProp name="Header.value">keep-****
>>>> alive</stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="Accept-Language" elementType="Header">
>>>> +            <stringProp name="Header.name">Accept-**
>>>> Language</stringProp>
>>>> +            <stringProp name="Header.value">fr,en;q=0.****
>>>> 8,fr-fr;q=0.5,en-us;q=0.3</****stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="Accept-Encoding" elementType="Header">
>>>> +            <stringProp name="Header.name">Accept-**
>>>> Encoding</stringProp>
>>>> +            <stringProp name="Header.value">gzip, deflate</stringProp>
>>>> +          </elementProp>
>>>> +          <elementProp name="Accept" elementType="Header">
>>>> +            <stringProp name="Header.name">Accept</****stringProp>
>>>> +            <stringProp name="Header.value">text/html,****
>>>> application/xhtml+xml,****application/xml;q=0.9,*/*;q=0.**
>>>> **8</stringProp>
>>>> +          </elementProp>
>>>> +        </collectionProp>
>>>> +      </HeaderManager>
>>>> +      <hashTree/>
>>>> +      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet"
>>>> testname="loginData" enabled="true">
>>>> +        <stringProp name="TestPlan.comments">CSV file that must
>>>> contains
>>>> rows with 2 columns separated by comma, first column will be mapped to
>>>> login, second one to password</stringProp>
>>>> +        <stringProp name="delimiter">,</****stringProp>
>>>> +        <stringProp name="fileEncoding">UTF-8</****stringProp>
>>>> +        <stringProp name="filename">${resources_**
>>>> folder}/login.csv</stringProp>
>>>> +        <boolProp name="quotedData">false</****boolProp>
>>>> +        <boolProp name="recycle">true</boolProp>
>>>> +        <stringProp name="shareMode">All threads</stringProp>
>>>> +        <boolProp name="stopThread">false</****boolProp>
>>>> +        <stringProp name="variableNames">login,****
>>>> password</stringProp>
>>>> +      </CSVDataSet>
>>>> +      <hashTree/>
>>>>          <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>>>> testname="JMeter Users" enabled="true">
>>>>            <stringProp name="ThreadGroup.on_sample_**
>>>> error">continue</stringProp>
>>>>            <elementProp name="ThreadGroup.main_****controller"
>>>> elementType="LoopController" guiclass="LoopControlPanel"
>>>> testclass="LoopController" testname="Loop Controller" enabled="true">
>>>>              <boolProp name="LoopController.continue_****
>>>> forever">false</boolProp>
>>>>              <stringProp name="LoopController.loops">2<****/stringProp>
>>>>            </elementProp>
>>>> -        <stringProp name="ThreadGroup.num_threads"****>5</stringProp>
>>>> +        <stringProp name="ThreadGroup.num_threads"****>1</stringProp>
>>>>            <stringProp name="ThreadGroup.ramp_time">****5</stringProp>
>>>>            <longProp name="ThreadGroup.start_time">****
>>>> 1373789594000</longProp>
>>>>            <longProp name="ThreadGroup.end_time">**
>>>> 1373789594000</longProp>
>>>> @@ -30,16 +94,27 @@
>>>>              <elementProp name="HTTPsampler.Arguments"
>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>> testclass="Arguments"
>>>> testname="User Defined Variables" enabled="true">
>>>>                <collectionProp name="Arguments.arguments"/>
>>>>              </elementProp>
>>>> -          <stringProp name="HTTPSampler.domain">**jmet**er.apache.org<
>>>> http://**jmeter.apache.org <http://jmeter.apache.org>>
>>>> </stringProp>
>>>> +          <stringProp name="HTTPSampler.domain">${****
>>>> host}</stringProp>
>>>>              <stringProp name="HTTPSampler.port"></****stringProp>
>>>>              <stringProp name="HTTPSampler.connect_**
>>>> timeout"></stringProp>
>>>>              <stringProp name="HTTPSampler.response_**
>>>> timeout"></stringProp>
>>>>              <stringProp name="HTTPSampler.protocol"></****stringProp>
>>>>              <stringProp name="HTTPSampler.**
>>>> contentEncoding"></stringProp>
>>>>              <stringProp name="HTTPSampler.path"></****stringProp>
>>>> +          <stringProp name="TestPlan.comments">Shows how to set
>>>> defaults
>>>> on page</stringProp>
>>>>              <stringProp name="HTTPSampler.**
>>>> concurrentPool">4</stringProp>
>>>>            </ConfigTestElement>
>>>>            <hashTree/>
>>>> +        <ResponseAssertion guiclass="AssertionGui"
>>>> testclass="ResponseAssertion" testname="****CheckResponseCode200"
>>>> enabled="true">
>>>> +          <collectionProp name="Asserion.test_strings">
>>>> +            <stringProp name="49586">200</stringProp>
>>>> +          </collectionProp>
>>>> +          <stringProp name="TestPlan.comments">Check Response code for
>>>> all children samplers of JMeter Users Thread Group</stringProp>
>>>> +          <stringProp name="Assertion.test_field">**
>>>> Assertion.response_code</****stringProp>
>>>> +          <boolProp name="Assertion.assume_****
>>>> success">false</boolProp>
>>>> +          <intProp name="Assertion.test_type">8</****intProp>
>>>> +        </ResponseAssertion>
>>>> +        <hashTree/>
>>>>            <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>>> testclass="HTTPSamplerProxy" testname="Home Page" enabled="true">
>>>>              <elementProp name="HTTPsampler.Arguments"
>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>> testclass="Arguments"
>>>> testname="Variables pré-définies" enabled="true">
>>>>                <collectionProp name="Arguments.arguments"/>
>>>> @@ -59,7 +134,18 @@
>>>>              <boolProp name="HTTPSampler.monitor">****false</boolProp>
>>>>              <stringProp name="HTTPSampler.embedded_**
>>>> url_re"></stringProp>
>>>>            </HTTPSamplerProxy>
>>>> -        <hashTree/>
>>>> +        <hashTree>
>>>> +          <ResponseAssertion guiclass="AssertionGui"
>>>> testclass="ResponseAssertion" testname="Response Assertion"
>>>> enabled="true">
>>>> +            <collectionProp name="Asserion.test_strings">
>>>> +              <stringProp name="605898121">&lt;title&gt;****Apache
>>>> JMeter
>>>> - Apache JMeter&amp;trade;&lt;/title&****gt;</stringProp>
>>>> +            </collectionProp>
>>>> +            <stringProp name="TestPlan.comments">We check page contains
>>>> some text</stringProp>
>>>> +            <stringProp name="Assertion.test_field">**
>>>> Assertion.response_data</****stringProp>
>>>> +            <boolProp name="Assertion.assume_****
>>>> success">false</boolProp>
>>>> +            <intProp name="Assertion.test_type">16<****/intProp>
>>>> +          </ResponseAssertion>
>>>> +          <hashTree/>
>>>> +        </hashTree>
>>>>            <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>>> testclass="HTTPSamplerProxy" testname="Changes" enabled="true">
>>>>              <elementProp name="HTTPsampler.Arguments"
>>>> elementType="Arguments" guiclass="HTTPArgumentsPanel"
>>>> testclass="Arguments"
>>>> testname="Variables pré-définies" enabled="true">
>>>>                <collectionProp name="Arguments.arguments"/>
>>>> @@ -79,52 +165,83 @@
>>>>              <boolProp name="HTTPSampler.monitor">****false</boolProp>
>>>>              <stringProp name="HTTPSampler.embedded_**
>>>> url_re"></stringProp>
>>>>            </HTTPSamplerProxy>
>>>> -        <hashTree/>
>>>> -        <ResultCollector guiclass="GraphVisualizer"
>>>> testclass="ResultCollector" testname="Graph Results" 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>false</xml>
>>>> -              <fieldNames>false</fieldNames>
>>>> -              <responseHeaders>false</****responseHeaders>
>>>> -              <requestHeaders>false</****requestHeaders>
>>>> -              <responseDataOnError>false</****responseDataOnError>
>>>> -              <****saveAssertionResultsFailureMes****sage>false</**
>>>> saveAssertionResultsFailureMes****sage>
>>>> -              <assertionsResultsToSave>0</****assertionsResultsToSave>
>>>> -              <bytes>true</bytes>
>>>> -            </value>
>>>> -          </objProp>
>>>> -          <stringProp name="filename"></stringProp>
>>>> -        </ResultCollector>
>>>> -        <hashTree/>
>>>> +        <hashTree>
>>>> +          <GaussianRandomTimer guiclass="****GaussianRandomTimerGui"
>>>> testclass="****GaussianRandomTimer" testname="Wait5s Before Page"
>>>> enabled="true">
>>>> +            <stringProp name="ConstantTimer.delay">****
>>>> 5000</stringProp>
>>>> +            <stringProp name="RandomTimer.range">500.***
>>>> *0</stringProp>
>>>> +          </GaussianRandomTimer>
>>>> +          <hashTree/>
>>>> +          <Respon
>>>
>>>

-- 
Cordialement.
Philippe Mouawad.

Re: svn commit: r1509971 - in /jmeter/trunk/bin/templates: build-web-test-plan.jmx build-webservice-test-plan.jmx templates.xml

Posted by Milamber <mi...@apache.org>.
Le 03/08/2013 13:27, Philippe Mouawad a ecrit :
> Hello Milamber,
> But don't you find the "simple" test plan is really too simple to be
> realistic ? and might be misleading as is ?

Yes and no. This simple test is a 'simple' introduction to web test 
plan, it's not perfect but allow to the beginner to see how JMeter works.
Your advanced test plan may be to complex for a beginner for the first 
time (a very lot of things to understand: cookies, assertion, header, 
timers, regexp, CSV file, command line with parameter, etc.!)

I thinks it will be better to have 2 templates :
* Building a (simple) web test plan (same as the doc)
* Building an advanced web test plan (your test plan, with some comments 
in elements (why you should use this element? see this link, etc.) 
and/or an update of the section 6 Building an Advanced Web Test Plan in 
User's manual.

If your are agree, please revert the simple test plan and and your 
advanced test plan in templates folder.



>
> I see in previous one lots of common misuse:

Perhaps, add some warning/sentences in the section 6 in user's manual to 
prevent these not optimal usages for a test plan in common conditions

Milamber

>
>     - No pause
>     - No response checks
>     - No variabilisation
>     - No example of regexp which is almost always necessary
>
>
> I agree we should update manual anyway.
>
> Regards
>
> Philippe
>
> On Sat, Aug 3, 2013 at 3:25 PM, Milamber <mi...@apache.org> wrote:
>
>> Le 03/08/2013 12:41, pmouawad@apache.org a ecrit :
>>
>>   Author: pmouawad
>>> Date: Sat Aug  3 12:41:36 2013
>>> New Revision: 1509971
>>>
>>> URL: http://svn.apache.org/r1509971
>>> Log:
>>> Bug 55085 - UX Improvement : Ability to create New Test Plan from
>>> Templates
>>> Add Webservice Template (not using deprecated Webservice Sampler)
>>> Enhance web test plan to show more features
>>>
>> Perhaps, we must keep the "simple" web test plan template (in sync with
>> the docs), and add an advanced web test plan template.
>> Otherwise, you must update the user's manual section to build a web test
>> plan to match with your jmx file.
>>
>> Milamber
>>
>>
>>
>>   Bugzilla Id: 55085
>>> Added:
>>>       jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx
>>> Modified:
>>>       jmeter/trunk/bin/templates/**build-web-test-plan.jmx
>>>       jmeter/trunk/bin/templates/**templates.xml
>>>
>>> Modified: jmeter/trunk/bin/templates/**build-web-test-plan.jmx
>>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>>> build-web-test-plan.jmx?rev=**1509971&r1=1509970&r2=1509971&**view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- jmeter/trunk/bin/templates/**build-web-test-plan.jmx (original)
>>> +++ jmeter/trunk/bin/templates/**build-web-test-plan.jmx Sat Aug  3
>>> 12:41:36 2013
>>> @@ -11,13 +11,77 @@
>>>          <stringProp name="TestPlan.user_define_**classpath"></stringProp>
>>>        </TestPlan>
>>>        <hashTree>
>>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>>> testname="User Defined Variables" enabled="true">
>>> +        <collectionProp name="Arguments.arguments">
>>> +          <elementProp name="resources_folder" elementType="Argument">
>>> +            <stringProp name="Argument.name">**
>>> resources_folder</stringProp>
>>> +            <stringProp name="Argument.value">${__P(**resources_folder,
>>> CHANGE_FOLDER)}</stringProp>
>>> +            <stringProp name="Argument.desc">Change this value to folder
>>> containing your CSV files</stringProp>
>>> +            <stringProp name="Argument.metadata">=</**stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="host" elementType="Argument">
>>> +            <stringProp name="Argument.name">host</**stringProp>
>>> +            <stringProp name="Argument.value">jmeter.**apache.org<http://jmeter.apache.org>
>>> </stringProp>
>>> +            <stringProp name="Argument.metadata">=</**stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="bugzilla_host" elementType="Argument">
>>> +            <stringProp name="Argument.name">bugzilla_**
>>> host</stringProp>
>>> +            <stringProp name="Argument.value">issues.**apache.org<http://issues.apache.org>
>>> </stringProp>
>>> +            <stringProp name="Argument.metadata">=</**stringProp>
>>> +          </elementProp>
>>> +        </collectionProp>
>>> +      </Arguments>
>>> +      <hashTree/>
>>> +      <CookieManager guiclass="CookiePanel" testclass="CookieManager"
>>> testname="HTTP Cookie Manager" enabled="true">
>>> +        <collectionProp name="CookieManager.cookies"/>
>>> +        <boolProp name="CookieManager.**clearEachIteration">true</**
>>> boolProp>
>>> +        <stringProp name="CookieManager.**implementation">org.apache.**
>>> jmeter.protocol.http.control.**HC4CookieHandler</stringProp>
>>> +      </CookieManager>
>>> +      <hashTree/>
>>> +      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager"
>>> testname="HTTP Header Manager" enabled="true">
>>> +        <collectionProp name="HeaderManager.headers">
>>> +          <elementProp name="User-Agent" elementType="Header">
>>> +            <stringProp name="Header.name">User-Agent<**/stringProp>
>>> +            <stringProp name="Header.value">Mozilla/5.**0 (Macintosh;
>>> Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="Connection" elementType="Header">
>>> +            <stringProp name="Header.name">Connection<**/stringProp>
>>> +            <stringProp name="Header.value">keep-**alive</stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="Accept-Language" elementType="Header">
>>> +            <stringProp name="Header.name">Accept-**
>>> Language</stringProp>
>>> +            <stringProp name="Header.value">fr,en;q=0.**
>>> 8,fr-fr;q=0.5,en-us;q=0.3</**stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="Accept-Encoding" elementType="Header">
>>> +            <stringProp name="Header.name">Accept-**
>>> Encoding</stringProp>
>>> +            <stringProp name="Header.value">gzip, deflate</stringProp>
>>> +          </elementProp>
>>> +          <elementProp name="Accept" elementType="Header">
>>> +            <stringProp name="Header.name">Accept</**stringProp>
>>> +            <stringProp name="Header.value">text/html,**
>>> application/xhtml+xml,**application/xml;q=0.9,*/*;q=0.**8</stringProp>
>>> +          </elementProp>
>>> +        </collectionProp>
>>> +      </HeaderManager>
>>> +      <hashTree/>
>>> +      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet"
>>> testname="loginData" enabled="true">
>>> +        <stringProp name="TestPlan.comments">CSV file that must contains
>>> rows with 2 columns separated by comma, first column will be mapped to
>>> login, second one to password</stringProp>
>>> +        <stringProp name="delimiter">,</**stringProp>
>>> +        <stringProp name="fileEncoding">UTF-8</**stringProp>
>>> +        <stringProp name="filename">${resources_**
>>> folder}/login.csv</stringProp>
>>> +        <boolProp name="quotedData">false</**boolProp>
>>> +        <boolProp name="recycle">true</boolProp>
>>> +        <stringProp name="shareMode">All threads</stringProp>
>>> +        <boolProp name="stopThread">false</**boolProp>
>>> +        <stringProp name="variableNames">login,**password</stringProp>
>>> +      </CSVDataSet>
>>> +      <hashTree/>
>>>          <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>>> testname="JMeter Users" enabled="true">
>>>            <stringProp name="ThreadGroup.on_sample_**
>>> error">continue</stringProp>
>>>            <elementProp name="ThreadGroup.main_**controller"
>>> elementType="LoopController" guiclass="LoopControlPanel"
>>> testclass="LoopController" testname="Loop Controller" enabled="true">
>>>              <boolProp name="LoopController.continue_**
>>> forever">false</boolProp>
>>>              <stringProp name="LoopController.loops">2<**/stringProp>
>>>            </elementProp>
>>> -        <stringProp name="ThreadGroup.num_threads"**>5</stringProp>
>>> +        <stringProp name="ThreadGroup.num_threads"**>1</stringProp>
>>>            <stringProp name="ThreadGroup.ramp_time">**5</stringProp>
>>>            <longProp name="ThreadGroup.start_time">**
>>> 1373789594000</longProp>
>>>            <longProp name="ThreadGroup.end_time">**
>>> 1373789594000</longProp>
>>> @@ -30,16 +94,27 @@
>>>              <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="User Defined Variables" enabled="true">
>>>                <collectionProp name="Arguments.arguments"/>
>>>              </elementProp>
>>> -          <stringProp name="HTTPSampler.domain">jmet**er.apache.org<http://jmeter.apache.org>
>>> </stringProp>
>>> +          <stringProp name="HTTPSampler.domain">${**host}</stringProp>
>>>              <stringProp name="HTTPSampler.port"></**stringProp>
>>>              <stringProp name="HTTPSampler.connect_**
>>> timeout"></stringProp>
>>>              <stringProp name="HTTPSampler.response_**
>>> timeout"></stringProp>
>>>              <stringProp name="HTTPSampler.protocol"></**stringProp>
>>>              <stringProp name="HTTPSampler.**
>>> contentEncoding"></stringProp>
>>>              <stringProp name="HTTPSampler.path"></**stringProp>
>>> +          <stringProp name="TestPlan.comments">Shows how to set defaults
>>> on page</stringProp>
>>>              <stringProp name="HTTPSampler.**
>>> concurrentPool">4</stringProp>
>>>            </ConfigTestElement>
>>>            <hashTree/>
>>> +        <ResponseAssertion guiclass="AssertionGui"
>>> testclass="ResponseAssertion" testname="**CheckResponseCode200"
>>> enabled="true">
>>> +          <collectionProp name="Asserion.test_strings">
>>> +            <stringProp name="49586">200</stringProp>
>>> +          </collectionProp>
>>> +          <stringProp name="TestPlan.comments">Check Response code for
>>> all children samplers of JMeter Users Thread Group</stringProp>
>>> +          <stringProp name="Assertion.test_field">**
>>> Assertion.response_code</**stringProp>
>>> +          <boolProp name="Assertion.assume_**success">false</boolProp>
>>> +          <intProp name="Assertion.test_type">8</**intProp>
>>> +        </ResponseAssertion>
>>> +        <hashTree/>
>>>            <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>> testclass="HTTPSamplerProxy" testname="Home Page" enabled="true">
>>>              <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="Variables pré-définies" enabled="true">
>>>                <collectionProp name="Arguments.arguments"/>
>>> @@ -59,7 +134,18 @@
>>>              <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>>              <stringProp name="HTTPSampler.embedded_**
>>> url_re"></stringProp>
>>>            </HTTPSamplerProxy>
>>> -        <hashTree/>
>>> +        <hashTree>
>>> +          <ResponseAssertion guiclass="AssertionGui"
>>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>>> +            <collectionProp name="Asserion.test_strings">
>>> +              <stringProp name="605898121">&lt;title&gt;**Apache JMeter
>>> - Apache JMeter&amp;trade;&lt;/title&**gt;</stringProp>
>>> +            </collectionProp>
>>> +            <stringProp name="TestPlan.comments">We check page contains
>>> some text</stringProp>
>>> +            <stringProp name="Assertion.test_field">**
>>> Assertion.response_data</**stringProp>
>>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>>> +            <intProp name="Assertion.test_type">16<**/intProp>
>>> +          </ResponseAssertion>
>>> +          <hashTree/>
>>> +        </hashTree>
>>>            <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>> testclass="HTTPSamplerProxy" testname="Changes" enabled="true">
>>>              <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="Variables pré-définies" enabled="true">
>>>                <collectionProp name="Arguments.arguments"/>
>>> @@ -79,52 +165,83 @@
>>>              <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>>              <stringProp name="HTTPSampler.embedded_**
>>> url_re"></stringProp>
>>>            </HTTPSamplerProxy>
>>> -        <hashTree/>
>>> -        <ResultCollector guiclass="GraphVisualizer"
>>> testclass="ResultCollector" testname="Graph Results" 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>false</xml>
>>> -              <fieldNames>false</fieldNames>
>>> -              <responseHeaders>false</**responseHeaders>
>>> -              <requestHeaders>false</**requestHeaders>
>>> -              <responseDataOnError>false</**responseDataOnError>
>>> -              <**saveAssertionResultsFailureMes**sage>false</**
>>> saveAssertionResultsFailureMes**sage>
>>> -              <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> -              <bytes>true</bytes>
>>> -            </value>
>>> -          </objProp>
>>> -          <stringProp name="filename"></stringProp>
>>> -        </ResultCollector>
>>> -        <hashTree/>
>>> +        <hashTree>
>>> +          <GaussianRandomTimer guiclass="**GaussianRandomTimerGui"
>>> testclass="**GaussianRandomTimer" testname="Wait5s Before Page"
>>> enabled="true">
>>> +            <stringProp name="ConstantTimer.delay">**5000</stringProp>
>>> +            <stringProp name="RandomTimer.range">500.**0</stringProp>
>>> +          </GaussianRandomTimer>
>>> +          <hashTree/>
>>> +          <ResponseAssertion guiclass="AssertionGui"
>>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>>> +            <collectionProp name="Asserion.test_strings">
>>> +              <stringProp name="-420601512">&lt;title&**gt;Apache
>>> JMeter - Changes&lt;/title&gt;</**stringProp>
>>> +            </collectionProp>
>>> +            <stringProp name="TestPlan.comments">We check page contains
>>> some text</stringProp>
>>> +            <stringProp name="Assertion.test_field">**
>>> Assertion.response_data</**stringProp>
>>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>>> +            <intProp name="Assertion.test_type">16<**/intProp>
>>> +          </ResponseAssertion>
>>> +          <hashTree/>
>>> +          <RegexExtractor guiclass="RegexExtractorGui"
>>> testclass="RegexExtractor" testname="**randomBugIdExtractor"
>>> enabled="true">
>>> +            <stringProp name="TestPlan.comments">Shows how to extract
>>> bug id from a link in response</stringProp>
>>> +            <stringProp name="RegexExtractor.**
>>> useHeaders">false</stringProp>
>>> +            <stringProp name="RegexExtractor.refname">**
>>> bugId</stringProp>
>>> +            <stringProp name="RegexExtractor.regex">ht**
>>> tps://issues.apache.org/**bugzilla/show_bug.cgi\?id=([<https://issues.apache.org/bugzilla/show_bug.cgi%5C?id=([>
>>> ^&**quot;]+?)&quot;</stringProp>
>>> +            <stringProp name="RegexExtractor.template"**
>>>> $1$</stringProp>
>>> +            <stringProp name="RegexExtractor.default">**
>>> nv_bugId</stringProp>
>>> +            <stringProp name="RegexExtractor.match_**
>>> number">0</stringProp>
>>> +          </RegexExtractor>
>>> +          <hashTree/>
>>> +        </hashTree>
>>> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>> testclass="HTTPSamplerProxy" testname="BugDetail Page" enabled="true">
>>> +          <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="Variables pré-définies" enabled="true">
>>> +            <collectionProp name="Arguments.arguments"/>
>>> +          </elementProp>
>>> +          <stringProp name="HTTPSampler.domain">${**
>>> bugzilla_host}</stringProp>
>>> +          <stringProp name="HTTPSampler.port"></**stringProp>
>>> +          <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>>> +          <stringProp name="HTTPSampler.response_**
>>> timeout"></stringProp>
>>> +          <stringProp name="HTTPSampler.protocol">**https</stringProp>
>>> +          <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>>> +          <stringProp name="HTTPSampler.path">/**
>>> bugzilla/show_bug.cgi?id=${**bugId}</stringProp>
>>> +          <stringProp name="HTTPSampler.method">GET<**/stringProp>
>>> +          <boolProp name="HTTPSampler.follow_**
>>> redirects">true</boolProp>
>>> +          <boolProp name="HTTPSampler.auto_**redirects">false</boolProp>
>>> +          <boolProp name="HTTPSampler.use_**keepalive">true</boolProp>
>>> +          <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>>> boolProp>
>>> +          <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>> +          <stringProp name="HTTPSampler.embedded_**url_re"></stringProp>
>>> +          <stringProp name="TestPlan.comments">We use bugId variable
>>> extracted in Changes by randomBugIdExtractor</**stringProp>
>>> +        </HTTPSamplerProxy>
>>> +        <hashTree>
>>> +          <GaussianRandomTimer guiclass="**GaussianRandomTimerGui"
>>> testclass="**GaussianRandomTimer" testname="Wait5s Before BugDetail
>>> Page" enabled="true">
>>> +            <stringProp name="ConstantTimer.delay">**5000</stringProp>
>>> +            <stringProp name="RandomTimer.range">500.**0</stringProp>
>>> +          </GaussianRandomTimer>
>>> +          <hashTree/>
>>> +          <ResponseAssertion guiclass="AssertionGui"
>>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>>> +            <collectionProp name="Asserion.test_strings">
>>> +              <stringProp name="-1440480625">This is &lt;b&gt;ASF
>>> Bugzilla&lt;/b&gt;: the Apache Software Foundation bug system</stringProp>
>>> +            </collectionProp>
>>> +            <stringProp name="TestPlan.comments">We check page contains
>>> some text</stringProp>
>>> +            <stringProp name="Assertion.test_field">**
>>> Assertion.response_data</**stringProp>
>>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>>> +            <intProp name="Assertion.test_type">16<**/intProp>
>>> +          </ResponseAssertion>
>>> +          <hashTree/>
>>> +        </hashTree>
>>>            <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>> testclass="HTTPSamplerProxy" testname="Login" enabled="false">
>>>              <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="Variables pré-définies" enabled="true">
>>>                <collectionProp name="Arguments.arguments">
>>>                  <elementProp name="username" elementType="HTTPArgument">
>>>                    <boolProp name="HTTPArgument.always_**
>>> encode">true</boolProp>
>>> -                <stringProp name="Argument.value">johndoe<**/stringProp>
>>> +                <stringProp name="Argument.value">${login}**
>>> </stringProp>
>>>                    <stringProp name="Argument.metadata">=</**stringProp>
>>>                    <boolProp name="HTTPArgument.use_equals"**
>>>> true</boolProp>
>>>                    <stringProp name="Argument.name">username<**
>>> /stringProp>
>>>                  </elementProp>
>>>                  <elementProp name="password" elementType="HTTPArgument">
>>>                    <boolProp name="HTTPArgument.always_**
>>> encode">true</boolProp>
>>> -                <stringProp name="Argument.value">secret</**stringProp>
>>> +                <stringProp name="Argument.value">${**
>>> password}</stringProp>
>>>                    <stringProp name="Argument.metadata">=</**stringProp>
>>>                    <boolProp name="HTTPArgument.use_equals"**
>>>> true</boolProp>
>>>                    <stringProp name="Argument.name">password<**
>>> /stringProp>
>>> @@ -145,9 +262,151 @@
>>>              <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>>> boolProp>
>>>              <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>>              <stringProp name="HTTPSampler.embedded_**
>>> url_re"></stringProp>
>>> +          <stringProp name="TestPlan.comments">We use here data from
>>> loginData CSV DataSet</stringProp>
>>>            </HTTPSamplerProxy>
>>>            <hashTree/>
>>>          </hashTree>
>>> +      <ResultCollector guiclass="StatGraphVisualizer"
>>> testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
>>> +            <encoding>false</encoding>
>>> +            <assertions>true</assertions>
>>> +            <subresults>false</subresults>
>>> +            <responseData>false</**responseData>
>>> +            <samplerData>false</**samplerData>
>>> +            <xml>false</xml>
>>> +            <fieldNames>true</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>true</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>true</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>> +      <ResultCollector guiclass="**RespTimeGraphVisualizer"
>>> testclass="ResultCollector" testname="Response Time Graph" 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>false</dataType>
>>> +            <encoding>false</encoding>
>>> +            <assertions>true</assertions>
>>> +            <subresults>false</subresults>
>>> +            <responseData>false</**responseData>
>>> +            <samplerData>false</**samplerData>
>>> +            <xml>false</xml>
>>> +            <fieldNames>true</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>true</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>true</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>> +      <ResultCollector guiclass="GraphVisualizer"
>>> testclass="ResultCollector" testname="Graph Results" enabled="false">
>>> +        <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>false</xml>
>>> +            <fieldNames>false</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>false</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>false</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>> +      <ResultCollector guiclass="**ViewResultsFullVisualizer"
>>> testclass="ResultCollector" testname="View Results Tree" enabled="true">
>>> +        <boolProp name="ResultCollector.error_**
>>> logging">false</boolProp>
>>> +        <objProp>
>>> +          <name>saveConfig</name>
>>> +          <value class="**SampleSaveConfiguration">
>>> +            <time>true</time>
>>> +            <latency>true</latency>
>>> +            <timestamp>true</timestamp>
>>> +            <success>true</success>
>>> +            <label>true</label>
>>> +            <code>true</code>
>>> +            <message>true</message>
>>> +            <threadName>true</threadName>
>>> +            <dataType>false</dataType>
>>> +            <encoding>false</encoding>
>>> +            <assertions>true</assertions>
>>> +            <subresults>false</subresults>
>>> +            <responseData>false</**responseData>
>>> +            <samplerData>false</**samplerData>
>>> +            <xml>false</xml>
>>> +            <fieldNames>true</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>true</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>true</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="TestPlan.comments">Use only during debug of
>>> script</stringProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>>        </hashTree>
>>>      </hashTree>
>>>    </jmeterTestPlan>
>>>
>>> Added: jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx
>>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>>> build-webservice-test-plan.**jmx?rev=1509971&view=auto<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-webservice-test-plan.jmx?rev=1509971&view=auto>
>>> ==============================**==============================**
>>> ==================
>>> --- jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx (added)
>>> +++ jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx Sat Aug
>>>   3 12:41:36 2013
>>> @@ -0,0 +1,184 @@
>>> +<?xml version="1.0" encoding="UTF-8"?>
>>> +<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10-SNAPSHOT.**
>>> 20130803">
>>> +  <hashTree>
>>> +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test
>>> Plan" enabled="true">
>>> +      <stringProp name="TestPlan.comments"></**stringProp>
>>> +      <boolProp name="TestPlan.functional_**mode">false</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>
>>> +      <stringProp name="TestPlan.user_define_**classpath"></stringProp>
>>> +    </TestPlan>
>>> +    <hashTree>
>>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>>> testname="User Defined Variables" enabled="true">
>>> +        <collectionProp name="Arguments.arguments">
>>> +          <elementProp name="host" elementType="Argument">
>>> +            <stringProp name="Argument.name">host</**stringProp>
>>> +            <stringProp name="Argument.value">wsf.**cdyne.com<http://wsf.cdyne.com>
>>> </stringProp>
>>> +            <stringProp name="Argument.metadata">=</**stringProp>
>>> +            <stringProp name="Argument.desc">Host of
>>> Webservice</stringProp>
>>> +          </elementProp>
>>> +        </collectionProp>
>>> +      </Arguments>
>>> +      <hashTree/>
>>> +      <ConfigTestElement guiclass="HttpDefaultsGui"
>>> testclass="ConfigTestElement" testname="HTTP Request Defaults"
>>> enabled="true">
>>> +        <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>>> testname="User Defined Variables" enabled="true">
>>> +          <collectionProp name="Arguments.arguments"/>
>>> +        </elementProp>
>>> +        <stringProp name="HTTPSampler.domain">${**host}</stringProp>
>>> +        <stringProp name="HTTPSampler.port"></**stringProp>
>>> +        <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>>> +        <stringProp name="HTTPSampler.response_**timeout"></stringProp>
>>> +        <stringProp name="HTTPSampler.protocol"></**stringProp>
>>> +        <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>>> +        <stringProp name="HTTPSampler.path"></**stringProp>
>>> +        <stringProp name="HTTPSampler.**concurrentPool">4</stringProp>
>>> +      </ConfigTestElement>
>>> +      <hashTree/>
>>> +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>>> testname="Number of Users" enabled="true">
>>> +        <stringProp name="ThreadGroup.on_sample_**
>>> error">continue</stringProp>
>>> +        <elementProp name="ThreadGroup.main_**controller"
>>> elementType="LoopController" guiclass="LoopControlPanel"
>>> testclass="LoopController" testname="Loop Controller" enabled="true">
>>> +          <boolProp name="LoopController.continue_**
>>> forever">false</boolProp>
>>> +          <stringProp name="LoopController.loops">2<**/stringProp>
>>> +        </elementProp>
>>> +        <stringProp name="ThreadGroup.num_threads"**>5</stringProp>
>>> +        <stringProp name="ThreadGroup.ramp_time">**5</stringProp>
>>> +        <longProp name="ThreadGroup.start_time">**
>>> 1375525852000</longProp>
>>> +        <longProp name="ThreadGroup.end_time">**1375525852000</longProp>
>>> +        <boolProp name="ThreadGroup.scheduler">**false</boolProp>
>>> +        <stringProp name="ThreadGroup.duration"></**stringProp>
>>> +        <stringProp name="ThreadGroup.delay"></**stringProp>
>>> +      </ThreadGroup>
>>> +      <hashTree>
>>> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>>> testclass="HTTPSamplerProxy" testname="Soap Request" enabled="true">
>>> +          <boolProp name="HTTPSampler.postBodyRaw"**>true</boolProp>
>>> +          <elementProp name="HTTPsampler.Arguments"
>>> elementType="Arguments">
>>> +            <collectionProp name="Arguments.arguments">
>>> +              <elementProp name="" elementType="HTTPArgument">
>>> +                <boolProp name="HTTPArgument.always_**
>>> encode">false</boolProp>
>>> +                <stringProp name="Argument.value">&lt;**soap:Envelope
>>> xmlns:xsi=&quot;http://www.w3.**org/2001/XMLSchema-instance&**quot<http://www.w3.org/2001/XMLSchema-instance&quot>;
>>> xmlns:xsd=&quot;http://www.w3.**org/2001/XMLSchema&quot<http://www.w3.org/2001/XMLSchema&quot>;
>>> xmlns:soap=&quot;http://**schemas.xmlsoap.org/soap/**
>>> envelope/&quot;&gt;&#xd <http://schemas.xmlsoap.org/soap/envelope/">&#xd>
>>> ;
>>> +  &lt;soap:Body&gt;&#xd;
>>> +    &lt;GetCityForecastByZIP xmlns=&quot;http://ws.cdyne.**
>>> com/WeatherWS/&quot;&gt;&#xd <http://ws.cdyne.com/WeatherWS/">&#xd>;
>>> +      &lt;ZIP&gt;60601&lt;/ZIP&gt;&#**xd;
>>> +    &lt;/GetCityForecastByZIP&gt;&**#xd;
>>> +  &lt;/soap:Body&gt;&#xd;
>>> +&lt;/soap:Envelope&gt;</**stringProp>
>>> +                <stringProp name="Argument.metadata">=</**stringProp>
>>> +              </elementProp>
>>> +            </collectionProp>
>>> +          </elementProp>
>>> +          <stringProp name="HTTPSampler.domain"></**stringProp>
>>> +          <stringProp name="HTTPSampler.port"></**stringProp>
>>> +          <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>>> +          <stringProp name="HTTPSampler.response_**
>>> timeout"></stringProp>
>>> +          <stringProp name="HTTPSampler.protocol"></**stringProp>
>>> +          <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>>> +          <stringProp name="HTTPSampler.path">/**
>>> WeatherWS/Weather.asmx</**stringProp>
>>> +          <stringProp name="HTTPSampler.method">**POST</stringProp>
>>> +          <boolProp name="HTTPSampler.follow_**
>>> redirects">true</boolProp>
>>> +          <boolProp name="HTTPSampler.auto_**redirects">false</boolProp>
>>> +          <boolProp name="HTTPSampler.use_**keepalive">true</boolProp>
>>> +          <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>>> boolProp>
>>> +          <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>> +          <stringProp name="HTTPSampler.embedded_**url_re"></stringProp>
>>> +        </HTTPSamplerProxy>
>>> +        <hashTree>
>>> +          <HeaderManager guiclass="HeaderPanel"
>>> testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
>>> +            <collectionProp name="HeaderManager.headers">
>>> +              <elementProp name="" elementType="Header">
>>> +                <stringProp name="Header.name">Content-**
>>> Type</stringProp>
>>> +                <stringProp name="Header.value">text/xml;
>>> charset=utf-8</stringProp>
>>> +              </elementProp>
>>> +              <elementProp name="" elementType="Header">
>>> +                <stringProp name="Header.name">SOAPAction<**/stringProp>
>>> +                <stringProp name="Header.value">&quot;http**
>>> ://ws.cdyne.com/WeatherWS/**GetCityForecastByZIP&quot<http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP&quot>
>>> ;</**stringProp>
>>> +              </elementProp>
>>> +            </collectionProp>
>>> +          </HeaderManager>
>>> +          <hashTree/>
>>> +          <ResponseAssertion guiclass="AssertionGui"
>>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>>> +            <collectionProp name="Asserion.test_strings">
>>> +              <stringProp name="130046656">&lt;/**
>>> GetCityForecastByZIPResult&gt;**</stringProp>
>>> +            </collectionProp>
>>> +            <stringProp name="TestPlan.comments">**Verify content in
>>> response</stringProp>
>>> +            <stringProp name="Assertion.test_field">**
>>> Assertion.response_data</**stringProp>
>>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>>> +            <intProp name="Assertion.test_type">16<**/intProp>
>>> +          </ResponseAssertion>
>>> +          <hashTree/>
>>> +        </hashTree>
>>> +      </hashTree>
>>> +      <ResultCollector guiclass="**ViewResultsFullVisualizer"
>>> testclass="ResultCollector" testname="View Results Tree" enabled="false">
>>> +        <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>false</dataType>
>>> +            <encoding>false</encoding>
>>> +            <assertions>true</assertions>
>>> +            <subresults>false</subresults>
>>> +            <responseData>false</**responseData>
>>> +            <samplerData>false</**samplerData>
>>> +            <xml>false</xml>
>>> +            <fieldNames>true</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>true</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>true</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>> +      <ResultCollector guiclass="StatGraphVisualizer"
>>> testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
>>> +            <encoding>false</encoding>
>>> +            <assertions>true</assertions>
>>> +            <subresults>false</subresults>
>>> +            <responseData>false</**responseData>
>>> +            <samplerData>false</**samplerData>
>>> +            <xml>false</xml>
>>> +            <fieldNames>true</fieldNames>
>>> +            <responseHeaders>false</**responseHeaders>
>>> +            <requestHeaders>false</**requestHeaders>
>>> +            <responseDataOnError>true</**responseDataOnError>
>>> +            <**saveAssertionResultsFailureMes**sage>true</**
>>> saveAssertionResultsFailureMes**sage>
>>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>>> +            <bytes>true</bytes>
>>> +            <hostname>true</hostname>
>>> +            <threadCounts>true</**threadCounts>
>>> +            <sampleCount>true</**sampleCount>
>>> +          </value>
>>> +        </objProp>
>>> +        <stringProp name="filename"></stringProp>
>>> +      </ResultCollector>
>>> +      <hashTree/>
>>> +    </hashTree>
>>> +  </hashTree>
>>> +</jmeterTestPlan>
>>>
>>> Modified: jmeter/trunk/bin/templates/**templates.xml
>>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>>> templates.xml?rev=1509971&r1=**1509970&r2=1509971&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/templates.xml?rev=1509971&r1=1509970&r2=1509971&view=diff>
>>> ==============================**==============================**
>>> ==================
>>> --- jmeter/trunk/bin/templates/**templates.xml (original)
>>> +++ jmeter/trunk/bin/templates/**templates.xml Sat Aug  3 12:41:36 2013
>>> @@ -106,6 +106,12 @@
>>>            <fileName>/bin/templates/**build-web-test-plan.jmx</**fileName>
>>>            <description><![CDATA[
>>>            <h1>Test plan from Building a Web Test Plan section in user's
>>> manual</h1>
>>> +        <h2>Configuration</h2>
>>> +        <p>In order to run the login sample inside plan, create a CSV
>>> file following description in <b>loginData</b> sample and put it in a
>>> folder of your choice and test running JMeter with:<br/>
>>> +            <ul>
>>> +                <li><b>jmeter -Jresources_folder=FOLDER TO
>>> CHANGE</b></li>
>>> +            </ul>
>>> +        </p>
>>>            <h2>Useful link</h2>
>>>                <ul>
>>>                    <li><a href="http://jmeter.apache.**
>>> org/usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html>"
>>>> http://jmeter.apache.org/**usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html>
>>> </a></li>
>>> @@ -113,6 +119,21 @@
>>>            ]]></description>
>>>        </template>
>>>        <template isTestPlan="true">
>>> +        <name>Building a WebService Test Plan</name>
>>> +        <fileName>/bin/templates/**build-webservice-test-plan.**
>>> jmx</fileName>
>>> +        <description><![CDATA[
>>> +        <h1>Test plan showing how to create a SOAP Webservice Test Plan
>>> </h1>
>>> +        <h2>Useful link</h2>
>>> +            <ul>
>>> +                <li><a href="http://jmeter.apache.**
>>> org/usermanual/component_**reference.html#User_Defined_**Variables<http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables>"
>>>> User Defined Variables</a></li>
>>> +                <li><a href="http://jmeter.apache.**
>>> org/usermanual/component_**reference.html#HTTP_Request_**Defaults<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request_Defaults>"
>>>> User Defined Variables</a></li>
>>> +                <li><a href="http://jmeter.apache.**
>>> org/usermanual/component_**reference.html#HTTP_Request<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request>"
>>>> HTTP Request</a></li>
>>> +                <li><a href="http://jmeter.apache.**
>>> org/usermanual/component_**reference.html#Response_**Assertion<http://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion>">Response
>>> Assertion</a></li>
>>> +                <li><a href="http://jmeter.apache.**
>>> org/usermanual/component_**reference.html#HTTP_Header_**Manager<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Header_Manager>">HTTP
>>> Header Manager</a></li>
>>> +            </ul>
>>> +        ]]></description>
>>> +    </template>
>>> +    <template isTestPlan="true">
>>>            <name>Building an FTP Test Plan </name>
>>>            <fileName>/bin/templates/**build-ftp-test-plan.jmx</**fileName>
>>>            <description><![CDATA[
>>>
>>>
>>>
>>>
>


Re: svn commit: r1509971 - in /jmeter/trunk/bin/templates: build-web-test-plan.jmx build-webservice-test-plan.jmx templates.xml

Posted by Philippe Mouawad <ph...@gmail.com>.
Hello Milamber,
But don't you find the "simple" test plan is really too simple to be
realistic ? and might be misleading as is ?

I see in previous one lots of common misuse:

   - No pause
   - No response checks
   - No variabilisation
   - No example of regexp which is almost always necessary


I agree we should update manual anyway.

Regards

Philippe

On Sat, Aug 3, 2013 at 3:25 PM, Milamber <mi...@apache.org> wrote:

>
> Le 03/08/2013 12:41, pmouawad@apache.org a ecrit :
>
>  Author: pmouawad
>> Date: Sat Aug  3 12:41:36 2013
>> New Revision: 1509971
>>
>> URL: http://svn.apache.org/r1509971
>> Log:
>> Bug 55085 - UX Improvement : Ability to create New Test Plan from
>> Templates
>> Add Webservice Template (not using deprecated Webservice Sampler)
>> Enhance web test plan to show more features
>>
>
> Perhaps, we must keep the "simple" web test plan template (in sync with
> the docs), and add an advanced web test plan template.
> Otherwise, you must update the user's manual section to build a web test
> plan to match with your jmx file.
>
> Milamber
>
>
>
>  Bugzilla Id: 55085
>>
>> Added:
>>      jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx
>> Modified:
>>      jmeter/trunk/bin/templates/**build-web-test-plan.jmx
>>      jmeter/trunk/bin/templates/**templates.xml
>>
>> Modified: jmeter/trunk/bin/templates/**build-web-test-plan.jmx
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>> build-web-test-plan.jmx?rev=**1509971&r1=1509970&r2=1509971&**view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-web-test-plan.jmx?rev=1509971&r1=1509970&r2=1509971&view=diff>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/bin/templates/**build-web-test-plan.jmx (original)
>> +++ jmeter/trunk/bin/templates/**build-web-test-plan.jmx Sat Aug  3
>> 12:41:36 2013
>> @@ -11,13 +11,77 @@
>>         <stringProp name="TestPlan.user_define_**classpath"></stringProp>
>>       </TestPlan>
>>       <hashTree>
>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="User Defined Variables" enabled="true">
>> +        <collectionProp name="Arguments.arguments">
>> +          <elementProp name="resources_folder" elementType="Argument">
>> +            <stringProp name="Argument.name">**
>> resources_folder</stringProp>
>> +            <stringProp name="Argument.value">${__P(**resources_folder,
>> CHANGE_FOLDER)}</stringProp>
>> +            <stringProp name="Argument.desc">Change this value to folder
>> containing your CSV files</stringProp>
>> +            <stringProp name="Argument.metadata">=</**stringProp>
>> +          </elementProp>
>> +          <elementProp name="host" elementType="Argument">
>> +            <stringProp name="Argument.name">host</**stringProp>
>> +            <stringProp name="Argument.value">jmeter.**apache.org<http://jmeter.apache.org>
>> </stringProp>
>> +            <stringProp name="Argument.metadata">=</**stringProp>
>> +          </elementProp>
>> +          <elementProp name="bugzilla_host" elementType="Argument">
>> +            <stringProp name="Argument.name">bugzilla_**
>> host</stringProp>
>> +            <stringProp name="Argument.value">issues.**apache.org<http://issues.apache.org>
>> </stringProp>
>> +            <stringProp name="Argument.metadata">=</**stringProp>
>> +          </elementProp>
>> +        </collectionProp>
>> +      </Arguments>
>> +      <hashTree/>
>> +      <CookieManager guiclass="CookiePanel" testclass="CookieManager"
>> testname="HTTP Cookie Manager" enabled="true">
>> +        <collectionProp name="CookieManager.cookies"/>
>> +        <boolProp name="CookieManager.**clearEachIteration">true</**
>> boolProp>
>> +        <stringProp name="CookieManager.**implementation">org.apache.**
>> jmeter.protocol.http.control.**HC4CookieHandler</stringProp>
>> +      </CookieManager>
>> +      <hashTree/>
>> +      <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager"
>> testname="HTTP Header Manager" enabled="true">
>> +        <collectionProp name="HeaderManager.headers">
>> +          <elementProp name="User-Agent" elementType="Header">
>> +            <stringProp name="Header.name">User-Agent<**/stringProp>
>> +            <stringProp name="Header.value">Mozilla/5.**0 (Macintosh;
>> Intel Mac OS X 10.6; rv:22.0) Gecko/20100101 Firefox/22.0</stringProp>
>> +          </elementProp>
>> +          <elementProp name="Connection" elementType="Header">
>> +            <stringProp name="Header.name">Connection<**/stringProp>
>> +            <stringProp name="Header.value">keep-**alive</stringProp>
>> +          </elementProp>
>> +          <elementProp name="Accept-Language" elementType="Header">
>> +            <stringProp name="Header.name">Accept-**
>> Language</stringProp>
>> +            <stringProp name="Header.value">fr,en;q=0.**
>> 8,fr-fr;q=0.5,en-us;q=0.3</**stringProp>
>> +          </elementProp>
>> +          <elementProp name="Accept-Encoding" elementType="Header">
>> +            <stringProp name="Header.name">Accept-**
>> Encoding</stringProp>
>> +            <stringProp name="Header.value">gzip, deflate</stringProp>
>> +          </elementProp>
>> +          <elementProp name="Accept" elementType="Header">
>> +            <stringProp name="Header.name">Accept</**stringProp>
>> +            <stringProp name="Header.value">text/html,**
>> application/xhtml+xml,**application/xml;q=0.9,*/*;q=0.**8</stringProp>
>> +          </elementProp>
>> +        </collectionProp>
>> +      </HeaderManager>
>> +      <hashTree/>
>> +      <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet"
>> testname="loginData" enabled="true">
>> +        <stringProp name="TestPlan.comments">CSV file that must contains
>> rows with 2 columns separated by comma, first column will be mapped to
>> login, second one to password</stringProp>
>> +        <stringProp name="delimiter">,</**stringProp>
>> +        <stringProp name="fileEncoding">UTF-8</**stringProp>
>> +        <stringProp name="filename">${resources_**
>> folder}/login.csv</stringProp>
>> +        <boolProp name="quotedData">false</**boolProp>
>> +        <boolProp name="recycle">true</boolProp>
>> +        <stringProp name="shareMode">All threads</stringProp>
>> +        <boolProp name="stopThread">false</**boolProp>
>> +        <stringProp name="variableNames">login,**password</stringProp>
>> +      </CSVDataSet>
>> +      <hashTree/>
>>         <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>> testname="JMeter Users" enabled="true">
>>           <stringProp name="ThreadGroup.on_sample_**
>> error">continue</stringProp>
>>           <elementProp name="ThreadGroup.main_**controller"
>> elementType="LoopController" guiclass="LoopControlPanel"
>> testclass="LoopController" testname="Loop Controller" enabled="true">
>>             <boolProp name="LoopController.continue_**
>> forever">false</boolProp>
>>             <stringProp name="LoopController.loops">2<**/stringProp>
>>           </elementProp>
>> -        <stringProp name="ThreadGroup.num_threads"**>5</stringProp>
>> +        <stringProp name="ThreadGroup.num_threads"**>1</stringProp>
>>           <stringProp name="ThreadGroup.ramp_time">**5</stringProp>
>>           <longProp name="ThreadGroup.start_time">**
>> 1373789594000</longProp>
>>           <longProp name="ThreadGroup.end_time">**
>> 1373789594000</longProp>
>> @@ -30,16 +94,27 @@
>>             <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="User Defined Variables" enabled="true">
>>               <collectionProp name="Arguments.arguments"/>
>>             </elementProp>
>> -          <stringProp name="HTTPSampler.domain">jmet**er.apache.org<http://jmeter.apache.org>
>> </stringProp>
>> +          <stringProp name="HTTPSampler.domain">${**host}</stringProp>
>>             <stringProp name="HTTPSampler.port"></**stringProp>
>>             <stringProp name="HTTPSampler.connect_**
>> timeout"></stringProp>
>>             <stringProp name="HTTPSampler.response_**
>> timeout"></stringProp>
>>             <stringProp name="HTTPSampler.protocol"></**stringProp>
>>             <stringProp name="HTTPSampler.**
>> contentEncoding"></stringProp>
>>             <stringProp name="HTTPSampler.path"></**stringProp>
>> +          <stringProp name="TestPlan.comments">Shows how to set defaults
>> on page</stringProp>
>>             <stringProp name="HTTPSampler.**
>> concurrentPool">4</stringProp>
>>           </ConfigTestElement>
>>           <hashTree/>
>> +        <ResponseAssertion guiclass="AssertionGui"
>> testclass="ResponseAssertion" testname="**CheckResponseCode200"
>> enabled="true">
>> +          <collectionProp name="Asserion.test_strings">
>> +            <stringProp name="49586">200</stringProp>
>> +          </collectionProp>
>> +          <stringProp name="TestPlan.comments">Check Response code for
>> all children samplers of JMeter Users Thread Group</stringProp>
>> +          <stringProp name="Assertion.test_field">**
>> Assertion.response_code</**stringProp>
>> +          <boolProp name="Assertion.assume_**success">false</boolProp>
>> +          <intProp name="Assertion.test_type">8</**intProp>
>> +        </ResponseAssertion>
>> +        <hashTree/>
>>           <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>> testclass="HTTPSamplerProxy" testname="Home Page" enabled="true">
>>             <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="Variables pré-définies" enabled="true">
>>               <collectionProp name="Arguments.arguments"/>
>> @@ -59,7 +134,18 @@
>>             <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>             <stringProp name="HTTPSampler.embedded_**
>> url_re"></stringProp>
>>           </HTTPSamplerProxy>
>> -        <hashTree/>
>> +        <hashTree>
>> +          <ResponseAssertion guiclass="AssertionGui"
>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>> +            <collectionProp name="Asserion.test_strings">
>> +              <stringProp name="605898121">&lt;title&gt;**Apache JMeter
>> - Apache JMeter&amp;trade;&lt;/title&**gt;</stringProp>
>> +            </collectionProp>
>> +            <stringProp name="TestPlan.comments">We check page contains
>> some text</stringProp>
>> +            <stringProp name="Assertion.test_field">**
>> Assertion.response_data</**stringProp>
>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>> +            <intProp name="Assertion.test_type">16<**/intProp>
>> +          </ResponseAssertion>
>> +          <hashTree/>
>> +        </hashTree>
>>           <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>> testclass="HTTPSamplerProxy" testname="Changes" enabled="true">
>>             <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="Variables pré-définies" enabled="true">
>>               <collectionProp name="Arguments.arguments"/>
>> @@ -79,52 +165,83 @@
>>             <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>             <stringProp name="HTTPSampler.embedded_**
>> url_re"></stringProp>
>>           </HTTPSamplerProxy>
>> -        <hashTree/>
>> -        <ResultCollector guiclass="GraphVisualizer"
>> testclass="ResultCollector" testname="Graph Results" 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>false</xml>
>> -              <fieldNames>false</fieldNames>
>> -              <responseHeaders>false</**responseHeaders>
>> -              <requestHeaders>false</**requestHeaders>
>> -              <responseDataOnError>false</**responseDataOnError>
>> -              <**saveAssertionResultsFailureMes**sage>false</**
>> saveAssertionResultsFailureMes**sage>
>> -              <assertionsResultsToSave>0</**assertionsResultsToSave>
>> -              <bytes>true</bytes>
>> -            </value>
>> -          </objProp>
>> -          <stringProp name="filename"></stringProp>
>> -        </ResultCollector>
>> -        <hashTree/>
>> +        <hashTree>
>> +          <GaussianRandomTimer guiclass="**GaussianRandomTimerGui"
>> testclass="**GaussianRandomTimer" testname="Wait5s Before Page"
>> enabled="true">
>> +            <stringProp name="ConstantTimer.delay">**5000</stringProp>
>> +            <stringProp name="RandomTimer.range">500.**0</stringProp>
>> +          </GaussianRandomTimer>
>> +          <hashTree/>
>> +          <ResponseAssertion guiclass="AssertionGui"
>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>> +            <collectionProp name="Asserion.test_strings">
>> +              <stringProp name="-420601512">&lt;title&**gt;Apache
>> JMeter - Changes&lt;/title&gt;</**stringProp>
>> +            </collectionProp>
>> +            <stringProp name="TestPlan.comments">We check page contains
>> some text</stringProp>
>> +            <stringProp name="Assertion.test_field">**
>> Assertion.response_data</**stringProp>
>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>> +            <intProp name="Assertion.test_type">16<**/intProp>
>> +          </ResponseAssertion>
>> +          <hashTree/>
>> +          <RegexExtractor guiclass="RegexExtractorGui"
>> testclass="RegexExtractor" testname="**randomBugIdExtractor"
>> enabled="true">
>> +            <stringProp name="TestPlan.comments">Shows how to extract
>> bug id from a link in response</stringProp>
>> +            <stringProp name="RegexExtractor.**
>> useHeaders">false</stringProp>
>> +            <stringProp name="RegexExtractor.refname">**
>> bugId</stringProp>
>> +            <stringProp name="RegexExtractor.regex">ht**
>> tps://issues.apache.org/**bugzilla/show_bug.cgi\?id=([<https://issues.apache.org/bugzilla/show_bug.cgi%5C?id=([>
>> ^&**quot;]+?)&quot;</stringProp>
>> +            <stringProp name="RegexExtractor.template"**
>> >$1$</stringProp>
>> +            <stringProp name="RegexExtractor.default">**
>> nv_bugId</stringProp>
>> +            <stringProp name="RegexExtractor.match_**
>> number">0</stringProp>
>> +          </RegexExtractor>
>> +          <hashTree/>
>> +        </hashTree>
>> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>> testclass="HTTPSamplerProxy" testname="BugDetail Page" enabled="true">
>> +          <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="Variables pré-définies" enabled="true">
>> +            <collectionProp name="Arguments.arguments"/>
>> +          </elementProp>
>> +          <stringProp name="HTTPSampler.domain">${**
>> bugzilla_host}</stringProp>
>> +          <stringProp name="HTTPSampler.port"></**stringProp>
>> +          <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>> +          <stringProp name="HTTPSampler.response_**
>> timeout"></stringProp>
>> +          <stringProp name="HTTPSampler.protocol">**https</stringProp>
>> +          <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>> +          <stringProp name="HTTPSampler.path">/**
>> bugzilla/show_bug.cgi?id=${**bugId}</stringProp>
>> +          <stringProp name="HTTPSampler.method">GET<**/stringProp>
>> +          <boolProp name="HTTPSampler.follow_**
>> redirects">true</boolProp>
>> +          <boolProp name="HTTPSampler.auto_**redirects">false</boolProp>
>> +          <boolProp name="HTTPSampler.use_**keepalive">true</boolProp>
>> +          <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>> boolProp>
>> +          <boolProp name="HTTPSampler.monitor">**false</boolProp>
>> +          <stringProp name="HTTPSampler.embedded_**url_re"></stringProp>
>> +          <stringProp name="TestPlan.comments">We use bugId variable
>> extracted in Changes by randomBugIdExtractor</**stringProp>
>> +        </HTTPSamplerProxy>
>> +        <hashTree>
>> +          <GaussianRandomTimer guiclass="**GaussianRandomTimerGui"
>> testclass="**GaussianRandomTimer" testname="Wait5s Before BugDetail
>> Page" enabled="true">
>> +            <stringProp name="ConstantTimer.delay">**5000</stringProp>
>> +            <stringProp name="RandomTimer.range">500.**0</stringProp>
>> +          </GaussianRandomTimer>
>> +          <hashTree/>
>> +          <ResponseAssertion guiclass="AssertionGui"
>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>> +            <collectionProp name="Asserion.test_strings">
>> +              <stringProp name="-1440480625">This is &lt;b&gt;ASF
>> Bugzilla&lt;/b&gt;: the Apache Software Foundation bug system</stringProp>
>> +            </collectionProp>
>> +            <stringProp name="TestPlan.comments">We check page contains
>> some text</stringProp>
>> +            <stringProp name="Assertion.test_field">**
>> Assertion.response_data</**stringProp>
>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>> +            <intProp name="Assertion.test_type">16<**/intProp>
>> +          </ResponseAssertion>
>> +          <hashTree/>
>> +        </hashTree>
>>           <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>> testclass="HTTPSamplerProxy" testname="Login" enabled="false">
>>             <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="Variables pré-définies" enabled="true">
>>               <collectionProp name="Arguments.arguments">
>>                 <elementProp name="username" elementType="HTTPArgument">
>>                   <boolProp name="HTTPArgument.always_**
>> encode">true</boolProp>
>> -                <stringProp name="Argument.value">johndoe<**/stringProp>
>> +                <stringProp name="Argument.value">${login}**
>> </stringProp>
>>                   <stringProp name="Argument.metadata">=</**stringProp>
>>                   <boolProp name="HTTPArgument.use_equals"**
>> >true</boolProp>
>>                   <stringProp name="Argument.name">username<**
>> /stringProp>
>>                 </elementProp>
>>                 <elementProp name="password" elementType="HTTPArgument">
>>                   <boolProp name="HTTPArgument.always_**
>> encode">true</boolProp>
>> -                <stringProp name="Argument.value">secret</**stringProp>
>> +                <stringProp name="Argument.value">${**
>> password}</stringProp>
>>                   <stringProp name="Argument.metadata">=</**stringProp>
>>                   <boolProp name="HTTPArgument.use_equals"**
>> >true</boolProp>
>>                   <stringProp name="Argument.name">password<**
>> /stringProp>
>> @@ -145,9 +262,151 @@
>>             <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>> boolProp>
>>             <boolProp name="HTTPSampler.monitor">**false</boolProp>
>>             <stringProp name="HTTPSampler.embedded_**
>> url_re"></stringProp>
>> +          <stringProp name="TestPlan.comments">We use here data from
>> loginData CSV DataSet</stringProp>
>>           </HTTPSamplerProxy>
>>           <hashTree/>
>>         </hashTree>
>> +      <ResultCollector guiclass="StatGraphVisualizer"
>> testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
>> +            <encoding>false</encoding>
>> +            <assertions>true</assertions>
>> +            <subresults>false</subresults>
>> +            <responseData>false</**responseData>
>> +            <samplerData>false</**samplerData>
>> +            <xml>false</xml>
>> +            <fieldNames>true</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>true</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>true</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>> +      <ResultCollector guiclass="**RespTimeGraphVisualizer"
>> testclass="ResultCollector" testname="Response Time Graph" 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>false</dataType>
>> +            <encoding>false</encoding>
>> +            <assertions>true</assertions>
>> +            <subresults>false</subresults>
>> +            <responseData>false</**responseData>
>> +            <samplerData>false</**samplerData>
>> +            <xml>false</xml>
>> +            <fieldNames>true</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>true</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>true</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>> +      <ResultCollector guiclass="GraphVisualizer"
>> testclass="ResultCollector" testname="Graph Results" enabled="false">
>> +        <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>false</xml>
>> +            <fieldNames>false</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>false</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>false</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>> +      <ResultCollector guiclass="**ViewResultsFullVisualizer"
>> testclass="ResultCollector" testname="View Results Tree" enabled="true">
>> +        <boolProp name="ResultCollector.error_**
>> logging">false</boolProp>
>> +        <objProp>
>> +          <name>saveConfig</name>
>> +          <value class="**SampleSaveConfiguration">
>> +            <time>true</time>
>> +            <latency>true</latency>
>> +            <timestamp>true</timestamp>
>> +            <success>true</success>
>> +            <label>true</label>
>> +            <code>true</code>
>> +            <message>true</message>
>> +            <threadName>true</threadName>
>> +            <dataType>false</dataType>
>> +            <encoding>false</encoding>
>> +            <assertions>true</assertions>
>> +            <subresults>false</subresults>
>> +            <responseData>false</**responseData>
>> +            <samplerData>false</**samplerData>
>> +            <xml>false</xml>
>> +            <fieldNames>true</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>true</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>true</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="TestPlan.comments">Use only during debug of
>> script</stringProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>>       </hashTree>
>>     </hashTree>
>>   </jmeterTestPlan>
>>
>> Added: jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>> build-webservice-test-plan.**jmx?rev=1509971&view=auto<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/build-webservice-test-plan.jmx?rev=1509971&view=auto>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx (added)
>> +++ jmeter/trunk/bin/templates/**build-webservice-test-plan.jmx Sat Aug
>>  3 12:41:36 2013
>> @@ -0,0 +1,184 @@
>> +<?xml version="1.0" encoding="UTF-8"?>
>> +<jmeterTestPlan version="1.2" properties="2.5" jmeter="2.10-SNAPSHOT.**
>> 20130803">
>> +  <hashTree>
>> +    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test
>> Plan" enabled="true">
>> +      <stringProp name="TestPlan.comments"></**stringProp>
>> +      <boolProp name="TestPlan.functional_**mode">false</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>
>> +      <stringProp name="TestPlan.user_define_**classpath"></stringProp>
>> +    </TestPlan>
>> +    <hashTree>
>> +      <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
>> testname="User Defined Variables" enabled="true">
>> +        <collectionProp name="Arguments.arguments">
>> +          <elementProp name="host" elementType="Argument">
>> +            <stringProp name="Argument.name">host</**stringProp>
>> +            <stringProp name="Argument.value">wsf.**cdyne.com<http://wsf.cdyne.com>
>> </stringProp>
>> +            <stringProp name="Argument.metadata">=</**stringProp>
>> +            <stringProp name="Argument.desc">Host of
>> Webservice</stringProp>
>> +          </elementProp>
>> +        </collectionProp>
>> +      </Arguments>
>> +      <hashTree/>
>> +      <ConfigTestElement guiclass="HttpDefaultsGui"
>> testclass="ConfigTestElement" testname="HTTP Request Defaults"
>> enabled="true">
>> +        <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments"
>> testname="User Defined Variables" enabled="true">
>> +          <collectionProp name="Arguments.arguments"/>
>> +        </elementProp>
>> +        <stringProp name="HTTPSampler.domain">${**host}</stringProp>
>> +        <stringProp name="HTTPSampler.port"></**stringProp>
>> +        <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>> +        <stringProp name="HTTPSampler.response_**timeout"></stringProp>
>> +        <stringProp name="HTTPSampler.protocol"></**stringProp>
>> +        <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>> +        <stringProp name="HTTPSampler.path"></**stringProp>
>> +        <stringProp name="HTTPSampler.**concurrentPool">4</stringProp>
>> +      </ConfigTestElement>
>> +      <hashTree/>
>> +      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup"
>> testname="Number of Users" enabled="true">
>> +        <stringProp name="ThreadGroup.on_sample_**
>> error">continue</stringProp>
>> +        <elementProp name="ThreadGroup.main_**controller"
>> elementType="LoopController" guiclass="LoopControlPanel"
>> testclass="LoopController" testname="Loop Controller" enabled="true">
>> +          <boolProp name="LoopController.continue_**
>> forever">false</boolProp>
>> +          <stringProp name="LoopController.loops">2<**/stringProp>
>> +        </elementProp>
>> +        <stringProp name="ThreadGroup.num_threads"**>5</stringProp>
>> +        <stringProp name="ThreadGroup.ramp_time">**5</stringProp>
>> +        <longProp name="ThreadGroup.start_time">**
>> 1375525852000</longProp>
>> +        <longProp name="ThreadGroup.end_time">**1375525852000</longProp>
>> +        <boolProp name="ThreadGroup.scheduler">**false</boolProp>
>> +        <stringProp name="ThreadGroup.duration"></**stringProp>
>> +        <stringProp name="ThreadGroup.delay"></**stringProp>
>> +      </ThreadGroup>
>> +      <hashTree>
>> +        <HTTPSamplerProxy guiclass="HttpTestSampleGui"
>> testclass="HTTPSamplerProxy" testname="Soap Request" enabled="true">
>> +          <boolProp name="HTTPSampler.postBodyRaw"**>true</boolProp>
>> +          <elementProp name="HTTPsampler.Arguments"
>> elementType="Arguments">
>> +            <collectionProp name="Arguments.arguments">
>> +              <elementProp name="" elementType="HTTPArgument">
>> +                <boolProp name="HTTPArgument.always_**
>> encode">false</boolProp>
>> +                <stringProp name="Argument.value">&lt;**soap:Envelope
>> xmlns:xsi=&quot;http://www.w3.**org/2001/XMLSchema-instance&**quot<http://www.w3.org/2001/XMLSchema-instance&quot>;
>> xmlns:xsd=&quot;http://www.w3.**org/2001/XMLSchema&quot<http://www.w3.org/2001/XMLSchema&quot>;
>> xmlns:soap=&quot;http://**schemas.xmlsoap.org/soap/**
>> envelope/&quot;&gt;&#xd <http://schemas.xmlsoap.org/soap/envelope/">&#xd>
>> ;
>> +  &lt;soap:Body&gt;&#xd;
>> +    &lt;GetCityForecastByZIP xmlns=&quot;http://ws.cdyne.**
>> com/WeatherWS/&quot;&gt;&#xd <http://ws.cdyne.com/WeatherWS/">&#xd>;
>> +      &lt;ZIP&gt;60601&lt;/ZIP&gt;&#**xd;
>> +    &lt;/GetCityForecastByZIP&gt;&**#xd;
>> +  &lt;/soap:Body&gt;&#xd;
>> +&lt;/soap:Envelope&gt;</**stringProp>
>> +                <stringProp name="Argument.metadata">=</**stringProp>
>> +              </elementProp>
>> +            </collectionProp>
>> +          </elementProp>
>> +          <stringProp name="HTTPSampler.domain"></**stringProp>
>> +          <stringProp name="HTTPSampler.port"></**stringProp>
>> +          <stringProp name="HTTPSampler.connect_**timeout"></stringProp>
>> +          <stringProp name="HTTPSampler.response_**
>> timeout"></stringProp>
>> +          <stringProp name="HTTPSampler.protocol"></**stringProp>
>> +          <stringProp name="HTTPSampler.**contentEncoding"></stringProp>
>> +          <stringProp name="HTTPSampler.path">/**
>> WeatherWS/Weather.asmx</**stringProp>
>> +          <stringProp name="HTTPSampler.method">**POST</stringProp>
>> +          <boolProp name="HTTPSampler.follow_**
>> redirects">true</boolProp>
>> +          <boolProp name="HTTPSampler.auto_**redirects">false</boolProp>
>> +          <boolProp name="HTTPSampler.use_**keepalive">true</boolProp>
>> +          <boolProp name="HTTPSampler.DO_**MULTIPART_POST">false</**
>> boolProp>
>> +          <boolProp name="HTTPSampler.monitor">**false</boolProp>
>> +          <stringProp name="HTTPSampler.embedded_**url_re"></stringProp>
>> +        </HTTPSamplerProxy>
>> +        <hashTree>
>> +          <HeaderManager guiclass="HeaderPanel"
>> testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
>> +            <collectionProp name="HeaderManager.headers">
>> +              <elementProp name="" elementType="Header">
>> +                <stringProp name="Header.name">Content-**
>> Type</stringProp>
>> +                <stringProp name="Header.value">text/xml;
>> charset=utf-8</stringProp>
>> +              </elementProp>
>> +              <elementProp name="" elementType="Header">
>> +                <stringProp name="Header.name">SOAPAction<**/stringProp>
>> +                <stringProp name="Header.value">&quot;http**
>> ://ws.cdyne.com/WeatherWS/**GetCityForecastByZIP&quot<http://ws.cdyne.com/WeatherWS/GetCityForecastByZIP&quot>
>> ;</**stringProp>
>> +              </elementProp>
>> +            </collectionProp>
>> +          </HeaderManager>
>> +          <hashTree/>
>> +          <ResponseAssertion guiclass="AssertionGui"
>> testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
>> +            <collectionProp name="Asserion.test_strings">
>> +              <stringProp name="130046656">&lt;/**
>> GetCityForecastByZIPResult&gt;**</stringProp>
>> +            </collectionProp>
>> +            <stringProp name="TestPlan.comments">**Verify content in
>> response</stringProp>
>> +            <stringProp name="Assertion.test_field">**
>> Assertion.response_data</**stringProp>
>> +            <boolProp name="Assertion.assume_**success">false</boolProp>
>> +            <intProp name="Assertion.test_type">16<**/intProp>
>> +          </ResponseAssertion>
>> +          <hashTree/>
>> +        </hashTree>
>> +      </hashTree>
>> +      <ResultCollector guiclass="**ViewResultsFullVisualizer"
>> testclass="ResultCollector" testname="View Results Tree" enabled="false">
>> +        <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>false</dataType>
>> +            <encoding>false</encoding>
>> +            <assertions>true</assertions>
>> +            <subresults>false</subresults>
>> +            <responseData>false</**responseData>
>> +            <samplerData>false</**samplerData>
>> +            <xml>false</xml>
>> +            <fieldNames>true</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>true</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>true</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>> +      <ResultCollector guiclass="StatGraphVisualizer"
>> testclass="ResultCollector" testname="Aggregate Graph" 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>false</dataType>
>> +            <encoding>false</encoding>
>> +            <assertions>true</assertions>
>> +            <subresults>false</subresults>
>> +            <responseData>false</**responseData>
>> +            <samplerData>false</**samplerData>
>> +            <xml>false</xml>
>> +            <fieldNames>true</fieldNames>
>> +            <responseHeaders>false</**responseHeaders>
>> +            <requestHeaders>false</**requestHeaders>
>> +            <responseDataOnError>true</**responseDataOnError>
>> +            <**saveAssertionResultsFailureMes**sage>true</**
>> saveAssertionResultsFailureMes**sage>
>> +            <assertionsResultsToSave>0</**assertionsResultsToSave>
>> +            <bytes>true</bytes>
>> +            <hostname>true</hostname>
>> +            <threadCounts>true</**threadCounts>
>> +            <sampleCount>true</**sampleCount>
>> +          </value>
>> +        </objProp>
>> +        <stringProp name="filename"></stringProp>
>> +      </ResultCollector>
>> +      <hashTree/>
>> +    </hashTree>
>> +  </hashTree>
>> +</jmeterTestPlan>
>>
>> Modified: jmeter/trunk/bin/templates/**templates.xml
>> URL: http://svn.apache.org/viewvc/**jmeter/trunk/bin/templates/**
>> templates.xml?rev=1509971&r1=**1509970&r2=1509971&view=diff<http://svn.apache.org/viewvc/jmeter/trunk/bin/templates/templates.xml?rev=1509971&r1=1509970&r2=1509971&view=diff>
>> ==============================**==============================**
>> ==================
>> --- jmeter/trunk/bin/templates/**templates.xml (original)
>> +++ jmeter/trunk/bin/templates/**templates.xml Sat Aug  3 12:41:36 2013
>> @@ -106,6 +106,12 @@
>>           <fileName>/bin/templates/**build-web-test-plan.jmx</**fileName>
>>           <description><![CDATA[
>>           <h1>Test plan from Building a Web Test Plan section in user's
>> manual</h1>
>> +        <h2>Configuration</h2>
>> +        <p>In order to run the login sample inside plan, create a CSV
>> file following description in <b>loginData</b> sample and put it in a
>> folder of your choice and test running JMeter with:<br/>
>> +            <ul>
>> +                <li><b>jmeter -Jresources_folder=FOLDER TO
>> CHANGE</b></li>
>> +            </ul>
>> +        </p>
>>           <h2>Useful link</h2>
>>               <ul>
>>                   <li><a href="http://jmeter.apache.**
>> org/usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html>"
>> >http://jmeter.apache.org/**usermanual/build-web-test-**plan.html<http://jmeter.apache.org/usermanual/build-web-test-plan.html>
>> </a></li>
>> @@ -113,6 +119,21 @@
>>           ]]></description>
>>       </template>
>>       <template isTestPlan="true">
>> +        <name>Building a WebService Test Plan</name>
>> +        <fileName>/bin/templates/**build-webservice-test-plan.**
>> jmx</fileName>
>> +        <description><![CDATA[
>> +        <h1>Test plan showing how to create a SOAP Webservice Test Plan
>> </h1>
>> +        <h2>Useful link</h2>
>> +            <ul>
>> +                <li><a href="http://jmeter.apache.**
>> org/usermanual/component_**reference.html#User_Defined_**Variables<http://jmeter.apache.org/usermanual/component_reference.html#User_Defined_Variables>"
>> >User Defined Variables</a></li>
>> +                <li><a href="http://jmeter.apache.**
>> org/usermanual/component_**reference.html#HTTP_Request_**Defaults<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request_Defaults>"
>> >User Defined Variables</a></li>
>> +                <li><a href="http://jmeter.apache.**
>> org/usermanual/component_**reference.html#HTTP_Request<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Request>"
>> >HTTP Request</a></li>
>> +                <li><a href="http://jmeter.apache.**
>> org/usermanual/component_**reference.html#Response_**Assertion<http://jmeter.apache.org/usermanual/component_reference.html#Response_Assertion>">Response
>> Assertion</a></li>
>> +                <li><a href="http://jmeter.apache.**
>> org/usermanual/component_**reference.html#HTTP_Header_**Manager<http://jmeter.apache.org/usermanual/component_reference.html#HTTP_Header_Manager>">HTTP
>> Header Manager</a></li>
>> +            </ul>
>> +        ]]></description>
>> +    </template>
>> +    <template isTestPlan="true">
>>           <name>Building an FTP Test Plan </name>
>>           <fileName>/bin/templates/**build-ftp-test-plan.jmx</**fileName>
>>           <description><![CDATA[
>>
>>
>>
>>
>


-- 
Cordialement.
Philippe Mouawad.