jmeter-ruby 3.0.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 (266) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +22 -0
  3. data/.github/workflows/ci.yml +54 -0
  4. data/.gitignore +24 -0
  5. data/.rspec +1 -0
  6. data/.ruby-version +1 -0
  7. data/CHANGES.md +77 -0
  8. data/Gemfile +23 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +434 -0
  11. data/Rakefile +18 -0
  12. data/examples/OS_process_sampler.rb +24 -0
  13. data/examples/assertion_results.rb +18 -0
  14. data/examples/basic_auth.rb +11 -0
  15. data/examples/browser_headers.rb +7 -0
  16. data/examples/composite_graph.rb +29 -0
  17. data/examples/constant_throughput_timer.rb +11 -0
  18. data/examples/csv_data_set.rb +11 -0
  19. data/examples/dummy_sampler.rb +9 -0
  20. data/examples/duration_assertion.rb +10 -0
  21. data/examples/etsy_login_browse.rb +61 -0
  22. data/examples/extract.rb +12 -0
  23. data/examples/foreach_controller.rb +29 -0
  24. data/examples/header_manager.rb +29 -0
  25. data/examples/http_cache_manager.rb +11 -0
  26. data/examples/http_cookie_manager.rb +11 -0
  27. data/examples/http_request_defaults.rb +11 -0
  28. data/examples/http_request_post.rb +11 -0
  29. data/examples/http_request_with_files.rb +13 -0
  30. data/examples/http_request_with_query_params.rb +8 -0
  31. data/examples/jmeter_plugins_graphs.rb +22 -0
  32. data/examples/json_path_assertions.rb +11 -0
  33. data/examples/json_path_extractor.rb +10 -0
  34. data/examples/json_path_postprocessor.rb +10 -0
  35. data/examples/jsr223_assertion.rb +13 -0
  36. data/examples/ldap_sampler.rb +16 -0
  37. data/examples/loadosophia.rb +18 -0
  38. data/examples/loop_controller.rb +10 -0
  39. data/examples/loops_with_counter.rb +15 -0
  40. data/examples/once_only_controller.rb +15 -0
  41. data/examples/perfmon.rb +46 -0
  42. data/examples/real_custom_methods.rb +19 -0
  43. data/examples/real_page_objects.rb +41 -0
  44. data/examples/real_redis_data_set_with_setup.rb +123 -0
  45. data/examples/real_user_objects_github.rb +112 -0
  46. data/examples/regular_expression_extractor.rb +12 -0
  47. data/examples/response_assertion.rb +15 -0
  48. data/examples/response_time_percentiles_graph.rb +11 -0
  49. data/examples/rsync.rb +16 -0
  50. data/examples/sample_transaction.rb +18 -0
  51. data/examples/simple_data_writer_listener.rb +11 -0
  52. data/examples/stepping_thread_group.rb +30 -0
  53. data/examples/test_fragment.rb +14 -0
  54. data/examples/think_time.rb +15 -0
  55. data/examples/thread_groups.rb +7 -0
  56. data/examples/throughput_controller.rb +14 -0
  57. data/examples/throughput_shaping_timer.rb +20 -0
  58. data/examples/ultimate_thread_group.rb +39 -0
  59. data/examples/unicode.rb +8 -0
  60. data/examples/user_defined_variables.rb +10 -0
  61. data/examples/user_parameters.rb +28 -0
  62. data/examples/uuid_per_iteration.rb +15 -0
  63. data/jmeter-ruby.gemspec +28 -0
  64. data/lib/jmeter-ruby/DSL.md +235 -0
  65. data/lib/jmeter-ruby/dsl/access_log_sampler.rb +32 -0
  66. data/lib/jmeter-ruby/dsl/aggregate_graph.rb +55 -0
  67. data/lib/jmeter-ruby/dsl/aggregate_report.rb +55 -0
  68. data/lib/jmeter-ruby/dsl/ajp13_sampler.rb +41 -0
  69. data/lib/jmeter-ruby/dsl/assertion_results.rb +55 -0
  70. data/lib/jmeter-ruby/dsl/beanshell_assertion.rb +28 -0
  71. data/lib/jmeter-ruby/dsl/beanshell_listener.rb +28 -0
  72. data/lib/jmeter-ruby/dsl/beanshell_postprocessor.rb +28 -0
  73. data/lib/jmeter-ruby/dsl/beanshell_preprocessor.rb +28 -0
  74. data/lib/jmeter-ruby/dsl/beanshell_sampler.rb +28 -0
  75. data/lib/jmeter-ruby/dsl/beanshell_timer.rb +28 -0
  76. data/lib/jmeter-ruby/dsl/bsf_assertion.rb +28 -0
  77. data/lib/jmeter-ruby/dsl/bsf_listener.rb +28 -0
  78. data/lib/jmeter-ruby/dsl/bsf_postprocessor.rb +28 -0
  79. data/lib/jmeter-ruby/dsl/bsf_preprocessor.rb +28 -0
  80. data/lib/jmeter-ruby/dsl/bsf_sampler.rb +28 -0
  81. data/lib/jmeter-ruby/dsl/bsf_timer.rb +28 -0
  82. data/lib/jmeter-ruby/dsl/compare_assertion.rb +27 -0
  83. data/lib/jmeter-ruby/dsl/comparison_assertion_visualizer.rb +55 -0
  84. data/lib/jmeter-ruby/dsl/constant_throughput_timer.rb +26 -0
  85. data/lib/jmeter-ruby/dsl/constant_timer.rb +25 -0
  86. data/lib/jmeter-ruby/dsl/counter.rb +31 -0
  87. data/lib/jmeter-ruby/dsl/cssjquery_extractor.rb +31 -0
  88. data/lib/jmeter-ruby/dsl/csv_data_set_config.rb +33 -0
  89. data/lib/jmeter-ruby/dsl/debug_postprocessor.rb +28 -0
  90. data/lib/jmeter-ruby/dsl/debug_sampler.rb +27 -0
  91. data/lib/jmeter-ruby/dsl/distribution_graphalpha.rb +55 -0
  92. data/lib/jmeter-ruby/dsl/duration_assertion.rb +25 -0
  93. data/lib/jmeter-ruby/dsl/foreach_controller.rb +27 -0
  94. data/lib/jmeter-ruby/dsl/ftp_request.rb +34 -0
  95. data/lib/jmeter-ruby/dsl/ftp_request_defaults.rb +32 -0
  96. data/lib/jmeter-ruby/dsl/gaussian_random_timer.rb +26 -0
  97. data/lib/jmeter-ruby/dsl/generate_summary_results.rb +23 -0
  98. data/lib/jmeter-ruby/dsl/graph_results.rb +55 -0
  99. data/lib/jmeter-ruby/dsl/html_assertion.rb +30 -0
  100. data/lib/jmeter-ruby/dsl/html_link_parser.rb +23 -0
  101. data/lib/jmeter-ruby/dsl/html_parameter_mask.rb +32 -0
  102. data/lib/jmeter-ruby/dsl/http_authorization_manager.rb +33 -0
  103. data/lib/jmeter-ruby/dsl/http_cache_manager.rb +26 -0
  104. data/lib/jmeter-ruby/dsl/http_cookie_manager.rb +28 -0
  105. data/lib/jmeter-ruby/dsl/http_header_manager.rb +30 -0
  106. data/lib/jmeter-ruby/dsl/http_request.rb +41 -0
  107. data/lib/jmeter-ruby/dsl/http_request_defaults.rb +41 -0
  108. data/lib/jmeter-ruby/dsl/http_url_rewriting_modifier.rb +30 -0
  109. data/lib/jmeter-ruby/dsl/if_controller.rb +27 -0
  110. data/lib/jmeter-ruby/dsl/include_controller.rb +25 -0
  111. data/lib/jmeter-ruby/dsl/java_request.rb +69 -0
  112. data/lib/jmeter-ruby/dsl/java_request_defaults.rb +69 -0
  113. data/lib/jmeter-ruby/dsl/jdbc_connection_configuration.rb +37 -0
  114. data/lib/jmeter-ruby/dsl/jdbc_postprocessor.rb +33 -0
  115. data/lib/jmeter-ruby/dsl/jdbc_preprocessor.rb +33 -0
  116. data/lib/jmeter-ruby/dsl/jdbc_request.rb +33 -0
  117. data/lib/jmeter-ruby/dsl/jms_pointtopoint.rb +41 -0
  118. data/lib/jmeter-ruby/dsl/jms_publisher.rb +43 -0
  119. data/lib/jmeter-ruby/dsl/jms_subscriber.rb +35 -0
  120. data/lib/jmeter-ruby/dsl/json_path_postprocessor.rb +27 -0
  121. data/lib/jmeter-ruby/dsl/jsr223_assertion.rb +29 -0
  122. data/lib/jmeter-ruby/dsl/jsr223_listener.rb +29 -0
  123. data/lib/jmeter-ruby/dsl/jsr223_postprocessor.rb +29 -0
  124. data/lib/jmeter-ruby/dsl/jsr223_preprocessor.rb +29 -0
  125. data/lib/jmeter-ruby/dsl/jsr223_sampler.rb +29 -0
  126. data/lib/jmeter-ruby/dsl/jsr223_timer.rb +29 -0
  127. data/lib/jmeter-ruby/dsl/junit_request.rb +37 -0
  128. data/lib/jmeter-ruby/dsl/keystore_configuration.rb +28 -0
  129. data/lib/jmeter-ruby/dsl/ldap_extended_request.rb +42 -0
  130. data/lib/jmeter-ruby/dsl/ldap_extended_request_defaults.rb +42 -0
  131. data/lib/jmeter-ruby/dsl/ldap_request.rb +35 -0
  132. data/lib/jmeter-ruby/dsl/ldap_request_defaults.rb +39 -0
  133. data/lib/jmeter-ruby/dsl/login_config_element.rb +26 -0
  134. data/lib/jmeter-ruby/dsl/loop_controller.rb +26 -0
  135. data/lib/jmeter-ruby/dsl/mail_reader_sampler.rb +37 -0
  136. data/lib/jmeter-ruby/dsl/mailer_visualizer.rb +64 -0
  137. data/lib/jmeter-ruby/dsl/md5hex_assertion.rb +25 -0
  138. data/lib/jmeter-ruby/dsl/module_controller.rb +25 -0
  139. data/lib/jmeter-ruby/dsl/monitor_results.rb +55 -0
  140. data/lib/jmeter-ruby/dsl/once_only_controller.rb +23 -0
  141. data/lib/jmeter-ruby/dsl/os_process_sampler.rb +34 -0
  142. data/lib/jmeter-ruby/dsl/poisson_random_timer.rb +26 -0
  143. data/lib/jmeter-ruby/dsl/random_controller.rb +25 -0
  144. data/lib/jmeter-ruby/dsl/random_order_controller.rb +23 -0
  145. data/lib/jmeter-ruby/dsl/random_variable.rb +30 -0
  146. data/lib/jmeter-ruby/dsl/recording_controller.rb +23 -0
  147. data/lib/jmeter-ruby/dsl/regex_user_parameters.rb +27 -0
  148. data/lib/jmeter-ruby/dsl/regular_expression_extractor.rb +32 -0
  149. data/lib/jmeter-ruby/dsl/response_assertion.rb +31 -0
  150. data/lib/jmeter-ruby/dsl/response_time_graph.rb +55 -0
  151. data/lib/jmeter-ruby/dsl/result_status_action_handler.rb +25 -0
  152. data/lib/jmeter-ruby/dsl/runtime_controller.rb +25 -0
  153. data/lib/jmeter-ruby/dsl/save_responses_to_a_file.rb +29 -0
  154. data/lib/jmeter-ruby/dsl/setup_thread_group.rb +36 -0
  155. data/lib/jmeter-ruby/dsl/simple_config_element.rb +23 -0
  156. data/lib/jmeter-ruby/dsl/simple_controller.rb +23 -0
  157. data/lib/jmeter-ruby/dsl/simple_data_writer.rb +55 -0
  158. data/lib/jmeter-ruby/dsl/smime_assertion.rb +35 -0
  159. data/lib/jmeter-ruby/dsl/smtp_sampler.rb +51 -0
  160. data/lib/jmeter-ruby/dsl/soapxmlrpc_request.rb +33 -0
  161. data/lib/jmeter-ruby/dsl/spline_visualizer.rb +55 -0
  162. data/lib/jmeter-ruby/dsl/summary_report.rb +55 -0
  163. data/lib/jmeter-ruby/dsl/switch_controller.rb +25 -0
  164. data/lib/jmeter-ruby/dsl/synchronizing_timer.rb +26 -0
  165. data/lib/jmeter-ruby/dsl/tcp_sampler.rb +33 -0
  166. data/lib/jmeter-ruby/dsl/tcp_sampler_config.rb +31 -0
  167. data/lib/jmeter-ruby/dsl/test_action.rb +27 -0
  168. data/lib/jmeter-ruby/dsl/test_fragment.rb +23 -0
  169. data/lib/jmeter-ruby/dsl/test_plan.rb +31 -0
  170. data/lib/jmeter-ruby/dsl/thread_group.rb +37 -0
  171. data/lib/jmeter-ruby/dsl/throughput_controller.rb +32 -0
  172. data/lib/jmeter-ruby/dsl/transaction_controller.rb +26 -0
  173. data/lib/jmeter-ruby/dsl/uniform_random_timer.rb +26 -0
  174. data/lib/jmeter-ruby/dsl/user_defined_variables.rb +33 -0
  175. data/lib/jmeter-ruby/dsl/user_parameters.rb +30 -0
  176. data/lib/jmeter-ruby/dsl/view_results_in_table.rb +55 -0
  177. data/lib/jmeter-ruby/dsl/view_results_tree.rb +55 -0
  178. data/lib/jmeter-ruby/dsl/while_controller.rb +25 -0
  179. data/lib/jmeter-ruby/dsl/xml_assertion.rb +23 -0
  180. data/lib/jmeter-ruby/dsl/xml_schema_assertion.rb +25 -0
  181. data/lib/jmeter-ruby/dsl/xpath_assertion.rb +31 -0
  182. data/lib/jmeter-ruby/dsl/xpath_extractor.rb +31 -0
  183. data/lib/jmeter-ruby/dsl.rb +102 -0
  184. data/lib/jmeter-ruby/extend/assertions/response_assertion.rb +36 -0
  185. data/lib/jmeter-ruby/extend/config_elements/header_manager.rb +13 -0
  186. data/lib/jmeter-ruby/extend/config_elements/http_cache_manager.rb +12 -0
  187. data/lib/jmeter-ruby/extend/config_elements/http_cookie_manager.rb +36 -0
  188. data/lib/jmeter-ruby/extend/config_elements/http_request_defaults.rb +39 -0
  189. data/lib/jmeter-ruby/extend/config_elements/user_defined_variables.rb +13 -0
  190. data/lib/jmeter-ruby/extend/config_elements/user_parameters.rb +31 -0
  191. data/lib/jmeter-ruby/extend/controllers/foreach_controller.rb +27 -0
  192. data/lib/jmeter-ruby/extend/controllers/loop_controller.rb +11 -0
  193. data/lib/jmeter-ruby/extend/controllers/module_controller.rb +23 -0
  194. data/lib/jmeter-ruby/extend/controllers/throughput_controller.rb +15 -0
  195. data/lib/jmeter-ruby/extend/controllers/transaction_controller.rb +14 -0
  196. data/lib/jmeter-ruby/extend/misc/aliases.rb +21 -0
  197. data/lib/jmeter-ruby/extend/misc/exists.rb +13 -0
  198. data/lib/jmeter-ruby/extend/misc/rsync.rb +24 -0
  199. data/lib/jmeter-ruby/extend/misc/uuid.rb +12 -0
  200. data/lib/jmeter-ruby/extend/misc/with_helpers.rb +27 -0
  201. data/lib/jmeter-ruby/extend/plugins/jmeter_plugins.rb +120 -0
  202. data/lib/jmeter-ruby/extend/processors/extract.rb +28 -0
  203. data/lib/jmeter-ruby/extend/processors/regular_expression_extractor.rb +25 -0
  204. data/lib/jmeter-ruby/extend/samplers/http_request.rb +58 -0
  205. data/lib/jmeter-ruby/extend/samplers/jms_pointtopoint.rb +26 -0
  206. data/lib/jmeter-ruby/extend/samplers/soapxmlrpc_request.rb +9 -0
  207. data/lib/jmeter-ruby/extend/threads/setup_thread_group.rb +18 -0
  208. data/lib/jmeter-ruby/extend/threads/thread_group.rb +19 -0
  209. data/lib/jmeter-ruby/extend/timers/constant_throughput_timer.rb +11 -0
  210. data/lib/jmeter-ruby/extend/timers/random_timer.rb +14 -0
  211. data/lib/jmeter-ruby/helpers/fallback_content_proxy.rb +54 -0
  212. data/lib/jmeter-ruby/helpers/helper.rb +75 -0
  213. data/lib/jmeter-ruby/helpers/logger-colors.rb +48 -0
  214. data/lib/jmeter-ruby/helpers/parser.rb +135 -0
  215. data/lib/jmeter-ruby/helpers/strip-heredoc.rb +5 -0
  216. data/lib/jmeter-ruby/helpers/user-agents.rb +27 -0
  217. data/lib/jmeter-ruby/idl.rb +70 -0
  218. data/lib/jmeter-ruby/idl.xml +1488 -0
  219. data/lib/jmeter-ruby/plugins/active_threads_over_time.rb +57 -0
  220. data/lib/jmeter-ruby/plugins/composite_graph.rb +71 -0
  221. data/lib/jmeter-ruby/plugins/console_status_logger.rb +15 -0
  222. data/lib/jmeter-ruby/plugins/dummy_sampler.rb +26 -0
  223. data/lib/jmeter-ruby/plugins/jmx_collector.rb +73 -0
  224. data/lib/jmeter-ruby/plugins/json_path_assertion.rb +19 -0
  225. data/lib/jmeter-ruby/plugins/json_path_extractor.rb +20 -0
  226. data/lib/jmeter-ruby/plugins/latencies_over_time.rb +49 -0
  227. data/lib/jmeter-ruby/plugins/loadosophia_uploader.rb +63 -0
  228. data/lib/jmeter-ruby/plugins/perfmon_collector.rb +80 -0
  229. data/lib/jmeter-ruby/plugins/redis_data_set.rb +39 -0
  230. data/lib/jmeter-ruby/plugins/response_codes_per_second.rb +49 -0
  231. data/lib/jmeter-ruby/plugins/response_times_distribution.rb +49 -0
  232. data/lib/jmeter-ruby/plugins/response_times_over_time.rb +50 -0
  233. data/lib/jmeter-ruby/plugins/response_times_percentiles.rb +51 -0
  234. data/lib/jmeter-ruby/plugins/stepping_thread_group.rb +30 -0
  235. data/lib/jmeter-ruby/plugins/transactions_per_second.rb +50 -0
  236. data/lib/jmeter-ruby/plugins/ultimate_thread_group.rb +23 -0
  237. data/lib/jmeter-ruby/plugins/variable_throughput_timer.rb +27 -0
  238. data/lib/jmeter-ruby/version.rb +12 -0
  239. data/lib/jmeter-ruby.rb +27 -0
  240. data/mise.toml +2 -0
  241. data/script/release +162 -0
  242. data/spec/constant_throughput_timer_spec.rb +20 -0
  243. data/spec/csv_data_set_config_spec.rb +33 -0
  244. data/spec/header_manager_spec.rb +37 -0
  245. data/spec/http_cache_manager_spec.rb +29 -0
  246. data/spec/http_cookie_manager_spec.rb +169 -0
  247. data/spec/http_request_defaults_spec.rb +57 -0
  248. data/spec/http_request_spec.rb +305 -0
  249. data/spec/jmeter_plugins_spec.rb +245 -0
  250. data/spec/json_extractor_spec.rb +19 -0
  251. data/spec/json_path_assertion_spec.rb +28 -0
  252. data/spec/logic_controller_spec.rb +148 -0
  253. data/spec/loop_controller_spec.rb +19 -0
  254. data/spec/module_controller_spec.rb +56 -0
  255. data/spec/regular_expression_extractor_spec.rb +63 -0
  256. data/spec/response_assertion_spec.rb +69 -0
  257. data/spec/setup_thread_group_spec.rb +31 -0
  258. data/spec/spec_helper.rb +19 -0
  259. data/spec/thread_group_spec.rb +57 -0
  260. data/spec/throughput_controller_spec.rb +24 -0
  261. data/spec/transaction_controller_spec.rb +30 -0
  262. data/spec/user_defined_variables_spec.rb +22 -0
  263. data/spec/user_parameters_spec.rb +45 -0
  264. data/spec/with_helpers_spec.rb +57 -0
  265. data/spec/xpath_extractor_spec.rb +15 -0
  266. metadata +360 -0
