jmeter_perf 1.0.9

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 (275) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +3 -0
  3. data/.rubocop.yml +19 -0
  4. data/.standard.yml +4 -0
  5. data/CHANGELOG.md +18 -0
  6. data/DSL.md +235 -0
  7. data/README.md +24 -0
  8. data/Rakefile +12 -0
  9. data/example/Gemfile +39 -0
  10. data/example/Gemfile.lock +232 -0
  11. data/example/README.md +3 -0
  12. data/example/Rakefile +6 -0
  13. data/example/app/controllers/application_controller.rb +2 -0
  14. data/example/app/controllers/test_controller.rb +15 -0
  15. data/example/bin/bundle +109 -0
  16. data/example/bin/docker-entrypoint +8 -0
  17. data/example/bin/rails +4 -0
  18. data/example/bin/rake +4 -0
  19. data/example/bin/setup +33 -0
  20. data/example/config/application.rb +44 -0
  21. data/example/config/boot.rb +3 -0
  22. data/example/config/credentials.yml.enc +1 -0
  23. data/example/config/database.yml +25 -0
  24. data/example/config/environment.rb +5 -0
  25. data/example/config/environments/development.rb +64 -0
  26. data/example/config/environments/production.rb +82 -0
  27. data/example/config/environments/test.rb +61 -0
  28. data/example/config/initializers/cors.rb +16 -0
  29. data/example/config/initializers/filter_parameter_logging.rb +8 -0
  30. data/example/config/initializers/inflections.rb +16 -0
  31. data/example/config/locales/en.yml +31 -0
  32. data/example/config/puma.rb +35 -0
  33. data/example/config/routes.rb +5 -0
  34. data/example/config.ru +7 -0
  35. data/example/fast.log +49 -0
  36. data/example/jmeter.log +28 -0
  37. data/example/lib/tasks/test.rake +40 -0
  38. data/example/log/.keep +0 -0
  39. data/example/public/robots.txt +1 -0
  40. data/example/random.log +49 -0
  41. data/example/slow.log +49 -0
  42. data/example/vendor/.keep +0 -0
  43. data/lib/Rakefile +4 -0
  44. data/lib/jmeter_perf/dsl/access_log_sampler.rb +38 -0
  45. data/lib/jmeter_perf/dsl/aggregate_graph.rb +61 -0
  46. data/lib/jmeter_perf/dsl/aggregate_report.rb +61 -0
  47. data/lib/jmeter_perf/dsl/ajp13_sampler.rb +47 -0
  48. data/lib/jmeter_perf/dsl/assertion_results.rb +61 -0
  49. data/lib/jmeter_perf/dsl/bean_shell_assertion.rb +34 -0
  50. data/lib/jmeter_perf/dsl/bean_shell_listener.rb +34 -0
  51. data/lib/jmeter_perf/dsl/bean_shell_postprocessor.rb +34 -0
  52. data/lib/jmeter_perf/dsl/bean_shell_preprocessor.rb +34 -0
  53. data/lib/jmeter_perf/dsl/bean_shell_sampler.rb +34 -0
  54. data/lib/jmeter_perf/dsl/bean_shell_timer.rb +34 -0
  55. data/lib/jmeter_perf/dsl/bsf_assertion.rb +34 -0
  56. data/lib/jmeter_perf/dsl/bsf_listener.rb +34 -0
  57. data/lib/jmeter_perf/dsl/bsf_postprocessor.rb +34 -0
  58. data/lib/jmeter_perf/dsl/bsf_preprocessor.rb +34 -0
  59. data/lib/jmeter_perf/dsl/bsf_sampler.rb +34 -0
  60. data/lib/jmeter_perf/dsl/bsf_timer.rb +34 -0
  61. data/lib/jmeter_perf/dsl/compare_assertion.rb +33 -0
  62. data/lib/jmeter_perf/dsl/comparison_assertion_visualizer.rb +61 -0
  63. data/lib/jmeter_perf/dsl/constant_throughput_timer.rb +32 -0
  64. data/lib/jmeter_perf/dsl/constant_timer.rb +31 -0
  65. data/lib/jmeter_perf/dsl/counter.rb +37 -0
  66. data/lib/jmeter_perf/dsl/css_jquery_extractor.rb +37 -0
  67. data/lib/jmeter_perf/dsl/csv_data_set_config.rb +39 -0
  68. data/lib/jmeter_perf/dsl/debug_postprocessor.rb +34 -0
  69. data/lib/jmeter_perf/dsl/debug_sampler.rb +33 -0
  70. data/lib/jmeter_perf/dsl/distribution_graphalpha.rb +61 -0
  71. data/lib/jmeter_perf/dsl/duration_assertion.rb +31 -0
  72. data/lib/jmeter_perf/dsl/for_each_controller.rb +33 -0
  73. data/lib/jmeter_perf/dsl/ftp_request.rb +40 -0
  74. data/lib/jmeter_perf/dsl/ftp_request_defaults.rb +38 -0
  75. data/lib/jmeter_perf/dsl/gaussian_random_timer.rb +32 -0
  76. data/lib/jmeter_perf/dsl/generate_summary_results.rb +29 -0
  77. data/lib/jmeter_perf/dsl/graph_results.rb +61 -0
  78. data/lib/jmeter_perf/dsl/html_assertion.rb +36 -0
  79. data/lib/jmeter_perf/dsl/html_link_parser.rb +29 -0
  80. data/lib/jmeter_perf/dsl/html_parameter_mask.rb +38 -0
  81. data/lib/jmeter_perf/dsl/http_authorization_manager.rb +39 -0
  82. data/lib/jmeter_perf/dsl/http_cache_manager.rb +32 -0
  83. data/lib/jmeter_perf/dsl/http_cookie_manager.rb +34 -0
  84. data/lib/jmeter_perf/dsl/http_header_manager.rb +36 -0
  85. data/lib/jmeter_perf/dsl/http_request.rb +47 -0
  86. data/lib/jmeter_perf/dsl/http_request_defaults.rb +53 -0
  87. data/lib/jmeter_perf/dsl/http_url_rewriting_modifier.rb +36 -0
  88. data/lib/jmeter_perf/dsl/if_controller.rb +33 -0
  89. data/lib/jmeter_perf/dsl/include_controller.rb +31 -0
  90. data/lib/jmeter_perf/dsl/j_unit_request.rb +43 -0
  91. data/lib/jmeter_perf/dsl/java_request.rb +75 -0
  92. data/lib/jmeter_perf/dsl/java_request_defaults.rb +75 -0
  93. data/lib/jmeter_perf/dsl/jdbc_connection_configuration.rb +43 -0
  94. data/lib/jmeter_perf/dsl/jdbc_postprocessor.rb +39 -0
  95. data/lib/jmeter_perf/dsl/jdbc_preprocessor.rb +39 -0
  96. data/lib/jmeter_perf/dsl/jdbc_request.rb +39 -0
  97. data/lib/jmeter_perf/dsl/jms_pointto_point.rb +47 -0
  98. data/lib/jmeter_perf/dsl/jms_publisher.rb +49 -0
  99. data/lib/jmeter_perf/dsl/jms_subscriber.rb +41 -0
  100. data/lib/jmeter_perf/dsl/json_path_postprocessor.rb +33 -0
  101. data/lib/jmeter_perf/dsl/jsr223_assertion.rb +35 -0
  102. data/lib/jmeter_perf/dsl/jsr223_listener.rb +35 -0
  103. data/lib/jmeter_perf/dsl/jsr223_postprocessor.rb +35 -0
  104. data/lib/jmeter_perf/dsl/jsr223_preprocessor.rb +35 -0
  105. data/lib/jmeter_perf/dsl/jsr223_sampler.rb +35 -0
  106. data/lib/jmeter_perf/dsl/jsr223_timer.rb +35 -0
  107. data/lib/jmeter_perf/dsl/keystore_configuration.rb +34 -0
  108. data/lib/jmeter_perf/dsl/ldap_extended_request.rb +48 -0
  109. data/lib/jmeter_perf/dsl/ldap_extended_request_defaults.rb +48 -0
  110. data/lib/jmeter_perf/dsl/ldap_request.rb +41 -0
  111. data/lib/jmeter_perf/dsl/ldap_request_defaults.rb +45 -0
  112. data/lib/jmeter_perf/dsl/login_config_element.rb +32 -0
  113. data/lib/jmeter_perf/dsl/loop_controller.rb +32 -0
  114. data/lib/jmeter_perf/dsl/mail_reader_sampler.rb +43 -0
  115. data/lib/jmeter_perf/dsl/mailer_visualizer.rb +70 -0
  116. data/lib/jmeter_perf/dsl/md5_hex_assertion.rb +31 -0
  117. data/lib/jmeter_perf/dsl/module_controller.rb +31 -0
  118. data/lib/jmeter_perf/dsl/monitor_results.rb +61 -0
  119. data/lib/jmeter_perf/dsl/once_only_controller.rb +29 -0
  120. data/lib/jmeter_perf/dsl/os_process_sampler.rb +40 -0
  121. data/lib/jmeter_perf/dsl/poisson_random_timer.rb +32 -0
  122. data/lib/jmeter_perf/dsl/random_controller.rb +31 -0
  123. data/lib/jmeter_perf/dsl/random_order_controller.rb +29 -0
  124. data/lib/jmeter_perf/dsl/random_variable.rb +36 -0
  125. data/lib/jmeter_perf/dsl/recording_controller.rb +29 -0
  126. data/lib/jmeter_perf/dsl/reg_ex_user_parameters.rb +33 -0
  127. data/lib/jmeter_perf/dsl/regular_expression_extractor.rb +38 -0
  128. data/lib/jmeter_perf/dsl/response_assertion.rb +37 -0
  129. data/lib/jmeter_perf/dsl/response_time_graph.rb +61 -0
  130. data/lib/jmeter_perf/dsl/result_status_action_handler.rb +31 -0
  131. data/lib/jmeter_perf/dsl/runtime_controller.rb +31 -0
  132. data/lib/jmeter_perf/dsl/save_responses_to_a_file.rb +35 -0
  133. data/lib/jmeter_perf/dsl/simple_config_element.rb +29 -0
  134. data/lib/jmeter_perf/dsl/simple_controller.rb +29 -0
  135. data/lib/jmeter_perf/dsl/simple_data_writer.rb +61 -0
  136. data/lib/jmeter_perf/dsl/smime_assertion.rb +41 -0
  137. data/lib/jmeter_perf/dsl/smtp_sampler.rb +57 -0
  138. data/lib/jmeter_perf/dsl/soap_xml_rpc_request.rb +39 -0
  139. data/lib/jmeter_perf/dsl/spline_visualizer.rb +61 -0
  140. data/lib/jmeter_perf/dsl/summary_report.rb +61 -0
  141. data/lib/jmeter_perf/dsl/switch_controller.rb +31 -0
  142. data/lib/jmeter_perf/dsl/synchronizing_timer.rb +32 -0
  143. data/lib/jmeter_perf/dsl/tcp_sampler.rb +39 -0
  144. data/lib/jmeter_perf/dsl/tcp_sampler_config.rb +37 -0
  145. data/lib/jmeter_perf/dsl/test_action.rb +33 -0
  146. data/lib/jmeter_perf/dsl/test_fragment.rb +29 -0
  147. data/lib/jmeter_perf/dsl/test_plan.rb +37 -0
  148. data/lib/jmeter_perf/dsl/thread_group.rb +43 -0
  149. data/lib/jmeter_perf/dsl/throughput_controller.rb +38 -0
  150. data/lib/jmeter_perf/dsl/transaction_controller.rb +32 -0
  151. data/lib/jmeter_perf/dsl/uniform_random_timer.rb +32 -0
  152. data/lib/jmeter_perf/dsl/user_defined_variables.rb +39 -0
  153. data/lib/jmeter_perf/dsl/user_parameters.rb +36 -0
  154. data/lib/jmeter_perf/dsl/view_results_in_table.rb +61 -0
  155. data/lib/jmeter_perf/dsl/view_results_tree.rb +61 -0
  156. data/lib/jmeter_perf/dsl/while_controller.rb +31 -0
  157. data/lib/jmeter_perf/dsl/x_path_assertion.rb +37 -0
  158. data/lib/jmeter_perf/dsl/x_path_extractor.rb +37 -0
  159. data/lib/jmeter_perf/dsl/xml_assertion.rb +29 -0
  160. data/lib/jmeter_perf/dsl/xml_schema_assertion.rb +31 -0
  161. data/lib/jmeter_perf/extend/assertions/response_assertion.rb +38 -0
  162. data/lib/jmeter_perf/extend/config_elements/header_manager.rb +13 -0
  163. data/lib/jmeter_perf/extend/config_elements/http_cache_manager.rb +12 -0
  164. data/lib/jmeter_perf/extend/config_elements/http_cookie_manager.rb +39 -0
  165. data/lib/jmeter_perf/extend/config_elements/http_request_defaults.rb +55 -0
  166. data/lib/jmeter_perf/extend/config_elements/user_defined_variables.rb +13 -0
  167. data/lib/jmeter_perf/extend/config_elements/user_parameters.rb +31 -0
  168. data/lib/jmeter_perf/extend/controllers/foreach_controller.rb +31 -0
  169. data/lib/jmeter_perf/extend/controllers/loop_controller.rb +11 -0
  170. data/lib/jmeter_perf/extend/controllers/module_controller.rb +26 -0
  171. data/lib/jmeter_perf/extend/controllers/throughput_controller.rb +15 -0
  172. data/lib/jmeter_perf/extend/controllers/transaction_controller.rb +14 -0
  173. data/lib/jmeter_perf/extend/misc/exists.rb +13 -0
  174. data/lib/jmeter_perf/extend/misc/rsync.rb +24 -0
  175. data/lib/jmeter_perf/extend/misc/uuid.rb +12 -0
  176. data/lib/jmeter_perf/extend/misc/with_helpers.rb +27 -0
  177. data/lib/jmeter_perf/extend/plugins/jmeter_plugins.rb +124 -0
  178. data/lib/jmeter_perf/extend/processors/extract.rb +27 -0
  179. data/lib/jmeter_perf/extend/processors/regular_expression_extractor.rb +27 -0
  180. data/lib/jmeter_perf/extend/samplers/http_request.rb +66 -0
  181. data/lib/jmeter_perf/extend/samplers/jms_pointtopoint.rb +23 -0
  182. data/lib/jmeter_perf/extend/samplers/soapxmlrpc_request.rb +10 -0
  183. data/lib/jmeter_perf/extend/threads/thread_group.rb +19 -0
  184. data/lib/jmeter_perf/extend/timers/constant_throughput_timer.rb +11 -0
  185. data/lib/jmeter_perf/extend/timers/random_timer.rb +14 -0
  186. data/lib/jmeter_perf/helpers/dsl_generator.rb +157 -0
  187. data/lib/jmeter_perf/helpers/fallback_content_proxy.rb +96 -0
  188. data/lib/jmeter_perf/helpers/helper.rb +63 -0
  189. data/lib/jmeter_perf/helpers/parser.rb +143 -0
  190. data/lib/jmeter_perf/helpers/running_statistics.rb +62 -0
  191. data/lib/jmeter_perf/helpers/string.rb +60 -0
  192. data/lib/jmeter_perf/helpers/user-agents.rb +42 -0
  193. data/lib/jmeter_perf/plugins/active_threads_over_time.rb +59 -0
  194. data/lib/jmeter_perf/plugins/composite_graph.rb +77 -0
  195. data/lib/jmeter_perf/plugins/console_status_logger.rb +19 -0
  196. data/lib/jmeter_perf/plugins/dummy_sampler.rb +30 -0
  197. data/lib/jmeter_perf/plugins/jmx_collector.rb +74 -0
  198. data/lib/jmeter_perf/plugins/json_path_assertion.rb +23 -0
  199. data/lib/jmeter_perf/plugins/json_path_extractor.rb +22 -0
  200. data/lib/jmeter_perf/plugins/latencies_over_time.rb +53 -0
  201. data/lib/jmeter_perf/plugins/loadosophia_uploader.rb +66 -0
  202. data/lib/jmeter_perf/plugins/perfmon_collector.rb +87 -0
  203. data/lib/jmeter_perf/plugins/redis_data_set.rb +43 -0
  204. data/lib/jmeter_perf/plugins/response_codes_per_second.rb +53 -0
  205. data/lib/jmeter_perf/plugins/response_times_distribution.rb +53 -0
  206. data/lib/jmeter_perf/plugins/response_times_over_time.rb +53 -0
  207. data/lib/jmeter_perf/plugins/response_times_percentiles.rb +54 -0
  208. data/lib/jmeter_perf/plugins/stepping_thread_group.rb +34 -0
  209. data/lib/jmeter_perf/plugins/transactions_per_second.rb +53 -0
  210. data/lib/jmeter_perf/plugins/ultimate_thread_group.rb +28 -0
  211. data/lib/jmeter_perf/plugins/variable_throughput_timer.rb +35 -0
  212. data/lib/jmeter_perf/report/comparator.rb +258 -0
  213. data/lib/jmeter_perf/report/summary.rb +268 -0
  214. data/lib/jmeter_perf/tasks/dsl.rake +19 -0
  215. data/lib/jmeter_perf/version.rb +5 -0
  216. data/lib/jmeter_perf/views/report_template.html.erb +114 -0
  217. data/lib/jmeter_perf.rb +183 -0
  218. data/lib/specifications/idl.xml +1494 -0
  219. data/sig/jmeter_perf.rbs +195 -0
  220. data/sorbet/config +5 -0
  221. data/sorbet/rbi/annotations/.gitattributes +1 -0
  222. data/sorbet/rbi/annotations/rainbow.rbi +269 -0
  223. data/sorbet/rbi/gems/.gitattributes +1 -0
  224. data/sorbet/rbi/gems/ast@2.4.2.rbi +585 -0
  225. data/sorbet/rbi/gems/bump@0.10.0.rbi +169 -0
  226. data/sorbet/rbi/gems/byebug@11.1.3.rbi +3607 -0
  227. data/sorbet/rbi/gems/coderay@1.1.3.rbi +3427 -0
  228. data/sorbet/rbi/gems/diff-lcs@1.5.1.rbi +1131 -0
  229. data/sorbet/rbi/gems/docile@1.4.1.rbi +377 -0
  230. data/sorbet/rbi/gems/erubi@1.13.0.rbi +150 -0
  231. data/sorbet/rbi/gems/json@2.7.2.rbi +1562 -0
  232. data/sorbet/rbi/gems/language_server-protocol@3.17.0.3.rbi +14238 -0
  233. data/sorbet/rbi/gems/lint_roller@1.1.0.rbi +240 -0
  234. data/sorbet/rbi/gems/method_source@1.1.0.rbi +304 -0
  235. data/sorbet/rbi/gems/netrc@0.11.0.rbi +159 -0
  236. data/sorbet/rbi/gems/nokogiri@1.16.7.rbi +7311 -0
  237. data/sorbet/rbi/gems/parallel@1.26.3.rbi +291 -0
  238. data/sorbet/rbi/gems/parser@3.3.5.0.rbi +5519 -0
  239. data/sorbet/rbi/gems/prism@1.2.0.rbi +39085 -0
  240. data/sorbet/rbi/gems/pry-byebug@3.10.1.rbi +1151 -0
  241. data/sorbet/rbi/gems/pry@0.14.2.rbi +10076 -0
  242. data/sorbet/rbi/gems/racc@1.8.1.rbi +162 -0
  243. data/sorbet/rbi/gems/rainbow@3.1.1.rbi +403 -0
  244. data/sorbet/rbi/gems/rake@13.2.1.rbi +3074 -0
  245. data/sorbet/rbi/gems/rbi@0.2.1.rbi +4535 -0
  246. data/sorbet/rbi/gems/rbtree3@0.7.1.rbi +9 -0
  247. data/sorbet/rbi/gems/regexp_parser@2.9.2.rbi +3772 -0
  248. data/sorbet/rbi/gems/rexml@3.3.8.rbi +4858 -0
  249. data/sorbet/rbi/gems/rspec-core@3.13.1.rbi +11132 -0
  250. data/sorbet/rbi/gems/rspec-expectations@3.13.3.rbi +8183 -0
  251. data/sorbet/rbi/gems/rspec-mocks@3.13.1.rbi +5341 -0
  252. data/sorbet/rbi/gems/rspec-support@3.13.1.rbi +1630 -0
  253. data/sorbet/rbi/gems/rspec@3.13.0.rbi +83 -0
  254. data/sorbet/rbi/gems/rubocop-ast@1.32.3.rbi +7054 -0
  255. data/sorbet/rbi/gems/rubocop-performance@1.21.1.rbi +9 -0
  256. data/sorbet/rbi/gems/rubocop@1.65.1.rbi +58182 -0
  257. data/sorbet/rbi/gems/ruby-progressbar@1.13.0.rbi +1318 -0
  258. data/sorbet/rbi/gems/simplecov-html@0.13.1.rbi +225 -0
  259. data/sorbet/rbi/gems/simplecov@0.22.0.rbi +2149 -0
  260. data/sorbet/rbi/gems/simplecov_json_formatter@0.1.4.rbi +9 -0
  261. data/sorbet/rbi/gems/spoom@1.5.0.rbi +4932 -0
  262. data/sorbet/rbi/gems/standard-custom@1.0.2.rbi +9 -0
  263. data/sorbet/rbi/gems/standard-performance@1.4.0.rbi +9 -0
  264. data/sorbet/rbi/gems/standard@1.40.0.rbi +926 -0
  265. data/sorbet/rbi/gems/tapioca@0.16.3.rbi +3596 -0
  266. data/sorbet/rbi/gems/tdigest@0.2.1.rbi +170 -0
  267. data/sorbet/rbi/gems/thor@1.3.2.rbi +4378 -0
  268. data/sorbet/rbi/gems/unicode-display_width@2.6.0.rbi +66 -0
  269. data/sorbet/rbi/gems/yard-sorbet@0.9.0.rbi +435 -0
  270. data/sorbet/rbi/gems/yard@0.9.37.rbi +18379 -0
  271. data/sorbet/rbi/todo.rbi +31 -0
  272. data/sorbet/tapioca/config.yml +13 -0
  273. data/sorbet/tapioca/require.rb +15 -0
  274. data/tasks/dsl.rake +22 -0
  275. metadata +355 -0
