forked from Gitlink/forgeplus-react
1443 lines
92 KiB
XML
Executable File
1443 lines
92 KiB
XML
Executable File
<?xml version="1.0" encoding="UTF-8"?>
|
||
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.4">
|
||
<hashTree>
|
||
<TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="测试计划" enabled="true">
|
||
<stringProp name="TestPlan.comments"></stringProp>
|
||
<boolProp name="TestPlan.functional_mode">false</boolProp>
|
||
<boolProp name="TestPlan.tearDown_on_shutdown">true</boolProp>
|
||
<boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
|
||
<elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="TestPlan.user_define_classpath"></stringProp>
|
||
</TestPlan>
|
||
<hashTree>
|
||
<ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="线程组1" enabled="true">
|
||
<stringProp name="ThreadGroup.on_sample_error">startnextloop</stringProp>
|
||
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="循环控制器" enabled="true">
|
||
<boolProp name="LoopController.continue_forever">false</boolProp>
|
||
<stringProp name="LoopController.loops">1</stringProp>
|
||
</elementProp>
|
||
<stringProp name="ThreadGroup.num_threads">1</stringProp>
|
||
<stringProp name="ThreadGroup.ramp_time">0</stringProp>
|
||
<boolProp name="ThreadGroup.scheduler">false</boolProp>
|
||
<stringProp name="ThreadGroup.duration">120</stringProp>
|
||
<stringProp name="ThreadGroup.delay">1</stringProp>
|
||
<boolProp name="ThreadGroup.same_user_on_next_iteration">false</boolProp>
|
||
</ThreadGroup>
|
||
<hashTree>
|
||
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="ip" elementType="Argument">
|
||
<stringProp name="Argument.name">ip</stringProp>
|
||
<stringProp name="Argument.value">data.educoder.net</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<stringProp name="Argument.desc">域名</stringProp>
|
||
</elementProp>
|
||
<elementProp name="p" elementType="Argument">
|
||
<stringProp name="Argument.name">p</stringProp>
|
||
<stringProp name="Argument.value">443</stringProp>
|
||
<stringProp name="Argument.desc">端口</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="xieyi" elementType="Argument">
|
||
<stringProp name="Argument.name">xieyi</stringProp>
|
||
<stringProp name="Argument.value">https</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<stringProp name="Argument.desc">协议</stringProp>
|
||
</elementProp>
|
||
<elementProp name="pwd" elementType="Argument">
|
||
<stringProp name="Argument.name">pwd</stringProp>
|
||
<stringProp name="Argument.value">edu12345678</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<stringProp name="Argument.desc">密码</stringProp>
|
||
</elementProp>
|
||
<elementProp name="connect" elementType="Argument">
|
||
<stringProp name="Argument.name">connect</stringProp>
|
||
<stringProp name="Argument.value">120000</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<stringProp name="Argument.desc">请求超时(ms)</stringProp>
|
||
</elementProp>
|
||
<elementProp name="response" elementType="Argument">
|
||
<stringProp name="Argument.name">response</stringProp>
|
||
<stringProp name="Argument.value">120000</stringProp>
|
||
<stringProp name="Argument.desc">响应超时(ms)</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="db" elementType="Argument">
|
||
<stringProp name="Argument.name">db</stringProp>
|
||
<stringProp name="Argument.value">127.0.0.1:8002/testeducoderweb</stringProp>
|
||
<stringProp name="Argument.desc">数据库连接,例如:127.0.0.1:8001/educoderweb</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="username" elementType="Argument">
|
||
<stringProp name="Argument.name">username</stringProp>
|
||
<stringProp name="Argument.value">testtzh</stringProp>
|
||
<stringProp name="Argument.desc">数据库用户名</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="正式环境" elementType="Argument">
|
||
<stringProp name="Argument.name">正式环境</stringProp>
|
||
<stringProp name="Argument.value">127.0.0.1:8001/educoderweb</stringProp>
|
||
<stringProp name="Argument.desc">testtzh,testtzh@123</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="测试环境" elementType="Argument">
|
||
<stringProp name="Argument.name">测试环境</stringProp>
|
||
<stringProp name="Argument.value">127.0.0.1:8002/testeducoderweb</stringProp>
|
||
<stringProp name="Argument.desc">testtzh,testtzh@123</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id11" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id11</stringProp>
|
||
<stringProp name="Argument.value">taxwlvqr</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id21" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id21</stringProp>
|
||
<stringProp name="Argument.value">p7forknf</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id31" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id31</stringProp>
|
||
<stringProp name="Argument.value">jzox3syh</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id111" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id111</stringProp>
|
||
<stringProp name="Argument.value">on89zh5x</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id211" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id211</stringProp>
|
||
<stringProp name="Argument.value">zrfjue5x</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id311" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id311</stringProp>
|
||
<stringProp name="Argument.value">qv597lze</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id1" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id1</stringProp>
|
||
<stringProp name="Argument.value">gtwq2bfj</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id2" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id2</stringProp>
|
||
<stringProp name="Argument.value">5ifx473k</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
<elementProp name="shixun_id3" elementType="Argument">
|
||
<stringProp name="Argument.name">shixun_id3</stringProp>
|
||
<stringProp name="Argument.value">bf4jyols</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</Arguments>
|
||
<hashTree/>
|
||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="用户" enabled="true">
|
||
<stringProp name="delimiter">,</stringProp>
|
||
<stringProp name="fileEncoding">UTF-8</stringProp>
|
||
<stringProp name="filename">/Users/linlu/Documents/workspace/zhiqing/educoder/educoder_admin.csv</stringProp>
|
||
<boolProp name="ignoreFirstLine">false</boolProp>
|
||
<boolProp name="quotedData">false</boolProp>
|
||
<boolProp name="recycle">true</boolProp>
|
||
<stringProp name="shareMode">shareMode.all</stringProp>
|
||
<boolProp name="stopThread">false</boolProp>
|
||
<stringProp name="variableNames">user</stringProp>
|
||
<stringProp name="TestPlan.comments">../csv/educoder_admin.csv</stringProp>
|
||
</CSVDataSet>
|
||
<hashTree/>
|
||
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="请求默认值" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain">${ip}</stringProp>
|
||
<stringProp name="HTTPSampler.port">${p}</stringProp>
|
||
<stringProp name="HTTPSampler.protocol">${xieyi}</stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
||
<stringProp name="HTTPSampler.path"></stringProp>
|
||
<stringProp name="HTTPSampler.concurrentPool">6</stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout">${connect}</stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout">${response}</stringProp>
|
||
</ConfigTestElement>
|
||
<hashTree/>
|
||
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="Cookie 管理器" enabled="true">
|
||
<collectionProp name="CookieManager.cookies"/>
|
||
<boolProp name="CookieManager.clearEachIteration">false</boolProp>
|
||
<boolProp name="CookieManager.controlledByThreadGroup">false</boolProp>
|
||
</CookieManager>
|
||
<hashTree/>
|
||
<BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="随机实训1" enabled="true">
|
||
<stringProp name="BeanShellSampler.query">//String str="${__RandomFromMultipleVars(shixun_id1|shixun_id2|shixun_id3)}";
|
||
//
|
||
// String s0 = vars.get("shixun_id");
|
||
// String[] sArray = {"${shixun_id1}", "${shixun_id2}", "${shixun_id3}"};
|
||
//
|
||
// int num = (int) (Math.random()*3);
|
||
// while (sArray[num].equals(s0)) {
|
||
// num = (int) (Math.random()*3);
|
||
// }
|
||
// str=sArray[num];
|
||
////String str="${shixun_id3}";
|
||
//vars.put("shixun_id",str);
|
||
//vars.put("task_operation_status","false")
|
||
//
|
||
//
|
||
//
|
||
|
||
|
||
// String str="${__RandomFromMultipleVars(shixun_id1|shixun_id2|shixun_id3)}";
|
||
|
||
String s0 = vars.get("shixun_id");
|
||
// log.info(s0);
|
||
String[] sArray = {"${shixun_id1}", "${shixun_id2}", "${shixun_id3}"};
|
||
|
||
int num = (int) (Math.random()*3);
|
||
while (sArray[num].equals(s0)) {
|
||
num = (int) (Math.random()*3);
|
||
}
|
||
s0=sArray[num];
|
||
|
||
// log.info(sArray[num]);
|
||
//String str="${shixun_id3}";
|
||
vars.put("shixun_id",s0);
|
||
vars.put("task_operation_status","false");
|
||
</stringProp>
|
||
<stringProp name="BeanShellSampler.filename"></stringProp>
|
||
<stringProp name="BeanShellSampler.parameters"></stringProp>
|
||
<boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
|
||
</BeanShellSampler>
|
||
<hashTree/>
|
||
<OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="仅一次" enabled="true"/>
|
||
<hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="登录" enabled="true">
|
||
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
||
<boolProp name="TransactionController.parent">false</boolProp>
|
||
<stringProp name="TestPlan.comments">登录${shixun_id}</stringProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="login" enabled="true">
|
||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">{
|
||
"login": "${user}",
|
||
"password": "${pwd}",
|
||
"autologin": 1
|
||
}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding">utf-8</stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/accounts/login.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">user_id</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.user_id</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">0</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="-969781078">"user_id":${user_id}</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP信息头管理器" enabled="true">
|
||
<collectionProp name="HeaderManager.headers">
|
||
<elementProp name="Host" elementType="Header">
|
||
<stringProp name="Header.name">Host</stringProp>
|
||
<stringProp name="Header.value">${ip}</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Connection" elementType="Header">
|
||
<stringProp name="Header.name">Connection</stringProp>
|
||
<stringProp name="Header.value">keep-alive</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Content-Length" elementType="Header">
|
||
<stringProp name="Header.name">Content-Length</stringProp>
|
||
<stringProp name="Header.value">62</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept" elementType="Header">
|
||
<stringProp name="Header.name">Accept</stringProp>
|
||
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Origin	https" elementType="Header">
|
||
<stringProp name="Header.name">Origin</stringProp>
|
||
<stringProp name="Header.value">${xieyi}://${ip}</stringProp>
|
||
</elementProp>
|
||
<elementProp name="User-Agent" elementType="Header">
|
||
<stringProp name="Header.name">User-Agent</stringProp>
|
||
<stringProp name="Header.value">Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Content-Type" elementType="Header">
|
||
<stringProp name="Header.name">Content-Type</stringProp>
|
||
<stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Referer	https" elementType="Header">
|
||
<stringProp name="Header.name">Referer</stringProp>
|
||
<stringProp name="Header.value">${xieyi}://${ip}</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept-Encoding" elementType="Header">
|
||
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
||
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept-Language" elementType="Header">
|
||
<stringProp name="Header.name">Accept-Language</stringProp>
|
||
<stringProp name="Header.value">zh-CN,zh;q=0.9</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</HeaderManager>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="TPM" enabled="true">
|
||
<boolProp name="TransactionController.includeTimers">false</boolProp>
|
||
<boolProp name="TransactionController.parent">true</boolProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="setting.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/setting.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree/>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="challenges.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}/challenges.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="-1477654552">"shixun_status":2</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message">实训未发布</stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">2</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="show_right.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}/show_right.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="600454587">recommands</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${shixun_id}.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">task_operation;id</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.task_operation;$.id</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="-1477654552">"shixun_status":2</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="false">
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="script">String str = vars.get("task_operation");
|
||
boolean status =str.contains("shixun_exec");
|
||
if(status==true){
|
||
vars.put("task_operation_status","true");
|
||
}else{
|
||
vars.put("task_operation_status","false");
|
||
}</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_user_info.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/users/get_user_info.json?school=1</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree/>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="get_navigation_info.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/users/get_navigation_info.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="同步定时器" enabled="false">
|
||
<intProp name="groupSize">0</intProp>
|
||
<longProp name="timeoutInMs">60000</longProp>
|
||
</SyncTimer>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell 取样器" enabled="false">
|
||
<stringProp name="BeanShellSampler.query">String str = vars.get("task_operation");
|
||
boolean status =str.contains("shixun_exec");
|
||
if(status==true){
|
||
vars.put("task_operation_status","true");
|
||
}else{
|
||
vars.put("task_operation_status","false");
|
||
}</stringProp>
|
||
<stringProp name="BeanShellSampler.filename"></stringProp>
|
||
<stringProp name="BeanShellSampler.parameters"></stringProp>
|
||
<boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
|
||
</BeanShellSampler>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="随机实训2" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">task_operation;id</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.task_operation;$.id</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="-1477654552">"shixun_status":2</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="true">
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="script">String str = vars.get("task_operation");
|
||
boolean status =str.contains("shixun_exec");
|
||
if(status==true){
|
||
vars.put("task_operation_status","true");
|
||
}else{
|
||
vars.put("task_operation_status","false");
|
||
}</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<IfController guiclass="IfControllerPanel" testclass="IfController" testname="首次" enabled="true">
|
||
<stringProp name="IfController.condition">"${task_operation_status}"=="true"</stringProp>
|
||
<boolProp name="IfController.evaluateAll">false</boolProp>
|
||
<stringProp name="TestPlan.comments">"${task_operation_status}"=="true"&&"${__jm__线程组__idx}"=="0"</stringProp>
|
||
</IfController>
|
||
<hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="首次" enabled="true">
|
||
<boolProp name="TransactionController.parent">true</boolProp>
|
||
<stringProp name="TestPlan.comments">首次${shixun_id},${__jmeter.U_T__},${__jm__线程组__idx}</stringProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shixun_exec.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}/shixun_exec.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">开始挑战</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="865610518">game_identifier</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${game_identifier}" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/tasks/${game_identifier}</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree/>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${game_identifier}.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">path;myshixun_identifier;game_id;time_limit;position</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.challenge.path;$.myshixun.identifier;$..game.id;$.time_limit;$..position</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;null;null;null;null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="true">
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="script">//处理path中的分号;
|
||
|
||
String str = vars.get("path");
|
||
boolean status =str.contains(";");
|
||
if(status==true){
|
||
str=str.replace(";","");
|
||
vars.put("path",str);
|
||
}else{
|
||
return 0;
|
||
}</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="JSON断言" enabled="true">
|
||
<stringProp name="JSON_PATH">$.shixun.task_pass</stringProp>
|
||
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
||
<boolProp name="JSONVALIDATION">true</boolProp>
|
||
<boolProp name="EXPECT_NULL">false</boolProp>
|
||
<boolProp name="INVERT">false</boolProp>
|
||
<boolProp name="ISREGEX">true</boolProp>
|
||
</JSONPathAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="rep_content.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="path" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">true</boolProp>
|
||
<stringProp name="Argument.value">${path}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">path</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}/rep_content.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="951530617">content</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
</hashTree>
|
||
<IfController guiclass="IfControllerPanel" testclass="IfController" testname="非首次" enabled="true">
|
||
<stringProp name="IfController.condition">"${task_operation_status}"=="false"</stringProp>
|
||
<boolProp name="IfController.evaluateAll">false</boolProp>
|
||
</IfController>
|
||
<hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="非首次" enabled="true">
|
||
<boolProp name="TransactionController.parent">true</boolProp>
|
||
<stringProp name="TestPlan.comments">非首次${shixun_id},${__jmeter.U_T__},${__jm__线程组__idx}</stringProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shixun_exec.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}/shixun_exec.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">继续挑战</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="865610518">game_identifier</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="game_identifier.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">${game_identifier}.json</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">path;myshixun_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.challenge.path;$.myshixun.identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="true">
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="script">String str = vars.get("path");
|
||
boolean status =str.contains(";");
|
||
if(status==true){
|
||
str=str.replace(";","");
|
||
vars.put("path",str);
|
||
}else{
|
||
return 0;
|
||
}</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="shixun_exec.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/shixuns/${shixun_id}/shixun_exec.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">继续挑战</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="challenges.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/myshixuns/${myshixun_identifier}/challenges.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">获取实训关卡中的所有identifier</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">game_identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$..identifier</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">0</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${game_identifier}.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">path;myshixun_identifier;game_id;time_limit;position</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.challenge.path;$.myshixun.identifier;$..game.id;$.time_limit;$..position</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;null;null;null;null</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="true">
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="script">
|
||
|
||
String str = vars.get("path");
|
||
boolean status =str.contains(";");
|
||
if(status==true){
|
||
str=str.replace(";","");
|
||
vars.put("path",str);
|
||
}else{
|
||
return 0;
|
||
}</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
<JSONPathAssertion guiclass="JSONPathAssertionGui" testclass="JSONPathAssertion" testname="JSON断言" enabled="true">
|
||
<stringProp name="JSON_PATH">$.shixun.task_pass</stringProp>
|
||
<stringProp name="EXPECTED_VALUE">true</stringProp>
|
||
<boolProp name="JSONVALIDATION">true</boolProp>
|
||
<boolProp name="EXPECT_NULL">false</boolProp>
|
||
<boolProp name="INVERT">false</boolProp>
|
||
<boolProp name="ISREGEX">true</boolProp>
|
||
</JSONPathAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="${game_identifier}" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments"/>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/tasks/${game_identifier}</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree/>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="rep_content.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="path" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">true</boolProp>
|
||
<stringProp name="Argument.value">${path}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">path</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}/rep_content.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="951530617">content</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
</hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="评测" enabled="true">
|
||
<boolProp name="TransactionController.parent">false</boolProp>
|
||
<stringProp name="TestPlan.comments">评测${game_identifier},${__jmeter.U_T__},${__jm__线程组__idx}</stringProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP信息头管理器" enabled="true">
|
||
<collectionProp name="HeaderManager.headers">
|
||
<elementProp name="Host" elementType="Header">
|
||
<stringProp name="Header.name">Host</stringProp>
|
||
<stringProp name="Header.value">${ip}</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Connection" elementType="Header">
|
||
<stringProp name="Header.name">Connection</stringProp>
|
||
<stringProp name="Header.value">keep-alive</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Content-Length" elementType="Header">
|
||
<stringProp name="Header.name">Content-Length</stringProp>
|
||
<stringProp name="Header.value">557</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept" elementType="Header">
|
||
<stringProp name="Header.name">Accept</stringProp>
|
||
<stringProp name="Header.value">application/json, text/plain, */*</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Origin	https" elementType="Header">
|
||
<stringProp name="Header.name">Origin</stringProp>
|
||
<stringProp name="Header.value">${xieyi}://${ip}</stringProp>
|
||
</elementProp>
|
||
<elementProp name="User-Agent" elementType="Header">
|
||
<stringProp name="Header.name">User-Agent</stringProp>
|
||
<stringProp name="Header.value">Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Content-Type" elementType="Header">
|
||
<stringProp name="Header.name">Content-Type</stringProp>
|
||
<stringProp name="Header.value">application/json;charset=UTF-8</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Referer	https" elementType="Header">
|
||
<stringProp name="Header.name">Referer</stringProp>
|
||
<stringProp name="Header.value">${xieyi}://${ip}/tasks/u9mh6fn2gxva</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept-Encoding" elementType="Header">
|
||
<stringProp name="Header.name">Accept-Encoding</stringProp>
|
||
<stringProp name="Header.value">gzip, deflate, br</stringProp>
|
||
</elementProp>
|
||
<elementProp name="Accept-Language" elementType="Header">
|
||
<stringProp name="Header.name">Accept-Language</stringProp>
|
||
<stringProp name="Header.value">zh-CN,zh;q=0.9</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</HeaderManager>
|
||
<hashTree/>
|
||
<WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While控制器" enabled="true">
|
||
<stringProp name="TestPlan.comments">${sj}"=="${position}"&&"${shixun_id1}"=="${shixun_id}"</stringProp>
|
||
<stringProp name="WhileController.condition">${__javaScript("${sj}"!="${position}"||"${shixun_id_1}"!="${shixun_id}",)}</stringProp>
|
||
</WhileController>
|
||
<hashTree>
|
||
<CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="获取答案" enabled="true">
|
||
<stringProp name="filename">s_a2.csv</stringProp>
|
||
<stringProp name="fileEncoding">GB2312</stringProp>
|
||
<stringProp name="variableNames">shixun_id_1,answer,answer_w,sj</stringProp>
|
||
<boolProp name="ignoreFirstLine">false</boolProp>
|
||
<stringProp name="delimiter">~</stringProp>
|
||
<boolProp name="quotedData">false</boolProp>
|
||
<boolProp name="recycle">true</boolProp>
|
||
<boolProp name="stopThread">true</boolProp>
|
||
<stringProp name="shareMode">shareMode.thread</stringProp>
|
||
<stringProp name="TestPlan.comments">../csv/s_a1.csv</stringProp>
|
||
</CSVDataSet>
|
||
<hashTree/>
|
||
<BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="随机答案" enabled="true">
|
||
<stringProp name="TestPlan.comments">随机答案${sj}==${position}&&${shixun_id_1}==${shixun_id},${__jmeter.U_T__},${__jm__线程组__idx}</stringProp>
|
||
<stringProp name="BeanShellSampler.query">//log.info(vars.get("sj"));
|
||
//log.info(vars.get("position"));
|
||
//log.info(vars.get("shixun_id_1"));
|
||
//log.info("++++++++++++++++++++++++++");
|
||
//log.info(vars.get("shixun_id"));
|
||
//log.info(vars.get("answer"));
|
||
//
|
||
//
|
||
</stringProp>
|
||
<stringProp name="BeanShellSampler.filename"></stringProp>
|
||
<stringProp name="BeanShellSampler.parameters"></stringProp>
|
||
<boolProp name="BeanShellSampler.resetInterpreter">true</boolProp>
|
||
</BeanShellSampler>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="update_file.json" enabled="true">
|
||
<boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">{
|
||
"path": "${path}",
|
||
"evaluate": 1,
|
||
//"content": "${__RandomFromMultipleVars(answer|answer_w)}",
|
||
"content": "${answer}",
|
||
"game_id": "${game_id}"
|
||
}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding">UTF-8</stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/myshixuns/${myshixun_identifier}/update_file.json</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.BROWSER_COMPATIBLE_MULTIPART">true</boolProp>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">提交评测代码文件</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON提取器" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">sec_key;resubmit</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.sec_key;$.resubmit</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">null;0</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="game_build.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="sec_key" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${sec_key}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">sec_key</stringProp>
|
||
</elementProp>
|
||
<elementProp name="resubmit" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${resubmit}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">resubmit</stringProp>
|
||
</elementProp>
|
||
<elementProp name="first" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">1</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">first</stringProp>
|
||
</elementProp>
|
||
<elementProp name="content_modified" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">1</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">content_modified</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}/game_build.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">port</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.port</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">0</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="响应断言" enabled="true">
|
||
<collectionProp name="Asserion.test_strings">
|
||
<stringProp name="-161783867">"status":1</stringProp>
|
||
</collectionProp>
|
||
<stringProp name="Assertion.custom_message"></stringProp>
|
||
<stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
|
||
<boolProp name="Assertion.assume_success">false</boolProp>
|
||
<intProp name="Assertion.test_type">16</intProp>
|
||
</ResponseAssertion>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="轮询耗时" enabled="true">
|
||
<boolProp name="TransactionController.parent">false</boolProp>
|
||
</TransactionController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="game_status.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="resubmit" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${resubmit}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">resubmit</stringProp>
|
||
</elementProp>
|
||
<elementProp name="time_out" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">false</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">time_out</stringProp>
|
||
</elementProp>
|
||
<elementProp name="port" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${port}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">port</stringProp>
|
||
</elementProp>
|
||
<elementProp name="sec_key" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${sec_key}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">sec_key</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}/game_status.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">轮询</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">status;last_compile_output</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.status;$.last_compile_output</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">;0</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell 预处理程序" enabled="true">
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="script">vars.put("count","0");</stringProp>
|
||
</BeanShellPreProcessor>
|
||
<hashTree/>
|
||
</hashTree>
|
||
<WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="game_status轮询" enabled="true">
|
||
<stringProp name="WhileController.condition">${__javaScript("${status}"!="2"&&"${status}"!="0"&&"${count}"!="${time_limit}",)}</stringProp>
|
||
</WhileController>
|
||
<hashTree>
|
||
<HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="game_status.json" enabled="true">
|
||
<elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="用户定义的变量" enabled="true">
|
||
<collectionProp name="Arguments.arguments">
|
||
<elementProp name="resubmit" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${resubmit}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">resubmit</stringProp>
|
||
</elementProp>
|
||
<elementProp name="time_out" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">false</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">time_out</stringProp>
|
||
</elementProp>
|
||
<elementProp name="port" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${port}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">port</stringProp>
|
||
</elementProp>
|
||
<elementProp name="sec_key" elementType="HTTPArgument">
|
||
<boolProp name="HTTPArgument.always_encode">false</boolProp>
|
||
<stringProp name="Argument.value">${sec_key}</stringProp>
|
||
<stringProp name="Argument.metadata">=</stringProp>
|
||
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
||
<stringProp name="Argument.name">sec_key</stringProp>
|
||
</elementProp>
|
||
</collectionProp>
|
||
</elementProp>
|
||
<stringProp name="HTTPSampler.domain"></stringProp>
|
||
<stringProp name="HTTPSampler.port"></stringProp>
|
||
<stringProp name="HTTPSampler.protocol"></stringProp>
|
||
<stringProp name="HTTPSampler.contentEncoding"></stringProp>
|
||
<stringProp name="HTTPSampler.path">/api/tasks/${game_identifier}/game_status.json</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>
|
||
<stringProp name="HTTPSampler.embedded_url_re"></stringProp>
|
||
<stringProp name="HTTPSampler.connect_timeout"></stringProp>
|
||
<stringProp name="HTTPSampler.response_timeout"></stringProp>
|
||
<stringProp name="TestPlan.comments">轮询${game_identifier},${sec_key},${__jmeter.U_T__},${__jm__线程组__idx},${count},${COOKIE__educoder_session}</stringProp>
|
||
</HTTPSamplerProxy>
|
||
<hashTree>
|
||
<JSONPostProcessor guiclass="JSONPostProcessorGui" testclass="JSONPostProcessor" testname="JSON Extractor" enabled="true">
|
||
<stringProp name="JSONPostProcessor.referenceNames">status;last_compile_output;actual_output;last_compile_output</stringProp>
|
||
<stringProp name="JSONPostProcessor.jsonPathExprs">$.status;$.last_compile_output;$.test_sets..actual_output;$.last_compile_output</stringProp>
|
||
<stringProp name="JSONPostProcessor.match_numbers">1</stringProp>
|
||
<stringProp name="JSONPostProcessor.defaultValues">;0;0;0</stringProp>
|
||
</JSONPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell 后置处理程序" enabled="true">
|
||
<boolProp name="resetInterpreter">false</boolProp>
|
||
<stringProp name="parameters"></stringProp>
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="script">int count1 = Integer.parseInt(vars.get("count"));
|
||
//log.info(vars.get("count"));
|
||
vars.put("count",String.valueOf(count1+1));</stringProp>
|
||
</BeanShellPostProcessor>
|
||
<hashTree/>
|
||
<BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell断言" enabled="true">
|
||
<stringProp name="BeanShellAssertion.query">import org.json.*;
|
||
String response = prev.getResponseDataAsString();
|
||
|
||
|
||
if((vars.get("count")).equals(vars.get("time_limit"))){
|
||
Failure = true;
|
||
FailureMessage = "评测超时,请求失败。";
|
||
// log.info("${index}");
|
||
return;
|
||
}
|
||
if("${status}".equals("2")){
|
||
//boolean status2 =(vars.get("last_compile_output")).contains("系统繁忙");
|
||
if((vars.get("actual_output")).contains("超时")==true){
|
||
Failure = true;
|
||
FailureMessage = "评测超时,请求失败。";
|
||
return;
|
||
}
|
||
if((vars.get("last_compile_output")).contains("系统繁忙")==true){
|
||
Failure = true;
|
||
FailureMessage = "系统繁忙";
|
||
return;
|
||
}else{
|
||
Failure = false;
|
||
FailureMessage = "评测成功,正确返回结果";
|
||
//log.info("${status}");
|
||
return;
|
||
}
|
||
}
|
||
if("${status}".equals("0")){
|
||
// boolean status =${"actual_output_1"}.contains("超时");
|
||
// boolean status =(vars.get("actual_output")).contains("超时");
|
||
if((vars.get("actual_output")).contains("超时")==true){
|
||
Failure = true;
|
||
FailureMessage = "评测超时,请求失败。";
|
||
return;
|
||
}
|
||
if((vars.get("last_compile_output")).contains("系统繁忙")==true){
|
||
Failure = true;
|
||
FailureMessage = "系统繁忙。";
|
||
return;
|
||
}
|
||
else{
|
||
Failure = false;
|
||
FailureMessage = "评测未通关。";
|
||
//log.info("${status}");
|
||
return;
|
||
}
|
||
|
||
}
|
||
|
||
</stringProp>
|
||
<stringProp name="BeanShellAssertion.filename"></stringProp>
|
||
<stringProp name="BeanShellAssertion.parameters"></stringProp>
|
||
<boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
|
||
</BeanShellAssertion>
|
||
<hashTree/>
|
||
<ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="固定定时器" enabled="true">
|
||
<stringProp name="ConstantTimer.delay">1000</stringProp>
|
||
</ConstantTimer>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
</hashTree>
|
||
</hashTree>
|
||
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="察看结果树" enabled="false">
|
||
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
||
<objProp>
|
||
<name>saveConfig</name>
|
||
<value class="SampleSaveConfiguration">
|
||
<time>false</time>
|
||
<latency>false</latency>
|
||
<timestamp>false</timestamp>
|
||
<success>false</success>
|
||
<label>false</label>
|
||
<code>false</code>
|
||
<message>false</message>
|
||
<threadName>false</threadName>
|
||
<dataType>false</dataType>
|
||
<encoding>false</encoding>
|
||
<assertions>true</assertions>
|
||
<subresults>false</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>
|
||
</value>
|
||
</objProp>
|
||
<stringProp name="filename"></stringProp>
|
||
<stringProp name="TestPlan.comments">轮询耗时oifatjwx39l6,5y8xr37qnh4u</stringProp>
|
||
</ResultCollector>
|
||
<hashTree/>
|
||
<ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="察看结果树" enabled="true">
|
||
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
||
<objProp>
|
||
<name>saveConfig</name>
|
||
<value class="SampleSaveConfiguration">
|
||
<time>true</time>
|
||
<latency>true</latency>
|
||
<timestamp>true</timestamp>
|
||
<success>true</success>
|
||
<label>true</label>
|
||
<code>true</code>
|
||
<message>true</message>
|
||
<threadName>true</threadName>
|
||
<dataType>true</dataType>
|
||
<encoding>false</encoding>
|
||
<assertions>true</assertions>
|
||
<subresults>true</subresults>
|
||
<responseData>false</responseData>
|
||
<samplerData>false</samplerData>
|
||
<xml>false</xml>
|
||
<fieldNames>true</fieldNames>
|
||
<responseHeaders>false</responseHeaders>
|
||
<requestHeaders>false</requestHeaders>
|
||
<responseDataOnError>false</responseDataOnError>
|
||
<saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
|
||
<assertionsResultsToSave>0</assertionsResultsToSave>
|
||
<bytes>true</bytes>
|
||
<sentBytes>true</sentBytes>
|
||
<url>true</url>
|
||
<threadCounts>true</threadCounts>
|
||
<idleTime>true</idleTime>
|
||
<connectTime>true</connectTime>
|
||
</value>
|
||
</objProp>
|
||
<stringProp name="filename"></stringProp>
|
||
</ResultCollector>
|
||
<hashTree/>
|
||
</hashTree>
|
||
</hashTree>
|
||
</hashTree>
|
||
</jmeterTestPlan>
|