ruby-jmeter 2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. data/.gitattributes +22 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +27 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +333 -0
  7. data/Rakefile +6 -0
  8. data/bin/grid +25 -0
  9. data/examples/basic_assertion.rb +13 -0
  10. data/examples/basic_auth.rb +11 -0
  11. data/examples/basic_cache.rb +11 -0
  12. data/examples/basic_cookies.rb +11 -0
  13. data/examples/basic_extract.rb +10 -0
  14. data/examples/basic_gc_dummy_sampler.rb +10 -0
  15. data/examples/basic_gc_results.rb +23 -0
  16. data/examples/basic_google.rb +8 -0
  17. data/examples/basic_grid.rb +8 -0
  18. data/examples/basic_header.rb +19 -0
  19. data/examples/basic_ldap_ext.rb +16 -0
  20. data/examples/basic_post.rb +15 -0
  21. data/examples/basic_query_params.rb +8 -0
  22. data/examples/basic_think_time.rb +15 -0
  23. data/examples/basic_throughput_controller.rb +14 -0
  24. data/examples/basic_throughput_shaping_timer.rb +21 -0
  25. data/examples/etsy_login_browse.rb +64 -0
  26. data/lib/ruby-jmeter.rb +18 -0
  27. data/lib/ruby-jmeter/DSL.md +237 -0
  28. data/lib/ruby-jmeter/dsl.rb +419 -0
  29. data/lib/ruby-jmeter/dsl/access_log_sampler.rb +32 -0
  30. data/lib/ruby-jmeter/dsl/aggregate_graph.rb +55 -0
  31. data/lib/ruby-jmeter/dsl/aggregate_report.rb +55 -0
  32. data/lib/ruby-jmeter/dsl/ajp13_sampler.rb +41 -0
  33. data/lib/ruby-jmeter/dsl/assertion_results.rb +55 -0
  34. data/lib/ruby-jmeter/dsl/beanshell_assertion.rb +28 -0
  35. data/lib/ruby-jmeter/dsl/beanshell_listener.rb +28 -0
  36. data/lib/ruby-jmeter/dsl/beanshell_postprocessor.rb +28 -0
  37. data/lib/ruby-jmeter/dsl/beanshell_preprocessor.rb +28 -0
  38. data/lib/ruby-jmeter/dsl/beanshell_sampler.rb +28 -0
  39. data/lib/ruby-jmeter/dsl/beanshell_timer.rb +28 -0
  40. data/lib/ruby-jmeter/dsl/bsf_assertion.rb +28 -0
  41. data/lib/ruby-jmeter/dsl/bsf_listener.rb +28 -0
  42. data/lib/ruby-jmeter/dsl/bsf_postprocessor.rb +28 -0
  43. data/lib/ruby-jmeter/dsl/bsf_preprocessor.rb +28 -0
  44. data/lib/ruby-jmeter/dsl/bsf_sampler.rb +28 -0
  45. data/lib/ruby-jmeter/dsl/bsf_timer.rb +28 -0
  46. data/lib/ruby-jmeter/dsl/compare_assertion.rb +27 -0
  47. data/lib/ruby-jmeter/dsl/comparison_assertion_visualizer.rb +55 -0
  48. data/lib/ruby-jmeter/dsl/constant_throughput_timer.rb +30 -0
  49. data/lib/ruby-jmeter/dsl/constant_timer.rb +25 -0
  50. data/lib/ruby-jmeter/dsl/counter.rb +31 -0
  51. data/lib/ruby-jmeter/dsl/cssjquery_extractor.rb +30 -0
  52. data/lib/ruby-jmeter/dsl/csv_data_set_config.rb +32 -0
  53. data/lib/ruby-jmeter/dsl/debug_postprocessor.rb +28 -0
  54. data/lib/ruby-jmeter/dsl/debug_sampler.rb +27 -0
  55. data/lib/ruby-jmeter/dsl/distribution_graphalpha.rb +55 -0
  56. data/lib/ruby-jmeter/dsl/duration_assertion.rb +25 -0
  57. data/lib/ruby-jmeter/dsl/foreach_controller.rb +29 -0
  58. data/lib/ruby-jmeter/dsl/ftp_request.rb +34 -0
  59. data/lib/ruby-jmeter/dsl/ftp_request_defaults.rb +32 -0
  60. data/lib/ruby-jmeter/dsl/gaussian_random_timer.rb +26 -0
  61. data/lib/ruby-jmeter/dsl/generate_summary_results.rb +23 -0
  62. data/lib/ruby-jmeter/dsl/graph_results.rb +55 -0
  63. data/lib/ruby-jmeter/dsl/html_assertion.rb +30 -0
  64. data/lib/ruby-jmeter/dsl/html_link_parser.rb +23 -0
  65. data/lib/ruby-jmeter/dsl/html_parameter_mask.rb +32 -0
  66. data/lib/ruby-jmeter/dsl/http_authorization_manager.rb +33 -0
  67. data/lib/ruby-jmeter/dsl/http_cache_manager.rb +26 -0
  68. data/lib/ruby-jmeter/dsl/http_cookie_manager.rb +27 -0
  69. data/lib/ruby-jmeter/dsl/http_header_manager.rb +30 -0
  70. data/lib/ruby-jmeter/dsl/http_request.rb +41 -0
  71. data/lib/ruby-jmeter/dsl/http_request_defaults.rb +44 -0
  72. data/lib/ruby-jmeter/dsl/http_url_rewriting_modifier.rb +29 -0
  73. data/lib/ruby-jmeter/dsl/if_controller.rb +27 -0
  74. data/lib/ruby-jmeter/dsl/include_controller.rb +25 -0
  75. data/lib/ruby-jmeter/dsl/java_request.rb +69 -0
  76. data/lib/ruby-jmeter/dsl/java_request_defaults.rb +69 -0
  77. data/lib/ruby-jmeter/dsl/jdbc_connection_configuration.rb +37 -0
  78. data/lib/ruby-jmeter/dsl/jdbc_postprocessor.rb +31 -0
  79. data/lib/ruby-jmeter/dsl/jdbc_preprocessor.rb +31 -0
  80. data/lib/ruby-jmeter/dsl/jdbc_request.rb +31 -0
  81. data/lib/ruby-jmeter/dsl/jms_pointtopoint.rb +40 -0
  82. data/lib/ruby-jmeter/dsl/jms_publisher.rb +41 -0
  83. data/lib/ruby-jmeter/dsl/jms_subscriber.rb +35 -0
  84. data/lib/ruby-jmeter/dsl/jsr223_assertion.rb +29 -0
  85. data/lib/ruby-jmeter/dsl/jsr223_listener.rb +29 -0
  86. data/lib/ruby-jmeter/dsl/jsr223_postprocessor.rb +29 -0
  87. data/lib/ruby-jmeter/dsl/jsr223_preprocessor.rb +29 -0
  88. data/lib/ruby-jmeter/dsl/jsr223_sampler.rb +29 -0
  89. data/lib/ruby-jmeter/dsl/jsr223_timer.rb +29 -0
  90. data/lib/ruby-jmeter/dsl/junit_request.rb +37 -0
  91. data/lib/ruby-jmeter/dsl/keystore_configuration.rb +27 -0
  92. data/lib/ruby-jmeter/dsl/ldap_extended_request.rb +42 -0
  93. data/lib/ruby-jmeter/dsl/ldap_extended_request_defaults.rb +42 -0
  94. data/lib/ruby-jmeter/dsl/ldap_request.rb +35 -0
  95. data/lib/ruby-jmeter/dsl/ldap_request_defaults.rb +40 -0
  96. data/lib/ruby-jmeter/dsl/login_config_element.rb +26 -0
  97. data/lib/ruby-jmeter/dsl/loop_controller.rb +26 -0
  98. data/lib/ruby-jmeter/dsl/mail_reader_sampler.rb +37 -0
  99. data/lib/ruby-jmeter/dsl/mailer_visualizer.rb +64 -0
  100. data/lib/ruby-jmeter/dsl/md5hex_assertion.rb +25 -0
  101. data/lib/ruby-jmeter/dsl/module_controller.rb +23 -0
  102. data/lib/ruby-jmeter/dsl/monitor_results.rb +55 -0
  103. data/lib/ruby-jmeter/dsl/once_only_controller.rb +23 -0
  104. data/lib/ruby-jmeter/dsl/os_process_sampler.rb +34 -0
  105. data/lib/ruby-jmeter/dsl/poisson_random_timer.rb +26 -0
  106. data/lib/ruby-jmeter/dsl/random_controller.rb +25 -0
  107. data/lib/ruby-jmeter/dsl/random_order_controller.rb +23 -0
  108. data/lib/ruby-jmeter/dsl/random_variable.rb +30 -0
  109. data/lib/ruby-jmeter/dsl/recording_controller.rb +23 -0
  110. data/lib/ruby-jmeter/dsl/regex_user_parameters.rb +27 -0
  111. data/lib/ruby-jmeter/dsl/regular_expression_extractor.rb +31 -0
  112. data/lib/ruby-jmeter/dsl/response_assertion.rb +31 -0
  113. data/lib/ruby-jmeter/dsl/response_time_graph.rb +55 -0
  114. data/lib/ruby-jmeter/dsl/result_status_action_handler.rb +25 -0
  115. data/lib/ruby-jmeter/dsl/runtime_controller.rb +25 -0
  116. data/lib/ruby-jmeter/dsl/save_responses_to_a_file.rb +29 -0
  117. data/lib/ruby-jmeter/dsl/simple_config_element.rb +23 -0
  118. data/lib/ruby-jmeter/dsl/simple_controller.rb +23 -0
  119. data/lib/ruby-jmeter/dsl/simple_data_writer.rb +55 -0
  120. data/lib/ruby-jmeter/dsl/smime_assertion.rb +35 -0
  121. data/lib/ruby-jmeter/dsl/smtp_sampler.rb +51 -0
  122. data/lib/ruby-jmeter/dsl/soapxmlrpc_request.rb +33 -0
  123. data/lib/ruby-jmeter/dsl/spline_visualizer.rb +55 -0
  124. data/lib/ruby-jmeter/dsl/summary_report.rb +55 -0
  125. data/lib/ruby-jmeter/dsl/switch_controller.rb +25 -0
  126. data/lib/ruby-jmeter/dsl/synchronizing_timer.rb +25 -0
  127. data/lib/ruby-jmeter/dsl/tcp_sampler.rb +33 -0
  128. data/lib/ruby-jmeter/dsl/tcp_sampler_config.rb +31 -0
  129. data/lib/ruby-jmeter/dsl/test_action.rb +27 -0
  130. data/lib/ruby-jmeter/dsl/test_plan.rb +31 -0
  131. data/lib/ruby-jmeter/dsl/thread_group.rb +36 -0
  132. data/lib/ruby-jmeter/dsl/throughput_controller.rb +32 -0
  133. data/lib/ruby-jmeter/dsl/transaction_controller.rb +26 -0
  134. data/lib/ruby-jmeter/dsl/uniform_random_timer.rb +26 -0
  135. data/lib/ruby-jmeter/dsl/user_defined_variables.rb +32 -0
  136. data/lib/ruby-jmeter/dsl/user_parameters.rb +29 -0
  137. data/lib/ruby-jmeter/dsl/view_results_in_table.rb +55 -0
  138. data/lib/ruby-jmeter/dsl/view_results_tree.rb +55 -0
  139. data/lib/ruby-jmeter/dsl/while_controller.rb +25 -0
  140. data/lib/ruby-jmeter/dsl/xml_assertion.rb +23 -0
  141. data/lib/ruby-jmeter/dsl/xml_schema_assertion.rb +25 -0
  142. data/lib/ruby-jmeter/dsl/xpath_assertion.rb +30 -0
  143. data/lib/ruby-jmeter/dsl/xpath_extractor.rb +30 -0
  144. data/lib/ruby-jmeter/helpers/fallback_content_proxy.rb +54 -0
  145. data/lib/ruby-jmeter/helpers/helper.rb +41 -0
  146. data/lib/ruby-jmeter/helpers/jmeter.properties +28 -0
  147. data/lib/ruby-jmeter/helpers/logger-colors.rb +48 -0
  148. data/lib/ruby-jmeter/helpers/parser.rb +106 -0
  149. data/lib/ruby-jmeter/helpers/strip-heredoc.rb +5 -0
  150. data/lib/ruby-jmeter/helpers/user-agents.rb +27 -0
  151. data/lib/ruby-jmeter/idl.rb +70 -0
  152. data/lib/ruby-jmeter/idl.xml +1513 -0
  153. data/lib/ruby-jmeter/plugins/gc_console_status_logger.rb +14 -0
  154. data/lib/ruby-jmeter/plugins/gc_dummy_sampler.rb +23 -0
  155. data/lib/ruby-jmeter/plugins/gc_latencies_over_time.rb +48 -0
  156. data/lib/ruby-jmeter/plugins/gc_response_codes_per_second.rb +48 -0
  157. data/lib/ruby-jmeter/plugins/gc_response_times_distribution.rb +47 -0
  158. data/lib/ruby-jmeter/plugins/gc_response_times_over_time.rb +48 -0
  159. data/lib/ruby-jmeter/plugins/gc_response_times_percentiles.rb +48 -0
  160. data/lib/ruby-jmeter/plugins/gc_transactions_per_second.rb +48 -0
  161. data/lib/ruby-jmeter/plugins/gc_variable_throughput_timer.rb +26 -0
  162. data/lib/ruby-jmeter/version.rb +3 -0
  163. data/ruby-jmeter.gemspec +22 -0
  164. data/spec/dsl_spec.rb +491 -0
  165. data/spec/spec_helper.rb +10 -0
  166. data/spec/stub.rb +31 -0
  167. metadata +244 -0