@@ -0,0 +1,31 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element DurationAssertion
4
+ # @param params [Hash] Parameters for the DurationAssertion element (default: `{}`).
5
+ # @yield block to attach to the DurationAssertion element
6
+ # @return [JmeterPerf::DurationAssertion], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#durationassertion
8
+ def duration_assertion(params = {}, &)
9
+ node = DurationAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class DurationAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "DurationAssertion" : (params[:name] || "DurationAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <DurationAssertion guiclass="DurationAssertionGui" testclass="DurationAssertion" testname="#{testname}" enabled="true">
22
+ <stringProp name="DurationAssertion.duration"/>
23
+ </DurationAssertion>
24
+ EOS
25
+ ))
26
+ update params
27
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,33 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element ForEachController
4
+ # @param params [Hash] Parameters for the ForEachController element (default: `{}`).
5
+ # @yield block to attach to the ForEachController element
6
+ # @return [JmeterPerf::ForEachController], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#foreachcontroller
8
+ def for_each_controller(params = {}, &)
9
+ node = ForEachController.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class ForEachController
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "ForEachController" : (params[:name] || "ForEachController")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ForeachController guiclass="ForeachControlPanel" testclass="ForeachController" testname="#{testname}" enabled="true">
22
+ <stringProp name="ForeachController.inputVal"/>
23
+ <stringProp name="ForeachController.returnVal"/>
24
+ <boolProp name="ForeachController.useSeparator">true</boolProp>
25
+ </ForeachController>
26
+ EOS
27
+ ))
28
+ update params
29
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,40 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element FTPRequest
4
+ # @param params [Hash] Parameters for the FTPRequest element (default: `{}`).
5
+ # @yield block to attach to the FTPRequest element
6
+ # @return [JmeterPerf::FTPRequest], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#ftprequest
8
+ def ftp_request(params = {}, &)
9
+ node = FTPRequest.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class FTPRequest
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "FTPRequest" : (params[:name] || "FTPRequest")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <FTPSampler guiclass="FtpTestSamplerGui" testclass="FTPSampler" testname="#{testname}" enabled="true">
22
+ <stringProp name="FTPSampler.server"/>
23
+ <stringProp name="FTPSampler.port"/>
24
+ <stringProp name="FTPSampler.filename"/>
25
+ <stringProp name="FTPSampler.localfilename"/>
26
+ <stringProp name="FTPSampler.inputdata"/>
27
+ <boolProp name="FTPSampler.binarymode">false</boolProp>
28
+ <boolProp name="FTPSampler.saveresponse">false</boolProp>
29
+ <boolProp name="FTPSampler.upload">false</boolProp>
30
+ <stringProp name="ConfigTestElement.username"/>
31
+ <stringProp name="ConfigTestElement.password"/>
32
+ </FTPSampler>
33
+ EOS
34
+ ))
35
+ update params
36
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,38 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element FTPRequestDefaults
4
+ # @param params [Hash] Parameters for the FTPRequestDefaults element (default: `{}`).
5
+ # @yield block to attach to the FTPRequestDefaults element
6
+ # @return [JmeterPerf::FTPRequestDefaults], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#ftprequestdefaults
8
+ def ftp_request_defaults(params = {}, &)
9
+ node = FTPRequestDefaults.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class FTPRequestDefaults
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "FTPRequestDefaults" : (params[:name] || "FTPRequestDefaults")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ConfigTestElement guiclass="FtpConfigGui" testclass="ConfigTestElement" testname="#{testname}" enabled="true">
22
+ <stringProp name="FTPSampler.server"/>
23
+ <stringProp name="FTPSampler.port"/>
24
+ <stringProp name="FTPSampler.filename"/>
25
+ <stringProp name="FTPSampler.localfilename"/>
26
+ <stringProp name="FTPSampler.inputdata"/>
27
+ <boolProp name="FTPSampler.binarymode">false</boolProp>
28
+ <boolProp name="FTPSampler.saveresponse">false</boolProp>
29
+ <boolProp name="FTPSampler.upload">false</boolProp>
30
+ </ConfigTestElement>
31
+ EOS
32
+ ))
33
+ update params
34
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,32 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element GaussianRandomTimer
4
+ # @param params [Hash] Parameters for the GaussianRandomTimer element (default: `{}`).
5
+ # @yield block to attach to the GaussianRandomTimer element
6
+ # @return [JmeterPerf::GaussianRandomTimer], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#gaussianrandomtimer
8
+ def gaussian_random_timer(params = {}, &)
9
+ node = GaussianRandomTimer.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class GaussianRandomTimer
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "GaussianRandomTimer" : (params[:name] || "GaussianRandomTimer")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <GaussianRandomTimer guiclass="GaussianRandomTimerGui" testclass="GaussianRandomTimer" testname="#{testname}" enabled="true">
22
+ <stringProp name="ConstantTimer.delay">300</stringProp>
23
+ <stringProp name="RandomTimer.range">100.0</stringProp>
24
+ </GaussianRandomTimer>
25
+ EOS
26
+ ))
27
+ update params
28
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,29 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element GenerateSummaryResults
4
+ # @param params [Hash] Parameters for the GenerateSummaryResults element (default: `{}`).
5
+ # @yield block to attach to the GenerateSummaryResults element
6
+ # @return [JmeterPerf::GenerateSummaryResults], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#generatesummaryresults
8
+ def generate_summary_results(params = {}, &)
9
+ node = GenerateSummaryResults.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class GenerateSummaryResults
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "GenerateSummaryResults" : (params[:name] || "GenerateSummaryResults")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <Summariser guiclass="SummariserGui" testclass="Summariser" testname="#{testname}" enabled="true"/>
22
+ EOS
23
+ ))
24
+ update params
25
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,61 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element GraphResults
4
+ # @param params [Hash] Parameters for the GraphResults element (default: `{}`).
5
+ # @yield block to attach to the GraphResults element
6
+ # @return [JmeterPerf::GraphResults], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#graphresults
8
+ def graph_results(params = {}, &)
9
+ node = GraphResults.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class GraphResults
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "GraphResults" : (params[:name] || "GraphResults")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="#{testname}" enabled="true">
22
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
23
+ <objProp>
24
+ <name>saveConfig</name>
25
+ <value class="SampleSaveConfiguration">
26
+ <time>true</time>
27
+ <latency>true</latency>
28
+ <timestamp>true</timestamp>
29
+ <success>true</success>
30
+ <label>true</label>
31
+ <code>true</code>
32
+ <message>false</message>
33
+ <threadName>true</threadName>
34
+ <dataType>false</dataType>
35
+ <encoding>false</encoding>
36
+ <assertions>false</assertions>
37
+ <subresults>false</subresults>
38
+ <responseData>false</responseData>
39
+ <samplerData>false</samplerData>
40
+ <xml>false</xml>
41
+ <fieldNames>false</fieldNames>
42
+ <responseHeaders>false</responseHeaders>
43
+ <requestHeaders>false</requestHeaders>
44
+ <responseDataOnError>false</responseDataOnError>
45
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
46
+ <assertionsResultsToSave>0</assertionsResultsToSave>
47
+ <bytes>true</bytes>
48
+ <threadCounts>true</threadCounts>
49
+ <sampleCount>true</sampleCount>
50
+ </value>
51
+ </objProp>
52
+ <stringProp name="filename"/>
53
+ </ResultCollector>
54
+ EOS
55
+ ))
56
+ update params
57
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,36 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTMLAssertion
4
+ # @param params [Hash] Parameters for the HTMLAssertion element (default: `{}`).
5
+ # @yield block to attach to the HTMLAssertion element
6
+ # @return [JmeterPerf::HTMLAssertion], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#htmlassertion
8
+ def html_assertion(params = {}, &)
9
+ node = HTMLAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTMLAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTMLAssertion" : (params[:name] || "HTMLAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <HTMLAssertion guiclass="HTMLAssertionGui" testclass="HTMLAssertion" testname="#{testname}" enabled="true">
22
+ <longProp name="html_assertion_error_threshold">0</longProp>
23
+ <longProp name="html_assertion_warning_threshold">0</longProp>
24
+ <stringProp name="html_assertion_doctype">omit</stringProp>
25
+ <boolProp name="html_assertion_errorsonly">false</boolProp>
26
+ <longProp name="html_assertion_format">0</longProp>
27
+ <stringProp name="html_assertion_filename"/>
28
+ </HTMLAssertion>
29
+ EOS
30
+ ))
31
+ update params
32
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTMLLinkParser
4
+ # @param params [Hash] Parameters for the HTMLLinkParser element (default: `{}`).
5
+ # @yield block to attach to the HTMLLinkParser element
6
+ # @return [JmeterPerf::HTMLLinkParser], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#htmllinkparser
8
+ def html_link_parser(params = {}, &)
9
+ node = HTMLLinkParser.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTMLLinkParser
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTMLLinkParser" : (params[:name] || "HTMLLinkParser")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <AnchorModifier guiclass="AnchorModifierGui" testclass="AnchorModifier" testname="#{testname}" enabled="true"/>
22
+ EOS
23
+ ))
24
+ update params
25
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,38 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTMLParameterMask
4
+ # @param params [Hash] Parameters for the HTMLParameterMask element (default: `{}`).
5
+ # @yield block to attach to the HTMLParameterMask element
6
+ # @return [JmeterPerf::HTMLParameterMask], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#htmlparametermask
8
+ def html_parameter_mask(params = {}, &)
9
+ node = HTMLParameterMask.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTMLParameterMask
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTMLParameterMask" : (params[:name] || "HTMLParameterMask")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ConfigTestElement guiclass="ObsoleteGui" testclass="ConfigTestElement" testname="#{testname}" enabled="true">
22
+ <elementProp name="ParamModifier.mask" elementType="ConfigTestElement">
23
+ <stringProp name="ParamModifier.field_name"/>
24
+ <stringProp name="ParamModifier.prefix"/>
25
+ <longProp name="ParamModifier.lower_bound">0</longProp>
26
+ <longProp name="ParamModifier.upper_bound">10</longProp>
27
+ <longProp name="ParamModifier.increment">1</longProp>
28
+ <stringProp name="ParamModifier.suffix"/>
29
+ </elementProp>
30
+ </ConfigTestElement>
31
+ EOS
32
+ ))
33
+ update params
34
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,39 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPAuthorizationManager
4
+ # @param params [Hash] Parameters for the HTTPAuthorizationManager element (default: `{}`).
5
+ # @yield block to attach to the HTTPAuthorizationManager element
6
+ # @return [JmeterPerf::HTTPAuthorizationManager], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httpauthorizationmanager
8
+ def http_authorization_manager(params = {}, &)
9
+ node = HTTPAuthorizationManager.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPAuthorizationManager
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPAuthorizationManager" : (params[:name] || "HTTPAuthorizationManager")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="#{testname}" enabled="true">
22
+ <collectionProp name="AuthManager.auth_list">
23
+ <elementProp name="" elementType="Authorization">
24
+ <stringProp name="Authorization.url"/>
25
+ <stringProp name="Authorization.username"/>
26
+ <stringProp name="Authorization.password"/>
27
+ <stringProp name="Authorization.domain"/>
28
+ <stringProp name="Authorization.realm"/>
29
+ </elementProp>
30
+ </collectionProp>
31
+ </AuthManager>
32
+ EOS
33
+ ))
34
+ update params
35
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,32 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPCacheManager
4
+ # @param params [Hash] Parameters for the HTTPCacheManager element (default: `{}`).
5
+ # @yield block to attach to the HTTPCacheManager element
6
+ # @return [JmeterPerf::HTTPCacheManager], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httpcachemanager
8
+ def http_cache_manager(params = {}, &)
9
+ node = HTTPCacheManager.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPCacheManager
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPCacheManager" : (params[:name] || "HTTPCacheManager")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="#{testname}" enabled="true">
22
+ <boolProp name="clearEachIteration">false</boolProp>
23
+ <boolProp name="useExpires">false</boolProp>
24
+ </CacheManager>
25
+ EOS
26
+ ))
27
+ update params
28
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPCookieManager
4
+ # @param params [Hash] Parameters for the HTTPCookieManager element (default: `{}`).
5
+ # @yield block to attach to the HTTPCookieManager element
6
+ # @return [JmeterPerf::HTTPCookieManager], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httpcookiemanager
8
+ def http_cookie_manager(params = {}, &)
9
+ node = HTTPCookieManager.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPCookieManager
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPCookieManager" : (params[:name] || "HTTPCookieManager")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="#{testname}" enabled="true">
22
+ <collectionProp name="CookieManager.cookies"/>
23
+ <boolProp name="CookieManager.clearEachIteration">false</boolProp>
24
+ <stringProp name="CookieManager.policy">default</stringProp>
25
+ <stringProp name="CookieManager.implementation">org.apache.jmeter.protocol.http.control.HC4CookieHandler</stringProp>
26
+ </CookieManager>
27
+ EOS
28
+ ))
29
+ update params
30
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,36 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPHeaderManager
4
+ # @param params [Hash] Parameters for the HTTPHeaderManager element (default: `{}`).
5
+ # @yield block to attach to the HTTPHeaderManager element
6
+ # @return [JmeterPerf::HTTPHeaderManager], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httpheadermanager
8
+ def http_header_manager(params = {}, &)
9
+ node = HTTPHeaderManager.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPHeaderManager
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPHeaderManager" : (params[:name] || "HTTPHeaderManager")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="#{testname}" enabled="true">
22
+ <collectionProp name="HeaderManager.headers">
23
+ <elementProp name="" elementType="Header">
24
+ <stringProp name="Header.name"/>
25
+ <stringProp name="Header.value"/>
26
+ </elementProp>
27
+ </collectionProp>
28
+ </HeaderManager>
29
+ EOS
30
+ ))
31
+ update params
32
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,47 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPRequest
4
+ # @param params [Hash] Parameters for the HTTPRequest element (default: `{}`).
5
+ # @yield block to attach to the HTTPRequest element
6
+ # @return [JmeterPerf::HTTPRequest], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httprequest
8
+ def http_request(params = {}, &)
9
+ node = HTTPRequest.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPRequest
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPRequest" : (params[:name] || "HTTPRequest")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="#{testname}" enabled="true">
22
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="#{testname}" enabled="true">
23
+ <collectionProp name="Arguments.arguments"/>
24
+ </elementProp>
25
+ <stringProp name="HTTPSampler.domain"/>
26
+ <stringProp name="HTTPSampler.port"/>
27
+ <stringProp name="HTTPSampler.connect_timeout"/>
28
+ <stringProp name="HTTPSampler.response_timeout"/>
29
+ <stringProp name="HTTPSampler.protocol"/>
30
+ <stringProp name="HTTPSampler.contentEncoding"/>
31
+ <stringProp name="HTTPSampler.path"/>
32
+ <stringProp name="HTTPSampler.method">GET</stringProp>
33
+ <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
34
+ <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
35
+ <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
36
+ <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
37
+ <boolProp name="HTTPSampler.monitor">false</boolProp>
38
+ <stringProp name="HTTPSampler.embedded_url_re"/>
39
+ </HTTPSamplerProxy>
40
+ EOS
41
+ ))
42
+ update params
43
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,53 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element HTTPRequestDefaults
4
+ # @param params [Hash] Parameters for the HTTPRequestDefaults element (default: `{}`).
5
+ # @yield block to attach to the HTTPRequestDefaults element
6
+ # @return [JmeterPerf::HTTPRequestDefaults], a subclass of JmeterPerf::DSL that can be chained with other DSL methods.
7
+ # @see https://github.com/jlurena/jmeter_perf/wiki/1.-DSL-Documentation#httprequestdefaults
8
+ def http_request_defaults(params = {}, &)
9
+ node = HTTPRequestDefaults.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class HTTPRequestDefaults
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "HTTPRequestDefaults" : (params[:name] || "HTTPRequestDefaults")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="#{testname}" enabled="true">
22
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="#{testname}" enabled="true">
23
+ <collectionProp name="Arguments.arguments">
24
+ <elementProp name="" elementType="HTTPArgument">
25
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
26
+ <stringProp name="Argument.value">username=my_name&amp;password=my_password&amp;email="my name &lt;test@example.com&gt;"</stringProp>
27
+ <stringProp name="Argument.metadata">=</stringProp>
28
+ </elementProp>
29
+ </collectionProp>
30
+ </elementProp>
31
+ <stringProp name="HTTPSampler.domain"/>
32
+ <stringProp name="HTTPSampler.port"/>
33
+ <stringProp name="HTTPSampler.proxyHost"/>
34
+ <stringProp name="HTTPSampler.proxyPort"/>
35
+ <stringProp name="HTTPSampler.connect_timeout"/>
36
+ <stringProp name="HTTPSampler.response_timeout"/>
37
+ <stringProp name="HTTPSampler.protocol"/>
38
+ <stringProp name="HTTPSampler.contentEncoding"/>
39
+ <stringProp name="HTTPSampler.path">/</stringProp>
40
+ <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
41
+ <boolProp name="HTTPSampler.image_parser">true</boolProp>
42
+ <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
43
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
44
+ <stringProp name="HTTPSampler.embedded_url_re"/>
45
+ </ConfigTestElement>
46
+ EOS
47
+ ))
48
+ update params
49
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
50
+ end
51
+ end
52
+ end
53
+ end