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,28 @@
1
+ 2024-10-17 15:09:36,136 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
2
+ 2024-10-17 15:09:36,162 INFO o.a.j.JMeter: Loading user properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/user.properties
3
+ 2024-10-17 15:09:36,162 INFO o.a.j.JMeter: Loading system properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/system.properties
4
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: Copyright (c) 1998-2024 The Apache Software Foundation
5
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: Version 5.6.3
6
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: java.version=21.0.4
7
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
8
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: os.name=Mac OS X
9
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: os.arch=aarch64
10
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: os.version=14.7
11
+ 2024-10-17 15:09:36,165 INFO o.a.j.JMeter: file.encoding=UTF-8
12
+ 2024-10-17 15:09:36,166 INFO o.a.j.JMeter: java.awt.headless=null
13
+ 2024-10-17 15:09:36,166 INFO o.a.j.JMeter: Max memory =1073741824
14
+ 2024-10-17 15:09:36,166 INFO o.a.j.JMeter: Available Processors =10
15
+ 2024-10-17 15:09:36,172 INFO o.a.j.JMeter: Default Locale=English (EN)
16
+ 2024-10-17 15:09:36,172 INFO o.a.j.JMeter: JMeter Locale=English (EN)
17
+ 2024-10-17 15:09:36,172 INFO o.a.j.JMeter: JMeterHome=/opt/homebrew/Cellar/jmeter/5.6.3/libexec
18
+ 2024-10-17 15:09:36,172 INFO o.a.j.JMeter: user.dir =/Users/jeanluis.urena/Projects/jmeter_perf/example
19
+ 2024-10-17 15:09:36,172 INFO o.a.j.JMeter: PWD =/Users/jeanluis.urena/Projects/jmeter_perf/example
20
+ 2024-10-17 15:09:36,192 INFO o.a.j.JMeter: IP: 192.168.1.235 Name: Jean Luis X9CK0310Y7 FullName: jeanluick0310y7.fios-router.home
21
+ 2024-10-17 15:09:36,200 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
22
+ 2024-10-17 15:09:36,621 INFO o.a.j.JMeterGuiLauncher: Setting LAF to: com.github.weisj.darklaf.DarkLaf:com.github.weisj.darklaf.theme.DarculaTheme
23
+ 2024-10-17 15:09:38,657 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-cohendeffectsize-1.2.0.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.gui.action.Command], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
24
+ 2024-10-17 15:09:38,659 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-manager-1.10.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.gui.action.Command], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
25
+ 2024-10-17 15:09:38,785 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-cohendeffectsize-1.2.0.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.gui.plugin.MenuCreator], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
26
+ 2024-10-17 15:09:38,786 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-manager-1.10.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.gui.plugin.MenuCreator], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
27
+ 2024-10-17 15:09:38,859 INFO o.j.r.JARSourceHTTP: Requesting https://jmeter-plugins.org/repo/?installID=mac_os_x-8d6452e57a9014389b6edeb7f5fec408-gui
28
+ 2024-10-17 15:09:39,732 INFO o.j.r.PluginManager: Plugins Status: [rbourga-jmeter-plugins-cohendeffectsize=1.2.0, jpgc-plugins-manager=1.10, jmeter-core=5.6.3, jmeter-ftp=5.6.3, jmeter-http=5.6.3, jmeter-jdbc=5.6.3, jmeter-jms=5.6.3, jmeter-junit=5.6.3, jmeter-java=5.6.3, jmeter-ldap=5.6.3, jmeter-mail=5.6.3, jmeter-mongodb=5.6.3, jmeter-native=5.6.3, jmeter-tcp=5.6.3, jmeter-components=5.6.3]
@@ -0,0 +1,40 @@
1
+ require "jmeter_perf"
2
+
3
+ namespace :test do
4
+ desc "Runs performance tests"
5
+ task performance: :environment do
6
+ port = 3301
7
+ puts "Starting Rails server on port #{port}"
8
+ pid = Process.spawn("bundle exec rails server -p #{port}", out: File::NULL, err: $stderr)
9
+ Process.detach(pid)
10
+ sleep 5
11
+
12
+ summaries = ["fast", "random", "slow"].map do |action|
13
+ JmeterPerf.test do
14
+ threads count: 2, duration: 10 do
15
+ get(
16
+ name: "#{action} action",
17
+ url: "http://127.0.0.1:#{port}/test/#{action}"
18
+ )
19
+ end
20
+ end.run(
21
+ name: action,
22
+ out_jmx: "tmp/#{action}.jmx",
23
+ out_jmeter_log: "tmp/#{action}.log",
24
+ out_jtl: "tmp/#{action}.jtl",
25
+ out_cmd_log: "tmp/#{action}_cmd.log"
26
+ )
27
+ end
28
+
29
+ base_summary = summaries.shift
30
+ comparator = JmeterPerf::Report::Comparator.new(base_summary, base_summary, "#{base_summary.name}_vs_#{base_summary.name}")
31
+ comparator.generate_reports(output_dir: "tmp")
32
+ summaries.each do |summary|
33
+ comparator = JmeterPerf::Report::Comparator.new(base_summary, summary, "#{base_summary.name}_vs_#{summary.name}")
34
+ comparator.generate_reports(output_dir: "tmp")
35
+ end
36
+ ensure
37
+ Process.kill("TERM", pid)
38
+ puts "Rails server stopped."
39
+ end
40
+ end
data/example/log/.keep ADDED
File without changes
@@ -0,0 +1 @@
1
+ # See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
@@ -0,0 +1,49 @@
1
+ 2024-10-17 09:15:18,795 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
2
+ 2024-10-17 09:15:18,805 INFO o.a.j.JMeter: Loading user properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/user.properties
3
+ 2024-10-17 09:15:18,805 INFO o.a.j.JMeter: Loading system properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/system.properties
4
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: Copyright (c) 1998-2024 The Apache Software Foundation
5
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: Version 5.6.3
6
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: java.version=21.0.4
7
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
8
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: os.name=Mac OS X
9
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: os.arch=aarch64
10
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: os.version=14.7
11
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: file.encoding=UTF-8
12
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: java.awt.headless=true
13
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: Max memory =1073741824
14
+ 2024-10-17 09:15:18,808 INFO o.a.j.JMeter: Available Processors =10
15
+ 2024-10-17 09:15:18,813 INFO o.a.j.JMeter: Default Locale=English (EN)
16
+ 2024-10-17 09:15:18,813 INFO o.a.j.JMeter: JMeter Locale=English (EN)
17
+ 2024-10-17 09:15:18,813 INFO o.a.j.JMeter: JMeterHome=/opt/homebrew/Cellar/jmeter/5.6.3/libexec
18
+ 2024-10-17 09:15:18,813 INFO o.a.j.JMeter: user.dir =/Users/jeanluis.urena/Projects/jmeter_perf/example
19
+ 2024-10-17 09:15:18,814 INFO o.a.j.JMeter: PWD =/Users/jeanluis.urena/Projects/jmeter_perf/example
20
+ 2024-10-17 09:15:18,815 INFO o.a.j.JMeter: IP: 192.168.1.235 Name: Jean Luis X9CK0310Y7 FullName: jeanluick0310y7.fios-router.home
21
+ 2024-10-17 09:15:18,823 INFO o.a.j.s.FileServer: Default base='/Users/jeanluis.urena/Projects/jmeter_perf/example'
22
+ 2024-10-17 09:15:18,824 INFO o.a.j.s.FileServer: Set new base='/Users/jeanluis.urena/Projects/jmeter_perf/example'
23
+ 2024-10-17 09:15:18,926 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
24
+ 2024-10-17 09:15:18,951 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
25
+ 2024-10-17 09:15:18,953 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
26
+ 2024-10-17 09:15:18,954 INFO o.a.j.s.SaveService: Loading file: random.jmx
27
+ 2024-10-17 09:15:18,990 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
28
+ 2024-10-17 09:15:18,990 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
29
+ 2024-10-17 09:15:18,991 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
30
+ 2024-10-17 09:15:18,991 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
31
+ 2024-10-17 09:15:18,991 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
32
+ 2024-10-17 09:15:18,991 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
33
+ 2024-10-17 09:15:18,994 INFO o.a.j.JMeter: Creating summariser <summary>
34
+ 2024-10-17 09:15:19,004 INFO o.a.j.e.StandardJMeterEngine: Running the test!
35
+ 2024-10-17 09:15:19,004 INFO o.a.j.s.SampleEvent: List of sample_variables: []
36
+ 2024-10-17 09:15:19,004 INFO o.a.j.s.SampleEvent: List of sample_variables: []
37
+ 2024-10-17 09:15:19,006 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.'
38
+ 2024-10-17 09:15:19,006 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
39
+ 2024-10-17 09:15:19,037 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-manager-1.10.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.functions.Function], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
40
+ 2024-10-17 09:15:19,079 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-cohendeffectsize-1.0.0.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.functions.Function], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
41
+ 2024-10-17 09:15:19,083 INFO o.a.j.JMeter: Running test (1729170919083)
42
+ 2024-10-17 09:15:19,093 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : ThreadGroup
43
+ 2024-10-17 09:15:19,094 INFO o.a.j.e.StandardJMeterEngine: Starting 10 threads for group ThreadGroup.
44
+ 2024-10-17 09:15:19,094 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
45
+ 2024-10-17 09:15:19,094 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=10 ramp-up=5 delayedStart=true
46
+ 2024-10-17 09:15:19,094 INFO o.a.j.t.ThreadGroup: Started thread group number 1
47
+ 2024-10-17 09:15:19,095 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
48
+ 2024-10-17 09:15:19,095 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
49
+ 2024-10-17 09:15:19,095 INFO o.a.j.r.Summariser: summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
data/example/slow.log ADDED
@@ -0,0 +1,49 @@
1
+ 2024-10-17 09:15:16,569 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
2
+ 2024-10-17 09:15:16,579 INFO o.a.j.JMeter: Loading user properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/user.properties
3
+ 2024-10-17 09:15:16,580 INFO o.a.j.JMeter: Loading system properties from: /opt/homebrew/Cellar/jmeter/5.6.3/libexec/bin/system.properties
4
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: Copyright (c) 1998-2024 The Apache Software Foundation
5
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: Version 5.6.3
6
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: java.version=21.0.4
7
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
8
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: os.name=Mac OS X
9
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: os.arch=aarch64
10
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: os.version=14.7
11
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: file.encoding=UTF-8
12
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: java.awt.headless=true
13
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: Max memory =1073741824
14
+ 2024-10-17 09:15:16,583 INFO o.a.j.JMeter: Available Processors =10
15
+ 2024-10-17 09:15:16,588 INFO o.a.j.JMeter: Default Locale=English (EN)
16
+ 2024-10-17 09:15:16,588 INFO o.a.j.JMeter: JMeter Locale=English (EN)
17
+ 2024-10-17 09:15:16,588 INFO o.a.j.JMeter: JMeterHome=/opt/homebrew/Cellar/jmeter/5.6.3/libexec
18
+ 2024-10-17 09:15:16,588 INFO o.a.j.JMeter: user.dir =/Users/jeanluis.urena/Projects/jmeter_perf/example
19
+ 2024-10-17 09:15:16,588 INFO o.a.j.JMeter: PWD =/Users/jeanluis.urena/Projects/jmeter_perf/example
20
+ 2024-10-17 09:15:16,591 INFO o.a.j.JMeter: IP: 192.168.1.235 Name: Jean Luis X9CK0310Y7 FullName: jeanluick0310y7.fios-router.home
21
+ 2024-10-17 09:15:16,598 INFO o.a.j.s.FileServer: Default base='/Users/jeanluis.urena/Projects/jmeter_perf/example'
22
+ 2024-10-17 09:15:16,599 INFO o.a.j.s.FileServer: Set new base='/Users/jeanluis.urena/Projects/jmeter_perf/example'
23
+ 2024-10-17 09:15:16,704 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
24
+ 2024-10-17 09:15:16,731 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
25
+ 2024-10-17 09:15:16,733 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
26
+ 2024-10-17 09:15:16,734 INFO o.a.j.s.SaveService: Loading file: slow.jmx
27
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
28
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
29
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
30
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
31
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
32
+ 2024-10-17 09:15:16,773 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
33
+ 2024-10-17 09:15:16,776 INFO o.a.j.JMeter: Creating summariser <summary>
34
+ 2024-10-17 09:15:16,786 INFO o.a.j.e.StandardJMeterEngine: Running the test!
35
+ 2024-10-17 09:15:16,786 INFO o.a.j.s.SampleEvent: List of sample_variables: []
36
+ 2024-10-17 09:15:16,786 INFO o.a.j.s.SampleEvent: List of sample_variables: []
37
+ 2024-10-17 09:15:16,788 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.'
38
+ 2024-10-17 09:15:16,788 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
39
+ 2024-10-17 09:15:16,818 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-manager-1.10.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.functions.Function], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
40
+ 2024-10-17 09:15:16,859 INFO o.a.j.r.ClassFinder: Will scan jar /opt/homebrew/Cellar/jmeter/5.6.3/libexec/lib/ext/jmeter-plugins-cohendeffectsize-1.0.0.jar with filter ExtendsClassFilter [parents=[interface org.apache.jmeter.functions.Function], inner=false, contains=null, notContains=null]. Consider exposing JMeter plugins via META-INF/services, and add JMeter-Skip-Class-Scanning=true manifest attribute so JMeter can skip classfile scanning
41
+ 2024-10-17 09:15:16,863 INFO o.a.j.JMeter: Running test (1729170916863)
42
+ 2024-10-17 09:15:16,872 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : ThreadGroup
43
+ 2024-10-17 09:15:16,872 INFO o.a.j.e.StandardJMeterEngine: Starting 10 threads for group ThreadGroup.
44
+ 2024-10-17 09:15:16,872 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
45
+ 2024-10-17 09:15:16,873 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=10 ramp-up=5 delayedStart=true
46
+ 2024-10-17 09:15:16,873 INFO o.a.j.t.ThreadGroup: Started thread group number 1
47
+ 2024-10-17 09:15:16,873 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started
48
+ 2024-10-17 09:15:16,873 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
49
+ 2024-10-17 09:15:16,874 INFO o.a.j.r.Summariser: summary = 0 in 00:00:00 = ******/s Avg: 0 Min: 9223372036854775807 Max: -9223372036854775808 Err: 0 (0.00%)
File without changes
data/lib/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ require_relative "jmeter_perf"
2
+
3
+ path = File.expand_path(__dir__)
4
+ Dir.glob("#{path}/tasks/**/*.rake").each { |f| import f }
@@ -0,0 +1,38 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element AccessLogSampler
4
+ # @param params [Hash] Parameters for the AccessLogSampler element (default: `{}`).
5
+ # @yield block to attach to the AccessLogSampler element
6
+ # @return [JmeterPerf::AccessLogSampler], 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#accesslogsampler
8
+ def access_log_sampler(params = {}, &)
9
+ node = AccessLogSampler.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class AccessLogSampler
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "AccessLogSampler" : (params[:name] || "AccessLogSampler")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <AccessLogSampler guiclass="TestBeanGUI" testclass="AccessLogSampler" testname="#{testname}" enabled="true">
22
+ <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
23
+ <collectionProp name="Arguments.arguments"/>
24
+ </elementProp>
25
+ <stringProp name="domain"/>
26
+ <boolProp name="imageParsing">false</boolProp>
27
+ <stringProp name="logFile"/>
28
+ <stringProp name="parserClassName">org.apache.jmeter.protocol.http.util.accesslog.TCLogParser</stringProp>
29
+ <stringProp name="portString"/>
30
+ </AccessLogSampler>
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,61 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element AggregateGraph
4
+ # @param params [Hash] Parameters for the AggregateGraph element (default: `{}`).
5
+ # @yield block to attach to the AggregateGraph element
6
+ # @return [JmeterPerf::AggregateGraph], 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#aggregategraph
8
+ def aggregate_graph(params = {}, &)
9
+ node = AggregateGraph.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class AggregateGraph
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "AggregateGraph" : (params[:name] || "AggregateGraph")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="StatGraphVisualizer" 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 AggregateReport
4
+ # @param params [Hash] Parameters for the AggregateReport element (default: `{}`).
5
+ # @yield block to attach to the AggregateReport element
6
+ # @return [JmeterPerf::AggregateReport], 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#aggregatereport
8
+ def aggregate_report(params = {}, &)
9
+ node = AggregateReport.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class AggregateReport
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "AggregateReport" : (params[:name] || "AggregateReport")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="StatVisualizer" 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,47 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element AJP13Sampler
4
+ # @param params [Hash] Parameters for the AJP13Sampler element (default: `{}`).
5
+ # @yield block to attach to the AJP13Sampler element
6
+ # @return [JmeterPerf::AJP13Sampler], 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#ajp13sampler
8
+ def ajp13_sampler(params = {}, &)
9
+ node = AJP13Sampler.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class AJP13Sampler
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "AJP13Sampler" : (params[:name] || "AJP13Sampler")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <AjpSampler guiclass="AjpSamplerGui" testclass="AjpSampler" 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
+ </AjpSampler>
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,61 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element AssertionResults
4
+ # @param params [Hash] Parameters for the AssertionResults element (default: `{}`).
5
+ # @yield block to attach to the AssertionResults element
6
+ # @return [JmeterPerf::AssertionResults], 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#assertionresults
8
+ def assertion_results(params = {}, &)
9
+ node = AssertionResults.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class AssertionResults
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "AssertionResults" : (params[:name] || "AssertionResults")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <ResultCollector guiclass="AssertionVisualizer" 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,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element BeanShellAssertion
4
+ # @param params [Hash] Parameters for the BeanShellAssertion element (default: `{}`).
5
+ # @yield block to attach to the BeanShellAssertion element
6
+ # @return [JmeterPerf::BeanShellAssertion], 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#beanshellassertion
8
+ def bean_shell_assertion(params = {}, &)
9
+ node = BeanShellAssertion.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class BeanShellAssertion
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "BeanShellAssertion" : (params[:name] || "BeanShellAssertion")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <BeanShellAssertion guiclass="BeanShellAssertionGui" testclass="BeanShellAssertion" testname="#{testname}" enabled="true">
22
+ <stringProp name="BeanShellAssertion.query"/>
23
+ <stringProp name="BeanShellAssertion.filename"/>
24
+ <stringProp name="BeanShellAssertion.parameters"/>
25
+ <boolProp name="BeanShellAssertion.resetInterpreter">false</boolProp>
26
+ </BeanShellAssertion>
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,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element BeanShellListener
4
+ # @param params [Hash] Parameters for the BeanShellListener element (default: `{}`).
5
+ # @yield block to attach to the BeanShellListener element
6
+ # @return [JmeterPerf::BeanShellListener], 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#beanshelllistener
8
+ def bean_shell_listener(params = {}, &)
9
+ node = BeanShellListener.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class BeanShellListener
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "BeanShellListener" : (params[:name] || "BeanShellListener")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <BeanShellListener guiclass="TestBeanGUI" testclass="BeanShellListener" testname="#{testname}" enabled="true">
22
+ <stringProp name="filename"/>
23
+ <stringProp name="parameters"/>
24
+ <boolProp name="resetInterpreter">false</boolProp>
25
+ <stringProp name="script"/>
26
+ </BeanShellListener>
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,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element BeanShellPostprocessor
4
+ # @param params [Hash] Parameters for the BeanShellPostprocessor element (default: `{}`).
5
+ # @yield block to attach to the BeanShellPostprocessor element
6
+ # @return [JmeterPerf::BeanShellPostprocessor], 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#beanshellpostprocessor
8
+ def bean_shell_postprocessor(params = {}, &)
9
+ node = BeanShellPostprocessor.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class BeanShellPostprocessor
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "BeanShellPostprocessor" : (params[:name] || "BeanShellPostprocessor")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <BeanShellPostProcessor guiclass="TestBeanGUI" testclass="BeanShellPostProcessor" testname="#{testname}" enabled="true">
22
+ <stringProp name="filename"/>
23
+ <stringProp name="parameters"/>
24
+ <boolProp name="resetInterpreter">false</boolProp>
25
+ <stringProp name="script"/>
26
+ </BeanShellPostProcessor>
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,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element BeanShellPreprocessor
4
+ # @param params [Hash] Parameters for the BeanShellPreprocessor element (default: `{}`).
5
+ # @yield block to attach to the BeanShellPreprocessor element
6
+ # @return [JmeterPerf::BeanShellPreprocessor], 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#beanshellpreprocessor
8
+ def bean_shell_preprocessor(params = {}, &)
9
+ node = BeanShellPreprocessor.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class BeanShellPreprocessor
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "BeanShellPreprocessor" : (params[:name] || "BeanShellPreprocessor")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <BeanShellPreProcessor guiclass="TestBeanGUI" testclass="BeanShellPreProcessor" testname="#{testname}" enabled="true">
22
+ <stringProp name="filename"/>
23
+ <stringProp name="parameters"/>
24
+ <boolProp name="resetInterpreter">false</boolProp>
25
+ <stringProp name="script"/>
26
+ </BeanShellPreProcessor>
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,34 @@
1
+ module JmeterPerf
2
+ class DSL
3
+ # DSL method synonymous with the JMeter Element BeanShellSampler
4
+ # @param params [Hash] Parameters for the BeanShellSampler element (default: `{}`).
5
+ # @yield block to attach to the BeanShellSampler element
6
+ # @return [JmeterPerf::BeanShellSampler], 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#beanshellsampler
8
+ def bean_shell_sampler(params = {}, &)
9
+ node = BeanShellSampler.new(params)
10
+ attach_node(node, &)
11
+ end
12
+
13
+ class BeanShellSampler
14
+ attr_accessor :doc
15
+ include JmeterPerf::Helpers::XmlDocumentUpdater
16
+
17
+ def initialize(params = {})
18
+ testname = params.is_a?(Array) ? "BeanShellSampler" : (params[:name] || "BeanShellSampler")
19
+ @doc = Nokogiri::XML(JmeterPerf::Helpers::String.strip_heredoc(
20
+ <<~EOS
21
+ <BeanShellSampler guiclass="BeanShellSamplerGui" testclass="BeanShellSampler" testname="#{testname}" enabled="true">
22
+ <stringProp name="BeanShellSampler.query"/>
23
+ <stringProp name="BeanShellSampler.filename"/>
24
+ <stringProp name="BeanShellSampler.parameters"/>
25
+ <boolProp name="BeanShellSampler.resetInterpreter">false</boolProp>
26
+ </BeanShellSampler>
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