<? xml version = "1.0" encoding = "UTF-8" ?> < jmeterTestPlan version = "1.2" properties = "5.0" jmeter = "5.3" > < hashTree > < TestPlan guiclass = "TestPlanGui" testclass = "TestPlan" testname = "{{test_plan_name}}" enabled = "true" > < stringProp name = "TestPlan.comments" >{{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 >{% if hosts %} < DNSCacheManager guiclass = "DNSCachePanel" testclass = "DNSCacheManager" testname = "DNS缓存管理器" enabled = "true" > < collectionProp name = "DNSCacheManager.servers" /> < collectionProp name = "DNSCacheManager.hosts" >{% for host in hosts %} < elementProp name = "las.secoo.com" elementType = "StaticHost" > < stringProp name = "StaticHost.Name" >{{host.name}}</ stringProp > < stringProp name = "StaticHost.Address" >{{host.address}}</ stringProp > </ elementProp >{% endfor %} </ collectionProp > < boolProp name = "DNSCacheManager.clearEachIteration" >false</ boolProp > < boolProp name = "DNSCacheManager.isCustomResolver" >true</ boolProp > </ DNSCacheManager > < hashTree />{% endif %} {% if cookies %} < CookieManager guiclass = "CookiePanel" testclass = "CookieManager" testname = "HTTP Cookie管理器" enabled = "true" > < collectionProp name = "CookieManager.cookies" /> < boolProp name = "CookieManager.clearEachIteration" >{{cookies.clear_each_iteration}}</ boolProp > </ CookieManager > < hashTree />{% endif %} {% if csv_files %}{% for csv_file in csv_files %} < CSVDataSet guiclass = "TestBeanGUI" testclass = "CSVDataSet" testname = "{{csv_file.name}}" enabled = "true" > < stringProp name = "filename" >dat/{{csv_file.path}}</ stringProp > < stringProp name = "fileEncoding" >UTF-8</ stringProp > < stringProp name = "variableNames" >{{csv_file.varnames}}</ stringProp > < boolProp name = "ignoreFirstLine" >true</ boolProp > < stringProp name = "delimiter" >{{csv_file.delimiter}}</ stringProp > < boolProp name = "quotedData" >false</ boolProp > < boolProp name = "recycle" >true</ boolProp > < boolProp name = "stopThread" >false</ boolProp > < stringProp name = "shareMode" >shareMode.group</ stringProp > </ CSVDataSet > < hashTree />{% endfor %}{% endif %} < ResultCollector guiclass = "StatVisualizer" 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 >true</ responseDataOnError > < saveAssertionResultsFailureMessage >true</ saveAssertionResultsFailureMessage > < assertionsResultsToSave >0</ assertionsResultsToSave > < bytes >true</ bytes > < sentBytes >true</ sentBytes > < threadCounts >true</ threadCounts > < idleTime >true</ idleTime > </ value > </ objProp > < stringProp name = "filename" ></ stringProp > </ ResultCollector > < hashTree />{% for thread_group in thread_groups %} < ThreadGroup guiclass = "ThreadGroupGui" testclass = "ThreadGroup" testname = "{{thread_group.thread_group_name}}" enabled = "{{thread_group.enabled}}" > < stringProp name = "TestPlan.comments" >{{thread_group.comments}}</ stringProp > < stringProp name = "ThreadGroup.on_sample_error" >continue</ stringProp > < elementProp name = "ThreadGroup.main_controller" elementType = "LoopController" guiclass = "LoopControlPanel" testclass = "LoopController" testname = "循环控制器" enabled = "true" > < boolProp name = "LoopController.continue_forever" >false</ boolProp > < intProp name = "LoopController.loops" >{{thread_group.loops}}</ intProp > </ elementProp > < stringProp name = "ThreadGroup.num_threads" >{{thread_group.num_threads}}</ stringProp > < stringProp name = "ThreadGroup.ramp_time" >{{thread_group.ramp_time}}</ stringProp > < boolProp name = "ThreadGroup.scheduler" >{{thread_group.scheduler}}</ boolProp > < stringProp name = "ThreadGroup.duration" >{{thread_group.duration}}</ stringProp > < stringProp name = "ThreadGroup.delay" >{{thread_group.delay}}</ stringProp > < boolProp name = "ThreadGroup.same_user_on_next_iteration" >false</ boolProp > </ ThreadGroup > < hashTree >{% if thread_group.csv_files %}{% for csv_file in thread_group.csv_files %} < CSVDataSet guiclass = "TestBeanGUI" testclass = "CSVDataSet" testname = "{{csv_file.name}}" enabled = "true" > < stringProp name = "filename" >dat/{{csv_file.path}}</ stringProp > < stringProp name = "fileEncoding" >UTF-8</ stringProp > < stringProp name = "variableNames" >{{csv_file.varnames}}</ stringProp > < boolProp name = "ignoreFirstLine" >true</ boolProp > < stringProp name = "delimiter" >{{csv_file.delimiter}}</ stringProp > < boolProp name = "quotedData" >false</ boolProp > < boolProp name = "recycle" >true</ boolProp > < boolProp name = "stopThread" >false</ boolProp > < stringProp name = "shareMode" >shareMode.group</ stringProp > </ CSVDataSet > < hashTree />{% endfor %}{% endif %} {% if thread_group.http_samples %}{% for http_sample in thread_group.http_samples %} < HTTPSamplerProxy guiclass = "HttpTestSampleGui" testclass = "HTTPSamplerProxy" testname = "{{http_sample.request_name}}" enabled = "{{http_sample.enabled}}" > < elementProp name = "HTTPsampler.Arguments" elementType = "Arguments" guiclass = "HTTPArgumentsPanel" testclass = "Arguments" testname = "用户定义的变量" enabled = "true" > < collectionProp name = "Arguments.arguments" >{% if http_sample.request.params %}{% for name, value in http_sample.request.params.items() %} < elementProp name = "{{name}}" elementType = "HTTPArgument" > < boolProp name = "HTTPArgument.always_encode" >false</ boolProp > < stringProp name = "Argument.value" >{{value}}</ stringProp > < stringProp name = "Argument.metadata" >=</ stringProp > < boolProp name = "HTTPArgument.use_equals" >true</ boolProp > < stringProp name = "Argument.name" >{{name}}</ stringProp > </ elementProp >{% endfor %}{% endif %} {% if http_sample.request.data %}{% for name, value in http_sample.request.data.items() %} < elementProp name = "{{name}}" elementType = "HTTPArgument" > < boolProp name = "HTTPArgument.always_encode" >false</ boolProp > < stringProp name = "Argument.value" >{{value}}</ stringProp > < stringProp name = "Argument.metadata" >=</ stringProp > < boolProp name = "HTTPArgument.use_equals" >true</ boolProp > < stringProp name = "Argument.name" >{{name}}</ stringProp > </ elementProp >{% endfor %}{% endif %} {% if http_sample.request.raw_data %} < elementProp name = "" elementType = "HTTPArgument" > < boolProp name = "HTTPArgument.always_encode" >false</ boolProp > < stringProp name = "Argument.value" >{{http_sample.request.raw_data}}</ stringProp > < stringProp name = "Argument.metadata" >=</ stringProp > </ elementProp >{% endif %} </ collectionProp > </ elementProp > < stringProp name = "HTTPSampler.domain" >{{http_sample.request.domain}}</ stringProp > < stringProp name = "HTTPSampler.port" >{{http_sample.request.port}}</ stringProp > < stringProp name = "HTTPSampler.protocol" >{{http_sample.request.protocol}}</ stringProp > < stringProp name = "HTTPSampler.contentEncoding" >{{http_sample.request.encoding}}</ stringProp > < stringProp name = "HTTPSampler.path" >{{http_sample.request.path}}</ stringProp > < stringProp name = "HTTPSampler.method" >{{http_sample.request.method}}</ stringProp > < boolProp name = "HTTPSampler.follow_redirects" >{{http_sample.request.follow_redirects}}</ boolProp > < boolProp name = "HTTPSampler.auto_redirects" >{{http_sample.request.auto_redirects}}</ boolProp > < boolProp name = "HTTPSampler.use_keepalive" >{{http_sample.request.use_keepalive}}</ boolProp > < boolProp name = "HTTPSampler.DO_MULTIPART_POST" >false</ boolProp > < stringProp name = "HTTPSampler.embedded_url_re" ></ stringProp > < stringProp name = "HTTPSampler.connect_timeout" >{{http_sample.request.connect_timeout}}</ stringProp > < stringProp name = "HTTPSampler.response_timeout" >{{http_sample.request.response_timeout}}</ stringProp > </ HTTPSamplerProxy > < hashTree >{% if http_sample.request.headers %} < HeaderManager guiclass = "HeaderPanel" testclass = "HeaderManager" testname = "HTTP信息头管理器" enabled = "true" > < collectionProp name = "HeaderManager.headers" >{% for name, value in http_sample.request.headers.items() %} < elementProp name = "" elementType = "Header" > < stringProp name = "Header.name" >{{name}}</ stringProp > < stringProp name = "Header.value" >{{value}}</ stringProp > </ elementProp >{% endfor %} </ collectionProp > </ HeaderManager > < hashTree />{% endif %} {% if http_sample.csv_files %}{% for csv_file in http_sample.csv_files %} < CSVDataSet guiclass = "TestBeanGUI" testclass = "CSVDataSet" testname = "CSV 数据文件设置" enabled = "true" > < stringProp name = "delimiter" >{{csv_file.delimiter}}</ stringProp > < stringProp name = "fileEncoding" >UTF_8</ stringProp > < stringProp name = "filename" >dat/{{csv_file.path}}</ stringProp > < boolProp name = "ignoreFirstLine" >true</ boolProp > < boolProp name = "quotedData" >false</ boolProp > < boolProp name = "recycle" >true</ boolProp > < stringProp name = "shareMode" >shareMode.group</ stringProp > < boolProp name = "stopThread" >false</ boolProp > < stringProp name = "variableNames" >{{csv_file.varnames}}</ stringProp > </ CSVDataSet > < hashTree />{% endfor %}{% endif %} {% if http_sample.validate %}{% for assertion in http_sample.validate %} < ResponseAssertion guiclass = "AssertionGui" testclass = "ResponseAssertion" testname = "响应断言" enabled = "true" > < collectionProp name = "Asserion.test_strings" >{% if assertion.strings %}{% for string in assertion.strings %} < stringProp name = "97" >{{string}}</ stringProp >{% endfor %}{% endif %} </ collectionProp > < stringProp name = "Assertion.custom_message" ></ stringProp > < stringProp name = "Assertion.test_field" >Assertion.{{assertion.test_field}}</ stringProp > < boolProp name = "Assertion.assume_success" >false</ boolProp > < intProp name = "Assertion.test_type" >{{assertion.test_type}}</ intProp > </ ResponseAssertion > < hashTree />{% endfor %}{% endif %} < 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 >{% endfor %}{% endif %} {% if thread_group.dubbo_samples %} {% for dubbo_sample in thread_group.dubbo_samples %} < io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample guiclass = "io.github.ningyu.jmeter.plugin.dubbo.gui.DubboSampleGui" testclass = "io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample" testname = "{{dubbo_sample.request_name}}" enabled = "{{dubbo_sample.enabled}}" > < stringProp name = "FIELD_DUBBO_REGISTRY_PROTOCOL" >{{dubbo_sample.registry.type}}</ stringProp > < stringProp name = "FIELD_DUBBO_REGISTRY_GROUP" >{{dubbo_sample.registry.group}}</ stringProp > < stringProp name = "FIELD_DUBBO_RPC_PROTOCOL" >dubbo://</ stringProp > < stringProp name = "FIELD_DUBBO_ADDRESS" >{{dubbo_sample.registry.address}}</ stringProp > < stringProp name = "FIELD_DUBBO_TIMEOUT" >{{dubbo_sample.dubbo.timeout}}</ stringProp > < stringProp name = "FIELD_DUBBO_VERSION" ></ stringProp > < stringProp name = "FIELD_DUBBO_RETRIES" >{{dubbo_sample.dubbo.retries}}</ stringProp > < stringProp name = "FIELD_DUBBO_GROUP" >{{dubbo_sample.dubbo.group}}</ stringProp > < stringProp name = "FIELD_DUBBO_CONNECTIONS" >{{dubbo_sample.dubbo.connections}}</ stringProp > < stringProp name = "FIELD_DUBBO_LOADBALANCE" >{{dubbo_sample.dubbo.load_balance}}</ stringProp > < stringProp name = "FIELD_DUBBO_ASYNC" >sync</ stringProp > < stringProp name = "FIELD_DUBBO_CLUSTER" >{{dubbo_sample.dubbo.cluster}}</ stringProp > < stringProp name = "FIELD_DUBBO_INTERFACE" >{{dubbo_sample.dubbo.service}}</ stringProp > < stringProp name = "FIELD_DUBBO_METHOD" >{{dubbo_sample.dubbo.method}}</ stringProp > < intProp name = "FIELD_DUBBO_METHOD_ARGS_SIZE" >1</ intProp >{% for param in dubbo_sample.dubbo.params %} < stringProp name = "FIELD_DUBBO_METHOD_ARGS_PARAM_TYPE1" >{{param.type}}</ stringProp > < stringProp name = "FIELD_DUBBO_METHOD_ARGS_PARAM_VALUE1" >{{param.value}}</ stringProp >{% endfor %} < intProp name = "FIELD_DUBBO_ATTACHMENT_ARGS_SIZE" >0</ intProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_PROTOCOL" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_GROUP" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_NAMESPACE" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_USER_NAME" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_PASSWORD" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_ADDRESS" ></ stringProp > < stringProp name = "FIELD_DUBBO_CONFIG_CENTER_TIMEOUT" ></ stringProp > < stringProp name = "FIELD_DUBBO_REGISTRY_USER_NAME" ></ stringProp > < stringProp name = "FIELD_DUBBO_REGISTRY_PASSWORD" ></ stringProp > < stringProp name = "FIELD_DUBBO_REGISTRY_TIMEOUT" ></ stringProp > </ io.github.ningyu.jmeter.plugin.dubbo.sample.DubboSample > < hashTree >{% if dubbo_sample.dubbo.headers %} < HeaderManager guiclass = "HeaderPanel" testclass = "HeaderManager" testname = "HTTP信息头管理器" enabled = "true" > < collectionProp name = "HeaderManager.headers" >{% for name, value in dubbo_sample.dubbo.headers.items() %} < elementProp name = "" elementType = "Header" > < stringProp name = "Header.name" >{{name}}</ stringProp > < stringProp name = "Header.value" >{{value}}</ stringProp > </ elementProp >{% endfor %} </ collectionProp > </ HeaderManager > < hashTree />{% endif %} {% if dubbo_sample.validate %} {% for assertion in dubbo_sample.validate %} < ResponseAssertion guiclass = "AssertionGui" testclass = "ResponseAssertion" testname = "响应断言" enabled = "true" > < collectionProp name = "Asserion.test_strings" >{% if assertion.strings %}{% for string in assertion.strings %} < stringProp name = "97" >{{string}}</ stringProp >{% endfor %}{% endif %} </ collectionProp > < stringProp name = "Assertion.custom_message" ></ stringProp > < stringProp name = "Assertion.test_field" >Assertion.{{assertion.test_field}}</ stringProp > < boolProp name = "Assertion.assume_success" >false</ boolProp > < intProp name = "Assertion.test_type" >{{assertion.test_type}}</ intProp > </ ResponseAssertion >{% endfor %} {% endif %} < hashTree />{% endfor %}{% endif %} {% endfor %} </ hashTree > </ hashTree > </ hashTree > </ jmeterTestPlan > |