MDL-63927 performance: Update the plan to support the new login token
[moodle.git] / admin / tool / generator / testplan.template.jmx
1 <?xml version="1.0" encoding="UTF-8"?>
2 <jmeterTestPlan version="1.2" properties="2.4">
3   <hashTree>
4     <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
5       <stringProp name="TestPlan.comments"></stringProp>
6       <boolProp name="TestPlan.functional_mode">false</boolProp>
7       <boolProp name="TestPlan.serialize_threadgroups">true</boolProp>
8       <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
9         <collectionProp name="Arguments.arguments">
10           <elementProp name="runtimestamp" elementType="Argument">
11             <stringProp name="Argument.name">runtimestamp</stringProp>
12             <stringProp name="Argument.value">${__time()}</stringProp>
13             <stringProp name="Argument.metadata">=</stringProp>
14           </elementProp>
15           <elementProp name="moodleversion" elementType="Argument">
16             <stringProp name="Argument.name">moodleversion</stringProp>
17             <stringProp name="Argument.value">{{MOODLEVERSION_PLACEHOLDER}}</stringProp>
18             <stringProp name="Argument.metadata">=</stringProp>
19           </elementProp>
20           <elementProp name="size" elementType="Argument">
21             <stringProp name="Argument.name">size</stringProp>
22             <stringProp name="Argument.value">{{SIZE_PLACEHOLDER}}</stringProp>
23             <stringProp name="Argument.metadata">=</stringProp>
24           </elementProp>
25           <elementProp name="host" elementType="Argument">
26             <stringProp name="Argument.name">host</stringProp>
27             <stringProp name="Argument.value">{{HOST_PLACEHOLDER}}</stringProp>
28             <stringProp name="Argument.metadata">=</stringProp>
29           </elementProp>
30           <elementProp name="sitepath" elementType="Argument">
31             <stringProp name="Argument.name">sitepath</stringProp>
32             <stringProp name="Argument.value">{{SITEPATH_PLACEHOLDER}}</stringProp>
33             <stringProp name="Argument.metadata">=</stringProp>
34           </elementProp>
35           <elementProp name="courseid" elementType="Argument">
36             <stringProp name="Argument.name">courseid</stringProp>
37             <stringProp name="Argument.value">{{COURSEID_PLACEHOLDER}}</stringProp>
38             <stringProp name="Argument.metadata">=</stringProp>
39           </elementProp>
40           <elementProp name="pageactivityid" elementType="Argument">
41             <stringProp name="Argument.name">pageactivityid</stringProp>
42             <stringProp name="Argument.value">{{PAGEACTIVITYID_PLACEHOLDER}}</stringProp>
43             <stringProp name="Argument.metadata">=</stringProp>
44           </elementProp>
45           <elementProp name="forumactivityid" elementType="Argument">
46             <stringProp name="Argument.name">forumactivityid</stringProp>
47             <stringProp name="Argument.value">{{FORUMACTIVITYID_PLACEHOLDER}}</stringProp>
48             <stringProp name="Argument.metadata">=</stringProp>
49           </elementProp>
50           <elementProp name="forumdiscussionid" elementType="Argument">
51             <stringProp name="Argument.name">forumdiscussionid</stringProp>
52             <stringProp name="Argument.value">{{FORUMDISCUSSIONID_PLACEHOLDER}}</stringProp>
53             <stringProp name="Argument.metadata">=</stringProp>
54           </elementProp>
55           <elementProp name="forumreplyid" elementType="Argument">
56             <stringProp name="Argument.name">forumreplyid</stringProp>
57             <stringProp name="Argument.value">{{FORUMREPLYID_PLACEHOLDER}}</stringProp>
58             <stringProp name="Argument.metadata">=</stringProp>
59           </elementProp>
60         </collectionProp>
61       </elementProp>
62       <stringProp name="TestPlan.user_define_classpath"></stringProp>
63     </TestPlan>
64     <hashTree>
65       <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Samples per minute" enabled="true">
66         <stringProp name="calcMode">all active threads (shared)</stringProp>
67         <stringProp name="throughput">${__property(throughput,throughput,120.0)}</stringProp>
68       </ConstantThroughputTimer>
69       <hashTree/>
70       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Warm-up site" enabled="true">
71         <stringProp name="TestPlan.comments">Used to fill the caches, logs in every user</stringProp>
72         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
73         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
74           <boolProp name="LoopController.continue_forever">false</boolProp>
75           <stringProp name="LoopController.loops">1</stringProp>
76         </elementProp>
77         <stringProp name="ThreadGroup.num_threads">${__P(users,{{USERS_PLACEHOLDER}})}</stringProp>
78         <stringProp name="ThreadGroup.ramp_time">${__P(rampup,{{RAMPUP_PLACEHOLDER}})}</stringProp>
79         <longProp name="ThreadGroup.start_time">1378187955000</longProp>
80         <longProp name="ThreadGroup.end_time">1378187955000</longProp>
81         <boolProp name="ThreadGroup.scheduler">false</boolProp>
82         <stringProp name="ThreadGroup.duration"></stringProp>
83         <stringProp name="ThreadGroup.delay"></stringProp>
84       </ThreadGroup>
85       <hashTree>
86         <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default site request" enabled="true">
87           <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
88             <collectionProp name="Arguments.arguments"/>
89           </elementProp>
90           <stringProp name="HTTPSampler.domain">${host}</stringProp>
91           <stringProp name="HTTPSampler.port"></stringProp>
92           <stringProp name="HTTPSampler.connect_timeout"></stringProp>
93           <stringProp name="HTTPSampler.response_timeout"></stringProp>
94           <stringProp name="HTTPSampler.protocol"></stringProp>
95           <stringProp name="HTTPSampler.contentEncoding"></stringProp>
96           <stringProp name="HTTPSampler.path">${sitepath}</stringProp>
97           <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
98         </ConfigTestElement>
99         <hashTree/>
100         <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV users data" enabled="true">
101           <stringProp name="delimiter">,</stringProp>
102           <stringProp name="fileEncoding"></stringProp>
103           <stringProp name="filename">${__P(usersfile,YOU_FORGOT_TO_SPECIFY_USERS_CSV_FILE.csv)}</stringProp>
104           <boolProp name="quotedData">false</boolProp>
105           <boolProp name="recycle">true</boolProp>
106           <stringProp name="shareMode">All threads</stringProp>
107           <boolProp name="stopThread">false</boolProp>
108           <stringProp name="variableNames">username,password</stringProp>
109         </CSVDataSet>
110         <hashTree/>
111         <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Test plan loop" enabled="true">
112           <boolProp name="LoopController.continue_forever">true</boolProp>
113           <stringProp name="LoopController.loops">1</stringProp>
114         </LoopController>
115         <hashTree>
116           <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
117             <collectionProp name="CookieManager.cookies"/>
118             <boolProp name="CookieManager.clearEachIteration">true</boolProp>
119             <stringProp name="CookieManager.policy">rfc2109</stringProp>
120           </CookieManager>
121           <hashTree/>
122           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Frontpage not logged" enabled="true">
123             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
124               <collectionProp name="Arguments.arguments"/>
125             </elementProp>
126             <stringProp name="HTTPSampler.domain"></stringProp>
127             <stringProp name="HTTPSampler.port"></stringProp>
128             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
129             <stringProp name="HTTPSampler.response_timeout"></stringProp>
130             <stringProp name="HTTPSampler.protocol"></stringProp>
131             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
132             <stringProp name="HTTPSampler.path"></stringProp>
133             <stringProp name="HTTPSampler.method">GET</stringProp>
134             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
135             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
136             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
137             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
138             <boolProp name="HTTPSampler.monitor">false</boolProp>
139             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
140           </HTTPSamplerProxy>
141           <hashTree/>
142           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View login page" enabled="true">
143             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
144               <collectionProp name="Arguments.arguments"/>
145             </elementProp>
146             <stringProp name="HTTPSampler.domain"></stringProp>
147             <stringProp name="HTTPSampler.port"></stringProp>
148             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
149             <stringProp name="HTTPSampler.response_timeout"></stringProp>
150             <stringProp name="HTTPSampler.protocol"></stringProp>
151             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
152             <stringProp name="HTTPSampler.path">${sitepath}/login/index.php</stringProp>
153             <stringProp name="HTTPSampler.method">GET</stringProp>
154             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
155             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
156             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
157             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
158             <boolProp name="HTTPSampler.monitor">false</boolProp>
159             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
160           </HTTPSamplerProxy>
161           <hashTree>
162             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get logintoken" enabled="true">
163               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
164               <stringProp name="RegexExtractor.refname">LOGIN_TOKEN</stringProp>
165               <stringProp name="RegexExtractor.regex">type=&quot;hidden&quot;\sname=&quot;logintoken&quot;\svalue=&quot;(\w+)&quot;</stringProp>
166               <stringProp name="RegexExtractor.template">$1$</stringProp>
167               <stringProp name="RegexExtractor.default">0</stringProp>
168               <stringProp name="RegexExtractor.match_number">1</stringProp>
169             </RegexExtractor>
170             <hashTree/>
171           </hashTree>
172           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
173             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
174               <collectionProp name="Arguments.arguments">
175                 <elementProp name="username" elementType="HTTPArgument">
176                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
177                   <stringProp name="Argument.value">${username}</stringProp>
178                   <stringProp name="Argument.metadata">=</stringProp>
179                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
180                   <stringProp name="Argument.name">username</stringProp>
181                 </elementProp>
182                 <elementProp name="password" elementType="HTTPArgument">
183                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
184                   <stringProp name="Argument.value">${password}</stringProp>
185                   <stringProp name="Argument.metadata">=</stringProp>
186                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
187                   <stringProp name="Argument.name">password</stringProp>
188                 </elementProp>
189                 <elementProp name="logintoken" elementType="HTTPArgument">
190                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
191                   <stringProp name="Argument.value">${LOGIN_TOKEN}</stringProp>
192                   <stringProp name="Argument.metadata">=</stringProp>
193                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
194                   <stringProp name="Argument.name">logintoken</stringProp>
195                 </elementProp>
196               </collectionProp>
197             </elementProp>
198             <stringProp name="HTTPSampler.domain"></stringProp>
199             <stringProp name="HTTPSampler.port"></stringProp>
200             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
201             <stringProp name="HTTPSampler.response_timeout"></stringProp>
202             <stringProp name="HTTPSampler.protocol"></stringProp>
203             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
204             <stringProp name="HTTPSampler.path">${sitepath}/login/index.php</stringProp>
205             <stringProp name="HTTPSampler.method">POST</stringProp>
206             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
207             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
208             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
209             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
210             <boolProp name="HTTPSampler.monitor">false</boolProp>
211             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
212           </HTTPSamplerProxy>
213           <hashTree>
214             <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Logged in" enabled="true">
215               <collectionProp name="Asserion.test_strings">
216                 <stringProp name="615717117">&lt;div class=&quot;logininfo&quot;&gt;You are logged in as</stringProp>
217               </collectionProp>
218               <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
219               <boolProp name="Assertion.assume_success">false</boolProp>
220               <intProp name="Assertion.test_type">2</intProp>
221             </ResponseAssertion>
222             <hashTree/>
223           </hashTree>
224           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Frontpage logged" enabled="true">
225             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
226               <collectionProp name="Arguments.arguments"/>
227             </elementProp>
228             <stringProp name="HTTPSampler.domain"></stringProp>
229             <stringProp name="HTTPSampler.port"></stringProp>
230             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
231             <stringProp name="HTTPSampler.response_timeout"></stringProp>
232             <stringProp name="HTTPSampler.protocol"></stringProp>
233             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
234             <stringProp name="HTTPSampler.path"></stringProp>
235             <stringProp name="HTTPSampler.method">GET</stringProp>
236             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
237             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
238             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
239             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
240             <boolProp name="HTTPSampler.monitor">false</boolProp>
241             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
242           </HTTPSamplerProxy>
243           <hashTree/>
244           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View course" enabled="true">
245             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
246               <collectionProp name="Arguments.arguments">
247                 <elementProp name="id" elementType="HTTPArgument">
248                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
249                   <stringProp name="Argument.value">${courseid}</stringProp>
250                   <stringProp name="Argument.metadata">=</stringProp>
251                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
252                   <stringProp name="Argument.name">id</stringProp>
253                 </elementProp>
254               </collectionProp>
255             </elementProp>
256             <stringProp name="HTTPSampler.domain"></stringProp>
257             <stringProp name="HTTPSampler.port"></stringProp>
258             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
259             <stringProp name="HTTPSampler.response_timeout"></stringProp>
260             <stringProp name="HTTPSampler.protocol"></stringProp>
261             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
262             <stringProp name="HTTPSampler.path">${sitepath}/course/view.php</stringProp>
263             <stringProp name="HTTPSampler.method">GET</stringProp>
264             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
265             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
266             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
267             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
268             <boolProp name="HTTPSampler.monitor">false</boolProp>
269             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
270             <stringProp name="TestPlan.comments">       </stringProp>
271           </HTTPSamplerProxy>
272           <hashTree>
273             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
274               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
275               <stringProp name="RegexExtractor.refname">SESSION_SESSKEY</stringProp>
276               <stringProp name="RegexExtractor.regex">sesskey=([^&quot;]+)&quot;</stringProp>
277               <stringProp name="RegexExtractor.template">$1$</stringProp>
278               <stringProp name="RegexExtractor.default"></stringProp>
279               <stringProp name="RegexExtractor.match_number">2</stringProp>
280               <stringProp name="Sample.scope">all</stringProp>
281             </RegexExtractor>
282             <hashTree/>
283           </hashTree>
284           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
285             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
286               <collectionProp name="Arguments.arguments">
287                 <elementProp name="sesskey" elementType="HTTPArgument">
288                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
289                   <stringProp name="Argument.value">${SESSION_SESSKEY}</stringProp>
290                   <stringProp name="Argument.metadata">=</stringProp>
291                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
292                   <stringProp name="Argument.name">sesskey</stringProp>
293                 </elementProp>
294               </collectionProp>
295             </elementProp>
296             <stringProp name="HTTPSampler.domain"></stringProp>
297             <stringProp name="HTTPSampler.port"></stringProp>
298             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
299             <stringProp name="HTTPSampler.response_timeout"></stringProp>
300             <stringProp name="HTTPSampler.protocol"></stringProp>
301             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
302             <stringProp name="HTTPSampler.path">${sitepath}/login/logout.php</stringProp>
303             <stringProp name="HTTPSampler.method">GET</stringProp>
304             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
305             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
306             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
307             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
308             <boolProp name="HTTPSampler.monitor">false</boolProp>
309             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
310           </HTTPSamplerProxy>
311           <hashTree/>
312         </hashTree>
313       </hashTree>
314       <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Moodle Test" enabled="true">
315         <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
316         <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
317           <boolProp name="LoopController.continue_forever">false</boolProp>
318           <stringProp name="LoopController.loops">${__property(loops,loops,{{LOOPS_PLACEHOLDER}})}</stringProp>
319         </elementProp>
320         <stringProp name="ThreadGroup.num_threads">${__property(users,users,{{USERS_PLACEHOLDER}})}</stringProp>
321         <stringProp name="ThreadGroup.ramp_time">${__property(rampup,rampup,{{RAMPUP_PLACEHOLDER}})}</stringProp>
322         <longProp name="ThreadGroup.start_time">1376636813000</longProp>
323         <longProp name="ThreadGroup.end_time">1376636813000</longProp>
324         <boolProp name="ThreadGroup.scheduler">false</boolProp>
325         <stringProp name="ThreadGroup.duration"></stringProp>
326         <stringProp name="ThreadGroup.delay"></stringProp>
327       </ThreadGroup>
328       <hashTree>
329         <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="Default site request" enabled="true">
330           <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
331             <collectionProp name="Arguments.arguments"/>
332           </elementProp>
333           <stringProp name="HTTPSampler.domain">${host}</stringProp>
334           <stringProp name="HTTPSampler.port"></stringProp>
335           <stringProp name="HTTPSampler.connect_timeout"></stringProp>
336           <stringProp name="HTTPSampler.response_timeout"></stringProp>
337           <stringProp name="HTTPSampler.protocol"></stringProp>
338           <stringProp name="HTTPSampler.contentEncoding"></stringProp>
339           <stringProp name="HTTPSampler.path">${sitepath}</stringProp>
340           <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
341         </ConfigTestElement>
342         <hashTree/>
343         <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV users data" enabled="true">
344           <stringProp name="delimiter">,</stringProp>
345           <stringProp name="fileEncoding"></stringProp>
346           <stringProp name="filename">${__P(usersfile,YOU_FORGOT_TO_SPECIFY_USERS_CSV_FILE.csv)}</stringProp>
347           <boolProp name="quotedData">false</boolProp>
348           <boolProp name="recycle">true</boolProp>
349           <stringProp name="shareMode">All threads</stringProp>
350           <boolProp name="stopThread">false</boolProp>
351           <stringProp name="variableNames">username,password</stringProp>
352         </CSVDataSet>
353         <hashTree/>
354         <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Test plan loop" enabled="true">
355           <boolProp name="LoopController.continue_forever">true</boolProp>
356           <stringProp name="LoopController.loops">1</stringProp>
357         </LoopController>
358         <hashTree>
359           <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
360             <collectionProp name="CookieManager.cookies"/>
361             <boolProp name="CookieManager.clearEachIteration">true</boolProp>
362             <stringProp name="CookieManager.policy">rfc2109</stringProp>
363           </CookieManager>
364           <hashTree/>
365           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Frontpage not logged" enabled="true">
366             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
367               <collectionProp name="Arguments.arguments"/>
368             </elementProp>
369             <stringProp name="HTTPSampler.domain"></stringProp>
370             <stringProp name="HTTPSampler.port"></stringProp>
371             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
372             <stringProp name="HTTPSampler.response_timeout"></stringProp>
373             <stringProp name="HTTPSampler.protocol"></stringProp>
374             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
375             <stringProp name="HTTPSampler.path"></stringProp>
376             <stringProp name="HTTPSampler.method">GET</stringProp>
377             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
378             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
379             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
380             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
381             <boolProp name="HTTPSampler.monitor">false</boolProp>
382             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
383           </HTTPSamplerProxy>
384           <hashTree/>
385           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View login page" enabled="true">
386             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
387               <collectionProp name="Arguments.arguments"/>
388             </elementProp>
389             <stringProp name="HTTPSampler.domain"></stringProp>
390             <stringProp name="HTTPSampler.port"></stringProp>
391             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
392             <stringProp name="HTTPSampler.response_timeout"></stringProp>
393             <stringProp name="HTTPSampler.protocol"></stringProp>
394             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
395             <stringProp name="HTTPSampler.path">${sitepath}/login/index.php</stringProp>
396             <stringProp name="HTTPSampler.method">GET</stringProp>
397             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
398             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
399             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
400             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
401             <boolProp name="HTTPSampler.monitor">false</boolProp>
402             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
403           </HTTPSamplerProxy>
404           <hashTree>
405             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get logintoken" enabled="true">
406               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
407               <stringProp name="RegexExtractor.refname">LOGIN_TOKEN</stringProp>
408               <stringProp name="RegexExtractor.regex">type=&quot;hidden&quot;\sname=&quot;logintoken&quot;\svalue=&quot;(\w+)&quot;</stringProp>
409               <stringProp name="RegexExtractor.template">$1$</stringProp>
410               <stringProp name="RegexExtractor.default">0</stringProp>
411               <stringProp name="RegexExtractor.match_number">1</stringProp>
412             </RegexExtractor>
413             <hashTree/>
414           </hashTree>
415           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Login" enabled="true">
416             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
417               <collectionProp name="Arguments.arguments">
418                 <elementProp name="username" elementType="HTTPArgument">
419                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
420                   <stringProp name="Argument.value">${username}</stringProp>
421                   <stringProp name="Argument.metadata">=</stringProp>
422                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
423                   <stringProp name="Argument.name">username</stringProp>
424                 </elementProp>
425                 <elementProp name="password" elementType="HTTPArgument">
426                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
427                   <stringProp name="Argument.value">${password}</stringProp>
428                   <stringProp name="Argument.metadata">=</stringProp>
429                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
430                   <stringProp name="Argument.name">password</stringProp>
431                 </elementProp>
432                 <elementProp name="logintoken" elementType="HTTPArgument">
433                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
434                   <stringProp name="Argument.value">${LOGIN_TOKEN}</stringProp>
435                   <stringProp name="Argument.metadata">=</stringProp>
436                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
437                   <stringProp name="Argument.name">logintoken</stringProp>
438                 </elementProp>
439               </collectionProp>
440             </elementProp>
441             <stringProp name="HTTPSampler.domain"></stringProp>
442             <stringProp name="HTTPSampler.port"></stringProp>
443             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
444             <stringProp name="HTTPSampler.response_timeout"></stringProp>
445             <stringProp name="HTTPSampler.protocol"></stringProp>
446             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
447             <stringProp name="HTTPSampler.path">${sitepath}/login/index.php</stringProp>
448             <stringProp name="HTTPSampler.method">POST</stringProp>
449             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
450             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
451             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
452             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
453             <boolProp name="HTTPSampler.monitor">false</boolProp>
454             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
455           </HTTPSamplerProxy>
456           <hashTree>
457             <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Logged in" enabled="true">
458               <collectionProp name="Asserion.test_strings">
459                 <stringProp name="615717117">&lt;div class=&quot;logininfo&quot;&gt;You are logged in as</stringProp>
460               </collectionProp>
461               <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
462               <boolProp name="Assertion.assume_success">false</boolProp>
463               <intProp name="Assertion.test_type">2</intProp>
464             </ResponseAssertion>
465             <hashTree/>
466           </hashTree>
467           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Frontpage logged" enabled="true">
468             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
469               <collectionProp name="Arguments.arguments"/>
470             </elementProp>
471             <stringProp name="HTTPSampler.domain"></stringProp>
472             <stringProp name="HTTPSampler.port"></stringProp>
473             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
474             <stringProp name="HTTPSampler.response_timeout"></stringProp>
475             <stringProp name="HTTPSampler.protocol"></stringProp>
476             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
477             <stringProp name="HTTPSampler.path"></stringProp>
478             <stringProp name="HTTPSampler.method">GET</stringProp>
479             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
480             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
481             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
482             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
483             <boolProp name="HTTPSampler.monitor">false</boolProp>
484             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
485           </HTTPSamplerProxy>
486           <hashTree/>
487           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View course" enabled="true">
488             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
489               <collectionProp name="Arguments.arguments">
490                 <elementProp name="id" elementType="HTTPArgument">
491                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
492                   <stringProp name="Argument.value">${courseid}</stringProp>
493                   <stringProp name="Argument.metadata">=</stringProp>
494                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
495                   <stringProp name="Argument.name">id</stringProp>
496                 </elementProp>
497               </collectionProp>
498             </elementProp>
499             <stringProp name="HTTPSampler.domain"></stringProp>
500             <stringProp name="HTTPSampler.port"></stringProp>
501             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
502             <stringProp name="HTTPSampler.response_timeout"></stringProp>
503             <stringProp name="HTTPSampler.protocol"></stringProp>
504             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
505             <stringProp name="HTTPSampler.path">${sitepath}/course/view.php</stringProp>
506             <stringProp name="HTTPSampler.method">GET</stringProp>
507             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
508             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
509             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
510             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
511             <boolProp name="HTTPSampler.monitor">false</boolProp>
512             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
513             <stringProp name="TestPlan.comments">               </stringProp>
514           </HTTPSamplerProxy>
515           <hashTree/>
516           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View a page activity" enabled="true">
517             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
518               <collectionProp name="Arguments.arguments">
519                 <elementProp name="id" elementType="HTTPArgument">
520                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
521                   <stringProp name="Argument.value">${pageactivityid}</stringProp>
522                   <stringProp name="Argument.metadata">=</stringProp>
523                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
524                   <stringProp name="Argument.name">id</stringProp>
525                 </elementProp>
526               </collectionProp>
527             </elementProp>
528             <stringProp name="HTTPSampler.domain"></stringProp>
529             <stringProp name="HTTPSampler.port"></stringProp>
530             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
531             <stringProp name="HTTPSampler.response_timeout"></stringProp>
532             <stringProp name="HTTPSampler.protocol"></stringProp>
533             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
534             <stringProp name="HTTPSampler.path">${sitepath}/mod/page/view.php</stringProp>
535             <stringProp name="HTTPSampler.method">GET</stringProp>
536             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
537             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
538             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
539             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
540             <boolProp name="HTTPSampler.monitor">false</boolProp>
541             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
542           </HTTPSamplerProxy>
543           <hashTree/>
544           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View course again" enabled="true">
545             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
546               <collectionProp name="Arguments.arguments">
547                 <elementProp name="id" elementType="HTTPArgument">
548                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
549                   <stringProp name="Argument.value">${courseid}</stringProp>
550                   <stringProp name="Argument.metadata">=</stringProp>
551                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
552                   <stringProp name="Argument.name">id</stringProp>
553                 </elementProp>
554               </collectionProp>
555             </elementProp>
556             <stringProp name="HTTPSampler.domain"></stringProp>
557             <stringProp name="HTTPSampler.port"></stringProp>
558             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
559             <stringProp name="HTTPSampler.response_timeout"></stringProp>
560             <stringProp name="HTTPSampler.protocol"></stringProp>
561             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
562             <stringProp name="HTTPSampler.path">${sitepath}/course/view.php</stringProp>
563             <stringProp name="HTTPSampler.method">GET</stringProp>
564             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
565             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
566             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
567             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
568             <boolProp name="HTTPSampler.monitor">false</boolProp>
569             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
570           </HTTPSamplerProxy>
571           <hashTree/>
572           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View a forum activity" enabled="true">
573             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
574               <collectionProp name="Arguments.arguments">
575                 <elementProp name="id" elementType="HTTPArgument">
576                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
577                   <stringProp name="Argument.value">${forumactivityid}</stringProp>
578                   <stringProp name="Argument.metadata">=</stringProp>
579                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
580                   <stringProp name="Argument.name">id</stringProp>
581                 </elementProp>
582               </collectionProp>
583             </elementProp>
584             <stringProp name="HTTPSampler.domain"></stringProp>
585             <stringProp name="HTTPSampler.port"></stringProp>
586             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
587             <stringProp name="HTTPSampler.response_timeout"></stringProp>
588             <stringProp name="HTTPSampler.protocol"></stringProp>
589             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
590             <stringProp name="HTTPSampler.path">${sitepath}/mod/forum/view.php</stringProp>
591             <stringProp name="HTTPSampler.method">GET</stringProp>
592             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
593             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
594             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
595             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
596             <boolProp name="HTTPSampler.monitor">false</boolProp>
597             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
598           </HTTPSamplerProxy>
599           <hashTree/>
600           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View a forum discussion" enabled="true">
601             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
602               <collectionProp name="Arguments.arguments">
603                 <elementProp name="d" elementType="HTTPArgument">
604                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
605                   <stringProp name="Argument.value">${forumdiscussionid}</stringProp>
606                   <stringProp name="Argument.metadata">=</stringProp>
607                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
608                   <stringProp name="Argument.name">d</stringProp>
609                 </elementProp>
610               </collectionProp>
611             </elementProp>
612             <stringProp name="HTTPSampler.domain"></stringProp>
613             <stringProp name="HTTPSampler.port"></stringProp>
614             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
615             <stringProp name="HTTPSampler.response_timeout"></stringProp>
616             <stringProp name="HTTPSampler.protocol"></stringProp>
617             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
618             <stringProp name="HTTPSampler.path">${sitepath}/mod/forum/discuss.php</stringProp>
619             <stringProp name="HTTPSampler.method">GET</stringProp>
620             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
621             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
622             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
623             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
624             <boolProp name="HTTPSampler.monitor">false</boolProp>
625             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
626           </HTTPSamplerProxy>
627           <hashTree/>
628           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Fill a form to reply a forum discussion" enabled="true">
629             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
630               <collectionProp name="Arguments.arguments">
631                 <elementProp name="reply" elementType="HTTPArgument">
632                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
633                   <stringProp name="Argument.value">${forumreplyid}</stringProp>
634                   <stringProp name="Argument.metadata">=</stringProp>
635                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
636                   <stringProp name="Argument.name">reply</stringProp>
637                 </elementProp>
638               </collectionProp>
639             </elementProp>
640             <stringProp name="HTTPSampler.domain"></stringProp>
641             <stringProp name="HTTPSampler.port"></stringProp>
642             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
643             <stringProp name="HTTPSampler.response_timeout"></stringProp>
644             <stringProp name="HTTPSampler.protocol"></stringProp>
645             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
646             <stringProp name="HTTPSampler.path">${sitepath}/mod/forum/post.php</stringProp>
647             <stringProp name="HTTPSampler.method">GET</stringProp>
648             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
649             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
650             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
651             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
652             <boolProp name="HTTPSampler.monitor">false</boolProp>
653             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
654           </HTTPSamplerProxy>
655           <hashTree>
656             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get session userid" enabled="true">
657               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
658               <stringProp name="RegexExtractor.refname">SESSION_USERID</stringProp>
659               <stringProp name="RegexExtractor.regex">name=&quot;userid&quot;\stype=&quot;hidden&quot;\svalue=&quot;(\d+)&quot;</stringProp>
660               <stringProp name="RegexExtractor.template">$1$</stringProp>
661               <stringProp name="RegexExtractor.default">0</stringProp>
662               <stringProp name="RegexExtractor.match_number">1</stringProp>
663             </RegexExtractor>
664             <hashTree/>
665             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get session sesskey" enabled="true">
666               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
667               <stringProp name="RegexExtractor.refname">SESSION_SESSKEY</stringProp>
668               <stringProp name="RegexExtractor.regex">name=&quot;sesskey&quot;\stype=&quot;hidden&quot;\svalue=&quot;([^&quot;]+)&quot;</stringProp>
669               <stringProp name="RegexExtractor.template">$1$</stringProp>
670               <stringProp name="RegexExtractor.default">0</stringProp>
671               <stringProp name="RegexExtractor.match_number">1</stringProp>
672             </RegexExtractor>
673             <hashTree/>
674             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get forum form attachments" enabled="true">
675               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
676               <stringProp name="RegexExtractor.refname">SESSION_FORUMFORMATTACHMENTS</stringProp>
677               <stringProp name="RegexExtractor.regex">value=&quot;(\d+)&quot;\sname=&quot;attachments&quot;\stype=&quot;hidden&quot;</stringProp>
678               <stringProp name="RegexExtractor.template">$1$</stringProp>
679               <stringProp name="RegexExtractor.default">0</stringProp>
680               <stringProp name="RegexExtractor.match_number">1</stringProp>
681             </RegexExtractor>
682             <hashTree/>
683             <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Get forum form itemid" enabled="true">
684               <stringProp name="RegexExtractor.useHeaders">false</stringProp>
685               <stringProp name="RegexExtractor.refname">SESSION_FORUMFORMITEMID</stringProp>
686               <stringProp name="RegexExtractor.regex">type=&quot;hidden&quot;\sname=&quot;message\[itemid\]&quot;\svalue=&quot;(\d+)&quot;</stringProp>
687               <stringProp name="RegexExtractor.template">$1$</stringProp>
688               <stringProp name="RegexExtractor.default">0</stringProp>
689               <stringProp name="RegexExtractor.match_number">1</stringProp>
690             </RegexExtractor>
691             <hashTree/>
692           </hashTree>
693           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Send the forum discussion reply" enabled="true">
694             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
695               <collectionProp name="Arguments.arguments">
696                 <elementProp name="course" elementType="HTTPArgument">
697                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
698                   <stringProp name="Argument.value">${courseid}</stringProp>
699                   <stringProp name="Argument.metadata">=</stringProp>
700                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
701                   <stringProp name="Argument.name">course</stringProp>
702                 </elementProp>
703                 <elementProp name="forum" elementType="HTTPArgument">
704                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
705                   <stringProp name="Argument.value">0</stringProp>
706                   <stringProp name="Argument.metadata">=</stringProp>
707                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
708                   <stringProp name="Argument.name">forum</stringProp>
709                 </elementProp>
710                 <elementProp name="discussion" elementType="HTTPArgument">
711                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
712                   <stringProp name="Argument.value">${forumdiscussionid}</stringProp>
713                   <stringProp name="Argument.metadata">=</stringProp>
714                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
715                   <stringProp name="Argument.name">discussion</stringProp>
716                 </elementProp>
717                 <elementProp name="userid" elementType="HTTPArgument">
718                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
719                   <stringProp name="Argument.value">${SESSION_USERID}</stringProp>
720                   <stringProp name="Argument.metadata">=</stringProp>
721                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
722                   <stringProp name="Argument.name">userid</stringProp>
723                 </elementProp>
724                 <elementProp name="groupid" elementType="HTTPArgument">
725                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
726                   <stringProp name="Argument.value">0</stringProp>
727                   <stringProp name="Argument.metadata">=</stringProp>
728                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
729                   <stringProp name="Argument.name">groupid</stringProp>
730                 </elementProp>
731                 <elementProp name="edit" elementType="HTTPArgument">
732                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
733                   <stringProp name="Argument.value">0</stringProp>
734                   <stringProp name="Argument.metadata">=</stringProp>
735                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
736                   <stringProp name="Argument.name">edit</stringProp>
737                 </elementProp>
738                 <elementProp name="reply" elementType="HTTPArgument">
739                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
740                   <stringProp name="Argument.value">${forumreplyid}</stringProp>
741                   <stringProp name="Argument.metadata">=</stringProp>
742                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
743                   <stringProp name="Argument.name">reply</stringProp>
744                 </elementProp>
745                 <elementProp name="sesskey" elementType="HTTPArgument">
746                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
747                   <stringProp name="Argument.value">${SESSION_SESSKEY}</stringProp>
748                   <stringProp name="Argument.metadata">=</stringProp>
749                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
750                   <stringProp name="Argument.name">sesskey</stringProp>
751                 </elementProp>
752                 <elementProp name="_qf__mod_forum_post_form" elementType="HTTPArgument">
753                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
754                   <stringProp name="Argument.value">1</stringProp>
755                   <stringProp name="Argument.metadata">=</stringProp>
756                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
757                   <stringProp name="Argument.name">_qf__mod_forum_post_form</stringProp>
758                 </elementProp>
759                 <elementProp name="subject" elementType="HTTPArgument">
760                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
761                   <stringProp name="Argument.value">Re: I am the test plan reply subject</stringProp>
762                   <stringProp name="Argument.metadata">=</stringProp>
763                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
764                   <stringProp name="Argument.name">subject</stringProp>
765                 </elementProp>
766                 <elementProp name="message[itemid]" elementType="HTTPArgument">
767                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
768                   <stringProp name="Argument.value">${SESSION_FORUMFORMITEMID}</stringProp>
769                   <stringProp name="Argument.metadata">=</stringProp>
770                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
771                   <stringProp name="Argument.name">message[itemid]</stringProp>
772                 </elementProp>
773                 <elementProp name="message[format]" elementType="HTTPArgument">
774                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
775                   <stringProp name="Argument.value">1</stringProp>
776                   <stringProp name="Argument.metadata">=</stringProp>
777                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
778                   <stringProp name="Argument.name">message[format]</stringProp>
779                 </elementProp>
780                 <elementProp name="message[text]" elementType="HTTPArgument">
781                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
782                   <stringProp name="Argument.value">I am the test plan reply message</stringProp>
783                   <stringProp name="Argument.metadata">=</stringProp>
784                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
785                   <stringProp name="Argument.name">message[text]</stringProp>
786                 </elementProp>
787                 <elementProp name="parent" elementType="HTTPArgument">
788                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
789                   <stringProp name="Argument.value">${forumreplyid}</stringProp>
790                   <stringProp name="Argument.metadata">=</stringProp>
791                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
792                   <stringProp name="Argument.name">parent</stringProp>
793                 </elementProp>
794                 <elementProp name="subscribe" elementType="HTTPArgument">
795                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
796                   <stringProp name="Argument.value">1</stringProp>
797                   <stringProp name="Argument.metadata">=</stringProp>
798                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
799                   <stringProp name="Argument.name">subscribe</stringProp>
800                 </elementProp>
801                 <elementProp name="attachments" elementType="HTTPArgument">
802                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
803                   <stringProp name="Argument.value">${SESSION_FORUMFORMATTACHMENTS}</stringProp>
804                   <stringProp name="Argument.metadata">=</stringProp>
805                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
806                   <stringProp name="Argument.name">attachments</stringProp>
807                 </elementProp>
808                 <elementProp name="timestart" elementType="HTTPArgument">
809                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
810                   <stringProp name="Argument.value">0</stringProp>
811                   <stringProp name="Argument.metadata">=</stringProp>
812                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
813                   <stringProp name="Argument.name">timestart</stringProp>
814                 </elementProp>
815                 <elementProp name="timeend" elementType="HTTPArgument">
816                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
817                   <stringProp name="Argument.value">0</stringProp>
818                   <stringProp name="Argument.metadata">=</stringProp>
819                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
820                   <stringProp name="Argument.name">timeend</stringProp>
821                 </elementProp>
822                 <elementProp name="submitbutton" elementType="HTTPArgument">
823                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
824                   <stringProp name="Argument.value">Post to forum</stringProp>
825                   <stringProp name="Argument.metadata">=</stringProp>
826                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
827                   <stringProp name="Argument.name">submitbutton</stringProp>
828                 </elementProp>
829               </collectionProp>
830             </elementProp>
831             <stringProp name="HTTPSampler.domain"></stringProp>
832             <stringProp name="HTTPSampler.port"></stringProp>
833             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
834             <stringProp name="HTTPSampler.response_timeout"></stringProp>
835             <stringProp name="HTTPSampler.protocol"></stringProp>
836             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
837             <stringProp name="HTTPSampler.path">${sitepath}/mod/forum/post.php</stringProp>
838             <stringProp name="HTTPSampler.method">POST</stringProp>
839             <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
840             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
841             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
842             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
843             <boolProp name="HTTPSampler.monitor">false</boolProp>
844             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
845           </HTTPSamplerProxy>
846           <hashTree/>
847           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View course once more" enabled="true">
848             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
849               <collectionProp name="Arguments.arguments">
850                 <elementProp name="id" elementType="HTTPArgument">
851                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
852                   <stringProp name="Argument.value">${courseid}</stringProp>
853                   <stringProp name="Argument.metadata">=</stringProp>
854                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
855                   <stringProp name="Argument.name">id</stringProp>
856                 </elementProp>
857               </collectionProp>
858             </elementProp>
859             <stringProp name="HTTPSampler.domain"></stringProp>
860             <stringProp name="HTTPSampler.port"></stringProp>
861             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
862             <stringProp name="HTTPSampler.response_timeout"></stringProp>
863             <stringProp name="HTTPSampler.protocol"></stringProp>
864             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
865             <stringProp name="HTTPSampler.path">${sitepath}/course/view.php</stringProp>
866             <stringProp name="HTTPSampler.method">GET</stringProp>
867             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
868             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
869             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
870             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
871             <boolProp name="HTTPSampler.monitor">false</boolProp>
872             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
873           </HTTPSamplerProxy>
874           <hashTree/>
875           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="View course participants" enabled="true">
876             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
877               <collectionProp name="Arguments.arguments">
878                 <elementProp name="id" elementType="HTTPArgument">
879                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
880                   <stringProp name="Argument.value">${courseid}</stringProp>
881                   <stringProp name="Argument.metadata">=</stringProp>
882                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
883                   <stringProp name="Argument.name">id</stringProp>
884                 </elementProp>
885               </collectionProp>
886             </elementProp>
887             <stringProp name="HTTPSampler.domain"></stringProp>
888             <stringProp name="HTTPSampler.port"></stringProp>
889             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
890             <stringProp name="HTTPSampler.response_timeout"></stringProp>
891             <stringProp name="HTTPSampler.protocol"></stringProp>
892             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
893             <stringProp name="HTTPSampler.path">${sitepath}/user/index.php</stringProp>
894             <stringProp name="HTTPSampler.method">GET</stringProp>
895             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
896             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
897             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
898             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
899             <boolProp name="HTTPSampler.monitor">false</boolProp>
900             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
901           </HTTPSamplerProxy>
902           <hashTree/>
903           <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="Logout" enabled="true">
904             <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
905               <collectionProp name="Arguments.arguments">
906                 <elementProp name="sesskey" elementType="HTTPArgument">
907                   <boolProp name="HTTPArgument.always_encode">false</boolProp>
908                   <stringProp name="Argument.value">${SESSION_SESSKEY}</stringProp>
909                   <stringProp name="Argument.metadata">=</stringProp>
910                   <boolProp name="HTTPArgument.use_equals">true</boolProp>
911                   <stringProp name="Argument.name">sesskey</stringProp>
912                 </elementProp>
913               </collectionProp>
914             </elementProp>
915             <stringProp name="HTTPSampler.domain"></stringProp>
916             <stringProp name="HTTPSampler.port"></stringProp>
917             <stringProp name="HTTPSampler.connect_timeout"></stringProp>
918             <stringProp name="HTTPSampler.response_timeout"></stringProp>
919             <stringProp name="HTTPSampler.protocol"></stringProp>
920             <stringProp name="HTTPSampler.contentEncoding"></stringProp>
921             <stringProp name="HTTPSampler.path">${sitepath}/login/logout.php</stringProp>
922             <stringProp name="HTTPSampler.method">GET</stringProp>
923             <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
924             <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
925             <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
926             <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
927             <boolProp name="HTTPSampler.monitor">false</boolProp>
928             <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
929           </HTTPSamplerProxy>
930           <hashTree/>
931         </hashTree>
932         <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="Create php array results" enabled="true">
933           <stringProp name="filename">recorder.bsf</stringProp>
934           <stringProp name="parameters"></stringProp>
935           <boolProp name="resetInterpreter">false</boolProp>
936           <stringProp name="script"></stringProp>
937         </BeanShellListener>
938         <hashTree/>
939         <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
940           <boolProp name="ResultCollector.error_logging">false</boolProp>
941           <objProp>
942             <name>saveConfig</name>
943             <value class="SampleSaveConfiguration">
944               <time>true</time>
945               <latency>true</latency>
946               <timestamp>true</timestamp>
947               <success>true</success>
948               <label>true</label>
949               <code>true</code>
950               <message>true</message>
951               <threadName>true</threadName>
952               <dataType>true</dataType>
953               <encoding>false</encoding>
954               <assertions>true</assertions>
955               <subresults>true</subresults>
956               <responseData>false</responseData>
957               <samplerData>false</samplerData>
958               <xml>true</xml>
959               <fieldNames>false</fieldNames>
960               <responseHeaders>false</responseHeaders>
961               <requestHeaders>false</requestHeaders>
962               <responseDataOnError>false</responseDataOnError>
963               <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
964               <assertionsResultsToSave>0</assertionsResultsToSave>
965               <bytes>true</bytes>
966             </value>
967           </objProp>
968           <stringProp name="filename">runs_samples/data.${runtimestamp}.jtl</stringProp>
969         </ResultCollector>
970         <hashTree/>
971       </hashTree>
972     </hashTree>
973   </hashTree>
974 </jmeterTestPlan>