@@ -0,0 +1,36 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def setup_thread_group(params={}, &block)
4
+ node = JmeterRuby::SetupThreadGroup.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SetupThreadGroup
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SetupThreadGroup' : (params[:name] || 'SetupThreadGroup')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="#{testname}" enabled="true">
17
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
18
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="#{testname}" enabled="true">
19
+ <boolProp name="LoopController.continue_forever">false</boolProp>
20
+ <stringProp name="LoopController.loops">-1</stringProp>
21
+ </elementProp>
22
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
23
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
24
+ <longProp name="ThreadGroup.start_time">1442954623000</longProp>
25
+ <longProp name="ThreadGroup.end_time">1442954623000</longProp>
26
+ <boolProp name="ThreadGroup.scheduler">true</boolProp>
27
+ <stringProp name="ThreadGroup.duration"></stringProp>
28
+ <stringProp name="ThreadGroup.delay"></stringProp>
29
+ </SetupThreadGroup>)
30
+ EOS
31
+ update params
32
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
33
+ end
34
+ end
35
+
36
+ end
@@ -0,0 +1,23 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def simple_config_element(params={}, &block)
4
+ node = JmeterRuby::SimpleConfigElement.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SimpleConfigElement
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SimpleConfigElement' : (params[:name] || 'SimpleConfigElement')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ConfigTestElement guiclass="SimpleConfigGui" testclass="ConfigTestElement" testname="#{testname}" enabled="true"/>)
17
+ EOS
18
+ update params
19
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,23 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def simple_controller(params={}, &block)
4
+ node = JmeterRuby::SimpleController.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SimpleController
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SimpleController' : (params[:name] || 'SimpleController')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <GenericController guiclass="LogicControllerGui" testclass="GenericController" testname="#{testname}" enabled="true"/>)
17
+ EOS
18
+ update params
19
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,55 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def simple_data_writer(params={}, &block)
4
+ node = JmeterRuby::SimpleDataWriter.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SimpleDataWriter
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SimpleDataWriter' : (params[:name] || 'SimpleDataWriter')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ResultCollector guiclass="SimpleDataWriter" testclass="ResultCollector" testname="#{testname}" enabled="true">
17
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
18
+ <objProp>
19
+ <name>saveConfig</name>
20
+ <value class="SampleSaveConfiguration">
21
+ <time>true</time>
22
+ <latency>true</latency>
23
+ <timestamp>true</timestamp>
24
+ <success>true</success>
25
+ <label>true</label>
26
+ <code>true</code>
27
+ <message>true</message>
28
+ <threadName>true</threadName>
29
+ <dataType>false</dataType>
30
+ <encoding>false</encoding>
31
+ <assertions>false</assertions>
32
+ <subresults>false</subresults>
33
+ <responseData>false</responseData>
34
+ <samplerData>false</samplerData>
35
+ <xml>true</xml>
36
+ <fieldNames>false</fieldNames>
37
+ <responseHeaders>true</responseHeaders>
38
+ <requestHeaders>false</requestHeaders>
39
+ <responseDataOnError>false</responseDataOnError>
40
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
41
+ <assertionsResultsToSave>0</assertionsResultsToSave>
42
+ <bytes>true</bytes>
43
+ <threadCounts>true</threadCounts>
44
+ <sampleCount>true</sampleCount>
45
+ </value>
46
+ </objProp>
47
+ <stringProp name="filename"/>
48
+ </ResultCollector>)
49
+ EOS
50
+ update params
51
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,35 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def smime_assertion(params={}, &block)
4
+ node = JmeterRuby::SmimeAssertion.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SmimeAssertion
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SmimeAssertion' : (params[:name] || 'SmimeAssertion')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SMIMEAssertion guiclass="SMIMEAssertionGui" testclass="SMIMEAssertion" testname="#{testname}" enabled="true">
17
+ <boolProp name="SMIMEAssert.verifySignature">false</boolProp>
18
+ <boolProp name="SMIMEAssert.notSigned">false</boolProp>
19
+ <stringProp name="SMIMEAssert.issuerDn"/>
20
+ <stringProp name="SMIMEAssert.signerDn"/>
21
+ <stringProp name="SMIMEAssert.signerSerial"/>
22
+ <stringProp name="SMIMEAssert.signerEmail"/>
23
+ <stringProp name="SMIMEAssert.signerCertFile"/>
24
+ <boolProp name="SMIMEAssert.signerNoCheck">false</boolProp>
25
+ <boolProp name="SMIMEAssert.signerCheckConstraints">false</boolProp>
26
+ <boolProp name="SMIMEAssert.signerCheckByFile">false</boolProp>
27
+ <stringProp name="SMIMEAssert.messagePosition"/>
28
+ </SMIMEAssertion>)
29
+ EOS
30
+ update params
31
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
32
+ end
33
+ end
34
+
35
+ end
@@ -0,0 +1,51 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def smtp_sampler(params={}, &block)
4
+ node = JmeterRuby::SmtpSampler.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SmtpSampler
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SmtpSampler' : (params[:name] || 'SmtpSampler')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SmtpSampler guiclass="SmtpSamplerGui" testclass="SmtpSampler" testname="#{testname}" enabled="true">
17
+ <stringProp name="SMTPSampler.server"/>
18
+ <stringProp name="SMTPSampler.serverPort"/>
19
+ <stringProp name="SMTPSampler.mailFrom"/>
20
+ <stringProp name="SMTPSampler.replyTo"/>
21
+ <stringProp name="SMTPSampler.receiverTo"/>
22
+ <stringProp name="SMTPSampler.receiverCC"/>
23
+ <stringProp name="SMTPSampler.receiverBCC"/>
24
+ <stringProp name="SMTPSampler.subject"/>
25
+ <stringProp name="SMTPSampler.suppressSubject">false</stringProp>
26
+ <stringProp name="SMTPSampler.include_timestamp">false</stringProp>
27
+ <stringProp name="SMTPSampler.message"/>
28
+ <stringProp name="SMTPSampler.plainBody">false</stringProp>
29
+ <stringProp name="SMTPSampler.attachFile"/>
30
+ <stringProp name="SMTPSampler.useSSL">false</stringProp>
31
+ <stringProp name="SMTPSampler.useStartTLS">false</stringProp>
32
+ <stringProp name="SMTPSampler.trustAllCerts">false</stringProp>
33
+ <stringProp name="SMTPSampler.enforceStartTLS">false</stringProp>
34
+ <stringProp name="SMTPSampler.useLocalTrustStore">false</stringProp>
35
+ <stringProp name="SMTPSampler.trustStoreToUse"/>
36
+ <boolProp name="SMTPSampler.use_eml">false</boolProp>
37
+ <stringProp name="SMTPSampler.emlMessageToSend"/>
38
+ <stringProp name="SMTPSampler.useAuth">false</stringProp>
39
+ <stringProp name="SMTPSampler.password"/>
40
+ <stringProp name="SMTPSampler.username"/>
41
+ <stringProp name="SMTPSampler.messageSizeStatistics">false</stringProp>
42
+ <stringProp name="SMTPSampler.enableDebug">false</stringProp>
43
+ <collectionProp name="SMTPSampler.headerFields"/>
44
+ </SmtpSampler>)
45
+ EOS
46
+ update params
47
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
48
+ end
49
+ end
50
+
51
+ end
@@ -0,0 +1,33 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def soapxmlrpc_request(params={}, &block)
4
+ node = JmeterRuby::SoapxmlrpcRequest.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SoapxmlrpcRequest
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SoapxmlrpcRequest' : (params[:name] || 'SoapxmlrpcRequest')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SoapSampler guiclass="SoapSamplerGui" testclass="SoapSampler" testname="#{testname}" enabled="true">
17
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
18
+ <collectionProp name="Arguments.arguments"/>
19
+ </elementProp>
20
+ <stringProp name="SoapSampler.URL_DATA"/>
21
+ <stringProp name="HTTPSamper.xml_data"/>
22
+ <stringProp name="SoapSampler.xml_data_file"/>
23
+ <stringProp name="SoapSampler.SOAP_ACTION"/>
24
+ <stringProp name="SoapSampler.SEND_SOAP_ACTION">true</stringProp>
25
+ <boolProp name="HTTPSampler.use_keepalive">false</boolProp>
26
+ </SoapSampler>)
27
+ EOS
28
+ update params
29
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,55 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def spline_visualizer(params={}, &block)
4
+ node = JmeterRuby::SplineVisualizer.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SplineVisualizer
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SplineVisualizer' : (params[:name] || 'SplineVisualizer')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ResultCollector guiclass="SplineVisualizer" testclass="ResultCollector" testname="#{testname}" enabled="true">
17
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
18
+ <objProp>
19
+ <name>saveConfig</name>
20
+ <value class="SampleSaveConfiguration">
21
+ <time>true</time>
22
+ <latency>true</latency>
23
+ <timestamp>true</timestamp>
24
+ <success>true</success>
25
+ <label>true</label>
26
+ <code>true</code>
27
+ <message>false</message>
28
+ <threadName>true</threadName>
29
+ <dataType>false</dataType>
30
+ <encoding>false</encoding>
31
+ <assertions>false</assertions>
32
+ <subresults>false</subresults>
33
+ <responseData>false</responseData>
34
+ <samplerData>false</samplerData>
35
+ <xml>false</xml>
36
+ <fieldNames>false</fieldNames>
37
+ <responseHeaders>false</responseHeaders>
38
+ <requestHeaders>false</requestHeaders>
39
+ <responseDataOnError>false</responseDataOnError>
40
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
41
+ <assertionsResultsToSave>0</assertionsResultsToSave>
42
+ <bytes>true</bytes>
43
+ <threadCounts>true</threadCounts>
44
+ <sampleCount>true</sampleCount>
45
+ </value>
46
+ </objProp>
47
+ <stringProp name="filename"/>
48
+ </ResultCollector>)
49
+ EOS
50
+ update params
51
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,55 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def summary_report(params={}, &block)
4
+ node = JmeterRuby::SummaryReport.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SummaryReport
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SummaryReport' : (params[:name] || 'SummaryReport')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="#{testname}" enabled="true">
17
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
18
+ <objProp>
19
+ <name>saveConfig</name>
20
+ <value class="SampleSaveConfiguration">
21
+ <time>true</time>
22
+ <latency>true</latency>
23
+ <timestamp>true</timestamp>
24
+ <success>true</success>
25
+ <label>true</label>
26
+ <code>true</code>
27
+ <message>false</message>
28
+ <threadName>true</threadName>
29
+ <dataType>false</dataType>
30
+ <encoding>false</encoding>
31
+ <assertions>false</assertions>
32
+ <subresults>false</subresults>
33
+ <responseData>false</responseData>
34
+ <samplerData>false</samplerData>
35
+ <xml>false</xml>
36
+ <fieldNames>false</fieldNames>
37
+ <responseHeaders>false</responseHeaders>
38
+ <requestHeaders>false</requestHeaders>
39
+ <responseDataOnError>false</responseDataOnError>
40
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
41
+ <assertionsResultsToSave>0</assertionsResultsToSave>
42
+ <bytes>true</bytes>
43
+ <threadCounts>true</threadCounts>
44
+ <sampleCount>true</sampleCount>
45
+ </value>
46
+ </objProp>
47
+ <stringProp name="filename"/>
48
+ </ResultCollector>)
49
+ EOS
50
+ update params
51
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
52
+ end
53
+ end
54
+
55
+ end
@@ -0,0 +1,25 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def switch_controller(params={}, &block)
4
+ node = JmeterRuby::SwitchController.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SwitchController
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SwitchController' : (params[:name] || 'SwitchController')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SwitchController guiclass="SwitchControllerGui" testclass="SwitchController" testname="#{testname}" enabled="true">
17
+ <stringProp name="SwitchController.value"/>
18
+ </SwitchController>)
19
+ EOS
20
+ update params
21
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
22
+ end
23
+ end
24
+
25
+ end
@@ -0,0 +1,26 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def synchronizing_timer(params={}, &block)
4
+ node = JmeterRuby::SynchronizingTimer.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class SynchronizingTimer
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'SynchronizingTimer' : (params[:name] || 'SynchronizingTimer')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <SyncTimer guiclass="TestBeanGUI" testclass="SyncTimer" testname="#{testname}" enabled="true">
17
+ <intProp name="groupSize">0</intProp>
18
+ <longProp name="timeoutInMs">0</longProp>
19
+ </SyncTimer>)
20
+ EOS
21
+ update params
22
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
23
+ end
24
+ end
25
+
26
+ end
@@ -0,0 +1,33 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def tcp_sampler(params={}, &block)
4
+ node = JmeterRuby::TcpSampler.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TcpSampler
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'TcpSampler' : (params[:name] || 'TcpSampler')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="#{testname}" enabled="true">
17
+ <stringProp name="TCPSampler.server"/>
18
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
19
+ <stringProp name="TCPSampler.port"/>
20
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
21
+ <stringProp name="TCPSampler.timeout"/>
22
+ <stringProp name="TCPSampler.request"/>
23
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
24
+ <stringProp name="ConfigTestElement.username"/>
25
+ <stringProp name="ConfigTestElement.password"/>
26
+ </TCPSampler>)
27
+ EOS
28
+ update params
29
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
30
+ end
31
+ end
32
+
33
+ end
@@ -0,0 +1,31 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def tcp_sampler_config(params={}, &block)
4
+ node = JmeterRuby::TcpSamplerConfig.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TcpSamplerConfig
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'TcpSamplerConfig' : (params[:name] || 'TcpSamplerConfig')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ConfigTestElement guiclass="TCPConfigGui" testclass="ConfigTestElement" testname="#{testname}" enabled="true">
17
+ <stringProp name="TCPSampler.server"/>
18
+ <boolProp name="TCPSampler.reUseConnection">true</boolProp>
19
+ <stringProp name="TCPSampler.port"/>
20
+ <boolProp name="TCPSampler.nodelay">false</boolProp>
21
+ <stringProp name="TCPSampler.timeout"/>
22
+ <stringProp name="TCPSampler.request"/>
23
+ <boolProp name="TCPSampler.closeConnection">false</boolProp>
24
+ </ConfigTestElement>)
25
+ EOS
26
+ update params
27
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,27 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def test_action(params={}, &block)
4
+ node = JmeterRuby::TestAction.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TestAction
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'TestAction' : (params[:name] || 'TestAction')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TestAction guiclass="TestActionGui" testclass="TestAction" testname="#{testname}" enabled="true">
17
+ <intProp name="ActionProcessor.action">1</intProp>
18
+ <intProp name="ActionProcessor.target">0</intProp>
19
+ <stringProp name="ActionProcessor.duration"/>
20
+ </TestAction>)
21
+ EOS
22
+ update params
23
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
24
+ end
25
+ end
26
+
27
+ end
@@ -0,0 +1,23 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def test_fragment(params={}, &block)
4
+ node = JmeterRuby::TestFragment.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TestFragment
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'TestFragment' : (params[:name] || 'TestFragment')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TestFragmentController guiclass="TestFragmentControllerGui" testclass="TestFragmentController" testname="#{testname}" enabled="true"/>)
17
+ EOS
18
+ update params
19
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,31 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def test_plan(params={}, &block)
4
+ node = JmeterRuby::TestPlan.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class TestPlan
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'TestPlan' : (params[:name] || 'TestPlan')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="#{testname}" enabled="true">
17
+ <stringProp name="TestPlan.comments"/>
18
+ <boolProp name="TestPlan.functional_mode">false</boolProp>
19
+ <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
20
+ <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="#{testname}" enabled="true">
21
+ <collectionProp name="Arguments.arguments"/>
22
+ </elementProp>
23
+ <stringProp name="TestPlan.user_define_classpath"/>
24
+ </TestPlan>)
25
+ EOS
26
+ update params
27
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
28
+ end
29
+ end
30
+
31
+ end
@@ -0,0 +1,37 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def thread_group(params={}, &block)
4
+ node = JmeterRuby::ThreadGroup.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class ThreadGroup
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'ThreadGroup' : (params[:name] || 'ThreadGroup')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="#{testname}" enabled="true">
17
+ <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
18
+ <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="#{testname}" enabled="true">
19
+ <boolProp name="LoopController.continue_forever">false</boolProp>
20
+ <intProp name="LoopController.loops">-1</intProp>
21
+ </elementProp>
22
+ <stringProp name="ThreadGroup.num_threads">1</stringProp>
23
+ <stringProp name="ThreadGroup.ramp_time">1</stringProp>
24
+ <longProp name="ThreadGroup.start_time">1366415241000</longProp>
25
+ <longProp name="ThreadGroup.end_time">1366415241000</longProp>
26
+ <boolProp name="ThreadGroup.scheduler">true</boolProp>
27
+ <stringProp name="ThreadGroup.duration"/>
28
+ <stringProp name="ThreadGroup.delay"/>
29
+ <boolProp name="ThreadGroup.delayedStart">true</boolProp>
30
+ </ThreadGroup>)
31
+ EOS
32
+ update params
33
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
34
+ end
35
+ end
36
+
37
+ end
@@ -0,0 +1,32 @@
1
+ module JmeterRuby
2
+ class DSL
3
+ def throughput_controller(params={}, &block)
4
+ node = JmeterRuby::ThroughputController.new(params)
5
+ attach_node(node, &block)
6
+ end
7
+ end
8
+
9
+ class ThroughputController
10
+ attr_accessor :doc
11
+ include Helper
12
+
13
+ def initialize(params={})
14
+ testname = params.kind_of?(Array) ? 'ThroughputController' : (params[:name] || 'ThroughputController')
15
+ @doc = Nokogiri::XML(<<-EOS.strip_heredoc)
16
+ <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="#{testname}" enabled="true">
17
+ <intProp name="ThroughputController.style">0</intProp>
18
+ <boolProp name="ThroughputController.perThread">false</boolProp>
19
+ <intProp name="ThroughputController.maxThroughput">1</intProp>
20
+ <FloatProperty>
21
+ <name>ThroughputController.percentThroughput</name>
22
+ <value>100.0</value>
23
+ <savedValue>0.0</savedValue>
24
+ </FloatProperty>
25
+ </ThroughputController>)
26
+ EOS
27
+ update params
28
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
29
+ end
30
+ end
31
+
32
+ end