Author: arthurpeltier
Date: 2011-01-12 02:53:18 -0500 (Wed, 12 Jan 2011)
New Revision: 5732
Added:
exo/portal/branches/3.1.x/testsuite/jmeter/
exo/portal/branches/3.1.x/testsuite/jmeter/PLF_PERF_05_Login-EXOGTN224.jmx
Log:
TESTVN-2330 : Perf test to validate EXOGTN-224 patch improvements
Added: exo/portal/branches/3.1.x/testsuite/jmeter/PLF_PERF_05_Login-EXOGTN224.jmx
===================================================================
--- exo/portal/branches/3.1.x/testsuite/jmeter/PLF_PERF_05_Login-EXOGTN224.jmx
(rev 0)
+++ exo/portal/branches/3.1.x/testsuite/jmeter/PLF_PERF_05_Login-EXOGTN224.jmx 2011-01-12
07:53:18 UTC (rev 5732)
@@ -0,0 +1,670 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jmeterTestPlan version="1.2" properties="2.1">
+ <hashTree>
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan"
testname="PLF_PERF_05_Login-EXOGTN-224" enabled="true">
+ <stringProp name="TestPlan.comments">Recorded with exo gatein
r5713, to run this test please dump at least 100 users with
id=testuser<xxxx> and password =gtn</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 name="ThreadCount"
elementType="Argument">
+ <stringProp
name="Argument.name">ThreadCount</stringProp>
+ <stringProp
name="Argument.value">${__P(expThreadCount,1)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="LoopCount"
elementType="Argument">
+ <stringProp
name="Argument.name">LoopCount</stringProp>
+ <stringProp
name="Argument.value">${__P(expLoopCount,10000000)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="Duration" elementType="Argument">
+ <stringProp name="Argument.name">Duration</stringProp>
+ <stringProp
name="Argument.value">${__P(expDuration,3600)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="Server" elementType="Argument">
+ <stringProp name="Argument.name">Server</stringProp>
+ <stringProp
name="Argument.value">${__P(expHost,mercury.testlab.exoplatform.vn)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="Port" elementType="Argument">
+ <stringProp name="Argument.name">Port</stringProp>
+ <stringProp
name="Argument.value">${__P(expPort,8080)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="RampUpPeriod"
elementType="Argument">
+ <stringProp
name="Argument.name">RampUpPeriod</stringProp>
+ <stringProp
name="Argument.value">${__P(expRampup,0)}</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="ImportanceAssertionHighlightString"
elementType="Argument">
+ <stringProp
name="Argument.name">ImportanceAssertionHighlightString</stringProp>
+ <stringProp
name="Argument.value">STOP-TEST-IF-FAIL</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ <elementProp name="StartupDelayTimeForIteration"
elementType="Argument">
+ <stringProp
name="Argument.name">StartupDelayTimeForIteration</stringProp>
+ <stringProp name="Argument.value">0</stringProp>
+ <stringProp name="Argument.metadata">=</stringProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp
name="TestPlan.user_define_classpath"></stringProp>
+ </TestPlan>
+ <hashTree>
+ <ThreadGroup guiclass="ThreadGroupGui"
testclass="ThreadGroup" testname="VUser" 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">${LoopCount}</stringProp>
+ </elementProp>
+ <stringProp
name="ThreadGroup.num_threads">${ThreadCount}</stringProp>
+ <stringProp
name="ThreadGroup.ramp_time">${RampUpPeriod}</stringProp>
+ <longProp
name="ThreadGroup.start_time">1290047883000</longProp>
+ <longProp
name="ThreadGroup.end_time">1290047883000</longProp>
+ <boolProp name="ThreadGroup.scheduler">true</boolProp>
+ <stringProp
name="ThreadGroup.duration">${Duration}</stringProp>
+ <stringProp
name="ThreadGroup.delay">${StartupDelayTimeForIteration}</stringProp>
+ <stringProp name="TestPlan.comments">to run with maven: mvn clean
verify -Pverify,EXOGTN-224,2VUs -Dest-duration=180
-Dtest-host=mercury.testlab.exoplatform.vn</stringProp>
+ </ThreadGroup>
+ <hashTree>
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments"
testname="User Defined Variables" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="continue"
elementType="Argument">
+ <stringProp
name="Argument.name">continue</stringProp>
+ <stringProp name="Argument.value">true</stringProp>
+ <stringProp name="Argument.metadata">=</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">${Server}</stringProp>
+ <stringProp name="HTTPSampler.port">${Port}</stringProp>
+ <stringProp
name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp
name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp
name="HTTPSampler.protocol">http</stringProp>
+ <stringProp
name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <GenericController guiclass="LogicControllerGui"
testclass="GenericController" testname="Control the startup time and log
information" enabled="true"/>
+ <hashTree>
+ <UniformRandomTimer guiclass="UniformRandomTimerGui"
testclass="UniformRandomTimer" testname="Uniform Random Timer"
enabled="true">
+ <stringProp
name="ConstantTimer.delay">1000</stringProp>
+ <stringProp
name="RandomTimer.range">4000.0</stringProp>
+ </UniformRandomTimer>
+ <hashTree/>
+ <BeanShellSampler guiclass="BeanShellSamplerGui"
testclass="BeanShellSampler" testname="BeanShell Startup Controller"
enabled="true">
+ <stringProp
name="BeanShellSampler.query">vars.put("continue","true");
+
+ResponseCode=2*100;
+ResponseMessage="initialize continue variable";
+log.info("Thread [" +ctx.getThread().getThreadName() + "]
start iteration number: " + vars.get("IterationCounter")+
" - use UserId=testuser" + vars.get("UserId")) ;
+
+return "continue variable=true";
+
+
+</stringProp>
+ <stringProp
name="BeanShellSampler.filename"></stringProp>
+ <stringProp
name="BeanShellSampler.parameters"></stringProp>
+ <boolProp
name="BeanShellSampler.resetInterpreter">false</boolProp>
+ </BeanShellSampler>
+ <hashTree/>
+ </hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui"
testclass="HTTPSampler" testname="Goto portal home page
(/portal/public/classic/)" enabled="true">
+ <elementProp name="HTTPsampler.Arguments"
elementType="Arguments" guiclass="HTTPArgumentsPanel"
testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments"/>
+ </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">/portal/public/classic/</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>
+ </HTTPSampler>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel"
testclass="HeaderManager" testname="HTTP Header Manager"
enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept-Language"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Language</stringProp>
+ <stringProp
name="Header.value">en-us,en;q=0.5</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>
+ <elementProp name="Keep-Alive"
elementType="Header">
+ <stringProp
name="Header.name">Keep-Alive</stringProp>
+ <stringProp name="Header.value">115</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent"
elementType="Header">
+ <stringProp
name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick)
Firefox/3.6.10</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-Charset"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Charset</stringProp>
+ <stringProp
name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Assertion - User
information${ImportanceAssertionHighlightString}" enabled="true">
+ <collectionProp name="Asserion.test_strings">
+ <stringProp name="-1926363754">\<a
.*href=".*username=root.*password=gtn.*"\>Administrator\</a\></stringProp>
+ <stringProp name="-854512033">\<a
.*href=".*username=john.*password=gtn.*"\>Manager\</a\></stringProp>
+ <stringProp name="1897349297">\<a
.*href=".*username=mary.*password=gtn.*"\>User\</a\></stringProp>
+ <stringProp name="28321473">\<a
.*href=".*username=demo.*password=gtn.*"\>Demo\</a\></stringProp>
+ </collectionProp>
+ <stringProp
name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp
name="Assertion.assume_success">false</boolProp>
+ <intProp name="Assertion.test_type">2</intProp>
+ <stringProp
name="Scope.variable">SecureToken</stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Assertion -
Menu${ImportanceAssertionHighlightString}" enabled="true">
+ <collectionProp name="Asserion.test_strings">
+ <stringProp name="2131272253">\<a
.*onclick=".*ShowLoginForm.*\>Sign
in\</a\></stringProp>
+ <stringProp name="-476933776">\<a
.*href=".*/home"\>Home\</a\></stringProp>
+ <stringProp name="-1248977646">\<a
.*href=".*/sitemap"\>SiteMap\</a\></stringProp>
+ </collectionProp>
+ <stringProp
name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp
name="Assertion.assume_success">false</boolProp>
+ <intProp name="Assertion.test_type">2</intProp>
+ <stringProp
name="Scope.variable">SecureToken</stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ <BeanShellAssertion guiclass="BeanShellAssertionGui"
testclass="BeanShellAssertion" testname="BeanShell Assertion"
enabled="true">
+ <stringProp name="BeanShellAssertion.query">//log.info(new
String(ResponseData));
+org.apache.jmeter.assertions.AssertionResult[] assertionResults =
SampleResult.getAssertionResults();
+ if ((assertionResults != null) && (assertionResults.length >
0))
+ {
+ for (int i = 0; i < assertionResults.length; i++)
+ {
+ if ((assertionResults[i].isFailure() || assertionResults[i].isError())
+ &&
assertionResults[i].getName().indexOf(vars.get("ImportanceAssertionHighlightString"))
> -1)
+ {
+ Failure =true ;
+ FailureMessage=assertionResults[i].getFailureMessage();
+ vars.put("continue","false");
+ break;
+ }
+ }
+ break;
+ }
+</stringProp>
+ <stringProp
name="BeanShellAssertion.filename"></stringProp>
+ <stringProp
name="BeanShellAssertion.parameters"></stringProp>
+ <boolProp
name="BeanShellAssertion.resetInterpreter">false</boolProp>
+ </BeanShellAssertion>
+ <hashTree/>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel"
testclass="IfController" testname="Control to run [Show login form
(/portal/public/classic/)]" enabled="true">
+ <stringProp
name="IfController.condition">"${continue}"=="true"</stringProp>
+ <boolProp
name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui"
testclass="HTTPSampler" testname="Show login form
(/portal/public/classic/)" enabled="true">
+ <elementProp name="HTTPsampler.Arguments"
elementType="Arguments" guiclass="HTTPArgumentsPanel"
testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="portal:componentId"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp
name="Argument.name">portal:componentId</stringProp>
+ <stringProp
name="Argument.value">UIPortal</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="portal:action"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp
name="Argument.name">portal:action</stringProp>
+ <stringProp
name="Argument.value">ShowLoginForm</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="ajaxRequest"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp
name="Argument.name">ajaxRequest</stringProp>
+ <stringProp
name="Argument.value">true</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </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">UTF-8</stringProp>
+ <stringProp
name="HTTPSampler.path">/portal/public/classic/</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>
+ </HTTPSampler>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel"
testclass="HeaderManager" testname="HTTP Header Manager"
enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Content-Type"
elementType="Header">
+ <stringProp
name="Header.name">Content-Type</stringProp>
+ <stringProp
name="Header.value">text/plain;charset=UTF-8</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Language</stringProp>
+ <stringProp
name="Header.value">en-us,en;q=0.5</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>
+ <elementProp name="Keep-Alive"
elementType="Header">
+ <stringProp
name="Header.name">Keep-Alive</stringProp>
+ <stringProp name="Header.value">115</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent"
elementType="Header">
+ <stringProp
name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick)
Firefox/3.6.10</stringProp>
+ </elementProp>
+ <elementProp name="Referer"
elementType="Header">
+ <stringProp
name="Header.name">Referer</stringProp>
+ <stringProp
name="Header.value">http://mercury.testlab.exoplatform.vn:8080/portal/public/classic/</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-Charset"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Charset</stringProp>
+ <stringProp
name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Assertion -
Menu${ImportanceAssertionHighlightString}" enabled="true">
+ <collectionProp name="Asserion.test_strings">
+ <stringProp name="513506942">\<td
class="FieldLabel"\>User
name\</td\></stringProp>
+ <stringProp
name="-2024380253">\<td\>\<input
class="UserName"
name="username"/\>\</td\></stringProp>
+ <stringProp name="-1725023383">\<td
class="FieldLabel"\>Password\</td\></stringProp>
+ <stringProp
name="-1416240543">\<td\>\<input
class="Password" type="password"
name="password"/\>\</td\></stringProp>
+ </collectionProp>
+ <stringProp
name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp
name="Assertion.assume_success">false</boolProp>
+ <intProp name="Assertion.test_type">2</intProp>
+ <stringProp
name="Scope.variable">SecureToken</stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ <BeanShellAssertion guiclass="BeanShellAssertionGui"
testclass="BeanShellAssertion" testname="BeanShell Assertion"
enabled="true">
+ <stringProp name="BeanShellAssertion.query">//log.info(new
String(ResponseData));
+org.apache.jmeter.assertions.AssertionResult[] assertionResults =
SampleResult.getAssertionResults();
+ if ((assertionResults != null) && (assertionResults.length >
0))
+ {
+ for (int i = 0; i < assertionResults.length; i++)
+ {
+ if ((assertionResults[i].isFailure() || assertionResults[i].isError())
+ &&
assertionResults[i].getName().indexOf(vars.get("ImportanceAssertionHighlightString"))
> -1)
+ {
+ Failure =true ;
+ FailureMessage=assertionResults[i].getFailureMessage();
+ vars.put("continue","false");
+ break;
+ }
+ }
+ break;
+ }
+</stringProp>
+ <stringProp
name="BeanShellAssertion.filename"></stringProp>
+ <stringProp
name="BeanShellAssertion.parameters"></stringProp>
+ <boolProp
name="BeanShellAssertion.resetInterpreter">false</boolProp>
+ </BeanShellAssertion>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <IfController guiclass="IfControllerPanel"
testclass="IfController" testname="Control to run [Type password and login
(/portal/login)]" enabled="true">
+ <stringProp
name="IfController.condition">"${continue}"=="true"</stringProp>
+ <boolProp
name="IfController.evaluateAll">false</boolProp>
+ </IfController>
+ <hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui"
testclass="HTTPSampler" testname="Type password and login
(/portal/login)" enabled="true">
+ <elementProp name="HTTPsampler.Arguments"
elementType="Arguments" guiclass="HTTPArgumentsPanel"
testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="initialURI"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp
name="Argument.name">initialURI</stringProp>
+ <stringProp
name="Argument.value">%2Fportal%2Fprivate%2Fclassic</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="username"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp
name="Argument.name">username</stringProp>
+ <stringProp
name="Argument.value">testuser${UserId}</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="password"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">false</boolProp>
+ <stringProp
name="Argument.name">password</stringProp>
+ <stringProp
name="Argument.value">gtn</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </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">/portal/login</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>
+ </HTTPSampler>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel"
testclass="HeaderManager" testname="HTTP Header Manager"
enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Content-Type"
elementType="Header">
+ <stringProp
name="Header.name">Content-Type</stringProp>
+ <stringProp
name="Header.value">application/x-www-form-urlencoded</stringProp>
+ </elementProp>
+ <elementProp name="Accept-Language"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Language</stringProp>
+ <stringProp
name="Header.value">en-us,en;q=0.5</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>
+ <elementProp name="Keep-Alive"
elementType="Header">
+ <stringProp
name="Header.name">Keep-Alive</stringProp>
+ <stringProp name="Header.value">115</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent"
elementType="Header">
+ <stringProp
name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick)
Firefox/3.6.10</stringProp>
+ </elementProp>
+ <elementProp name="Referer"
elementType="Header">
+ <stringProp
name="Header.name">Referer</stringProp>
+ <stringProp
name="Header.value">http://mercury.testlab.exoplatform.vn:8080/portal/public/classic/</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-Charset"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Charset</stringProp>
+ <stringProp
name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Assertion -
Menu${ImportanceAssertionHighlightString}" enabled="true">
+ <collectionProp name="Asserion.test_strings">
+ <stringProp name="-476933776">\<a
.*href=".*/home"\>Home\</a\></stringProp>
+ <stringProp name="-1248977646">\<a
.*href=".*/sitemap"\>SiteMap\</a\></stringProp>
+ </collectionProp>
+ <stringProp
name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp
name="Assertion.assume_success">false</boolProp>
+ <intProp name="Assertion.test_type">2</intProp>
+ <stringProp
name="Scope.variable">SecureToken</stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ <ResponseAssertion guiclass="AssertionGui"
testclass="ResponseAssertion" testname="Response Assertion - User
information${ImportanceAssertionHighlightString}" enabled="true">
+ <collectionProp name="Asserion.test_strings">
+ <stringProp name="-1926363754">\<a
.*href=".*username=root.*password=gtn.*"\>Administrator\</a\></stringProp>
+ <stringProp name="-854512033">\<a
.*href=".*username=john.*password=gtn.*"\>Manager\</a\></stringProp>
+ <stringProp name="1897349297">\<a
.*href=".*username=mary.*password=gtn.*"\>User\</a\></stringProp>
+ <stringProp name="28321473">\<a
.*href=".*username=demo.*password=gtn.*"\>Demo\</a\></stringProp>
+ </collectionProp>
+ <stringProp
name="Assertion.test_field">Assertion.response_data</stringProp>
+ <boolProp
name="Assertion.assume_success">false</boolProp>
+ <intProp name="Assertion.test_type">2</intProp>
+ <stringProp
name="Scope.variable">SecureToken</stringProp>
+ </ResponseAssertion>
+ <hashTree/>
+ <BeanShellAssertion guiclass="BeanShellAssertionGui"
testclass="BeanShellAssertion" testname="BeanShell Assertion"
enabled="true">
+ <stringProp name="BeanShellAssertion.query">///log.info(new
String(ResponseData));
+org.apache.jmeter.assertions.AssertionResult[] assertionResults =
SampleResult.getAssertionResults();
+ if ((assertionResults != null) && (assertionResults.length >
0))
+ {
+ for (int i = 0; i < assertionResults.length; i++)
+ {
+ if ((assertionResults[i].isFailure() || assertionResults[i].isError())
+ &&
assertionResults[i].getName().indexOf(vars.get("ImportanceAssertionHighlightString"))
> -1)
+ {
+ Failure =true ;
+ FailureMessage=assertionResults[i].getFailureMessage();
+ vars.put("continue","false");
+ break;
+ }
+ }
+ break;
+ }
+</stringProp>
+ <stringProp
name="BeanShellAssertion.filename"></stringProp>
+ <stringProp
name="BeanShellAssertion.parameters"></stringProp>
+ <boolProp
name="BeanShellAssertion.resetInterpreter">false</boolProp>
+ </BeanShellAssertion>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <HTTPSampler guiclass="HttpTestSampleGui"
testclass="HTTPSampler" testname="Sign out (/portal/private/classic)"
enabled="false">
+ <elementProp name="HTTPsampler.Arguments"
elementType="Arguments" guiclass="HTTPArgumentsPanel"
testclass="Arguments" enabled="true">
+ <collectionProp name="Arguments.arguments">
+ <elementProp name="portal:componentId"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp
name="Argument.name">portal:componentId</stringProp>
+ <stringProp
name="Argument.value">UIPortal</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ <elementProp name="portal:action"
elementType="HTTPArgument">
+ <boolProp
name="HTTPArgument.always_encode">true</boolProp>
+ <stringProp
name="Argument.name">portal:action</stringProp>
+ <stringProp
name="Argument.value">Logout</stringProp>
+ <stringProp
name="Argument.metadata">=</stringProp>
+ <boolProp
name="HTTPArgument.use_equals">true</boolProp>
+ </elementProp>
+ </collectionProp>
+ </elementProp>
+ <stringProp
name="HTTPSampler.domain">mercury.testlab.exoplatform.vn</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">UTF-8</stringProp>
+ <stringProp
name="HTTPSampler.path">/portal/private/classic</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>
+ </HTTPSampler>
+ <hashTree>
+ <HeaderManager guiclass="HeaderPanel"
testclass="HeaderManager" testname="HTTP Header Manager"
enabled="true">
+ <collectionProp name="HeaderManager.headers">
+ <elementProp name="Accept-Language"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Language</stringProp>
+ <stringProp
name="Header.value">en-us,en;q=0.5</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>
+ <elementProp name="Keep-Alive"
elementType="Header">
+ <stringProp
name="Header.name">Keep-Alive</stringProp>
+ <stringProp name="Header.value">115</stringProp>
+ </elementProp>
+ <elementProp name="User-Agent"
elementType="Header">
+ <stringProp
name="Header.name">User-Agent</stringProp>
+ <stringProp name="Header.value">Mozilla/5.0 (X11; U;
Linux i686; en-US; rv:1.9.2.10) Gecko/20100922 Ubuntu/10.10 (maverick)
Firefox/3.6.10</stringProp>
+ </elementProp>
+ <elementProp name="Referer"
elementType="Header">
+ <stringProp
name="Header.name">Referer</stringProp>
+ <stringProp
name="Header.value">http://mercury.testlab.exoplatform.vn:8080/portal/private/classic</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-Charset"
elementType="Header">
+ <stringProp
name="Header.name">Accept-Charset</stringProp>
+ <stringProp
name="Header.value">ISO-8859-1,utf-8;q=0.7,*;q=0.7</stringProp>
+ </elementProp>
+ </collectionProp>
+ </HeaderManager>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+ <ResultCollector guiclass="ViewResultsFullVisualizer"
testclass="ResultCollector" testname="View Results Tree for Error"
enabled="true">
+ <boolProp
name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>false</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>false</responseData>
+ <samplerData>false</samplerData>
+ <xml>true</xml>
+ <fieldNames>false</fieldNames>
+ <responseHeaders>false</responseHeaders>
+ <requestHeaders>false</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ </ResultCollector>
+ <hashTree/>
+ <ResultCollector guiclass="SummaryReport"
testclass="ResultCollector" testname="Summary Report"
enabled="true">
+ <boolProp
name="ResultCollector.error_logging">false</boolProp>
+ <objProp>
+ <name>saveConfig</name>
+ <value class="SampleSaveConfiguration">
+ <time>true</time>
+ <latency>true</latency>
+ <timestamp>true</timestamp>
+ <success>true</success>
+ <label>true</label>
+ <code>true</code>
+ <message>true</message>
+ <threadName>true</threadName>
+ <dataType>true</dataType>
+ <encoding>true</encoding>
+ <assertions>true</assertions>
+ <subresults>true</subresults>
+ <responseData>true</responseData>
+ <samplerData>true</samplerData>
+ <xml>true</xml>
+ <fieldNames>true</fieldNames>
+ <responseHeaders>true</responseHeaders>
+ <requestHeaders>true</requestHeaders>
+ <responseDataOnError>false</responseDataOnError>
+
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
+ <assertionsResultsToSave>0</assertionsResultsToSave>
+ <bytes>true</bytes>
+ <url>true</url>
+ <fileName>true</fileName>
+ <hostname>true</hostname>
+ <threadCounts>true</threadCounts>
+ <sampleCount>true</sampleCount>
+ <idleTime>true</idleTime>
+ </value>
+ </objProp>
+ <stringProp name="filename"></stringProp>
+ <boolProp name="useGroupName">true</boolProp>
+ <stringProp name="TestPlan.comments"> </stringProp>
+ </ResultCollector>
+ <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">${Server}</stringProp>
+ <stringProp name="HTTPSampler.port">${Port}</stringProp>
+ <stringProp
name="HTTPSampler.connect_timeout"></stringProp>
+ <stringProp
name="HTTPSampler.response_timeout"></stringProp>
+ <stringProp name="HTTPSampler.protocol">http</stringProp>
+ <stringProp
name="HTTPSampler.contentEncoding"></stringProp>
+ <stringProp name="HTTPSampler.path"></stringProp>
+ </ConfigTestElement>
+ <hashTree/>
+ <CounterConfig guiclass="CounterConfigGui"
testclass="CounterConfig" testname="Iteration Counter"
enabled="true">
+ <stringProp name="CounterConfig.start">1</stringProp>
+ <stringProp name="CounterConfig.end"></stringProp>
+ <stringProp name="CounterConfig.incr">1</stringProp>
+ <stringProp
name="CounterConfig.name">IterationCounter</stringProp>
+ <stringProp name="CounterConfig.format"></stringProp>
+ <boolProp name="CounterConfig.per_user">true</boolProp>
+ </CounterConfig>
+ <hashTree/>
+ <CounterConfig guiclass="CounterConfigGui"
testclass="CounterConfig" testname="Counter"
enabled="true">
+ <stringProp
name="CounterConfig.start">${__P(expCountStart,${__time(MMddHHmmss,CurrentDateTime)})}</stringProp>
+ <stringProp
name="CounterConfig.end">9999999999</stringProp>
+ <stringProp name="CounterConfig.incr">5</stringProp>
+ <stringProp
name="CounterConfig.name">UNIQUENUMBER</stringProp>
+ <stringProp name="CounterConfig.format"></stringProp>
+ <boolProp name="CounterConfig.per_user">false</boolProp>
+ <stringProp name="TestPlan.comments">Default value is current
datetime</stringProp>
+ </CounterConfig>
+ <hashTree/>
+ <CacheManager guiclass="CacheManagerGui"
testclass="CacheManager" testname="HTTP Cache Manager"
enabled="true">
+ <boolProp name="clearEachIteration">true</boolProp>
+ <boolProp name="useExpires">false</boolProp>
+ </CacheManager>
+ <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.policy">rfc2109</stringProp>
+ </CookieManager>
+ <hashTree/>
+ <RandomVariableConfig guiclass="TestBeanGUI"
testclass="RandomVariableConfig" testname="Random User Id"
enabled="true">
+ <stringProp name="maximumValue">100</stringProp>
+ <stringProp name="minimumValue">1</stringProp>
+ <stringProp name="outputFormat"></stringProp>
+ <boolProp name="perThread">false</boolProp>
+ <stringProp name="randomSeed"></stringProp>
+ <stringProp name="variableName">UserId</stringProp>
+ </RandomVariableConfig>
+ <hashTree/>
+ </hashTree>
+ </hashTree>
+</jmeterTestPlan>