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,38 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element ThroughputController
4
+ # @param params [Hash] Parameters for the ThroughputController element (default: `{}`).
5
+ # @yield block to attach to the ThroughputController element
6
+ # @return [JmeterPerf::ThroughputController], 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#throughputcontroller
8
+ def throughput_controller(params = {}, &)
9
+ node = ThroughputController.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class ThroughputController
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "ThroughputController" : (params[:name] || "ThroughputController")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ThroughputController guiclass="ThroughputControllerGui" testclass="ThroughputController" testname="#{testname}" enabled="true">
22
+ <intProp name="ThroughputController.style">0</intProp>
23
+ <boolProp name="ThroughputController.perThread">false</boolProp>
24
+ <intProp name="ThroughputController.maxThroughput">1</intProp>
25
+ <FloatProperty>
26
+ <name>ThroughputController.percentThroughput</name>
27
+ <value>100.0</value>
28
+ <savedValue>0.0</savedValue>
29
+ </FloatProperty>
30
+ </ThroughputController>
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 TransactionController
4
+ # @param params [Hash] Parameters for the TransactionController element (default: `{}`).
5
+ # @yield block to attach to the TransactionController element
6
+ # @return [JmeterPerf::TransactionController], 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#transactioncontroller
8
+ def transaction_controller(params = {}, &)
9
+ node = TransactionController.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class TransactionController
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "TransactionController" : (params[:name] || "TransactionController")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="#{testname}" enabled="true">
22
+ <boolProp name="TransactionController.parent">true</boolProp>
23
+ <boolProp name="TransactionController.includeTimers">false</boolProp>
24
+ </TransactionController>
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,32 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element UniformRandomTimer
4
+ # @param params [Hash] Parameters for the UniformRandomTimer element (default: `{}`).
5
+ # @yield block to attach to the UniformRandomTimer element
6
+ # @return [JmeterPerf::UniformRandomTimer], 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#uniformrandomtimer
8
+ def uniform_random_timer(params = {}, &)
9
+ node = UniformRandomTimer.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class UniformRandomTimer
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "UniformRandomTimer" : (params[:name] || "UniformRandomTimer")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <UniformRandomTimer guiclass="UniformRandomTimerGui" testclass="UniformRandomTimer" testname="#{testname}" enabled="true">
22
+ <stringProp name="ConstantTimer.delay">0</stringProp>
23
+ <stringProp name="RandomTimer.range">100.0</stringProp>
24
+ </UniformRandomTimer>
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,39 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element UserDefinedVariables
4
+ # @param params [Hash] Parameters for the UserDefinedVariables element (default: `{}`).
5
+ # @yield block to attach to the UserDefinedVariables element
6
+ # @return [JmeterPerf::UserDefinedVariables], 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#userdefinedvariables
8
+ def user_defined_variables(params = {}, &)
9
+ node = UserDefinedVariables.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class UserDefinedVariables
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "UserDefinedVariables" : (params[:name] || "UserDefinedVariables")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="#{testname}" enabled="true">
22
+ <collectionProp name="Arguments.arguments">
23
+ <elementProp name=" " elementType="Argument">
24
+ <stringProp name="Argument.name"> </stringProp>
25
+ <stringProp name="Argument.value"> </stringProp>
26
+ <stringProp name="Argument.metadata">=</stringProp>
27
+ <stringProp name="Argument.desc"> </stringProp>
28
+ </elementProp>
29
+ </collectionProp>
30
+ <stringProp name="TestPlan.comments"> </stringProp>
31
+ </Arguments>
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,36 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element UserParameters
4
+ # @param params [Hash] Parameters for the UserParameters element (default: `{}`).
5
+ # @yield block to attach to the UserParameters element
6
+ # @return [JmeterPerf::UserParameters], 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#userparameters
8
+ def user_parameters(params = {}, &)
9
+ node = UserParameters.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class UserParameters
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "UserParameters" : (params[:name] || "UserParameters")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <UserParameters guiclass="UserParametersGui" testclass="UserParameters" testname="#{testname}" enabled="true">
22
+ <collectionProp name="UserParameters.names"/>
23
+ <collectionProp name="UserParameters.thread_values">
24
+ <collectionProp name="1"/>
25
+ <collectionProp name="1"/>
26
+ </collectionProp>
27
+ <boolProp name="UserParameters.per_iteration">false</boolProp>
28
+ </UserParameters>
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,61 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element ViewResultsInTable
4
+ # @param params [Hash] Parameters for the ViewResultsInTable element (default: `{}`).
5
+ # @yield block to attach to the ViewResultsInTable element
6
+ # @return [JmeterPerf::ViewResultsInTable], 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#viewresultsintable
8
+ def view_results_in_table(params = {}, &)
9
+ node = ViewResultsInTable.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class ViewResultsInTable
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "ViewResultsInTable" : (params[:name] || "ViewResultsInTable")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="TableVisualizer" 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,61 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element ViewResultsTree
4
+ # @param params [Hash] Parameters for the ViewResultsTree element (default: `{}`).
5
+ # @yield block to attach to the ViewResultsTree element
6
+ # @return [JmeterPerf::ViewResultsTree], 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#viewresultstree
8
+ def view_results_tree(params = {}, &)
9
+ node = ViewResultsTree.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class ViewResultsTree
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "ViewResultsTree" : (params[:name] || "ViewResultsTree")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="ViewResultsFullVisualizer" 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,31 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element WhileController
4
+ # @param params [Hash] Parameters for the WhileController element (default: `{}`).
5
+ # @yield block to attach to the WhileController element
6
+ # @return [JmeterPerf::WhileController], 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#whilecontroller
8
+ def while_controller(params = {}, &)
9
+ node = WhileController.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class WhileController
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "WhileController" : (params[:name] || "WhileController")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <WhileController guiclass="WhileControllerGui" testclass="WhileController" testname="#{testname}" enabled="true">
22
+ <stringProp name="WhileController.condition"/>
23
+ </WhileController>
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,37 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element XPathAssertion
4
+ # @param params [Hash] Parameters for the XPathAssertion element (default: `{}`).
5
+ # @yield block to attach to the XPathAssertion element
6
+ # @return [JmeterPerf::XPathAssertion], 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#xpathassertion
8
+ def x_path_assertion(params = {}, &)
9
+ node = XPathAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class XPathAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "XPathAssertion" : (params[:name] || "XPathAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <XPathAssertion guiclass="XPathAssertionGui" testclass="XPathAssertion" testname="#{testname}" enabled="true">
22
+ <boolProp name="XPath.negate">false</boolProp>
23
+ <stringProp name="XPath.xpath">/</stringProp>
24
+ <boolProp name="XPath.validate">false</boolProp>
25
+ <boolProp name="XPath.whitespace">false</boolProp>
26
+ <boolProp name="XPath.tolerant">false</boolProp>
27
+ <boolProp name="XPath.namespace">false</boolProp>
28
+ <stringProp name="Assertion.scope">all</stringProp>
29
+ </XPathAssertion>
30
+ EOS
31
+ ))
32
+ update params
33
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element XPathExtractor
4
+ # @param params [Hash] Parameters for the XPathExtractor element (default: `{}`).
5
+ # @yield block to attach to the XPathExtractor element
6
+ # @return [JmeterPerf::XPathExtractor], 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#xpathextractor
8
+ def x_path_extractor(params = {}, &)
9
+ node = XPathExtractor.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class XPathExtractor
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "XPathExtractor" : (params[:name] || "XPathExtractor")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <XPathExtractor guiclass="XPathExtractorGui" testclass="XPathExtractor" testname="#{testname}" enabled="true">
22
+ <stringProp name="XPathExtractor.default"/>
23
+ <stringProp name="XPathExtractor.refname"/>
24
+ <stringProp name="XPathExtractor.xpathQuery"/>
25
+ <boolProp name="XPathExtractor.validate">false</boolProp>
26
+ <boolProp name="XPathExtractor.tolerant">false</boolProp>
27
+ <boolProp name="XPathExtractor.namespace">false</boolProp>
28
+ <stringProp name="Sample.scope">all</stringProp>
29
+ </XPathExtractor>
30
+ EOS
31
+ ))
32
+ update params
33
+ update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,29 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element XMLAssertion
4
+ # @param params [Hash] Parameters for the XMLAssertion element (default: `{}`).
5
+ # @yield block to attach to the XMLAssertion element
6
+ # @return [JmeterPerf::XMLAssertion], 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#xmlassertion
8
+ def xml_assertion(params = {}, &)
9
+ node = XMLAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class XMLAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "XMLAssertion" : (params[:name] || "XMLAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <XMLAssertion guiclass="XMLAssertionGui" testclass="XMLAssertion" 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,31 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element XMLSchemaAssertion
4
+ # @param params [Hash] Parameters for the XMLSchemaAssertion element (default: `{}`).
5
+ # @yield block to attach to the XMLSchemaAssertion element
6
+ # @return [JmeterPerf::XMLSchemaAssertion], 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#xmlschemaassertion
8
+ def xml_schema_assertion(params = {}, &)
9
+ node = XMLSchemaAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class XMLSchemaAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "XMLSchemaAssertion" : (params[:name] || "XMLSchemaAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <XMLSchemaAssertion guiclass="XMLSchemaAssertionGUI" testclass="XMLSchemaAssertion" testname="#{testname}" enabled="true">
22
+ <stringProp name="xmlschema_assertion_filename"/>
23
+ </XMLSchemaAssertion>
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,38 @@
1
+ module JmeterPerf
2
+ class ExtendedDSL < DSL
3
+ def response_assertion(params, &)
4
+ params[:test_type] = parse_test_type(params)
5
+ params["0"] = params.values.first
6
+
7
+ if params[:json]
8
+ params[:EXPECTED_VALUE] = params[:value]
9
+ params[:JSON_PATH] = params[:json]
10
+ node = JmeterPerf::Plugins::JsonPathAssertion.new(params)
11
+ end
12
+
13
+ node ||= JmeterPerf::DSL::ResponseAssertion.new(params).tap do |node|
14
+ if params[:variable]
15
+ params["Scope.variable"] = params[:variable]
16
+ node.doc.xpath("//stringProp[@name='Assertion.scope']").first.content = "variable"
17
+
18
+ node.doc.children.first.add_child(
19
+ Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<-EOS
21
+ <stringProp name="Scope.variable">#{params[:variable]}</stringProp>
22
+ EOS
23
+ )).children
24
+ )
25
+ end
26
+
27
+ if params[:scope] == "main"
28
+ node.doc.xpath("//stringProp[@name='Assertion.scope']").remove
29
+ end
30
+ end
31
+
32
+ attach_node(node, &)
33
+ end
34
+
35
+ alias_method :assert, :response_assertion
36
+ alias_method :web_reg_find, :response_assertion
37
+ end
38
+ end
@@ -0,0 +1,13 @@
1
+ module JmeterPerf
2
+ class ExtendedDSL < DSL
3
+ def http_header_manager(params, &block)
4
+ if params.is_a?(Hash)
5
+ params["Header.name"] = params[:name]
6
+ end
7
+
8
+ super
9
+ end
10
+
11
+ alias_method :header, :http_header_manager
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ module JmeterPerf
2
+ class ExtendedDSL < DSL
3
+ def http_cache_manager(params = {}, &block)
4
+ params[:clearEachIteration] = true if params.key? :clear_each_iteration
5
+ params[:useExpires] = true if params.key? :use_expires
6
+
7
+ super
8
+ end
9
+
10
+ alias_method :cache, :http_cache_manager
11
+ end
12
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module JmeterPerf
4
+ class ExtendedDSL < DSL
5
+ def http_cookie_manager(params = {}, &)
6
+ params[:clearEachIteration] = true if params.key? :clear_each_iteration
7
+
8
+ node = JmeterPerf::DSL::HTTPCookieManager.new(params)
9
+
10
+ params[:user_defined_cookies]&.each { |cookie| add_cookie_to_collection(cookie, node) }
11
+
12
+ attach_node(node, &)
13
+ end
14
+
15
+ alias_method :cookies, :http_cookie_manager
16
+
17
+ private
18
+
19
+ def add_cookie_to_collection(cookie, node)
20
+ raise "Cookie name must be provided." unless cookie[:name]
21
+ raise "Cookie value must be provided." unless cookie[:value]
22
+ node.doc.at_xpath("//collectionProp") << Nokogiri::XML(
23
+ JmeterPerf::Helpers::String.strip_heredoc(
24
+ <<-EOS
25
+ <elementProp name="#{cookie[:name]}" elementType="Cookie" testname="#{cookie[:name]}">
26
+ <stringProp name="Cookie.value">#{cookie[:value]}</stringProp>
27
+ <stringProp name="Cookie.domain">#{cookie[:domain]}</stringProp>
28
+ <stringProp name="Cookie.path">#{cookie[:path]}</stringProp>
29
+ <boolProp name="Cookie.secure">#{cookie[:secure] || false}</boolProp>
30
+ <longProp name="Cookie.expires">0</longProp>
31
+ <boolProp name="Cookie.path_specified">true</boolProp>
32
+ <boolProp name="Cookie.domain_specified">true</boolProp>
33
+ </elementProp>
34
+ EOS
35
+ )
36
+ ).children
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,55 @@
1
+ module JmeterPerf
2
+ class ExtendedDSL < DSL
3
+ def http_request_defaults(params = {}, &)
4
+ params[:image_parser] = true if params.key? :download_resources
5
+ params[:concurrentDwn] = true if params.key? :use_concurrent_pool
6
+ params[:concurrentPool] = params[:use_concurrent_pool] if params.key? :use_concurrent_pool
7
+
8
+ node = JmeterPerf::DSL::HTTPRequestDefaults.new(params).tap do |node|
9
+ if params[:urls_must_match]
10
+ node.doc.children.first.add_child(
11
+ Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
12
+ <<-EOS
13
+ <stringProp name="HTTPSampler.embedded_url_re">#{params[:urls_must_match]}</stringProp>
14
+ EOS
15
+ )).children
16
+ )
17
+ end
18
+
19
+ if params[:md5]
20
+ node.doc.children.first.add_child(
21
+ Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
22
+ <<-EOS
23
+ <boolProp name="HTTPSampler.md5">true</stringProp>
24
+ EOS
25
+ )).children
26
+ )
27
+ end
28
+
29
+ if params[:proxy_host]
30
+ node.doc.children.first.add_child(
31
+ Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
32
+ <<-EOS
33
+ <stringProp name="HTTPSampler.proxyHost">#{params[:proxy_host]}</stringProp>
34
+ EOS
35
+ )).children
36
+ )
37
+ end
38
+
39
+ if params[:proxy_port]
40
+ node.doc.children.first.add_child(
41
+ Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
42
+ <<-EOS
43
+ <stringProp name="HTTPSampler.proxyPort">#{params[:proxy_port]}</stringProp>
44
+ EOS
45
+ )).children
46
+ )
47
+ end
48
+ end
49
+
50
+ attach_node(node, &)
51
+ end
52
+
53
+ alias_method :defaults, :http_request_defaults
54
+ end
55
+ end
@@ -0,0 +1,13 @@
1
+ module JmeterPerf
2
+ class ExtendedDSL < DSL
3
+ def user_defined_variables(params, &block)
4
+ if params.is_a?(Hash)
5
+ params["Argument.name"] = params[:name]
6
+ end
7
+
8
+ super
9
+ end
10
+
11
+ alias_method :variables, :user_defined_variables
12
+ end
13
+ end