ruby-jmeter 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/.gitattributes +22 -0
  2. data/.gitignore +22 -0
  3. data/.rspec +2 -0
  4. data/Gemfile +27 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +333 -0
  7. data/Rakefile +6 -0
  8. data/bin/grid +25 -0
  9. data/examples/basic_assertion.rb +13 -0
  10. data/examples/basic_auth.rb +11 -0
  11. data/examples/basic_cache.rb +11 -0
  12. data/examples/basic_cookies.rb +11 -0
  13. data/examples/basic_extract.rb +10 -0
  14. data/examples/basic_gc_dummy_sampler.rb +10 -0
  15. data/examples/basic_gc_results.rb +23 -0
  16. data/examples/basic_google.rb +8 -0
  17. data/examples/basic_grid.rb +8 -0
  18. data/examples/basic_header.rb +19 -0
  19. data/examples/basic_ldap_ext.rb +16 -0
  20. data/examples/basic_post.rb +15 -0
  21. data/examples/basic_query_params.rb +8 -0
  22. data/examples/basic_think_time.rb +15 -0
  23. data/examples/basic_throughput_controller.rb +14 -0
  24. data/examples/basic_throughput_shaping_timer.rb +21 -0
  25. data/examples/etsy_login_browse.rb +64 -0
  26. data/lib/ruby-jmeter.rb +18 -0
  27. data/lib/ruby-jmeter/DSL.md +237 -0
  28. data/lib/ruby-jmeter/dsl.rb +419 -0
  29. data/lib/ruby-jmeter/dsl/access_log_sampler.rb +32 -0
  30. data/lib/ruby-jmeter/dsl/aggregate_graph.rb +55 -0
  31. data/lib/ruby-jmeter/dsl/aggregate_report.rb +55 -0
  32. data/lib/ruby-jmeter/dsl/ajp13_sampler.rb +41 -0
  33. data/lib/ruby-jmeter/dsl/assertion_results.rb +55 -0
  34. data/lib/ruby-jmeter/dsl/beanshell_assertion.rb +28 -0
  35. data/lib/ruby-jmeter/dsl/beanshell_listener.rb +28 -0
  36. data/lib/ruby-jmeter/dsl/beanshell_postprocessor.rb +28 -0
  37. data/lib/ruby-jmeter/dsl/beanshell_preprocessor.rb +28 -0
  38. data/lib/ruby-jmeter/dsl/beanshell_sampler.rb +28 -0
  39. data/lib/ruby-jmeter/dsl/beanshell_timer.rb +28 -0
  40. data/lib/ruby-jmeter/dsl/bsf_assertion.rb +28 -0
  41. data/lib/ruby-jmeter/dsl/bsf_listener.rb +28 -0
  42. data/lib/ruby-jmeter/dsl/bsf_postprocessor.rb +28 -0
  43. data/lib/ruby-jmeter/dsl/bsf_preprocessor.rb +28 -0
  44. data/lib/ruby-jmeter/dsl/bsf_sampler.rb +28 -0
  45. data/lib/ruby-jmeter/dsl/bsf_timer.rb +28 -0
  46. data/lib/ruby-jmeter/dsl/compare_assertion.rb +27 -0
  47. data/lib/ruby-jmeter/dsl/comparison_assertion_visualizer.rb +55 -0
  48. data/lib/ruby-jmeter/dsl/constant_throughput_timer.rb +30 -0
  49. data/lib/ruby-jmeter/dsl/constant_timer.rb +25 -0
  50. data/lib/ruby-jmeter/dsl/counter.rb +31 -0
  51. data/lib/ruby-jmeter/dsl/cssjquery_extractor.rb +30 -0
  52. data/lib/ruby-jmeter/dsl/csv_data_set_config.rb +32 -0
  53. data/lib/ruby-jmeter/dsl/debug_postprocessor.rb +28 -0
  54. data/lib/ruby-jmeter/dsl/debug_sampler.rb +27 -0
  55. data/lib/ruby-jmeter/dsl/distribution_graphalpha.rb +55 -0
  56. data/lib/ruby-jmeter/dsl/duration_assertion.rb +25 -0
  57. data/lib/ruby-jmeter/dsl/foreach_controller.rb +29 -0
  58. data/lib/ruby-jmeter/dsl/ftp_request.rb +34 -0
  59. data/lib/ruby-jmeter/dsl/ftp_request_defaults.rb +32 -0
  60. data/lib/ruby-jmeter/dsl/gaussian_random_timer.rb +26 -0
  61. data/lib/ruby-jmeter/dsl/generate_summary_results.rb +23 -0
  62. data/lib/ruby-jmeter/dsl/graph_results.rb +55 -0
  63. data/lib/ruby-jmeter/dsl/html_assertion.rb +30 -0
  64. data/lib/ruby-jmeter/dsl/html_link_parser.rb +23 -0
  65. data/lib/ruby-jmeter/dsl/html_parameter_mask.rb +32 -0
  66. data/lib/ruby-jmeter/dsl/http_authorization_manager.rb +33 -0
  67. data/lib/ruby-jmeter/dsl/http_cache_manager.rb +26 -0
  68. data/lib/ruby-jmeter/dsl/http_cookie_manager.rb +27 -0
  69. data/lib/ruby-jmeter/dsl/http_header_manager.rb +30 -0
  70. data/lib/ruby-jmeter/dsl/http_request.rb +41 -0
  71. data/lib/ruby-jmeter/dsl/http_request_defaults.rb +44 -0
  72. data/lib/ruby-jmeter/dsl/http_url_rewriting_modifier.rb +29 -0
  73. data/lib/ruby-jmeter/dsl/if_controller.rb +27 -0
  74. data/lib/ruby-jmeter/dsl/include_controller.rb +25 -0
  75. data/lib/ruby-jmeter/dsl/java_request.rb +69 -0
  76. data/lib/ruby-jmeter/dsl/java_request_defaults.rb +69 -0
  77. data/lib/ruby-jmeter/dsl/jdbc_connection_configuration.rb +37 -0
  78. data/lib/ruby-jmeter/dsl/jdbc_postprocessor.rb +31 -0
  79. data/lib/ruby-jmeter/dsl/jdbc_preprocessor.rb +31 -0
  80. data/lib/ruby-jmeter/dsl/jdbc_request.rb +31 -0
  81. data/lib/ruby-jmeter/dsl/jms_pointtopoint.rb +40 -0
  82. data/lib/ruby-jmeter/dsl/jms_publisher.rb +41 -0
  83. data/lib/ruby-jmeter/dsl/jms_subscriber.rb +35 -0
  84. data/lib/ruby-jmeter/dsl/jsr223_assertion.rb +29 -0
  85. data/lib/ruby-jmeter/dsl/jsr223_listener.rb +29 -0
  86. data/lib/ruby-jmeter/dsl/jsr223_postprocessor.rb +29 -0
  87. data/lib/ruby-jmeter/dsl/jsr223_preprocessor.rb +29 -0
  88. data/lib/ruby-jmeter/dsl/jsr223_sampler.rb +29 -0
  89. data/lib/ruby-jmeter/dsl/jsr223_timer.rb +29 -0
  90. data/lib/ruby-jmeter/dsl/junit_request.rb +37 -0
  91. data/lib/ruby-jmeter/dsl/keystore_configuration.rb +27 -0
  92. data/lib/ruby-jmeter/dsl/ldap_extended_request.rb +42 -0
  93. data/lib/ruby-jmeter/dsl/ldap_extended_request_defaults.rb +42 -0
  94. data/lib/ruby-jmeter/dsl/ldap_request.rb +35 -0
  95. data/lib/ruby-jmeter/dsl/ldap_request_defaults.rb +40 -0
  96. data/lib/ruby-jmeter/dsl/login_config_element.rb +26 -0
  97. data/lib/ruby-jmeter/dsl/loop_controller.rb +26 -0
  98. data/lib/ruby-jmeter/dsl/mail_reader_sampler.rb +37 -0
  99. data/lib/ruby-jmeter/dsl/mailer_visualizer.rb +64 -0
  100. data/lib/ruby-jmeter/dsl/md5hex_assertion.rb +25 -0
  101. data/lib/ruby-jmeter/dsl/module_controller.rb +23 -0
  102. data/lib/ruby-jmeter/dsl/monitor_results.rb +55 -0
  103. data/lib/ruby-jmeter/dsl/once_only_controller.rb +23 -0
  104. data/lib/ruby-jmeter/dsl/os_process_sampler.rb +34 -0
  105. data/lib/ruby-jmeter/dsl/poisson_random_timer.rb +26 -0
  106. data/lib/ruby-jmeter/dsl/random_controller.rb +25 -0
  107. data/lib/ruby-jmeter/dsl/random_order_controller.rb +23 -0
  108. data/lib/ruby-jmeter/dsl/random_variable.rb +30 -0
  109. data/lib/ruby-jmeter/dsl/recording_controller.rb +23 -0
  110. data/lib/ruby-jmeter/dsl/regex_user_parameters.rb +27 -0
  111. data/lib/ruby-jmeter/dsl/regular_expression_extractor.rb +31 -0
  112. data/lib/ruby-jmeter/dsl/response_assertion.rb +31 -0
  113. data/lib/ruby-jmeter/dsl/response_time_graph.rb +55 -0
  114. data/lib/ruby-jmeter/dsl/result_status_action_handler.rb +25 -0
  115. data/lib/ruby-jmeter/dsl/runtime_controller.rb +25 -0
  116. data/lib/ruby-jmeter/dsl/save_responses_to_a_file.rb +29 -0
  117. data/lib/ruby-jmeter/dsl/simple_config_element.rb +23 -0
  118. data/lib/ruby-jmeter/dsl/simple_controller.rb +23 -0
  119. data/lib/ruby-jmeter/dsl/simple_data_writer.rb +55 -0
  120. data/lib/ruby-jmeter/dsl/smime_assertion.rb +35 -0
  121. data/lib/ruby-jmeter/dsl/smtp_sampler.rb +51 -0
  122. data/lib/ruby-jmeter/dsl/soapxmlrpc_request.rb +33 -0
  123. data/lib/ruby-jmeter/dsl/spline_visualizer.rb +55 -0
  124. data/lib/ruby-jmeter/dsl/summary_report.rb +55 -0
  125. data/lib/ruby-jmeter/dsl/switch_controller.rb +25 -0
  126. data/lib/ruby-jmeter/dsl/synchronizing_timer.rb +25 -0
  127. data/lib/ruby-jmeter/dsl/tcp_sampler.rb +33 -0
  128. data/lib/ruby-jmeter/dsl/tcp_sampler_config.rb +31 -0
  129. data/lib/ruby-jmeter/dsl/test_action.rb +27 -0
  130. data/lib/ruby-jmeter/dsl/test_plan.rb +31 -0
  131. data/lib/ruby-jmeter/dsl/thread_group.rb +36 -0
  132. data/lib/ruby-jmeter/dsl/throughput_controller.rb +32 -0
  133. data/lib/ruby-jmeter/dsl/transaction_controller.rb +26 -0
  134. data/lib/ruby-jmeter/dsl/uniform_random_timer.rb +26 -0
  135. data/lib/ruby-jmeter/dsl/user_defined_variables.rb +32 -0
  136. data/lib/ruby-jmeter/dsl/user_parameters.rb +29 -0
  137. data/lib/ruby-jmeter/dsl/view_results_in_table.rb +55 -0
  138. data/lib/ruby-jmeter/dsl/view_results_tree.rb +55 -0
  139. data/lib/ruby-jmeter/dsl/while_controller.rb +25 -0
  140. data/lib/ruby-jmeter/dsl/xml_assertion.rb +23 -0
  141. data/lib/ruby-jmeter/dsl/xml_schema_assertion.rb +25 -0
  142. data/lib/ruby-jmeter/dsl/xpath_assertion.rb +30 -0
  143. data/lib/ruby-jmeter/dsl/xpath_extractor.rb +30 -0
  144. data/lib/ruby-jmeter/helpers/fallback_content_proxy.rb +54 -0
  145. data/lib/ruby-jmeter/helpers/helper.rb +41 -0
  146. data/lib/ruby-jmeter/helpers/jmeter.properties +28 -0
  147. data/lib/ruby-jmeter/helpers/logger-colors.rb +48 -0
  148. data/lib/ruby-jmeter/helpers/parser.rb +106 -0
  149. data/lib/ruby-jmeter/helpers/strip-heredoc.rb +5 -0
  150. data/lib/ruby-jmeter/helpers/user-agents.rb +27 -0
  151. data/lib/ruby-jmeter/idl.rb +70 -0
  152. data/lib/ruby-jmeter/idl.xml +1513 -0
  153. data/lib/ruby-jmeter/plugins/gc_console_status_logger.rb +14 -0
  154. data/lib/ruby-jmeter/plugins/gc_dummy_sampler.rb +23 -0
  155. data/lib/ruby-jmeter/plugins/gc_latencies_over_time.rb +48 -0
  156. data/lib/ruby-jmeter/plugins/gc_response_codes_per_second.rb +48 -0
  157. data/lib/ruby-jmeter/plugins/gc_response_times_distribution.rb +47 -0
  158. data/lib/ruby-jmeter/plugins/gc_response_times_over_time.rb +48 -0
  159. data/lib/ruby-jmeter/plugins/gc_response_times_percentiles.rb +48 -0
  160. data/lib/ruby-jmeter/plugins/gc_transactions_per_second.rb +48 -0
  161. data/lib/ruby-jmeter/plugins/gc_variable_throughput_timer.rb +26 -0
  162. data/lib/ruby-jmeter/version.rb +3 -0
  163. data/ruby-jmeter.gemspec +22 -0
  164. data/spec/dsl_spec.rb +491 -0
  165. data/spec/spec_helper.rb +10 -0
  166. data/spec/stub.rb +31 -0
  167. metadata +244 -0