@@ -0,0 +1,28 @@
1
+ jmeter.save.saveservice.output_format=csv
2
+ jmeter.save.saveservice.data_type=false
3
+ jmeter.save.saveservice.label=true
4
+ jmeter.save.saveservice.response_code=true
5
+ jmeter.save.saveservice.response_data=false
6
+ jmeter.save.saveservice.response_data.on_error=false
7
+ jmeter.save.saveservice.response_message=false
8
+ jmeter.save.saveservice.successful=true
9
+ jmeter.save.saveservice.thread_name=true
10
+ jmeter.save.saveservice.time=true
11
+ jmeter.save.saveservice.subresults=false
12
+ jmeter.save.saveservice.assertions=false
13
+ jmeter.save.saveservice.latency=true
14
+ jmeter.save.saveservice.samplerData=false
15
+ jmeter.save.saveservice.responseHeaders=false
16
+ jmeter.save.saveservice.requestHeaders=false
17
+ jmeter.save.saveservice.encoding=false
18
+ jmeter.save.saveservice.bytes=true
19
+ jmeter.save.saveservice.url=false
20
+ jmeter.save.saveservice.filename=false
21
+ jmeter.save.saveservice.hostname=false
22
+ jmeter.save.saveservice.thread_counts=true
23
+ jmeter.save.saveservice.sample_count=true
24
+ jmeter.save.saveservice.idle_time=false
25
+ jmeter.save.saveservice.timestamp_format=ms
26
+ jmeter.save.saveservice.default_delimiter=|
27
+ jmeter.save.saveservice.print_field_names=false
28
+ sample_variables=testguid
@@ -0,0 +1,48 @@
1
+ require 'logger'
2
+
3
+ class Logger
4
+ module Colors
5
+ VERSION = '1.0.0'
6
+
7
+ NOTHING = '0;0'
8
+ BLACK = '0;30'
9
+ RED = '0;31'
10
+ GREEN = '0;32'
11
+ BROWN = '0;33'
12
+ BLUE = '0;34'
13
+ PURPLE = '0;35'
14
+ CYAN = '0;36'
15
+ LIGHT_GRAY = '0;37'
16
+ DARK_GRAY = '1;30'
17
+ LIGHT_RED = '1;31'
18
+ LIGHT_GREEN = '1;32'
19
+ YELLOW = '1;33'
20
+ LIGHT_BLUE = '1;34'
21
+ LIGHT_PURPLE = '1;35'
22
+ LIGHT_CYAN = '1;36'
23
+ WHITE = '1;37'
24
+
25
+ SCHEMA = {
26
+ STDOUT => %w[nothing green brown red purple cyan],
27
+ STDERR => %w[nothing green yellow light_red light_purple light_cyan],
28
+ }
29
+ end
30
+ end
31
+
32
+ class Logger
33
+ alias format_message_colorless format_message
34
+
35
+ def format_message(level, *args)
36
+ if Logger::Colors::SCHEMA[@logdev.dev]
37
+ color = begin
38
+ Logger::Colors.const_get \
39
+ Logger::Colors::SCHEMA[@logdev.dev][Logger.const_get(level.sub "ANY","UNKNOWN")].to_s.upcase
40
+ rescue NameError
41
+ "0;0"
42
+ end
43
+ "\e[#{ color }m#{ format_message_colorless(level, *args) }\e[0;0m"
44
+ else
45
+ format_message_colorless(level, *args)
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,106 @@
1
+ module RubyJmeter
2
+ module Parser
3
+
4
+ def parse_http_request(params)
5
+ parse_url(params) unless params[:url].empty?
6
+
7
+ if params[:raw_path]
8
+ params[:path] = params[:url]
9
+ else
10
+ params[:fill_in] ||= {}
11
+ params[:params] && params[:params].split('&').each do |param|
12
+ name,value = param.split('=')
13
+ params[:fill_in][name] = value
14
+ end
15
+ end
16
+
17
+ fill_in(params) if params.has_key?(:fill_in)
18
+ raw_body(params) if params.has_key?(:raw_body)
19
+ end
20
+
21
+ def parse_url(params)
22
+ if params[:url] =~ /https?:\/\/\$/ || params[:url][0] == '$'
23
+ params[:path] = params[:url] # special case for named expressions
24
+ else
25
+ uri = parse_uri(params[:url])
26
+ params[:port] ||= uri.port unless URI.parse(URI::encode(params[:url])).scheme.nil?
27
+ params[:protocol] ||= uri.scheme unless URI.parse(URI::encode(params[:url])).scheme.nil?
28
+ params[:domain] ||= uri.host
29
+ params[:path] ||= uri.path && URI::decode(uri.path)
30
+ params[:params] ||= uri.query && URI::decode(uri.query)
31
+ end
32
+ params.delete(:url)
33
+ end
34
+
35
+ def parse_uri(uri)
36
+ URI.parse(URI::encode(uri)).scheme.nil? ?
37
+ URI.parse(URI::encode("http://#{uri}")) :
38
+ URI.parse(URI::encode(uri))
39
+ end
40
+
41
+ def fill_in(params)
42
+ params[:update_at_xpath] ||= []
43
+ params[:update_at_xpath] += params[:fill_in].collect do |name, value|
44
+ {
45
+ :xpath => '//collectionProp',
46
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
47
+ <elementProp name="#{name}" elementType="HTTPArgument">
48
+ <boolProp name="HTTPArgument.always_encode">#{params[:always_encode] ? 'true' : false}</boolProp>
49
+ <stringProp name="Argument.value">#{value}</stringProp>
50
+ <stringProp name="Argument.metadata">=</stringProp>
51
+ <boolProp name="HTTPArgument.use_equals">true</boolProp>
52
+ <stringProp name="Argument.name">#{name}</stringProp>
53
+ </elementProp>
54
+ EOF
55
+ }
56
+ end
57
+ params.delete(:fill_in)
58
+ end
59
+
60
+ def raw_body(params)
61
+ params[:update_at_xpath] ||= []
62
+ params[:update_at_xpath] << {
63
+ :xpath => '//HTTPSamplerProxy',
64
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
65
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
66
+ EOF
67
+ }
68
+
69
+ params[:update_at_xpath] << {
70
+ :xpath => '//collectionProp',
71
+ :value => Nokogiri::XML(<<-EOF.strip_heredoc).children
72
+ <elementProp name="" elementType="HTTPArgument">
73
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
74
+ <stringProp name="Argument.value">#{params[:raw_body]}</stringProp>
75
+ <stringProp name="Argument.metadata">=</stringProp>
76
+ </elementProp>
77
+ EOF
78
+ }
79
+ params.delete(:raw_body)
80
+ end
81
+
82
+ def parse_test_type(params)
83
+ case params.keys.first
84
+ when 'contains'
85
+ 2
86
+ when 'not-contains'
87
+ 6
88
+ when 'matches'
89
+ 1
90
+ when 'not-matches'
91
+ 5
92
+ when 'equals'
93
+ 8
94
+ when 'not-equals'
95
+ 12
96
+ when 'substring'
97
+ 16
98
+ when 'not-substring'
99
+ 20
100
+ else
101
+ 2
102
+ end
103
+ end
104
+
105
+ end
106
+ end
@@ -0,0 +1,5 @@
1
+ class String
2
+ def strip_heredoc
3
+ gsub /^#{self[/\A\s*/]}/, ''
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ module RubyJmeter
2
+ class UserAgent
3
+ def initialize(device)
4
+ @common_devices = {
5
+ :iphone => 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3',
6
+ :ipod => 'Mozilla/5.0 (iPod; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3',
7
+ :ipad => 'Mozilla/5.0 (iPad; CPU OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B176 Safari/7534.48.3',
8
+ :safari_osx => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.25 (KHTML, like Gecko) Version/6.0 Safari/536.25',
9
+ :safari_win => 'Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/534.57.2 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2',
10
+ :ie7 => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)',
11
+ :ie8 => 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)',
12
+ :ie9 => 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)',
13
+ :chrome_osx => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5',
14
+ :chrome_win => 'Mozilla/5.0 (Windows; Windows NT 6.1) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5',
15
+ :ff_osx => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.7; rv:11.0) Gecko/20100101 Firefox/11.0',
16
+ :ff_win => 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0',
17
+ :opera_osx => 'Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.62',
18
+ :opera_win => 'Opera/9.80 (Windows NT 6.1; U; en) Presto/2.10.229 Version/11.62'
19
+ }
20
+ @device = device
21
+ end
22
+
23
+ def string
24
+ @common_devices[@device] || @common_devices[:chrome_osx]
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+ # This is an IDL script to translate a JMeter testplan into Ruby DSL objects
3
+ require 'nokogiri'
4
+ require 'pathname'
5
+
6
+ home = Pathname("..").expand_path(__FILE__)
7
+ dsl = File.join(home, "/dsl")
8
+
9
+ file = File.open File.join(home, "idl.xml")
10
+ doc = Nokogiri::XML file.read.gsub! /\n\s+/, ''
11
+ nodes = doc.xpath '//jmeterTestPlan/hashTree'
12
+
13
+ class String
14
+ def classify
15
+ return self if self !~ / / && self =~ /[A-Z]+.*/
16
+ split(' ').map{|e| e.capitalize}.join.gsub /[\(\)-\/\.]/, ''
17
+ end
18
+
19
+ def underscore
20
+ self.gsub(/::/, '/').
21
+ gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
22
+ gsub(/([a-z\d])([A-Z])/,'\1_\2').
23
+ tr("-", "_").
24
+ downcase
25
+ end
26
+ end
27
+
28
+ results = []
29
+ doc.traverse do |node|
30
+ results << node if node.class !=
31
+ Nokogiri::XML::Document &&
32
+ node.attributes['testclass'] &&
33
+ node.name != 'elementProp'
34
+ end
35
+
36
+ methods = []
37
+ methods << "# RubyJmeter::DSL methods"
38
+ results.each do |element|
39
+ klass = element.attributes['testname'].to_s.classify
40
+ methods << "- #{element.attributes['testname'].to_s}\n `#{klass.underscore}`"
41
+ Dir.mkdir(dsl, 0700) unless Dir.exist? dsl
42
+ File.open("#{dsl}/#{klass.underscore}.rb", 'w') { |file| file.write(<<EOC)
43
+ module RubyJmeter
44
+ class DSL
45
+ def #{klass.underscore}(params={}, &block)
46
+ node = RubyJmeter::#{klass}.new(params)
47
+ attach_node(node, &block)
48
+ end
49
+ end
50
+
51
+ class #{klass}
52
+ attr_accessor :doc
53
+ include Helper
54
+
55
+ def initialize(params={})
56
+ params[:name] ||= '#{klass}'
57
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
58
+ #{element.to_xml.gsub /testname=".+?"/, 'testname="#{params[:name]}"'})
59
+ EOS
60
+ update params
61
+ update_at_xpath params if params[:update_at_xpath]
62
+ end
63
+ end
64
+
65
+ end
66
+ EOC
67
+ }
68
+ end
69
+
70
+ File.open("#{home}/DSL.md", 'w') { |file| file.write methods.join("\n") }
@@ -0,0 +1,1513 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <jmeterTestPlan version="1.2" properties="2.4" jmeter="2.9 r1437961">
3
+ <hashTree>
4
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
5
+ <stringProp name="TestPlan.comments"></stringProp>
6
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
7
+ <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
8
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
9
+ <collectionProp name="Arguments.arguments"/>
10
+ </elementProp>
11
+ <stringProp name="TestPlan.user_define_classpath"></stringProp>
12
+ </TestPlan>
13
+ <hashTree>
14
+ <CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="Counter" enabled="true">
15
+ <stringProp name="CounterConfig.start"></stringProp>
16
+ <stringProp name="CounterConfig.end"></stringProp>
17
+ <stringProp name="CounterConfig.incr"></stringProp>
18
+ <stringProp name="CounterConfig.name"></stringProp>
19
+ <stringProp name="CounterConfig.format"></stringProp>
20
+ <boolProp name="CounterConfig.per_user">true</boolProp>
21
+ <boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
22
+ </CounterConfig>
23
+ <hashTree/>
24
+ <CSVDataSet guiclass="TestBeanGUI" testclass="CSVDataSet" testname="CSV Data Set Config" enabled="true">
25
+ <stringProp name="delimiter">,</stringProp>
26
+ <stringProp name="fileEncoding"></stringProp>
27
+ <stringProp name="filename"></stringProp>
28
+ <boolProp name="quotedData">false</boolProp>
29
+ <boolProp name="recycle">true</boolProp>
30
+ <stringProp name="shareMode">All threads</stringProp>
31
+ <boolProp name="stopThread">false</boolProp>
32
+ <stringProp name="variableNames"></stringProp>
33
+ </CSVDataSet>
34
+ <hashTree/>
35
+ <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="FTP Request Defaults" enabled="true">
36
+ <stringProp name="FTPSampler.server"></stringProp>
37
+ <stringProp name="FTPSampler.port"></stringProp>
38
+ <stringProp name="FTPSampler.filename"></stringProp>
39
+ <stringProp name="FTPSampler.localfilename"></stringProp>
40
+ <stringProp name="FTPSampler.inputdata"></stringProp>
41
+ <boolProp name="FTPSampler.binarymode">false</boolProp>
42
+ <boolProp name="FTPSampler.saveresponse">false</boolProp>
43
+ <boolProp name="FTPSampler.upload">false</boolProp>
44
+ </ConfigTestElement>
45
+ <hashTree/>
46
+ <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
47
+ <collectionProp name="AuthManager.auth_list">
48
+ <elementProp name="" elementType="Authorization">
49
+ <stringProp name="Authorization.url"></stringProp>
50
+ <stringProp name="Authorization.username"></stringProp>
51
+ <stringProp name="Authorization.password"></stringProp>
52
+ <stringProp name="Authorization.domain"></stringProp>
53
+ <stringProp name="Authorization.realm"></stringProp>
54
+ </elementProp>
55
+ </collectionProp>
56
+ </AuthManager>
57
+ <hashTree/>
58
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
59
+ <boolProp name="clearEachIteration">false</boolProp>
60
+ <boolProp name="useExpires">false</boolProp>
61
+ </CacheManager>
62
+ <hashTree/>
63
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
64
+ <collectionProp name="CookieManager.cookies"/>
65
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
66
+ <stringProp name="CookieManager.policy">default</stringProp>
67
+ </CookieManager>
68
+ <hashTree/>
69
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
70
+ <collectionProp name="HeaderManager.headers">
71
+ <elementProp name="" elementType="Header">
72
+ <stringProp name="Header.name"></stringProp>
73
+ <stringProp name="Header.value"></stringProp>
74
+ </elementProp>
75
+ </collectionProp>
76
+ </HeaderManager>
77
+ <hashTree/>
78
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
79
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
80
+ <collectionProp name="Arguments.arguments"/>
81
+ </elementProp>
82
+ <stringProp name="HTTPSampler.domain"></stringProp>
83
+ <stringProp name="HTTPSampler.port"></stringProp>
84
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
85
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
86
+ <stringProp name="HTTPSampler.protocol"></stringProp>
87
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
88
+ <stringProp name="HTTPSampler.path">/</stringProp>
89
+ <stringProp name="HTTPSampler.method">GET</stringProp>
90
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
91
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
92
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
93
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
94
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
95
+ <boolProp name="HTTPSampler.image_parser">false</boolProp>
96
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
97
+ <boolProp name="HTTPSampler.concurrentDwn">false</boolProp>
98
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
99
+ </ConfigTestElement>
100
+ <hashTree/>
101
+ <JavaConfig guiclass="JavaConfigGui" testclass="JavaConfig" testname="Java Request Defaults" enabled="true">
102
+ <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
103
+ <collectionProp name="Arguments.arguments">
104
+ <elementProp name="Sleep_Time" elementType="Argument">
105
+ <stringProp name="Argument.name">Sleep_Time</stringProp>
106
+ <stringProp name="Argument.value">100</stringProp>
107
+ <stringProp name="Argument.metadata">=</stringProp>
108
+ </elementProp>
109
+ <elementProp name="Sleep_Mask" elementType="Argument">
110
+ <stringProp name="Argument.name">Sleep_Mask</stringProp>
111
+ <stringProp name="Argument.value">0xFF</stringProp>
112
+ <stringProp name="Argument.metadata">=</stringProp>
113
+ </elementProp>
114
+ <elementProp name="Label" elementType="Argument">
115
+ <stringProp name="Argument.name">Label</stringProp>
116
+ <stringProp name="Argument.value"></stringProp>
117
+ <stringProp name="Argument.metadata">=</stringProp>
118
+ </elementProp>
119
+ <elementProp name="ResponseCode" elementType="Argument">
120
+ <stringProp name="Argument.name">ResponseCode</stringProp>
121
+ <stringProp name="Argument.value"></stringProp>
122
+ <stringProp name="Argument.metadata">=</stringProp>
123
+ </elementProp>
124
+ <elementProp name="ResponseMessage" elementType="Argument">
125
+ <stringProp name="Argument.name">ResponseMessage</stringProp>
126
+ <stringProp name="Argument.value"></stringProp>
127
+ <stringProp name="Argument.metadata">=</stringProp>
128
+ </elementProp>
129
+ <elementProp name="Status" elementType="Argument">
130
+ <stringProp name="Argument.name">Status</stringProp>
131
+ <stringProp name="Argument.value">OK</stringProp>
132
+ <stringProp name="Argument.metadata">=</stringProp>
133
+ </elementProp>
134
+ <elementProp name="SamplerData" elementType="Argument">
135
+ <stringProp name="Argument.name">SamplerData</stringProp>
136
+ <stringProp name="Argument.value"></stringProp>
137
+ <stringProp name="Argument.metadata">=</stringProp>
138
+ </elementProp>
139
+ <elementProp name="ResultData" elementType="Argument">
140
+ <stringProp name="Argument.name">ResultData</stringProp>
141
+ <stringProp name="Argument.value"></stringProp>
142
+ <stringProp name="Argument.metadata">=</stringProp>
143
+ </elementProp>
144
+ </collectionProp>
145
+ </elementProp>
146
+ <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
147
+ </JavaConfig>
148
+ <hashTree/>
149
+ <JDBCDataSource guiclass="TestBeanGUI" testclass="JDBCDataSource" testname="JDBC Connection Configuration" enabled="true">
150
+ <boolProp name="autocommit">true</boolProp>
151
+ <stringProp name="checkQuery">Select 1</stringProp>
152
+ <stringProp name="connectionAge">5000</stringProp>
153
+ <stringProp name="dataSource"></stringProp>
154
+ <stringProp name="dbUrl"></stringProp>
155
+ <stringProp name="driver"></stringProp>
156
+ <boolProp name="keepAlive">true</boolProp>
157
+ <stringProp name="password"></stringProp>
158
+ <stringProp name="poolMax">10</stringProp>
159
+ <stringProp name="timeout">10000</stringProp>
160
+ <stringProp name="transactionIsolation">DEFAULT</stringProp>
161
+ <stringProp name="trimInterval">60000</stringProp>
162
+ <stringProp name="username"></stringProp>
163
+ </JDBCDataSource>
164
+ <hashTree/>
165
+ <KeystoreConfig guiclass="TestBeanGUI" testclass="KeystoreConfig" testname="Keystore Configuration" enabled="true">
166
+ <stringProp name="endIndex"></stringProp>
167
+ <stringProp name="preload">True</stringProp>
168
+ <stringProp name="startIndex"></stringProp>
169
+ </KeystoreConfig>
170
+ <hashTree/>
171
+ <ConfigTestElement guiclass="LdapExtConfigGui" testclass="ConfigTestElement" testname="LDAP Extended Request Defaults" enabled="true">
172
+ <stringProp name="servername"></stringProp>
173
+ <stringProp name="port"></stringProp>
174
+ <stringProp name="rootdn"></stringProp>
175
+ <stringProp name="scope">2</stringProp>
176
+ <stringProp name="countlimit"></stringProp>
177
+ <stringProp name="timelimit"></stringProp>
178
+ <stringProp name="attributes"></stringProp>
179
+ <stringProp name="return_object">false</stringProp>
180
+ <stringProp name="deref_aliases">false</stringProp>
181
+ <stringProp name="connection_timeout"></stringProp>
182
+ <stringProp name="parseflag">false</stringProp>
183
+ <stringProp name="secure">false</stringProp>
184
+ <stringProp name="user_dn"></stringProp>
185
+ <stringProp name="user_pw"></stringProp>
186
+ <stringProp name="comparedn"></stringProp>
187
+ <stringProp name="comparefilt"></stringProp>
188
+ <stringProp name="modddn"></stringProp>
189
+ <stringProp name="newdn"></stringProp>
190
+ </ConfigTestElement>
191
+ <hashTree/>
192
+ <ConfigTestElement guiclass="LdapConfigGui" testclass="ConfigTestElement" testname="LDAP Request Defaults" enabled="true">
193
+ <stringProp name="servername"></stringProp>
194
+ <stringProp name="port"></stringProp>
195
+ <stringProp name="rootdn"></stringProp>
196
+ <boolProp name="user_defined">false</boolProp>
197
+ <stringProp name="test">add</stringProp>
198
+ <stringProp name="base_entry_dn"></stringProp>
199
+ <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
200
+ <collectionProp name="Arguments.arguments">
201
+ <elementProp name="testguid" elementType="Argument">
202
+ <stringProp name="Argument.name"></stringProp>
203
+ <stringProp name="Argument.value"></stringProp>
204
+ <stringProp name="Argument.metadata">=</stringProp>
205
+ </elementProp>
206
+ </collectionProp>
207
+ <stringProp name="TestPlan.comments"></stringProp>
208
+ </elementProp>
209
+ </ConfigTestElement>
210
+ <hashTree/>
211
+ <ConfigTestElement guiclass="LoginConfigGui" testclass="ConfigTestElement" testname="Login Config Element" enabled="true">
212
+ <stringProp name="ConfigTestElement.username"></stringProp>
213
+ <stringProp name="ConfigTestElement.password"></stringProp>
214
+ </ConfigTestElement>
215
+ <hashTree/>
216
+ <RandomVariableConfig guiclass="TestBeanGUI" testclass="RandomVariableConfig" testname="Random Variable" enabled="true">
217
+ <stringProp name="maximumValue"></stringProp>
218
+ <stringProp name="minimumValue">1</stringProp>
219
+ <stringProp name="outputFormat"></stringProp>
220
+ <boolProp name="perThread">false</boolProp>
221
+ <stringProp name="randomSeed"></stringProp>
222
+ <stringProp name="variableName"></stringProp>
223
+ </RandomVariableConfig>
224
+ <hashTree/>
225
+ <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="Simple Config Element" enabled="true"/>
226
+ <hashTree/>
227
+ <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="TCP Sampler Config" enabled="true">
228
+ <stringProp name="TCPSampler.server"></stringProp>
229
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
230
+ <stringProp name="TCPSampler.port"></stringProp>
231
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
232
+ <stringProp name="TCPSampler.timeout"></stringProp>
233
+ <stringProp name="TCPSampler.request"></stringProp>
234
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
235
+ </ConfigTestElement>
236
+ <hashTree/>
237
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
238
+ <collectionProp name="Arguments.arguments">
239
+ <elementProp name="testguid" elementType="Argument">
240
+ <stringProp name="Argument.name"></stringProp>
241
+ <stringProp name="Argument.value"></stringProp>
242
+ <stringProp name="Argument.metadata">=</stringProp>
243
+ </elementProp>
244
+ </collectionProp>
245
+ <stringProp name="TestPlan.comments"></stringProp>
246
+ </Arguments>
247
+ <hashTree/>
248
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
249
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
250
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
251
+ <boolProp name="LoopController.continue_forever">false</boolProp>
252
+ <stringProp name="LoopController.loops">1</stringProp>
253
+ </elementProp>
254
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
255
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
256
+ <longProp name="ThreadGroup.start_time">1366415241000</longProp>
257
+ <longProp name="ThreadGroup.end_time">1366415241000</longProp>
258
+ <boolProp name="ThreadGroup.scheduler">false</boolProp>
259
+ <stringProp name="ThreadGroup.duration"></stringProp>
260
+ <stringProp name="ThreadGroup.delay"></stringProp>
261
+ </ThreadGroup>
262
+ <hashTree>
263
+ <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="ForEach Controller" enabled="true">
264
+ <stringProp name="ForeachController.inputVal"></stringProp>
265
+ <stringProp name="ForeachController.returnVal"></stringProp>
266
+ <boolProp name="ForeachController.useSeparator">true</boolProp>
267
+ <stringProp name="ForeachController.endIndex"></stringProp>
268
+ <stringProp name="ForeachController.startIndex"></stringProp>
269
+ </ForeachController>
270
+ <hashTree/>
271
+ <IfController guiclass="IfControllerPanel" testclass="IfController" testname="If Controller" enabled="true">
272
+ <stringProp name="IfController.condition"></stringProp>
273
+ <boolProp name="IfController.evaluateAll">false</boolProp>
274
+ <boolProp name="IfController.useExpression">false</boolProp>
275
+ </IfController>
276
+ <hashTree/>
277
+ <IncludeController guiclass="IncludeControllerGui" testclass="IncludeController" testname="Include Controller" enabled="true">
278
+ <stringProp name="IncludeController.includepath"></stringProp>
279
+ </IncludeController>
280
+ <hashTree/>
281
+ <LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
282
+ <boolProp name="LoopController.continue_forever">true</boolProp>
283
+ <stringProp name="LoopController.loops">1</stringProp>
284
+ </LoopController>
285
+ <hashTree/>
286
+ <ModuleController guiclass="ModuleControllerGui" testclass="ModuleController" testname="Module Controller" enabled="true"/>
287
+ <hashTree/>
288
+ <OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="Once Only Controller" enabled="true"/>
289
+ <hashTree/>
290
+ <RandomController guiclass="RandomControlGui" testclass="RandomController" testname="Random Controller" enabled="true">
291
+ <intProp name="InterleaveControl.style">1</intProp>
292
+ </RandomController>
293
+ <hashTree/>
294
+ <RandomOrderController guiclass="RandomOrderControllerGui" testclass="RandomOrderController" testname="Random Order Controller" enabled="true"/>
295
+ <hashTree/>
296
+ <RecordingController guiclass="RecordController" testclass="RecordingController" testname="Recording Controller" enabled="true"/>
297
+ <hashTree/>
298
+ <RunTime guiclass="RunTimeGui" testclass="RunTime" testname="Runtime Controller" enabled="true">
299
+ <stringProp name="RunTime.seconds">1</stringProp>
300
+ </RunTime>
301
+ <hashTree/>
302
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="Simple Controller" enabled="true"/>
303
+ <hashTree/>
304
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="Switch Controller" enabled="true">
305
+ <stringProp name="SwitchController.value"></stringProp>
306
+ </SwitchController>
307
+ <hashTree/>
308
+ <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="Throughput Controller" enabled="true">
309
+ <intProp name="ThroughputController.style">0</intProp>
310
+ <boolProp name="ThroughputController.perThread">false</boolProp>
311
+ <intProp name="ThroughputController.maxThroughput">1</intProp>
312
+ <FloatProperty>
313
+ <name>ThroughputController.percentThroughput</name>
314
+ <value>100.0</value>
315
+ <savedValue>0.0</savedValue>
316
+ </FloatProperty>
317
+ </ThroughputController>
318
+ <hashTree/>
319
+ <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="Transaction Controller" enabled="true">
320
+ <boolProp name="TransactionController.parent">true</boolProp>
321
+ <boolProp name="TransactionController.includeTimers">false</boolProp>
322
+ </TransactionController>
323
+ <hashTree/>
324
+ <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="While Controller" enabled="true">
325
+ <stringProp name="WhileController.condition"></stringProp>
326
+ </WhileController>
327
+ <hashTree/>
328
+ <BeanShellTimer guiclass="TestBeanGUI" testclass="BeanShellTimer" testname="BeanShell Timer" enabled="true">
329
+ <stringProp name="filename"></stringProp>
330
+ <stringProp name="parameters"></stringProp>
331
+ <boolProp name="resetInterpreter">false</boolProp>
332
+ <stringProp name="script"></stringProp>
333
+ </BeanShellTimer>
334
+ <hashTree/>
335
+ <BSFTimer guiclass="TestBeanGUI" testclass="BSFTimer" testname="BSF Timer" enabled="true">
336
+ <stringProp name="filename"></stringProp>
337
+ <stringProp name="parameters"></stringProp>
338
+ <stringProp name="script"></stringProp>
339
+ <stringProp name="scriptLanguage"></stringProp>
340
+ </BSFTimer>
341
+ <hashTree/>
342
+ <ConstantThroughputTimer guiclass="TestBeanGUI" testclass="ConstantThroughputTimer" testname="Constant Throughput Timer" enabled="true">
343
+ <stringProp name="calcMode">this thread only</stringProp>
344
+ <doubleProp>
345
+ <name>throughput</name>
346
+ <value>0.0</value>
347
+ <savedValue>0.0</savedValue>
348
+ </doubleProp>
349
+ </ConstantThroughputTimer>
350
+ <hashTree/>
351
+ <ConstantTimer guiclass="ConstantTimerGui" testclass="ConstantTimer" testname="Constant Timer" enabled="true">
352
+ <stringProp name="ConstantTimer.delay">300</stringProp>
353
+ </ConstantTimer>
354
+ <hashTree/>
355
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="Gaussian Random Timer" enabled="true">
356
+ <stringProp name="ConstantTimer.delay">300</stringProp>
357
+ <stringProp name="RandomTimer.range">100.0</stringProp>
358
+ </GaussianRandomTimer>
359
+ <hashTree/>
360
+ <JSR223Timer guiclass="TestBeanGUI" testclass="JSR223Timer" testname="JSR223 Timer" enabled="true">
361
+ <stringProp name="cacheKey"></stringProp>
362
+ <stringProp name="filename"></stringProp>
363
+ <stringProp name="parameters"></stringProp>
364
+ <stringProp name="script"></stringProp>
365
+ <stringProp name="scriptLanguage"></stringProp>
366
+ </JSR223Timer>
367
+ <hashTree/>
368
+ <PoissonRandomTimer guiclass="PoissonRandomTimerGui" testclass="PoissonRandomTimer" testname="Poisson Random Timer" enabled="true">
369
+ <stringProp name="ConstantTimer.delay">300</stringProp>
370
+ <stringProp name="RandomTimer.range">100</stringProp>
371
+ </PoissonRandomTimer>
372
+ <hashTree/>
373
+ <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="Synchronizing Timer" enabled="true">
374
+ <intProp name="groupSize">0</intProp>
375
+ </SyncTimer>
376
+ <hashTree/>
377
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="Uniform Random Timer" enabled="true">
378
+ <stringProp name="ConstantTimer.delay">0</stringProp>
379
+ <stringProp name="RandomTimer.range">100.0</stringProp>
380
+ </UniformRandomTimer>
381
+ <hashTree/>
382
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="BeanShell PreProcessor" enabled="true">
383
+ <stringProp name="filename"></stringProp>
384
+ <stringProp name="parameters"></stringProp>
385
+ <boolProp name="resetInterpreter">false</boolProp>
386
+ <stringProp name="script"></stringProp>
387
+ </BeanShellPreProcessor>
388
+ <hashTree/>
389
+ <BSFPreProcessor guiclass="TestBeanGUI" testclass="BSFPreProcessor" testname="BSF PreProcessor" enabled="true">
390
+ <stringProp name="filename"></stringProp>
391
+ <stringProp name="parameters"></stringProp>
392
+ <stringProp name="script"></stringProp>
393
+ <stringProp name="scriptLanguage"></stringProp>
394
+ </BSFPreProcessor>
395
+ <hashTree/>
396
+ <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="HTML Link Parser" enabled="true"/>
397
+ <hashTree/>
398
+ <ParamModifier guiclass="ParamModifierGui" testclass="ParamModifier" testname="HTML Parameter Mask" enabled="true">
399
+ <elementProp name="ParamModifier.mask" elementType="ParamMask">
400
+ <stringProp name="ParamModifier.field_name"></stringProp>
401
+ <stringProp name="ParamModifier.prefix"></stringProp>
402
+ <longProp name="ParamModifier.lower_bound">0</longProp>
403
+ <longProp name="ParamModifier.upper_bound">10</longProp>
404
+ <longProp name="ParamModifier.increment">1</longProp>
405
+ <stringProp name="ParamModifier.suffix"></stringProp>
406
+ </elementProp>
407
+ </ParamModifier>
408
+ <hashTree/>
409
+ <URLRewritingModifier guiclass="URLRewritingModifierGui" testclass="URLRewritingModifier" testname="HTTP URL Re-writing Modifier" enabled="true">
410
+ <stringProp name="argument_name"></stringProp>
411
+ <boolProp name="path_extension">false</boolProp>
412
+ <boolProp name="path_extension_no_equals">false</boolProp>
413
+ <boolProp name="path_extension_no_questionmark">false</boolProp>
414
+ <boolProp name="cache_value">false</boolProp>
415
+ </URLRewritingModifier>
416
+ <hashTree/>
417
+ <JDBCPreProcessor guiclass="TestBeanGUI" testclass="JDBCPreProcessor" testname="JDBC PreProcessor" enabled="true">
418
+ <stringProp name="dataSource"></stringProp>
419
+ <stringProp name="query"></stringProp>
420
+ <stringProp name="queryArguments"></stringProp>
421
+ <stringProp name="queryArgumentsTypes"></stringProp>
422
+ <stringProp name="queryType">Select Statement</stringProp>
423
+ <stringProp name="resultVariable"></stringProp>
424
+ <stringProp name="variableNames"></stringProp>
425
+ </JDBCPreProcessor>
426
+ <hashTree/>
427
+ <JSR223PreProcessor guiclass="TestBeanGUI" testclass="JSR223PreProcessor" testname="JSR223 PreProcessor" enabled="true">
428
+ <stringProp name="cacheKey"></stringProp>
429
+ <stringProp name="filename"></stringProp>
430
+ <stringProp name="parameters"></stringProp>
431
+ <stringProp name="script"></stringProp>
432
+ <stringProp name="scriptLanguage"></stringProp>
433
+ </JSR223PreProcessor>
434
+ <hashTree/>
435
+ <RegExUserParameters guiclass="RegExUserParametersGui" testclass="RegExUserParameters" testname="RegEx User Parameters" enabled="true">
436
+ <stringProp name="RegExUserParameters.regex_ref_name"></stringProp>
437
+ <stringProp name="RegExUserParameters.param_names_gr_nr"></stringProp>
438
+ <stringProp name="RegExUserParameters.param_values_gr_nr"></stringProp>
439
+ </RegExUserParameters>
440
+ <hashTree/>
441
+ <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="User Parameters" enabled="true">
442
+ <collectionProp name="UserParameters.names"/>
443
+ <collectionProp name="UserParameters.thread_values">
444
+ <collectionProp name="1"/>
445
+ </collectionProp>
446
+ <boolProp name="UserParameters.per_iteration">false</boolProp>
447
+ </UserParameters>
448
+ <hashTree/>
449
+ <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="Access Log Sampler" enabled="true">
450
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
451
+ <collectionProp name="Arguments.arguments"/>
452
+ </elementProp>
453
+ <stringProp name="domain"></stringProp>
454
+ <boolProp name="imageParsing">false</boolProp>
455
+ <stringProp name="logFile"></stringProp>
456
+ <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
457
+ <stringProp name="portString"></stringProp>
458
+ </AccessLogSampler>
459
+ <hashTree/>
460
+ <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" testname="AJP/1.3 Sampler" enabled="true">
461
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
462
+ <collectionProp name="Arguments.arguments"/>
463
+ </elementProp>
464
+ <stringProp name="HTTPSampler.domain"></stringProp>
465
+ <stringProp name="HTTPSampler.port"></stringProp>
466
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
467
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
468
+ <stringProp name="HTTPSampler.protocol"></stringProp>
469
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
470
+ <stringProp name="HTTPSampler.path"></stringProp>
471
+ <stringProp name="HTTPSampler.method">GET</stringProp>
472
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
473
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
474
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
475
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
476
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
477
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
478
+ </AjpSampler>
479
+ <hashTree/>
480
+ <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="BeanShell Sampler" enabled="true">
481
+ <stringProp name="BeanShellSampler.query"></stringProp>
482
+ <stringProp name="BeanShellSampler.filename"></stringProp>
483
+ <stringProp name="BeanShellSampler.parameters"></stringProp>
484
+ <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
485
+ </BeanShellSampler>
486
+ <hashTree/>
487
+ <BSFSampler guiclass="TestBeanGUI" testclass="BSFSampler" testname="BSF Sampler" enabled="true">
488
+ <stringProp name="filename"></stringProp>
489
+ <stringProp name="parameters"></stringProp>
490
+ <stringProp name="script"></stringProp>
491
+ <stringProp name="scriptLanguage"></stringProp>
492
+ </BSFSampler>
493
+ <hashTree/>
494
+ <DebugSampler guiclass="TestBeanGUI" testclass="DebugSampler" testname="Debug Sampler" enabled="true">
495
+ <boolProp name="displayJMeterProperties">false</boolProp>
496
+ <boolProp name="displayJMeterVariables">true</boolProp>
497
+ <boolProp name="displaySystemProperties">false</boolProp>
498
+ </DebugSampler>
499
+ <hashTree/>
500
+ <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="FTP Request" enabled="true">
501
+ <stringProp name="FTPSampler.server"></stringProp>
502
+ <stringProp name="FTPSampler.port"></stringProp>
503
+ <stringProp name="FTPSampler.filename"></stringProp>
504
+ <stringProp name="FTPSampler.localfilename"></stringProp>
505
+ <stringProp name="FTPSampler.inputdata"></stringProp>
506
+ <boolProp name="FTPSampler.binarymode">false</boolProp>
507
+ <boolProp name="FTPSampler.saveresponse">false</boolProp>
508
+ <boolProp name="FTPSampler.upload">false</boolProp>
509
+ <stringProp name="ConfigTestElement.username"></stringProp>
510
+ <stringProp name="ConfigTestElement.password"></stringProp>
511
+ </FTPSampler>
512
+ <hashTree/>
513
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP Request" enabled="true">
514
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
515
+ <collectionProp name="Arguments.arguments"/>
516
+ </elementProp>
517
+ <stringProp name="HTTPSampler.domain"></stringProp>
518
+ <stringProp name="HTTPSampler.port"></stringProp>
519
+ <stringProp name="HTTPSampler.connect_timeout"></stringProp>
520
+ <stringProp name="HTTPSampler.response_timeout"></stringProp>
521
+ <stringProp name="HTTPSampler.protocol"></stringProp>
522
+ <stringProp name="HTTPSampler.contentEncoding"></stringProp>
523
+ <stringProp name="HTTPSampler.path"></stringProp>
524
+ <stringProp name="HTTPSampler.method">GET</stringProp>
525
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
526
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
527
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
528
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
529
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
530
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
531
+ </HTTPSamplerProxy>
532
+ <hashTree/>
533
+ <JavaSampler guiclass="JavaTestSamplerGui" testclass="JavaSampler" testname="Java Request" enabled="true">
534
+ <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" enabled="true">
535
+ <collectionProp name="Arguments.arguments">
536
+ <elementProp name="Sleep_Time" elementType="Argument">
537
+ <stringProp name="Argument.name">Sleep_Time</stringProp>
538
+ <stringProp name="Argument.value">100</stringProp>
539
+ <stringProp name="Argument.metadata">=</stringProp>
540
+ </elementProp>
541
+ <elementProp name="Sleep_Mask" elementType="Argument">
542
+ <stringProp name="Argument.name">Sleep_Mask</stringProp>
543
+ <stringProp name="Argument.value">0xFF</stringProp>
544
+ <stringProp name="Argument.metadata">=</stringProp>
545
+ </elementProp>
546
+ <elementProp name="Label" elementType="Argument">
547
+ <stringProp name="Argument.name">Label</stringProp>
548
+ <stringProp name="Argument.value"></stringProp>
549
+ <stringProp name="Argument.metadata">=</stringProp>
550
+ </elementProp>
551
+ <elementProp name="ResponseCode" elementType="Argument">
552
+ <stringProp name="Argument.name">ResponseCode</stringProp>
553
+ <stringProp name="Argument.value"></stringProp>
554
+ <stringProp name="Argument.metadata">=</stringProp>
555
+ </elementProp>
556
+ <elementProp name="ResponseMessage" elementType="Argument">
557
+ <stringProp name="Argument.name">ResponseMessage</stringProp>
558
+ <stringProp name="Argument.value"></stringProp>
559
+ <stringProp name="Argument.metadata">=</stringProp>
560
+ </elementProp>
561
+ <elementProp name="Status" elementType="Argument">
562
+ <stringProp name="Argument.name">Status</stringProp>
563
+ <stringProp name="Argument.value">OK</stringProp>
564
+ <stringProp name="Argument.metadata">=</stringProp>
565
+ </elementProp>
566
+ <elementProp name="SamplerData" elementType="Argument">
567
+ <stringProp name="Argument.name">SamplerData</stringProp>
568
+ <stringProp name="Argument.value"></stringProp>
569
+ <stringProp name="Argument.metadata">=</stringProp>
570
+ </elementProp>
571
+ <elementProp name="ResultData" elementType="Argument">
572
+ <stringProp name="Argument.name">ResultData</stringProp>
573
+ <stringProp name="Argument.value"></stringProp>
574
+ <stringProp name="Argument.metadata">=</stringProp>
575
+ </elementProp>
576
+ </collectionProp>
577
+ </elementProp>
578
+ <stringProp name="classname">org.apache.jmeter.protocol.java.test.JavaTest</stringProp>
579
+ </JavaSampler>
580
+ <hashTree/>
581
+ <JDBCSampler guiclass="TestBeanGUI" testclass="JDBCSampler" testname="JDBC Request" enabled="true">
582
+ <stringProp name="dataSource"></stringProp>
583
+ <stringProp name="query"></stringProp>
584
+ <stringProp name="queryArguments"></stringProp>
585
+ <stringProp name="queryArgumentsTypes"></stringProp>
586
+ <stringProp name="queryType">Select Statement</stringProp>
587
+ <stringProp name="resultVariable"></stringProp>
588
+ <stringProp name="variableNames"></stringProp>
589
+ </JDBCSampler>
590
+ <hashTree/>
591
+ <JMSSampler guiclass="JMSSamplerGui" testclass="JMSSampler" testname="JMS Point-to-Point" enabled="true">
592
+ <stringProp name="JMSSampler.queueconnectionfactory"></stringProp>
593
+ <stringProp name="JMSSampler.SendQueue"></stringProp>
594
+ <stringProp name="JMSSampler.ReceiveQueue"></stringProp>
595
+ <boolProp name="JMSSampler.isFireAndForget">true</boolProp>
596
+ <boolProp name="JMSSampler.isNonPersistent">false</boolProp>
597
+ <boolProp name="JMSSampler.useReqMsgIdAsCorrelId">false</boolProp>
598
+ <stringProp name="JMSSampler.timeout"></stringProp>
599
+ <stringProp name="HTTPSamper.xml_data"></stringProp>
600
+ <stringProp name="JMSSampler.initialContextFactory"></stringProp>
601
+ <stringProp name="JMSSampler.contextProviderUrl"></stringProp>
602
+ <elementProp name="JMSSampler.jndiProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
603
+ <collectionProp name="Arguments.arguments"/>
604
+ </elementProp>
605
+ <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
606
+ <collectionProp name="Arguments.arguments"/>
607
+ </elementProp>
608
+ </JMSSampler>
609
+ <hashTree/>
610
+ <PublisherSampler guiclass="JMSPublisherGui" testclass="PublisherSampler" testname="JMS Publisher" enabled="true">
611
+ <stringProp name="jms.jndi_properties">false</stringProp>
612
+ <stringProp name="jms.initial_context_factory"></stringProp>
613
+ <stringProp name="jms.provider_url"></stringProp>
614
+ <stringProp name="jms.connection_factory"></stringProp>
615
+ <stringProp name="jms.topic"></stringProp>
616
+ <stringProp name="jms.security_principle"></stringProp>
617
+ <stringProp name="jms.security_credentials"></stringProp>
618
+ <stringProp name="jms.text_message"></stringProp>
619
+ <stringProp name="jms.input_file"></stringProp>
620
+ <stringProp name="jms.random_path"></stringProp>
621
+ <stringProp name="jms.config_choice">jms_use_text</stringProp>
622
+ <stringProp name="jms.config_msg_type">jms_text_message</stringProp>
623
+ <stringProp name="jms.iterations">1</stringProp>
624
+ <boolProp name="jms.authenticate">false</boolProp>
625
+ <elementProp name="jms.jmsProperties" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
626
+ <collectionProp name="Arguments.arguments"/>
627
+ </elementProp>
628
+ </PublisherSampler>
629
+ <hashTree/>
630
+ <SubscriberSampler guiclass="JMSSubscriberGui" testclass="SubscriberSampler" testname="JMS Subscriber" enabled="true">
631
+ <stringProp name="jms.jndi_properties">false</stringProp>
632
+ <stringProp name="jms.initial_context_factory"></stringProp>
633
+ <stringProp name="jms.provider_url"></stringProp>
634
+ <stringProp name="jms.connection_factory"></stringProp>
635
+ <stringProp name="jms.topic"></stringProp>
636
+ <stringProp name="jms.security_principle"></stringProp>
637
+ <stringProp name="jms.security_credentials"></stringProp>
638
+ <boolProp name="jms.authenticate">false</boolProp>
639
+ <stringProp name="jms.iterations">1</stringProp>
640
+ <stringProp name="jms.read_response">true</stringProp>
641
+ <stringProp name="jms.client_choice">jms_subscriber_receive</stringProp>
642
+ </SubscriberSampler>
643
+ <hashTree/>
644
+ <JSR223Sampler guiclass="TestBeanGUI" testclass="JSR223Sampler" testname="JSR223 Sampler" enabled="true">
645
+ <stringProp name="cacheKey"></stringProp>
646
+ <stringProp name="filename"></stringProp>
647
+ <stringProp name="parameters"></stringProp>
648
+ <stringProp name="script"></stringProp>
649
+ <stringProp name="scriptLanguage"></stringProp>
650
+ </JSR223Sampler>
651
+ <hashTree/>
652
+ <JUnitSampler guiclass="JUnitTestSamplerGui" testclass="JUnitSampler" testname="JUnit Request" enabled="true">
653
+ <stringProp name="junitSampler.classname">test.RerunTest</stringProp>
654
+ <stringProp name="junitsampler.constructorstring"></stringProp>
655
+ <stringProp name="junitsampler.method">testRerun</stringProp>
656
+ <stringProp name="junitsampler.pkg.filter"></stringProp>
657
+ <stringProp name="junitsampler.success">Test successful</stringProp>
658
+ <stringProp name="junitsampler.success.code">1000</stringProp>
659
+ <stringProp name="junitsampler.failure">Test failed</stringProp>
660
+ <stringProp name="junitsampler.failure.code">0001</stringProp>
661
+ <stringProp name="junitsampler.error">An unexpected error occured</stringProp>
662
+ <stringProp name="junitsampler.error.code">9999</stringProp>
663
+ <stringProp name="junitsampler.exec.setup">false</stringProp>
664
+ <stringProp name="junitsampler.append.error">false</stringProp>
665
+ <stringProp name="junitsampler.append.exception">false</stringProp>
666
+ </JUnitSampler>
667
+ <hashTree/>
668
+ <LDAPExtSampler guiclass="LdapExtTestSamplerGui" testclass="LDAPExtSampler" testname="LDAP Extended Request" enabled="true">
669
+ <stringProp name="servername"></stringProp>
670
+ <stringProp name="port"></stringProp>
671
+ <stringProp name="rootdn"></stringProp>
672
+ <stringProp name="scope">2</stringProp>
673
+ <stringProp name="countlimit"></stringProp>
674
+ <stringProp name="timelimit"></stringProp>
675
+ <stringProp name="attributes"></stringProp>
676
+ <stringProp name="return_object">false</stringProp>
677
+ <stringProp name="deref_aliases">false</stringProp>
678
+ <stringProp name="connection_timeout"></stringProp>
679
+ <stringProp name="parseflag">false</stringProp>
680
+ <stringProp name="secure">false</stringProp>
681
+ <stringProp name="user_dn"></stringProp>
682
+ <stringProp name="user_pw"></stringProp>
683
+ <stringProp name="comparedn"></stringProp>
684
+ <stringProp name="comparefilt"></stringProp>
685
+ <stringProp name="modddn"></stringProp>
686
+ <stringProp name="newdn"></stringProp>
687
+ </LDAPExtSampler>
688
+ <hashTree/>
689
+ <LDAPSampler guiclass="LdapTestSamplerGui" testclass="LDAPSampler" testname="LDAP Request" enabled="true">
690
+ <stringProp name="servername"></stringProp>
691
+ <stringProp name="port"></stringProp>
692
+ <stringProp name="rootdn"></stringProp>
693
+ <boolProp name="user_defined">false</boolProp>
694
+ <stringProp name="test">add</stringProp>
695
+ <stringProp name="base_entry_dn"></stringProp>
696
+ <elementProp name="arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
697
+ <collectionProp name="Arguments.arguments"/>
698
+ </elementProp>
699
+ <stringProp name="ConfigTestElement.username"></stringProp>
700
+ <stringProp name="ConfigTestElement.password"></stringProp>
701
+ </LDAPSampler>
702
+ <hashTree/>
703
+ <MailReaderSampler guiclass="MailReaderSamplerGui" testclass="MailReaderSampler" testname="Mail Reader Sampler" enabled="true">
704
+ <stringProp name="host_type">pop3</stringProp>
705
+ <stringProp name="folder">INBOX</stringProp>
706
+ <stringProp name="host"></stringProp>
707
+ <stringProp name="username"></stringProp>
708
+ <stringProp name="password"></stringProp>
709
+ <intProp name="num_messages">-1</intProp>
710
+ <boolProp name="delete">false</boolProp>
711
+ <stringProp name="SMTPSampler.useSSL">false</stringProp>
712
+ <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
713
+ <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
714
+ <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
715
+ <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
716
+ <stringProp name="SMTPSampler.trustStoreToUse"></stringProp>
717
+ </MailReaderSampler>
718
+ <hashTree/>
719
+ <SystemSampler guiclass="SystemSamplerGui" testclass="SystemSampler" testname="OS Process Sampler" enabled="true">
720
+ <boolProp name="SystemSampler.checkReturnCode">false</boolProp>
721
+ <stringProp name="SystemSampler.expectedReturnCode">0</stringProp>
722
+ <stringProp name="SystemSampler.command"></stringProp>
723
+ <elementProp name="SystemSampler.arguments" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
724
+ <collectionProp name="Arguments.arguments"/>
725
+ </elementProp>
726
+ <elementProp name="SystemSampler.environment" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
727
+ <collectionProp name="Arguments.arguments"/>
728
+ </elementProp>
729
+ <stringProp name="SystemSampler.directory"></stringProp>
730
+ </SystemSampler>
731
+ <hashTree/>
732
+ <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="SMTP Sampler" enabled="true">
733
+ <stringProp name="SMTPSampler.server"></stringProp>
734
+ <stringProp name="SMTPSampler.serverPort"></stringProp>
735
+ <stringProp name="SMTPSampler.mailFrom"></stringProp>
736
+ <stringProp name="SMTPSampler.replyTo"></stringProp>
737
+ <stringProp name="SMTPSampler.receiverTo"></stringProp>
738
+ <stringProp name="SMTPSampler.receiverCC"></stringProp>
739
+ <stringProp name="SMTPSampler.receiverBCC"></stringProp>
740
+ <stringProp name="SMTPSampler.subject"></stringProp>
741
+ <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
742
+ <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
743
+ <stringProp name="SMTPSampler.message"></stringProp>
744
+ <stringProp name="SMTPSampler.plainBody">false</stringProp>
745
+ <stringProp name="SMTPSampler.attachFile"></stringProp>
746
+ <stringProp name="SMTPSampler.useSSL">false</stringProp>
747
+ <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
748
+ <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
749
+ <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
750
+ <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
751
+ <stringProp name="SMTPSampler.trustStoreToUse"></stringProp>
752
+ <boolProp name="SMTPSampler.use_eml">false</boolProp>
753
+ <stringProp name="SMTPSampler.emlMessageToSend"></stringProp>
754
+ <stringProp name="SMTPSampler.useAuth">false</stringProp>
755
+ <stringProp name="SMTPSampler.password"></stringProp>
756
+ <stringProp name="SMTPSampler.username"></stringProp>
757
+ <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
758
+ <stringProp name="SMTPSampler.enableDebug">false</stringProp>
759
+ <collectionProp name="SMTPSampler.headerFields"/>
760
+ </SmtpSampler>
761
+ <hashTree/>
762
+ <SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler" testname="SOAP/XML-RPC Request" enabled="true">
763
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
764
+ <collectionProp name="Arguments.arguments"/>
765
+ </elementProp>
766
+ <stringProp name="SoapSampler.URL_DATA"></stringProp>
767
+ <stringProp name="HTTPSamper.xml_data"></stringProp>
768
+ <stringProp name="SoapSampler.xml_data_file"></stringProp>
769
+ <stringProp name="SoapSampler.SOAP_ACTION"></stringProp>
770
+ <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
771
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
772
+ </SoapSampler>
773
+ <hashTree/>
774
+ <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
775
+ <stringProp name="TCPSampler.server"></stringProp>
776
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
777
+ <stringProp name="TCPSampler.port"></stringProp>
778
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
779
+ <stringProp name="TCPSampler.timeout"></stringProp>
780
+ <stringProp name="TCPSampler.request"></stringProp>
781
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
782
+ <stringProp name="ConfigTestElement.username"></stringProp>
783
+ <stringProp name="ConfigTestElement.password"></stringProp>
784
+ </TCPSampler>
785
+ <hashTree/>
786
+ <TestAction guiclass="TestActionGui" testclass="TestAction" testname="Test Action" enabled="true">
787
+ <intProp name="ActionProcessor.action">1</intProp>
788
+ <intProp name="ActionProcessor.target">0</intProp>
789
+ <stringProp name="ActionProcessor.duration"></stringProp>
790
+ </TestAction>
791
+ <hashTree/>
792
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="BeanShell PostProcessor" enabled="true">
793
+ <stringProp name="filename"></stringProp>
794
+ <stringProp name="parameters"></stringProp>
795
+ <boolProp name="resetInterpreter">false</boolProp>
796
+ <stringProp name="script"></stringProp>
797
+ </BeanShellPostProcessor>
798
+ <hashTree/>
799
+ <BSFPostProcessor guiclass="TestBeanGUI" testclass="BSFPostProcessor" testname="BSF PostProcessor" enabled="true">
800
+ <stringProp name="filename"></stringProp>
801
+ <stringProp name="parameters"></stringProp>
802
+ <stringProp name="script"></stringProp>
803
+ <stringProp name="scriptLanguage"></stringProp>
804
+ </BSFPostProcessor>
805
+ <hashTree/>
806
+ <HtmlExtractor guiclass="HtmlExtractorGui" testclass="HtmlExtractor" testname="CSS/JQuery Extractor" enabled="true">
807
+ <stringProp name="HtmlExtractor.refname"></stringProp>
808
+ <stringProp name="HtmlExtractor.expr"></stringProp>
809
+ <stringProp name="HtmlExtractor.attribute"></stringProp>
810
+ <stringProp name="HtmlExtractor.default"></stringProp>
811
+ <stringProp name="HtmlExtractor.match_number"></stringProp>
812
+ <stringProp name="HtmlExtractor.extractor_impl"></stringProp>
813
+ </HtmlExtractor>
814
+ <hashTree/>
815
+ <DebugPostProcessor guiclass="TestBeanGUI" testclass="DebugPostProcessor" testname="Debug PostProcessor" enabled="true">
816
+ <boolProp name="displayJMeterProperties">false</boolProp>
817
+ <boolProp name="displayJMeterVariables">true</boolProp>
818
+ <boolProp name="displaySamplerProperties">true</boolProp>
819
+ <boolProp name="displaySystemProperties">false</boolProp>
820
+ </DebugPostProcessor>
821
+ <hashTree/>
822
+ <JDBCPostProcessor guiclass="TestBeanGUI" testclass="JDBCPostProcessor" testname="JDBC PostProcessor" enabled="true">
823
+ <stringProp name="dataSource"></stringProp>
824
+ <stringProp name="query"></stringProp>
825
+ <stringProp name="queryArguments"></stringProp>
826
+ <stringProp name="queryArgumentsTypes"></stringProp>
827
+ <stringProp name="queryType">Select Statement</stringProp>
828
+ <stringProp name="resultVariable"></stringProp>
829
+ <stringProp name="variableNames"></stringProp>
830
+ </JDBCPostProcessor>
831
+ <hashTree/>
832
+ <JSR223PostProcessor guiclass="TestBeanGUI" testclass="JSR223PostProcessor" testname="JSR223 PostProcessor" enabled="true">
833
+ <stringProp name="cacheKey"></stringProp>
834
+ <stringProp name="filename"></stringProp>
835
+ <stringProp name="parameters"></stringProp>
836
+ <stringProp name="script"></stringProp>
837
+ <stringProp name="scriptLanguage"></stringProp>
838
+ </JSR223PostProcessor>
839
+ <hashTree/>
840
+ <RegexExtractor guiclass="RegexExtractorGui" testclass="RegexExtractor" testname="Regular Expression Extractor" enabled="true">
841
+ <stringProp name="RegexExtractor.useHeaders">false</stringProp>
842
+ <stringProp name="RegexExtractor.refname"></stringProp>
843
+ <stringProp name="RegexExtractor.regex"></stringProp>
844
+ <stringProp name="RegexExtractor.template"></stringProp>
845
+ <stringProp name="RegexExtractor.default"></stringProp>
846
+ <stringProp name="RegexExtractor.match_number"></stringProp>
847
+ <stringProp name="Sample.scope">all</stringProp>
848
+ </RegexExtractor>
849
+ <hashTree/>
850
+ <ResultAction guiclass="ResultActionGui" testclass="ResultAction" testname="Result Status Action Handler" enabled="true">
851
+ <intProp name="OnError.action">0</intProp>
852
+ </ResultAction>
853
+ <hashTree/>
854
+ <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="XPath Extractor" enabled="true">
855
+ <stringProp name="XPathExtractor.default"></stringProp>
856
+ <stringProp name="XPathExtractor.refname"></stringProp>
857
+ <stringProp name="XPathExtractor.xpathQuery"></stringProp>
858
+ <boolProp name="XPathExtractor.validate">false</boolProp>
859
+ <boolProp name="XPathExtractor.tolerant">false</boolProp>
860
+ <boolProp name="XPathExtractor.namespace">false</boolProp>
861
+ </XPathExtractor>
862
+ <hashTree/>
863
+ <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="BeanShell Assertion" enabled="true">
864
+ <stringProp name="BeanShellAssertion.query"></stringProp>
865
+ <stringProp name="BeanShellAssertion.filename"></stringProp>
866
+ <stringProp name="BeanShellAssertion.parameters"></stringProp>
867
+ <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
868
+ </BeanShellAssertion>
869
+ <hashTree/>
870
+ <BSFAssertion guiclass="TestBeanGUI" testclass="BSFAssertion" testname="BSF Assertion" enabled="true">
871
+ <stringProp name="filename"></stringProp>
872
+ <stringProp name="parameters"></stringProp>
873
+ <stringProp name="script"></stringProp>
874
+ <stringProp name="scriptLanguage"></stringProp>
875
+ </BSFAssertion>
876
+ <hashTree/>
877
+ <CompareAssertion guiclass="TestBeanGUI" testclass="CompareAssertion" testname="Compare Assertion" enabled="true">
878
+ <boolProp name="compareContent">true</boolProp>
879
+ <longProp name="compareTime">-1</longProp>
880
+ <collectionProp name="stringsToSkip"/>
881
+ </CompareAssertion>
882
+ <hashTree/>
883
+ <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="Duration Assertion" enabled="true">
884
+ <stringProp name="DurationAssertion.duration"></stringProp>
885
+ </DurationAssertion>
886
+ <hashTree/>
887
+ <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="HTML Assertion" enabled="true">
888
+ <longProp name="html_assertion_error_threshold">0</longProp>
889
+ <longProp name="html_assertion_warning_threshold">0</longProp>
890
+ <stringProp name="html_assertion_doctype">omit</stringProp>
891
+ <boolProp name="html_assertion_errorsonly">false</boolProp>
892
+ <longProp name="html_assertion_format">0</longProp>
893
+ <stringProp name="html_assertion_filename"></stringProp>
894
+ </HTMLAssertion>
895
+ <hashTree/>
896
+ <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
897
+ <stringProp name="cacheKey"></stringProp>
898
+ <stringProp name="filename"></stringProp>
899
+ <stringProp name="parameters"></stringProp>
900
+ <stringProp name="script"></stringProp>
901
+ <stringProp name="scriptLanguage"></stringProp>
902
+ </JSR223Assertion>
903
+ <hashTree/>
904
+ <JSR223Assertion guiclass="TestBeanGUI" testclass="JSR223Assertion" testname="JSR223 Assertion" enabled="true">
905
+ <stringProp name="scriptLanguage"></stringProp>
906
+ <stringProp name="parameters"></stringProp>
907
+ <stringProp name="filename"></stringProp>
908
+ <stringProp name="cacheKey"></stringProp>
909
+ <stringProp name="script"></stringProp>
910
+ </JSR223Assertion>
911
+ <hashTree/>
912
+ <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
913
+ <stringProp name="MD5HexAssertion.size"></stringProp>
914
+ </MD5HexAssertion>
915
+ <hashTree/>
916
+ <MD5HexAssertion guiclass="MD5HexAssertionGUI" testclass="MD5HexAssertion" testname="MD5Hex Assertion" enabled="true">
917
+ <stringProp name="MD5HexAssertion.size"></stringProp>
918
+ </MD5HexAssertion>
919
+ <hashTree/>
920
+ <ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
921
+ <collectionProp name="Asserion.test_strings">
922
+ <stringProp name="match"></stringProp>
923
+ </collectionProp>
924
+ <stringProp name="Assertion.test_field">Assertion.response_data</stringProp>
925
+ <boolProp name="Assertion.assume_success">false</boolProp>
926
+ <intProp name="Assertion.test_type">2</intProp>
927
+ <stringProp name="Assertion.scope">all</stringProp>
928
+ </ResponseAssertion>
929
+ <hashTree/>
930
+ <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="SMIME Assertion" enabled="true">
931
+ <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
932
+ <boolProp name="SMIMEAssert.notSigned">false</boolProp>
933
+ <stringProp name="SMIMEAssert.issuerDn"></stringProp>
934
+ <stringProp name="SMIMEAssert.signerDn"></stringProp>
935
+ <stringProp name="SMIMEAssert.signerSerial"></stringProp>
936
+ <stringProp name="SMIMEAssert.signerEmail"></stringProp>
937
+ <stringProp name="SMIMEAssert.signerCertFile"></stringProp>
938
+ <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
939
+ <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
940
+ <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
941
+ <stringProp name="SMIMEAssert.messagePosition"></stringProp>
942
+ </SMIMEAssertion>
943
+ <hashTree/>
944
+ <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" testname="XML Assertion" enabled="true"/>
945
+ <hashTree/>
946
+ <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="XML Schema Assertion" enabled="true">
947
+ <stringProp name="xmlschema_assertion_filename"></stringProp>
948
+ </XMLSchemaAssertion>
949
+ <hashTree/>
950
+ <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="XPath Assertion" enabled="true">
951
+ <boolProp name="XPath.negate">false</boolProp>
952
+ <stringProp name="XPath.xpath">/</stringProp>
953
+ <boolProp name="XPath.validate">false</boolProp>
954
+ <boolProp name="XPath.whitespace">false</boolProp>
955
+ <boolProp name="XPath.tolerant">false</boolProp>
956
+ <boolProp name="XPath.namespace">false</boolProp>
957
+ </XPathAssertion>
958
+ <hashTree/>
959
+ <ResultCollector guiclass="StatGraphVisualizer" testclass="ResultCollector" testname="Aggregate Graph" enabled="true">
960
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
961
+ <objProp>
962
+ <name>saveConfig</name>
963
+ <value class="SampleSaveConfiguration">
964
+ <time>true</time>
965
+ <latency>true</latency>
966
+ <timestamp>true</timestamp>
967
+ <success>true</success>
968
+ <label>true</label>
969
+ <code>true</code>
970
+ <message>false</message>
971
+ <threadName>true</threadName>
972
+ <dataType>false</dataType>
973
+ <encoding>false</encoding>
974
+ <assertions>false</assertions>
975
+ <subresults>false</subresults>
976
+ <responseData>false</responseData>
977
+ <samplerData>false</samplerData>
978
+ <xml>false</xml>
979
+ <fieldNames>false</fieldNames>
980
+ <responseHeaders>false</responseHeaders>
981
+ <requestHeaders>false</requestHeaders>
982
+ <responseDataOnError>false</responseDataOnError>
983
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
984
+ <assertionsResultsToSave>0</assertionsResultsToSave>
985
+ <bytes>true</bytes>
986
+ <threadCounts>true</threadCounts>
987
+ <sampleCount>true</sampleCount>
988
+ </value>
989
+ </objProp>
990
+ <stringProp name="filename"></stringProp>
991
+ </ResultCollector>
992
+ <hashTree/>
993
+ <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
994
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
995
+ <objProp>
996
+ <name>saveConfig</name>
997
+ <value class="SampleSaveConfiguration">
998
+ <time>true</time>
999
+ <latency>true</latency>
1000
+ <timestamp>true</timestamp>
1001
+ <success>true</success>
1002
+ <label>true</label>
1003
+ <code>true</code>
1004
+ <message>false</message>
1005
+ <threadName>true</threadName>
1006
+ <dataType>false</dataType>
1007
+ <encoding>false</encoding>
1008
+ <assertions>false</assertions>
1009
+ <subresults>false</subresults>
1010
+ <responseData>false</responseData>
1011
+ <samplerData>false</samplerData>
1012
+ <xml>false</xml>
1013
+ <fieldNames>false</fieldNames>
1014
+ <responseHeaders>false</responseHeaders>
1015
+ <requestHeaders>false</requestHeaders>
1016
+ <responseDataOnError>false</responseDataOnError>
1017
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1018
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1019
+ <bytes>true</bytes>
1020
+ <threadCounts>true</threadCounts>
1021
+ <sampleCount>true</sampleCount>
1022
+ </value>
1023
+ </objProp>
1024
+ <stringProp name="filename"></stringProp>
1025
+ </ResultCollector>
1026
+ <hashTree/>
1027
+ <ResultCollector guiclass="AssertionVisualizer" testclass="ResultCollector" testname="Assertion Results" enabled="true">
1028
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1029
+ <objProp>
1030
+ <name>saveConfig</name>
1031
+ <value class="SampleSaveConfiguration">
1032
+ <time>true</time>
1033
+ <latency>true</latency>
1034
+ <timestamp>true</timestamp>
1035
+ <success>true</success>
1036
+ <label>true</label>
1037
+ <code>true</code>
1038
+ <message>false</message>
1039
+ <threadName>true</threadName>
1040
+ <dataType>false</dataType>
1041
+ <encoding>false</encoding>
1042
+ <assertions>false</assertions>
1043
+ <subresults>false</subresults>
1044
+ <responseData>false</responseData>
1045
+ <samplerData>false</samplerData>
1046
+ <xml>false</xml>
1047
+ <fieldNames>false</fieldNames>
1048
+ <responseHeaders>false</responseHeaders>
1049
+ <requestHeaders>false</requestHeaders>
1050
+ <responseDataOnError>false</responseDataOnError>
1051
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1052
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1053
+ <bytes>true</bytes>
1054
+ <threadCounts>true</threadCounts>
1055
+ <sampleCount>true</sampleCount>
1056
+ </value>
1057
+ </objProp>
1058
+ <stringProp name="filename"></stringProp>
1059
+ </ResultCollector>
1060
+ <hashTree/>
1061
+ <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="BeanShell Listener" enabled="true">
1062
+ <stringProp name="filename"></stringProp>
1063
+ <stringProp name="parameters"></stringProp>
1064
+ <boolProp name="resetInterpreter">false</boolProp>
1065
+ <stringProp name="script"></stringProp>
1066
+ </BeanShellListener>
1067
+ <hashTree/>
1068
+ <BSFListener guiclass="TestBeanGUI" testclass="BSFListener" testname="BSF Listener" enabled="true">
1069
+ <stringProp name="filename"></stringProp>
1070
+ <stringProp name="parameters"></stringProp>
1071
+ <stringProp name="script"></stringProp>
1072
+ <stringProp name="scriptLanguage"></stringProp>
1073
+ </BSFListener>
1074
+ <hashTree/>
1075
+ <ResultCollector guiclass="ComparisonVisualizer" testclass="ResultCollector" testname="Comparison Assertion Visualizer" enabled="true">
1076
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1077
+ <objProp>
1078
+ <name>saveConfig</name>
1079
+ <value class="SampleSaveConfiguration">
1080
+ <time>true</time>
1081
+ <latency>true</latency>
1082
+ <timestamp>true</timestamp>
1083
+ <success>true</success>
1084
+ <label>true</label>
1085
+ <code>true</code>
1086
+ <message>false</message>
1087
+ <threadName>true</threadName>
1088
+ <dataType>false</dataType>
1089
+ <encoding>false</encoding>
1090
+ <assertions>false</assertions>
1091
+ <subresults>false</subresults>
1092
+ <responseData>false</responseData>
1093
+ <samplerData>false</samplerData>
1094
+ <xml>false</xml>
1095
+ <fieldNames>false</fieldNames>
1096
+ <responseHeaders>false</responseHeaders>
1097
+ <requestHeaders>false</requestHeaders>
1098
+ <responseDataOnError>false</responseDataOnError>
1099
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1100
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1101
+ <bytes>true</bytes>
1102
+ <threadCounts>true</threadCounts>
1103
+ <sampleCount>true</sampleCount>
1104
+ </value>
1105
+ </objProp>
1106
+ <stringProp name="filename"></stringProp>
1107
+ </ResultCollector>
1108
+ <hashTree/>
1109
+ <ResultCollector guiclass="DistributionGraphVisualizer" testclass="ResultCollector" testname="Distribution Graph (alpha)" enabled="true">
1110
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1111
+ <objProp>
1112
+ <name>saveConfig</name>
1113
+ <value class="SampleSaveConfiguration">
1114
+ <time>true</time>
1115
+ <latency>true</latency>
1116
+ <timestamp>true</timestamp>
1117
+ <success>true</success>
1118
+ <label>true</label>
1119
+ <code>true</code>
1120
+ <message>false</message>
1121
+ <threadName>true</threadName>
1122
+ <dataType>false</dataType>
1123
+ <encoding>false</encoding>
1124
+ <assertions>false</assertions>
1125
+ <subresults>false</subresults>
1126
+ <responseData>false</responseData>
1127
+ <samplerData>false</samplerData>
1128
+ <xml>false</xml>
1129
+ <fieldNames>false</fieldNames>
1130
+ <responseHeaders>false</responseHeaders>
1131
+ <requestHeaders>false</requestHeaders>
1132
+ <responseDataOnError>false</responseDataOnError>
1133
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1134
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1135
+ <bytes>true</bytes>
1136
+ <threadCounts>true</threadCounts>
1137
+ <sampleCount>true</sampleCount>
1138
+ </value>
1139
+ </objProp>
1140
+ <stringProp name="filename"></stringProp>
1141
+ </ResultCollector>
1142
+ <hashTree/>
1143
+ <Summariser guiclass="SummariserGui" testclass="Summariser" testname="Generate Summary Results" enabled="true"/>
1144
+ <hashTree/>
1145
+ <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
1146
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1147
+ <objProp>
1148
+ <name>saveConfig</name>
1149
+ <value class="SampleSaveConfiguration">
1150
+ <time>true</time>
1151
+ <latency>true</latency>
1152
+ <timestamp>true</timestamp>
1153
+ <success>true</success>
1154
+ <label>true</label>
1155
+ <code>true</code>
1156
+ <message>false</message>
1157
+ <threadName>true</threadName>
1158
+ <dataType>false</dataType>
1159
+ <encoding>false</encoding>
1160
+ <assertions>false</assertions>
1161
+ <subresults>false</subresults>
1162
+ <responseData>false</responseData>
1163
+ <samplerData>false</samplerData>
1164
+ <xml>false</xml>
1165
+ <fieldNames>false</fieldNames>
1166
+ <responseHeaders>false</responseHeaders>
1167
+ <requestHeaders>false</requestHeaders>
1168
+ <responseDataOnError>false</responseDataOnError>
1169
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1170
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1171
+ <bytes>true</bytes>
1172
+ <threadCounts>true</threadCounts>
1173
+ <sampleCount>true</sampleCount>
1174
+ </value>
1175
+ </objProp>
1176
+ <stringProp name="filename"></stringProp>
1177
+ </ResultCollector>
1178
+ <hashTree/>
1179
+ <JSR223Listener guiclass="TestBeanGUI" testclass="JSR223Listener" testname="JSR223 Listener" enabled="true">
1180
+ <stringProp name="cacheKey"></stringProp>
1181
+ <stringProp name="filename"></stringProp>
1182
+ <stringProp name="parameters"></stringProp>
1183
+ <stringProp name="script"></stringProp>
1184
+ <stringProp name="scriptLanguage"></stringProp>
1185
+ </JSR223Listener>
1186
+ <hashTree/>
1187
+ <MailerResultCollector guiclass="MailerVisualizer" testclass="MailerResultCollector" testname="Mailer Visualizer" enabled="true">
1188
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1189
+ <objProp>
1190
+ <name>saveConfig</name>
1191
+ <value class="SampleSaveConfiguration">
1192
+ <time>true</time>
1193
+ <latency>true</latency>
1194
+ <timestamp>true</timestamp>
1195
+ <success>true</success>
1196
+ <label>true</label>
1197
+ <code>true</code>
1198
+ <message>false</message>
1199
+ <threadName>true</threadName>
1200
+ <dataType>false</dataType>
1201
+ <encoding>false</encoding>
1202
+ <assertions>false</assertions>
1203
+ <subresults>false</subresults>
1204
+ <responseData>false</responseData>
1205
+ <samplerData>false</samplerData>
1206
+ <xml>false</xml>
1207
+ <fieldNames>false</fieldNames>
1208
+ <responseHeaders>false</responseHeaders>
1209
+ <requestHeaders>false</requestHeaders>
1210
+ <responseDataOnError>false</responseDataOnError>
1211
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1212
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1213
+ <bytes>true</bytes>
1214
+ <threadCounts>true</threadCounts>
1215
+ <sampleCount>true</sampleCount>
1216
+ </value>
1217
+ </objProp>
1218
+ <elementProp name="MailerResultCollector.mailer_model" elementType="MailerModel">
1219
+ <stringProp name="MailerModel.successLimit">2</stringProp>
1220
+ <stringProp name="MailerModel.failureLimit">2</stringProp>
1221
+ <stringProp name="MailerModel.failureSubject"></stringProp>
1222
+ <stringProp name="MailerModel.fromAddress"></stringProp>
1223
+ <stringProp name="MailerModel.smtpHost"></stringProp>
1224
+ <stringProp name="MailerModel.successSubject"></stringProp>
1225
+ <stringProp name="MailerModel.addressie"></stringProp>
1226
+ </elementProp>
1227
+ <stringProp name="filename"></stringProp>
1228
+ </MailerResultCollector>
1229
+ <hashTree/>
1230
+ <ResultCollector guiclass="MonitorHealthVisualizer" testclass="ResultCollector" testname="Monitor Results" enabled="true">
1231
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1232
+ <objProp>
1233
+ <name>saveConfig</name>
1234
+ <value class="SampleSaveConfiguration">
1235
+ <time>true</time>
1236
+ <latency>true</latency>
1237
+ <timestamp>true</timestamp>
1238
+ <success>true</success>
1239
+ <label>true</label>
1240
+ <code>true</code>
1241
+ <message>false</message>
1242
+ <threadName>true</threadName>
1243
+ <dataType>false</dataType>
1244
+ <encoding>false</encoding>
1245
+ <assertions>false</assertions>
1246
+ <subresults>false</subresults>
1247
+ <responseData>false</responseData>
1248
+ <samplerData>false</samplerData>
1249
+ <xml>false</xml>
1250
+ <fieldNames>false</fieldNames>
1251
+ <responseHeaders>false</responseHeaders>
1252
+ <requestHeaders>false</requestHeaders>
1253
+ <responseDataOnError>false</responseDataOnError>
1254
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1255
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1256
+ <bytes>true</bytes>
1257
+ <threadCounts>true</threadCounts>
1258
+ <sampleCount>true</sampleCount>
1259
+ </value>
1260
+ </objProp>
1261
+ <stringProp name="filename"></stringProp>
1262
+ </ResultCollector>
1263
+ <hashTree/>
1264
+ <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
1265
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1266
+ <objProp>
1267
+ <name>saveConfig</name>
1268
+ <value class="SampleSaveConfiguration">
1269
+ <time>true</time>
1270
+ <latency>true</latency>
1271
+ <timestamp>true</timestamp>
1272
+ <success>true</success>
1273
+ <label>true</label>
1274
+ <code>true</code>
1275
+ <message>false</message>
1276
+ <threadName>true</threadName>
1277
+ <dataType>false</dataType>
1278
+ <encoding>false</encoding>
1279
+ <assertions>false</assertions>
1280
+ <subresults>false</subresults>
1281
+ <responseData>false</responseData>
1282
+ <samplerData>false</samplerData>
1283
+ <xml>false</xml>
1284
+ <fieldNames>false</fieldNames>
1285
+ <responseHeaders>false</responseHeaders>
1286
+ <requestHeaders>false</requestHeaders>
1287
+ <responseDataOnError>false</responseDataOnError>
1288
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1289
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1290
+ <bytes>true</bytes>
1291
+ <threadCounts>true</threadCounts>
1292
+ <sampleCount>true</sampleCount>
1293
+ </value>
1294
+ </objProp>
1295
+ <stringProp name="filename"></stringProp>
1296
+ </ResultCollector>
1297
+ <hashTree/>
1298
+ <ResultCollector guiclass="RespTimeGraphVisualizer" testclass="ResultCollector" testname="Response Time Graph" enabled="true">
1299
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1300
+ <objProp>
1301
+ <name>saveConfig</name>
1302
+ <value class="SampleSaveConfiguration">
1303
+ <time>true</time>
1304
+ <latency>true</latency>
1305
+ <timestamp>true</timestamp>
1306
+ <success>true</success>
1307
+ <label>true</label>
1308
+ <code>true</code>
1309
+ <message>false</message>
1310
+ <threadName>true</threadName>
1311
+ <dataType>false</dataType>
1312
+ <encoding>false</encoding>
1313
+ <assertions>false</assertions>
1314
+ <subresults>false</subresults>
1315
+ <responseData>false</responseData>
1316
+ <samplerData>false</samplerData>
1317
+ <xml>false</xml>
1318
+ <fieldNames>false</fieldNames>
1319
+ <responseHeaders>false</responseHeaders>
1320
+ <requestHeaders>false</requestHeaders>
1321
+ <responseDataOnError>false</responseDataOnError>
1322
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1323
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1324
+ <bytes>true</bytes>
1325
+ <threadCounts>true</threadCounts>
1326
+ <sampleCount>true</sampleCount>
1327
+ </value>
1328
+ </objProp>
1329
+ <stringProp name="filename"></stringProp>
1330
+ </ResultCollector>
1331
+ <hashTree/>
1332
+ <ResultSaver guiclass="ResultSaverGui" testclass="ResultSaver" testname="Save Responses to a file" enabled="true">
1333
+ <stringProp name="FileSaver.filename"></stringProp>
1334
+ <boolProp name="FileSaver.errorsonly">false</boolProp>
1335
+ <boolProp name="FileSaver.skipautonumber">false</boolProp>
1336
+ <boolProp name="FileSaver.skipsuffix">false</boolProp>
1337
+ <boolProp name="FileSaver.successonly">false</boolProp>
1338
+ </ResultSaver>
1339
+ <hashTree/>
1340
+ <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="Simple Data Writer" enabled="true">
1341
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1342
+ <objProp>
1343
+ <name>saveConfig</name>
1344
+ <value class="SampleSaveConfiguration">
1345
+ <time>true</time>
1346
+ <latency>true</latency>
1347
+ <timestamp>true</timestamp>
1348
+ <success>true</success>
1349
+ <label>true</label>
1350
+ <code>true</code>
1351
+ <message>true</message>
1352
+ <threadName>true</threadName>
1353
+ <dataType>false</dataType>
1354
+ <encoding>false</encoding>
1355
+ <assertions>false</assertions>
1356
+ <subresults>false</subresults>
1357
+ <responseData>false</responseData>
1358
+ <samplerData>false</samplerData>
1359
+ <xml>true</xml>
1360
+ <fieldNames>false</fieldNames>
1361
+ <responseHeaders>true</responseHeaders>
1362
+ <requestHeaders>false</requestHeaders>
1363
+ <responseDataOnError>false</responseDataOnError>
1364
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1365
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1366
+ <bytes>true</bytes>
1367
+ <threadCounts>true</threadCounts>
1368
+ <sampleCount>true</sampleCount>
1369
+ </value>
1370
+ </objProp>
1371
+ <stringProp name="filename"></stringProp>
1372
+ </ResultCollector>
1373
+ <hashTree/>
1374
+ <ResultCollector guiclass="SplineVisualizer" testclass="ResultCollector" testname="Spline Visualizer" enabled="true">
1375
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1376
+ <objProp>
1377
+ <name>saveConfig</name>
1378
+ <value class="SampleSaveConfiguration">
1379
+ <time>true</time>
1380
+ <latency>true</latency>
1381
+ <timestamp>true</timestamp>
1382
+ <success>true</success>
1383
+ <label>true</label>
1384
+ <code>true</code>
1385
+ <message>false</message>
1386
+ <threadName>true</threadName>
1387
+ <dataType>false</dataType>
1388
+ <encoding>false</encoding>
1389
+ <assertions>false</assertions>
1390
+ <subresults>false</subresults>
1391
+ <responseData>false</responseData>
1392
+ <samplerData>false</samplerData>
1393
+ <xml>false</xml>
1394
+ <fieldNames>false</fieldNames>
1395
+ <responseHeaders>false</responseHeaders>
1396
+ <requestHeaders>false</requestHeaders>
1397
+ <responseDataOnError>false</responseDataOnError>
1398
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1399
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1400
+ <bytes>true</bytes>
1401
+ <threadCounts>true</threadCounts>
1402
+ <sampleCount>true</sampleCount>
1403
+ </value>
1404
+ </objProp>
1405
+ <stringProp name="filename"></stringProp>
1406
+ </ResultCollector>
1407
+ <hashTree/>
1408
+ <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="Summary Report" enabled="true">
1409
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1410
+ <objProp>
1411
+ <name>saveConfig</name>
1412
+ <value class="SampleSaveConfiguration">
1413
+ <time>true</time>
1414
+ <latency>true</latency>
1415
+ <timestamp>true</timestamp>
1416
+ <success>true</success>
1417
+ <label>true</label>
1418
+ <code>true</code>
1419
+ <message>false</message>
1420
+ <threadName>true</threadName>
1421
+ <dataType>false</dataType>
1422
+ <encoding>false</encoding>
1423
+ <assertions>false</assertions>
1424
+ <subresults>false</subresults>
1425
+ <responseData>false</responseData>
1426
+ <samplerData>false</samplerData>
1427
+ <xml>false</xml>
1428
+ <fieldNames>false</fieldNames>
1429
+ <responseHeaders>false</responseHeaders>
1430
+ <requestHeaders>false</requestHeaders>
1431
+ <responseDataOnError>false</responseDataOnError>
1432
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1433
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1434
+ <bytes>true</bytes>
1435
+ <threadCounts>true</threadCounts>
1436
+ <sampleCount>true</sampleCount>
1437
+ </value>
1438
+ </objProp>
1439
+ <stringProp name="filename"></stringProp>
1440
+ </ResultCollector>
1441
+ <hashTree/>
1442
+ <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="View Results in Table" enabled="true">
1443
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1444
+ <objProp>
1445
+ <name>saveConfig</name>
1446
+ <value class="SampleSaveConfiguration">
1447
+ <time>true</time>
1448
+ <latency>true</latency>
1449
+ <timestamp>true</timestamp>
1450
+ <success>true</success>
1451
+ <label>true</label>
1452
+ <code>true</code>
1453
+ <message>false</message>
1454
+ <threadName>true</threadName>
1455
+ <dataType>false</dataType>
1456
+ <encoding>false</encoding>
1457
+ <assertions>false</assertions>
1458
+ <subresults>false</subresults>
1459
+ <responseData>false</responseData>
1460
+ <samplerData>false</samplerData>
1461
+ <xml>false</xml>
1462
+ <fieldNames>false</fieldNames>
1463
+ <responseHeaders>false</responseHeaders>
1464
+ <requestHeaders>false</requestHeaders>
1465
+ <responseDataOnError>false</responseDataOnError>
1466
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1467
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1468
+ <bytes>true</bytes>
1469
+ <threadCounts>true</threadCounts>
1470
+ <sampleCount>true</sampleCount>
1471
+ </value>
1472
+ </objProp>
1473
+ <stringProp name="filename"></stringProp>
1474
+ </ResultCollector>
1475
+ <hashTree/>
1476
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="View Results Tree" enabled="true">
1477
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
1478
+ <objProp>
1479
+ <name>saveConfig</name>
1480
+ <value class="SampleSaveConfiguration">
1481
+ <time>true</time>
1482
+ <latency>true</latency>
1483
+ <timestamp>true</timestamp>
1484
+ <success>true</success>
1485
+ <label>true</label>
1486
+ <code>true</code>
1487
+ <message>false</message>
1488
+ <threadName>true</threadName>
1489
+ <dataType>false</dataType>
1490
+ <encoding>false</encoding>
1491
+ <assertions>false</assertions>
1492
+ <subresults>false</subresults>
1493
+ <responseData>false</responseData>
1494
+ <samplerData>false</samplerData>
1495
+ <xml>false</xml>
1496
+ <fieldNames>false</fieldNames>
1497
+ <responseHeaders>false</responseHeaders>
1498
+ <requestHeaders>false</requestHeaders>
1499
+ <responseDataOnError>false</responseDataOnError>
1500
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
1501
+ <assertionsResultsToSave>0</assertionsResultsToSave>
1502
+ <bytes>true</bytes>
1503
+ <threadCounts>true</threadCounts>
1504
+ <sampleCount>true</sampleCount>
1505
+ </value>
1506
+ </objProp>
1507
+ <stringProp name="filename"></stringProp>
1508
+ </ResultCollector>
1509
+ <hashTree/>
1510
+ </hashTree>
1511
+ </hashTree>
1512
+ </hashTree>
1513
+ </jmeterTestPlan>