@@ -0,0 +1,13 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 2 do
6
+ transaction name: 'Assertions' do
7
+ visit name: 'Altentee', url: 'http://altentee.com/' do
8
+ assert contains: 'We test, tune and secure your site'
9
+ assert 'not-contains' => 'Something in frames', scope: 'children'
10
+ end
11
+ end
12
+ end
13
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ auth url: '/', username: 'tim', password: 'secret', domain: 'altentee.com'
6
+ threads count: 1 do
7
+ transaction name: 'Google Search' do
8
+ visit name: 'Home Page', url: 'http://google.com/'
9
+ end
10
+ end
11
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ cache clear_each_iteration: true
6
+ threads count: 1 do
7
+ transaction name: 'Google Search' do
8
+ visit name: 'Home Page', url: 'http://google.com/'
9
+ end
10
+ end
11
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,11 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ cookies clear_each_iteration: false
6
+ threads count: 1 do
7
+ transaction name: 'Google Search' do
8
+ visit name: 'Home Page', url: 'http://google.com/'
9
+ end
10
+ end
11
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 100 do
6
+ visit name: 'Home', url: 'http://altentee.com' do
7
+ extract regex: "content='(.+?)' name='csrf-token'", name: 'csrf-token'
8
+ end
9
+ end
10
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 1 do
6
+ dummy_sampler '__grid_data_api', {response_data: "ACIR0001, ACIR0002, ACIR0003, ACIR0004, ACIR0005, ACIR0006, ABS0003, MBS0001, MBS0004, MBS0005, ABS0004, ABS0005, ABS0010, ABS0011, ABS0012, ABS0013, ABS0014, ABS0016, ABS0017, ABS0018, ABS0021, ABS0022, MBS0006, MBS0009, MBS0010"}
7
+ end
8
+
9
+
10
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,23 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ cookies clear_each_iteration: false
6
+ threads count: 1 do
7
+ transaction name: 'Google Search' do
8
+ visit name: 'Home Page', url: 'http://google.com/'
9
+ end
10
+ end
11
+
12
+ #
13
+ # You need jmeter-plugins at Google code
14
+ # http://code.google.com/p/jmeter-plugins
15
+ #
16
+ latencies_over_time 'Response Latencies Over Time'
17
+ response_codes_per_second 'Response Codes per Second'
18
+ response_times_distribution 'Response Times Distribution'
19
+ response_times_over_time 'Response Times Over Time'
20
+ response_times_percentiles 'Response Times Percentiles'
21
+ transactions_per_second 'Transactions per Second'
22
+
23
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 1 do
6
+ visit name: 'Home Page', url: 'http://google.com/'
7
+ end
8
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 1 do
6
+ visit name: 'Home Page', url: 'http://google.com/'
7
+ end
8
+ end.grid('6CnGKgaTRU62LspdTFbr', {region: 'us-west-2', endpoint: '127.0.0.1:3000'})
@@ -0,0 +1,19 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ header name: 'Accept', value: '*'
6
+
7
+ with_user_agent :iphone
8
+
9
+ threads count: 1 do
10
+ visit name: 'Home Page', url: 'http://google.com/'
11
+ end
12
+
13
+ transaction name: 'Google Search via XHR' do
14
+ visit name: 'Home Page', url: 'http://google.com/' do
15
+ with_xhr
16
+ end
17
+ end
18
+
19
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 1 do
6
+ ldap_ext name: 'ldap_ext sample',
7
+ test: 'sbind',
8
+ user_dn: 'user_dn',
9
+ user_pw: 'user_password',
10
+ servername: 'your_ldap_server',
11
+ secure: true,
12
+ port: 636
13
+
14
+ end
15
+ view_results name: 'debug'
16
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+
6
+ threads count: 1 do
7
+
8
+ transaction name: 'Post with a Raw Body', parent: false do
9
+ post name: 'Home Page', url: 'http://google.com',
10
+ raw_body: '{"name":"Big Poncho","price":10,"vendor_attendance_id":24,"product_id":1}'
11
+ end
12
+
13
+ end
14
+
15
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,8 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 10 do
6
+ visit name: 'Google Search', url: 'http://google.com/?hl=en&tbo=d&sclient=psy-ab&q=flood.io&oq=flood.io'
7
+ end
8
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,15 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 100 do
6
+
7
+ think_time 5000,5000
8
+
9
+ transaction name: 'Google Search' do
10
+ visit name: 'Home Page', url: 'http://google.com/'
11
+ random_timer 3000
12
+ end
13
+
14
+ end
15
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 100 do
6
+
7
+ think_time 5000,5000
8
+
9
+ throughput_controller percent: 99 do
10
+ transaction name: "TC_01", parent: true, include_timers: true
11
+ end
12
+
13
+ end
14
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,21 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+ threads count: 100 do # threads = RPS * <max response time ms> / 1000
6
+
7
+ throughput_shaper 'increasing load test', [
8
+ { :start_rps => 100, :end_rps => 100, :duration => 60 },
9
+ { :start_rps => 200, :end_rps => 200, :duration => 60 },
10
+ { :start_rps => 300, :end_rps => 300, :duration => 60 },
11
+ { :start_rps => 400, :end_rps => 400, :duration => 60 },
12
+ { :start_rps => 500, :end_rps => 500, :duration => 60 },
13
+ { :start_rps => 600, :end_rps => 600, :duration => 60 }
14
+ ]
15
+
16
+ transaction name: 'Google Search' do
17
+ visit name: 'Home Page', url: 'http://google.com/'
18
+ end
19
+
20
+ end
21
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,64 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'ruby-jmeter'
3
+
4
+ test do
5
+
6
+ defaults :domain => 'www.etsy.com'
7
+
8
+ cache :clear_each_iteration => true
9
+
10
+ cookies
11
+
12
+ threads :count => 1, :loops => 10 do
13
+
14
+ random_timer 1000, 3000
15
+
16
+ transaction '01_etsy_home' do
17
+ visit :name => 'home', :url => 'http://www.etsy.com/' do
18
+ assert 'contains' => 'Etsy - Your place to buy and sell all things handmade, vintage, and supplies'
19
+ end
20
+ end
21
+
22
+ Once do
23
+ transaction '02_etsy_signin' do
24
+ submit :name => 'signin', :url => 'https://www.etsy.com/signin',
25
+ :fill_in => {
26
+ :username => 'tim.koops@gmail.com',
27
+ :password => ARGV[0],
28
+ :persistent => 1,
29
+ :from_page => 'http://www.etsy.com/',
30
+ :from_action => '',
31
+ :from_name => '',
32
+ :overlay => 1
33
+ } do
34
+ assert 'contains' => 'Tim'
35
+ extract :regex => 'a href="(/browse.+?)"', :name => 'random_category'
36
+ end
37
+ end
38
+ end
39
+
40
+ exists 'random_category' do
41
+
42
+ transaction '03_etsy_browse_random_category' do
43
+ visit :name => 'browse', :url => '${random_category}' do
44
+ extract :regex => 'a href="(http.+?subcat.+?)"', :name => 'random_sub_category'
45
+ end
46
+ end
47
+
48
+ transaction '04_etsy_browse_random_sub_category' do
49
+ visit :name => 'browse', :url => '${random_sub_category}' do
50
+ extract :regex => 'a href="(/listing.+?)"', :name => 'random_listing'
51
+ end
52
+ end
53
+
54
+ transaction '05_etsy_view_random_listing' do
55
+ visit :name => 'view', :url => '${random_listing}'
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ # end.grid ARGV[1]
63
+ # end.jmx
64
+ end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -0,0 +1,18 @@
1
+ require 'nokogiri'
2
+ require 'rest_client'
3
+ require 'json'
4
+ require 'cgi'
5
+ require 'open3'
6
+
7
+ require 'ruby-jmeter/version'
8
+ require 'ruby-jmeter/helpers/helper'
9
+ require 'ruby-jmeter/helpers/parser'
10
+ require 'ruby-jmeter/helpers/fallback_content_proxy'
11
+ require 'ruby-jmeter/helpers/logger-colors'
12
+ require 'ruby-jmeter/helpers/strip-heredoc'
13
+ require 'ruby-jmeter/helpers/user-agents'
14
+
15
+ lib = File.dirname(File.absolute_path(__FILE__))
16
+ Dir.glob(lib + '/ruby-jmeter/dsl/*', &method(:require))
17
+ Dir.glob(lib + '/ruby-jmeter/plugins/*', &method(:require))
18
+ require 'ruby-jmeter/dsl'
@@ -0,0 +1,237 @@
1
+ # RubyJmeter::DSL methods
2
+ - Test Plan
3
+ `test_plan`
4
+ - Counter
5
+ `counter`
6
+ - CSV Data Set Config
7
+ `csv_data_set_config`
8
+ - FTP Request Defaults
9
+ `ftp_request_defaults`
10
+ - HTTP Authorization Manager
11
+ `http_authorization_manager`
12
+ - HTTP Cache Manager
13
+ `http_cache_manager`
14
+ - HTTP Cookie Manager
15
+ `http_cookie_manager`
16
+ - HTTP Header Manager
17
+ `http_header_manager`
18
+ - HTTP Request Defaults
19
+ `http_request_defaults`
20
+ - Java Request Defaults
21
+ `java_request_defaults`
22
+ - JDBC Connection Configuration
23
+ `jdbc_connection_configuration`
24
+ - Keystore Configuration
25
+ `keystore_configuration`
26
+ - LDAP Extended Request Defaults
27
+ `ldap_extended_request_defaults`
28
+ - LDAP Request Defaults
29
+ `ldap_request_defaults`
30
+ - Login Config Element
31
+ `login_config_element`
32
+ - Random Variable
33
+ `random_variable`
34
+ - Simple Config Element
35
+ `simple_config_element`
36
+ - TCP Sampler Config
37
+ `tcp_sampler_config`
38
+ - User Defined Variables
39
+ `user_defined_variables`
40
+ - Thread Group
41
+ `thread_group`
42
+ - ForEach Controller
43
+ `foreach_controller`
44
+ - If Controller
45
+ `if_controller`
46
+ - Include Controller
47
+ `include_controller`
48
+ - Loop Controller
49
+ `loop_controller`
50
+ - Module Controller
51
+ `module_controller`
52
+ - Once Only Controller
53
+ `once_only_controller`
54
+ - Random Controller
55
+ `random_controller`
56
+ - Random Order Controller
57
+ `random_order_controller`
58
+ - Recording Controller
59
+ `recording_controller`
60
+ - Runtime Controller
61
+ `runtime_controller`
62
+ - Simple Controller
63
+ `simple_controller`
64
+ - Switch Controller
65
+ `switch_controller`
66
+ - Throughput Controller
67
+ `throughput_controller`
68
+ - Transaction Controller
69
+ `transaction_controller`
70
+ - While Controller
71
+ `while_controller`
72
+ - BeanShell Timer
73
+ `beanshell_timer`
74
+ - BSF Timer
75
+ `bsf_timer`
76
+ - Constant Throughput Timer
77
+ `constant_throughput_timer`
78
+ - Constant Timer
79
+ `constant_timer`
80
+ - Gaussian Random Timer
81
+ `gaussian_random_timer`
82
+ - JSR223 Timer
83
+ `jsr223_timer`
84
+ - Poisson Random Timer
85
+ `poisson_random_timer`
86
+ - Synchronizing Timer
87
+ `synchronizing_timer`
88
+ - Uniform Random Timer
89
+ `uniform_random_timer`
90
+ - BeanShell PreProcessor
91
+ `beanshell_preprocessor`
92
+ - BSF PreProcessor
93
+ `bsf_preprocessor`
94
+ - HTML Link Parser
95
+ `html_link_parser`
96
+ - HTML Parameter Mask
97
+ `html_parameter_mask`
98
+ - HTTP URL Re-writing Modifier
99
+ `http_url_rewriting_modifier`
100
+ - JDBC PreProcessor
101
+ `jdbc_preprocessor`
102
+ - JSR223 PreProcessor
103
+ `jsr223_preprocessor`
104
+ - RegEx User Parameters
105
+ `regex_user_parameters`
106
+ - User Parameters
107
+ `user_parameters`
108
+ - Access Log Sampler
109
+ `access_log_sampler`
110
+ - AJP/1.3 Sampler
111
+ `ajp13_sampler`
112
+ - BeanShell Sampler
113
+ `beanshell_sampler`
114
+ - BSF Sampler
115
+ `bsf_sampler`
116
+ - Debug Sampler
117
+ `debug_sampler`
118
+ - FTP Request
119
+ `ftp_request`
120
+ - HTTP Request
121
+ `http_request`
122
+ - Java Request
123
+ `java_request`
124
+ - JDBC Request
125
+ `jdbc_request`
126
+ - JMS Point-to-Point
127
+ `jms_pointtopoint`
128
+ - JMS Publisher
129
+ `jms_publisher`
130
+ - JMS Subscriber
131
+ `jms_subscriber`
132
+ - JSR223 Sampler
133
+ `jsr223_sampler`
134
+ - JUnit Request
135
+ `junit_request`
136
+ - LDAP Extended Request
137
+ `ldap_extended_request`
138
+ - LDAP Request
139
+ `ldap_request`
140
+ - Mail Reader Sampler
141
+ `mail_reader_sampler`
142
+ - OS Process Sampler
143
+ `os_process_sampler`
144
+ - SMTP Sampler
145
+ `smtp_sampler`
146
+ - SOAP/XML-RPC Request
147
+ `soapxmlrpc_request`
148
+ - TCP Sampler
149
+ `tcp_sampler`
150
+ - Test Action
151
+ `test_action`
152
+ - BeanShell PostProcessor
153
+ `beanshell_postprocessor`
154
+ - BSF PostProcessor
155
+ `bsf_postprocessor`
156
+ - CSS/JQuery Extractor
157
+ `cssjquery_extractor`
158
+ - Debug PostProcessor
159
+ `debug_postprocessor`
160
+ - JDBC PostProcessor
161
+ `jdbc_postprocessor`
162
+ - JSR223 PostProcessor
163
+ `jsr223_postprocessor`
164
+ - Regular Expression Extractor
165
+ `regular_expression_extractor`
166
+ - Result Status Action Handler
167
+ `result_status_action_handler`
168
+ - XPath Extractor
169
+ `xpath_extractor`
170
+ - BeanShell Assertion
171
+ `beanshell_assertion`
172
+ - BSF Assertion
173
+ `bsf_assertion`
174
+ - Compare Assertion
175
+ `compare_assertion`
176
+ - Duration Assertion
177
+ `duration_assertion`
178
+ - HTML Assertion
179
+ `html_assertion`
180
+ - JSR223 Assertion
181
+ `jsr223_assertion`
182
+ - JSR223 Assertion
183
+ `jsr223_assertion`
184
+ - MD5Hex Assertion
185
+ `md5hex_assertion`
186
+ - MD5Hex Assertion
187
+ `md5hex_assertion`
188
+ - Response Assertion
189
+ `response_assertion`
190
+ - SMIME Assertion
191
+ `smime_assertion`
192
+ - XML Assertion
193
+ `xml_assertion`
194
+ - XML Schema Assertion
195
+ `xml_schema_assertion`
196
+ - XPath Assertion
197
+ `xpath_assertion`
198
+ - Aggregate Graph
199
+ `aggregate_graph`
200
+ - Aggregate Report
201
+ `aggregate_report`
202
+ - Assertion Results
203
+ `assertion_results`
204
+ - BeanShell Listener
205
+ `beanshell_listener`
206
+ - BSF Listener
207
+ `bsf_listener`
208
+ - Comparison Assertion Visualizer
209
+ `comparison_assertion_visualizer`
210
+ - Distribution Graph (alpha)
211
+ `distribution_graphalpha`
212
+ - Generate Summary Results
213
+ `generate_summary_results`
214
+ - Graph Results
215
+ `graph_results`
216
+ - JSR223 Listener
217
+ `jsr223_listener`
218
+ - Mailer Visualizer
219
+ `mailer_visualizer`
220
+ - Monitor Results
221
+ `monitor_results`
222
+ - Response Time Graph
223
+ `response_time_graph`
224
+ - Response Time Graph
225
+ `response_time_graph`
226
+ - Save Responses to a file
227
+ `save_responses_to_a_file`
228
+ - Simple Data Writer
229
+ `simple_data_writer`
230
+ - Spline Visualizer
231
+ `spline_visualizer`
232
+ - Summary Report
233
+ `summary_report`
234
+ - View Results in Table
235
+ `view_results_in_table`
236
+ - View Results Tree
237
+ `view_results_tree`