jmeter-ruby 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitattributes +22 -0
- data/.github/workflows/ci.yml +54 -0
- data/.gitignore +24 -0
- data/.rspec +1 -0
- data/.ruby-version +1 -0
- data/CHANGES.md +77 -0
- data/Gemfile +23 -0
- data/LICENSE.txt +21 -0
- data/README.md +434 -0
- data/Rakefile +18 -0
- data/examples/OS_process_sampler.rb +24 -0
- data/examples/assertion_results.rb +18 -0
- data/examples/basic_auth.rb +11 -0
- data/examples/browser_headers.rb +7 -0
- data/examples/composite_graph.rb +29 -0
- data/examples/constant_throughput_timer.rb +11 -0
- data/examples/csv_data_set.rb +11 -0
- data/examples/dummy_sampler.rb +9 -0
- data/examples/duration_assertion.rb +10 -0
- data/examples/etsy_login_browse.rb +61 -0
- data/examples/extract.rb +12 -0
- data/examples/foreach_controller.rb +29 -0
- data/examples/header_manager.rb +29 -0
- data/examples/http_cache_manager.rb +11 -0
- data/examples/http_cookie_manager.rb +11 -0
- data/examples/http_request_defaults.rb +11 -0
- data/examples/http_request_post.rb +11 -0
- data/examples/http_request_with_files.rb +13 -0
- data/examples/http_request_with_query_params.rb +8 -0
- data/examples/jmeter_plugins_graphs.rb +22 -0
- data/examples/json_path_assertions.rb +11 -0
- data/examples/json_path_extractor.rb +10 -0
- data/examples/json_path_postprocessor.rb +10 -0
- data/examples/jsr223_assertion.rb +13 -0
- data/examples/ldap_sampler.rb +16 -0
- data/examples/loadosophia.rb +18 -0
- data/examples/loop_controller.rb +10 -0
- data/examples/loops_with_counter.rb +15 -0
- data/examples/once_only_controller.rb +15 -0
- data/examples/perfmon.rb +46 -0
- data/examples/real_custom_methods.rb +19 -0
- data/examples/real_page_objects.rb +41 -0
- data/examples/real_redis_data_set_with_setup.rb +123 -0
- data/examples/real_user_objects_github.rb +112 -0
- data/examples/regular_expression_extractor.rb +12 -0
- data/examples/response_assertion.rb +15 -0
- data/examples/response_time_percentiles_graph.rb +11 -0
- data/examples/rsync.rb +16 -0
- data/examples/sample_transaction.rb +18 -0
- data/examples/simple_data_writer_listener.rb +11 -0
- data/examples/stepping_thread_group.rb +30 -0
- data/examples/test_fragment.rb +14 -0
- data/examples/think_time.rb +15 -0
- data/examples/thread_groups.rb +7 -0
- data/examples/throughput_controller.rb +14 -0
- data/examples/throughput_shaping_timer.rb +20 -0
- data/examples/ultimate_thread_group.rb +39 -0
- data/examples/unicode.rb +8 -0
- data/examples/user_defined_variables.rb +10 -0
- data/examples/user_parameters.rb +28 -0
- data/examples/uuid_per_iteration.rb +15 -0
- data/jmeter-ruby.gemspec +28 -0
- data/lib/jmeter-ruby/DSL.md +235 -0
- data/lib/jmeter-ruby/dsl/access_log_sampler.rb +32 -0
- data/lib/jmeter-ruby/dsl/aggregate_graph.rb +55 -0
- data/lib/jmeter-ruby/dsl/aggregate_report.rb +55 -0
- data/lib/jmeter-ruby/dsl/ajp13_sampler.rb +41 -0
- data/lib/jmeter-ruby/dsl/assertion_results.rb +55 -0
- data/lib/jmeter-ruby/dsl/beanshell_assertion.rb +28 -0
- data/lib/jmeter-ruby/dsl/beanshell_listener.rb +28 -0
- data/lib/jmeter-ruby/dsl/beanshell_postprocessor.rb +28 -0
- data/lib/jmeter-ruby/dsl/beanshell_preprocessor.rb +28 -0
- data/lib/jmeter-ruby/dsl/beanshell_sampler.rb +28 -0
- data/lib/jmeter-ruby/dsl/beanshell_timer.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_assertion.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_listener.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_postprocessor.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_preprocessor.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_sampler.rb +28 -0
- data/lib/jmeter-ruby/dsl/bsf_timer.rb +28 -0
- data/lib/jmeter-ruby/dsl/compare_assertion.rb +27 -0
- data/lib/jmeter-ruby/dsl/comparison_assertion_visualizer.rb +55 -0
- data/lib/jmeter-ruby/dsl/constant_throughput_timer.rb +26 -0
- data/lib/jmeter-ruby/dsl/constant_timer.rb +25 -0
- data/lib/jmeter-ruby/dsl/counter.rb +31 -0
- data/lib/jmeter-ruby/dsl/cssjquery_extractor.rb +31 -0
- data/lib/jmeter-ruby/dsl/csv_data_set_config.rb +33 -0
- data/lib/jmeter-ruby/dsl/debug_postprocessor.rb +28 -0
- data/lib/jmeter-ruby/dsl/debug_sampler.rb +27 -0
- data/lib/jmeter-ruby/dsl/distribution_graphalpha.rb +55 -0
- data/lib/jmeter-ruby/dsl/duration_assertion.rb +25 -0
- data/lib/jmeter-ruby/dsl/foreach_controller.rb +27 -0
- data/lib/jmeter-ruby/dsl/ftp_request.rb +34 -0
- data/lib/jmeter-ruby/dsl/ftp_request_defaults.rb +32 -0
- data/lib/jmeter-ruby/dsl/gaussian_random_timer.rb +26 -0
- data/lib/jmeter-ruby/dsl/generate_summary_results.rb +23 -0
- data/lib/jmeter-ruby/dsl/graph_results.rb +55 -0
- data/lib/jmeter-ruby/dsl/html_assertion.rb +30 -0
- data/lib/jmeter-ruby/dsl/html_link_parser.rb +23 -0
- data/lib/jmeter-ruby/dsl/html_parameter_mask.rb +32 -0
- data/lib/jmeter-ruby/dsl/http_authorization_manager.rb +33 -0
- data/lib/jmeter-ruby/dsl/http_cache_manager.rb +26 -0
- data/lib/jmeter-ruby/dsl/http_cookie_manager.rb +28 -0
- data/lib/jmeter-ruby/dsl/http_header_manager.rb +30 -0
- data/lib/jmeter-ruby/dsl/http_request.rb +41 -0
- data/lib/jmeter-ruby/dsl/http_request_defaults.rb +41 -0
- data/lib/jmeter-ruby/dsl/http_url_rewriting_modifier.rb +30 -0
- data/lib/jmeter-ruby/dsl/if_controller.rb +27 -0
- data/lib/jmeter-ruby/dsl/include_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/java_request.rb +69 -0
- data/lib/jmeter-ruby/dsl/java_request_defaults.rb +69 -0
- data/lib/jmeter-ruby/dsl/jdbc_connection_configuration.rb +37 -0
- data/lib/jmeter-ruby/dsl/jdbc_postprocessor.rb +33 -0
- data/lib/jmeter-ruby/dsl/jdbc_preprocessor.rb +33 -0
- data/lib/jmeter-ruby/dsl/jdbc_request.rb +33 -0
- data/lib/jmeter-ruby/dsl/jms_pointtopoint.rb +41 -0
- data/lib/jmeter-ruby/dsl/jms_publisher.rb +43 -0
- data/lib/jmeter-ruby/dsl/jms_subscriber.rb +35 -0
- data/lib/jmeter-ruby/dsl/json_path_postprocessor.rb +27 -0
- data/lib/jmeter-ruby/dsl/jsr223_assertion.rb +29 -0
- data/lib/jmeter-ruby/dsl/jsr223_listener.rb +29 -0
- data/lib/jmeter-ruby/dsl/jsr223_postprocessor.rb +29 -0
- data/lib/jmeter-ruby/dsl/jsr223_preprocessor.rb +29 -0
- data/lib/jmeter-ruby/dsl/jsr223_sampler.rb +29 -0
- data/lib/jmeter-ruby/dsl/jsr223_timer.rb +29 -0
- data/lib/jmeter-ruby/dsl/junit_request.rb +37 -0
- data/lib/jmeter-ruby/dsl/keystore_configuration.rb +28 -0
- data/lib/jmeter-ruby/dsl/ldap_extended_request.rb +42 -0
- data/lib/jmeter-ruby/dsl/ldap_extended_request_defaults.rb +42 -0
- data/lib/jmeter-ruby/dsl/ldap_request.rb +35 -0
- data/lib/jmeter-ruby/dsl/ldap_request_defaults.rb +39 -0
- data/lib/jmeter-ruby/dsl/login_config_element.rb +26 -0
- data/lib/jmeter-ruby/dsl/loop_controller.rb +26 -0
- data/lib/jmeter-ruby/dsl/mail_reader_sampler.rb +37 -0
- data/lib/jmeter-ruby/dsl/mailer_visualizer.rb +64 -0
- data/lib/jmeter-ruby/dsl/md5hex_assertion.rb +25 -0
- data/lib/jmeter-ruby/dsl/module_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/monitor_results.rb +55 -0
- data/lib/jmeter-ruby/dsl/once_only_controller.rb +23 -0
- data/lib/jmeter-ruby/dsl/os_process_sampler.rb +34 -0
- data/lib/jmeter-ruby/dsl/poisson_random_timer.rb +26 -0
- data/lib/jmeter-ruby/dsl/random_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/random_order_controller.rb +23 -0
- data/lib/jmeter-ruby/dsl/random_variable.rb +30 -0
- data/lib/jmeter-ruby/dsl/recording_controller.rb +23 -0
- data/lib/jmeter-ruby/dsl/regex_user_parameters.rb +27 -0
- data/lib/jmeter-ruby/dsl/regular_expression_extractor.rb +32 -0
- data/lib/jmeter-ruby/dsl/response_assertion.rb +31 -0
- data/lib/jmeter-ruby/dsl/response_time_graph.rb +55 -0
- data/lib/jmeter-ruby/dsl/result_status_action_handler.rb +25 -0
- data/lib/jmeter-ruby/dsl/runtime_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/save_responses_to_a_file.rb +29 -0
- data/lib/jmeter-ruby/dsl/setup_thread_group.rb +36 -0
- data/lib/jmeter-ruby/dsl/simple_config_element.rb +23 -0
- data/lib/jmeter-ruby/dsl/simple_controller.rb +23 -0
- data/lib/jmeter-ruby/dsl/simple_data_writer.rb +55 -0
- data/lib/jmeter-ruby/dsl/smime_assertion.rb +35 -0
- data/lib/jmeter-ruby/dsl/smtp_sampler.rb +51 -0
- data/lib/jmeter-ruby/dsl/soapxmlrpc_request.rb +33 -0
- data/lib/jmeter-ruby/dsl/spline_visualizer.rb +55 -0
- data/lib/jmeter-ruby/dsl/summary_report.rb +55 -0
- data/lib/jmeter-ruby/dsl/switch_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/synchronizing_timer.rb +26 -0
- data/lib/jmeter-ruby/dsl/tcp_sampler.rb +33 -0
- data/lib/jmeter-ruby/dsl/tcp_sampler_config.rb +31 -0
- data/lib/jmeter-ruby/dsl/test_action.rb +27 -0
- data/lib/jmeter-ruby/dsl/test_fragment.rb +23 -0
- data/lib/jmeter-ruby/dsl/test_plan.rb +31 -0
- data/lib/jmeter-ruby/dsl/thread_group.rb +37 -0
- data/lib/jmeter-ruby/dsl/throughput_controller.rb +32 -0
- data/lib/jmeter-ruby/dsl/transaction_controller.rb +26 -0
- data/lib/jmeter-ruby/dsl/uniform_random_timer.rb +26 -0
- data/lib/jmeter-ruby/dsl/user_defined_variables.rb +33 -0
- data/lib/jmeter-ruby/dsl/user_parameters.rb +30 -0
- data/lib/jmeter-ruby/dsl/view_results_in_table.rb +55 -0
- data/lib/jmeter-ruby/dsl/view_results_tree.rb +55 -0
- data/lib/jmeter-ruby/dsl/while_controller.rb +25 -0
- data/lib/jmeter-ruby/dsl/xml_assertion.rb +23 -0
- data/lib/jmeter-ruby/dsl/xml_schema_assertion.rb +25 -0
- data/lib/jmeter-ruby/dsl/xpath_assertion.rb +31 -0
- data/lib/jmeter-ruby/dsl/xpath_extractor.rb +31 -0
- data/lib/jmeter-ruby/dsl.rb +102 -0
- data/lib/jmeter-ruby/extend/assertions/response_assertion.rb +36 -0
- data/lib/jmeter-ruby/extend/config_elements/header_manager.rb +13 -0
- data/lib/jmeter-ruby/extend/config_elements/http_cache_manager.rb +12 -0
- data/lib/jmeter-ruby/extend/config_elements/http_cookie_manager.rb +36 -0
- data/lib/jmeter-ruby/extend/config_elements/http_request_defaults.rb +39 -0
- data/lib/jmeter-ruby/extend/config_elements/user_defined_variables.rb +13 -0
- data/lib/jmeter-ruby/extend/config_elements/user_parameters.rb +31 -0
- data/lib/jmeter-ruby/extend/controllers/foreach_controller.rb +27 -0
- data/lib/jmeter-ruby/extend/controllers/loop_controller.rb +11 -0
- data/lib/jmeter-ruby/extend/controllers/module_controller.rb +23 -0
- data/lib/jmeter-ruby/extend/controllers/throughput_controller.rb +15 -0
- data/lib/jmeter-ruby/extend/controllers/transaction_controller.rb +14 -0
- data/lib/jmeter-ruby/extend/misc/aliases.rb +21 -0
- data/lib/jmeter-ruby/extend/misc/exists.rb +13 -0
- data/lib/jmeter-ruby/extend/misc/rsync.rb +24 -0
- data/lib/jmeter-ruby/extend/misc/uuid.rb +12 -0
- data/lib/jmeter-ruby/extend/misc/with_helpers.rb +27 -0
- data/lib/jmeter-ruby/extend/plugins/jmeter_plugins.rb +120 -0
- data/lib/jmeter-ruby/extend/processors/extract.rb +28 -0
- data/lib/jmeter-ruby/extend/processors/regular_expression_extractor.rb +25 -0
- data/lib/jmeter-ruby/extend/samplers/http_request.rb +58 -0
- data/lib/jmeter-ruby/extend/samplers/jms_pointtopoint.rb +26 -0
- data/lib/jmeter-ruby/extend/samplers/soapxmlrpc_request.rb +9 -0
- data/lib/jmeter-ruby/extend/threads/setup_thread_group.rb +18 -0
- data/lib/jmeter-ruby/extend/threads/thread_group.rb +19 -0
- data/lib/jmeter-ruby/extend/timers/constant_throughput_timer.rb +11 -0
- data/lib/jmeter-ruby/extend/timers/random_timer.rb +14 -0
- data/lib/jmeter-ruby/helpers/fallback_content_proxy.rb +54 -0
- data/lib/jmeter-ruby/helpers/helper.rb +75 -0
- data/lib/jmeter-ruby/helpers/logger-colors.rb +48 -0
- data/lib/jmeter-ruby/helpers/parser.rb +135 -0
- data/lib/jmeter-ruby/helpers/strip-heredoc.rb +5 -0
- data/lib/jmeter-ruby/helpers/user-agents.rb +27 -0
- data/lib/jmeter-ruby/idl.rb +70 -0
- data/lib/jmeter-ruby/idl.xml +1488 -0
- data/lib/jmeter-ruby/plugins/active_threads_over_time.rb +57 -0
- data/lib/jmeter-ruby/plugins/composite_graph.rb +71 -0
- data/lib/jmeter-ruby/plugins/console_status_logger.rb +15 -0
- data/lib/jmeter-ruby/plugins/dummy_sampler.rb +26 -0
- data/lib/jmeter-ruby/plugins/jmx_collector.rb +73 -0
- data/lib/jmeter-ruby/plugins/json_path_assertion.rb +19 -0
- data/lib/jmeter-ruby/plugins/json_path_extractor.rb +20 -0
- data/lib/jmeter-ruby/plugins/latencies_over_time.rb +49 -0
- data/lib/jmeter-ruby/plugins/loadosophia_uploader.rb +63 -0
- data/lib/jmeter-ruby/plugins/perfmon_collector.rb +80 -0
- data/lib/jmeter-ruby/plugins/redis_data_set.rb +39 -0
- data/lib/jmeter-ruby/plugins/response_codes_per_second.rb +49 -0
- data/lib/jmeter-ruby/plugins/response_times_distribution.rb +49 -0
- data/lib/jmeter-ruby/plugins/response_times_over_time.rb +50 -0
- data/lib/jmeter-ruby/plugins/response_times_percentiles.rb +51 -0
- data/lib/jmeter-ruby/plugins/stepping_thread_group.rb +30 -0
- data/lib/jmeter-ruby/plugins/transactions_per_second.rb +50 -0
- data/lib/jmeter-ruby/plugins/ultimate_thread_group.rb +23 -0
- data/lib/jmeter-ruby/plugins/variable_throughput_timer.rb +27 -0
- data/lib/jmeter-ruby/version.rb +12 -0
- data/lib/jmeter-ruby.rb +27 -0
- data/mise.toml +2 -0
- data/script/release +162 -0
- data/spec/constant_throughput_timer_spec.rb +20 -0
- data/spec/csv_data_set_config_spec.rb +33 -0
- data/spec/header_manager_spec.rb +37 -0
- data/spec/http_cache_manager_spec.rb +29 -0
- data/spec/http_cookie_manager_spec.rb +169 -0
- data/spec/http_request_defaults_spec.rb +57 -0
- data/spec/http_request_spec.rb +305 -0
- data/spec/jmeter_plugins_spec.rb +245 -0
- data/spec/json_extractor_spec.rb +19 -0
- data/spec/json_path_assertion_spec.rb +28 -0
- data/spec/logic_controller_spec.rb +148 -0
- data/spec/loop_controller_spec.rb +19 -0
- data/spec/module_controller_spec.rb +56 -0
- data/spec/regular_expression_extractor_spec.rb +63 -0
- data/spec/response_assertion_spec.rb +69 -0
- data/spec/setup_thread_group_spec.rb +31 -0
- data/spec/spec_helper.rb +19 -0
- data/spec/thread_group_spec.rb +57 -0
- data/spec/throughput_controller_spec.rb +24 -0
- data/spec/transaction_controller_spec.rb +30 -0
- data/spec/user_defined_variables_spec.rb +22 -0
- data/spec/user_parameters_spec.rb +45 -0
- data/spec/with_helpers_spec.rb +57 -0
- data/spec/xpath_extractor_spec.rb +15 -0
- metadata +360 -0
@@ -0,0 +1,24 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
build_args = ->(args) do
|
5
|
+
args.collect do |arg|
|
6
|
+
{
|
7
|
+
xpath: "//collectionProp[@name='Arguments.arguments']",
|
8
|
+
value: Nokogiri::XML(<<-EOF.strip_heredoc).children
|
9
|
+
<elementProp name="" elementType="Argument">
|
10
|
+
<stringProp name="Argument.name"></stringProp>
|
11
|
+
<stringProp name="Argument.value">#{arg}</stringProp>
|
12
|
+
<stringProp name="Argument.metadata">=</stringProp>
|
13
|
+
</elementProp>
|
14
|
+
EOF
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
test do
|
21
|
+
os_process_sampler 'SystemSampler.command' => 'git',
|
22
|
+
update_at_xpath: build_args.call(['push', 'origin', 'master'])
|
23
|
+
|
24
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
visit name: 'Home Page', url: 'http://altentee.com/' do
|
7
|
+
duration_assertion duration: 10
|
8
|
+
end
|
9
|
+
|
10
|
+
# write to an assertion results listener, errors only
|
11
|
+
assertion_results filename: '/var/log/flood/custom/assertion.log',
|
12
|
+
error_logging: true,
|
13
|
+
update_at_xpath: [
|
14
|
+
{ '//xml' => 'true' },
|
15
|
+
{ '//assertions' => 'true' }
|
16
|
+
]
|
17
|
+
end
|
18
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
auth url: '/', username: 'tim', password: 'secret', domain: 'altentee.com'
|
6
|
+
threads count: 1 do
|
7
|
+
transaction name: 'Home' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 5, rampup: 10 do
|
7
|
+
transaction name: 'Home' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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
|
+
active_threads 'Active Threads'
|
18
|
+
|
19
|
+
composite 'Composite Graph', [
|
20
|
+
{
|
21
|
+
graph: 'Response Latencies Over Time',
|
22
|
+
metric: 'Home Page'
|
23
|
+
},
|
24
|
+
{
|
25
|
+
graph: 'Active Threads',
|
26
|
+
metric: 'Overall Active Threads'
|
27
|
+
}
|
28
|
+
]
|
29
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads do
|
6
|
+
# in samples per minute
|
7
|
+
constant_throughput_timer value: 60.0
|
8
|
+
|
9
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
csv_data_set_config filename: 'postcodes.csv',
|
6
|
+
variableNames: 'postcode'
|
7
|
+
|
8
|
+
threads count: 1 do
|
9
|
+
visit name: 'Home', url: 'https://flooded.io?query=${postcode}'
|
10
|
+
end
|
11
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
dummy_sampler name: '__grid_data_api',
|
7
|
+
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'
|
8
|
+
end
|
9
|
+
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 'jmeter-ruby'
|
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' do
|
7
|
+
duration_assertion duration: 1000
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
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
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
data/examples/extract.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
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', match_number: 1
|
8
|
+
extract regex: 'pattern', name: 'jmeter_variable_regex', variable: 'test'
|
9
|
+
extract css: 'span#blog', name: 'blog'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads 1, {
|
6
|
+
rampup: 1,
|
7
|
+
scheduler: true,
|
8
|
+
duration: 60,
|
9
|
+
continue_forever: true
|
10
|
+
} do
|
11
|
+
|
12
|
+
defaults domain: 'altentee.com'
|
13
|
+
|
14
|
+
random_timer 1000, 2000
|
15
|
+
|
16
|
+
transaction '01_GET_home' do
|
17
|
+
visit '/' do
|
18
|
+
extract regex: 'href="(.+?)"', name: 'links', match_number: -1
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
foreach_controller inputVal: 'links', returnVal: 'link' do
|
23
|
+
transaction '02_GET_random_link' do
|
24
|
+
visit '${link}'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
# header with multiple values
|
6
|
+
header [
|
7
|
+
{ name: 'Accept', value: '*' },
|
8
|
+
{ name: 'User-Agent', value: 'Test' }
|
9
|
+
]
|
10
|
+
|
11
|
+
with_user_agent :iphone
|
12
|
+
|
13
|
+
threads count: 1 do
|
14
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
15
|
+
end
|
16
|
+
|
17
|
+
transaction name: 'Home via XHR' do
|
18
|
+
visit name: 'Home Page', url: 'https://flooded.io/' do
|
19
|
+
with_xhr
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
post name: 'with_headers', ur: '/',
|
24
|
+
fill_in: {
|
25
|
+
js: true
|
26
|
+
} do
|
27
|
+
header [{ name: 'Cache-Control', value: 'no-cache'}]
|
28
|
+
end
|
29
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cache clear_each_iteration: true
|
6
|
+
threads count: 1 do
|
7
|
+
transaction name: 'Home' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 1 do
|
7
|
+
transaction name: 'Home' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
defaults domain: 'example.com',
|
6
|
+
protocol: 'https',
|
7
|
+
download_resources: true,
|
8
|
+
use_concurrent_pool: 5,
|
9
|
+
urls_must_match: 'http.+?example.com',
|
10
|
+
md5: true
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
transaction name: 'Post with a Raw Body', parent: false do
|
7
|
+
post name: 'Home Page', url: 'http://google.com',
|
8
|
+
raw_body: '{"name":"Big Poncho","price":10,"vendor_attendance_id":24,"product_id":1}'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads do
|
6
|
+
transaction name: "TC_03", parent: true, include_timers: true do
|
7
|
+
submit url: "/", fill_in: { username: 'tim', password: 'password' },
|
8
|
+
files: [{path: '/tmp/foo', paramname: 'fileup', mimetype: 'text/plain'},
|
9
|
+
{path: '/tmp/bar', paramname: 'otherfileup'}],
|
10
|
+
'DO_MULTIPART_POST' => true
|
11
|
+
end
|
12
|
+
end
|
13
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 10 do
|
6
|
+
post name: 'Oauth Token', url: 'https://flooded.io/api/oauth?username=Michael&authType=token'
|
7
|
+
end
|
8
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,22 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 1 do
|
7
|
+
transaction name: 'Home' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1, loop: 1 do
|
6
|
+
visit 'https://api.github.com/orgs/flood-io/repos' do
|
7
|
+
assert json: '.name', value: '.*'
|
8
|
+
assert json: '.id', value: '\d+'
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
visit 'https://flood.io/d384673f64e3a3/result.json' do
|
7
|
+
extract json: '.apdex.score', name: 'apdex'
|
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1, loop: 1 do
|
6
|
+
visit 'https://api.github.com/orgs/flood-io/repos' do
|
7
|
+
json_path_postprocessor referenceNames: 'name', jsonPathExprs: '.name', match_numbers: 1
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,13 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
visit 'https://flood.io/d384673f64e3a3/result.json' do
|
7
|
+
jsr223_assertion update_at_xpath: [
|
8
|
+
{ "//stringProp[@name='script']" => 'var foo = "cat";' },
|
9
|
+
{ "//stringProp[@name='scriptLanguage']" => 'javascript' }
|
10
|
+
]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
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 'jmeter-ruby'
|
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,18 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
|
6
|
+
# You need to either add the project name and upload token from Loadosophia.org here,
|
7
|
+
# or use a property file (-q flag when running jmeter).
|
8
|
+
loadosophia('Loadosophia Uploader', {
|
9
|
+
project: "${__P(loadosophia.project,DEFAULT)}",
|
10
|
+
uploadToken: "${__P(loadosophia.uploadToken,No Token specified)}",
|
11
|
+
useOnline: "true",
|
12
|
+
title: "HLS Load test ${__time(yyyy-MM-dd HH:mm)}"
|
13
|
+
})
|
14
|
+
|
15
|
+
threads count: 1 do
|
16
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
17
|
+
end
|
18
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
loops count:10 do
|
7
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
8
|
+
end
|
9
|
+
end
|
10
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 1 do
|
6
|
+
loops count:10 do
|
7
|
+
counter 'CounterConfig.name' => 'visit',
|
8
|
+
'CounterConfig.start' => 1,
|
9
|
+
'CounterConfig.incr' => 1,
|
10
|
+
'CounterConfig.end' => 100
|
11
|
+
|
12
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
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 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads count: 100 do
|
6
|
+
think_time 5000, 5000
|
7
|
+
|
8
|
+
Once do
|
9
|
+
post name: 'Home Page', url: 'https://flooded.io/api/oauth'
|
10
|
+
end
|
11
|
+
|
12
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
13
|
+
|
14
|
+
end
|
15
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
data/examples/perfmon.rb
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 5, rampup: 10 do
|
7
|
+
transaction name: 'Google Search' do
|
8
|
+
visit name: 'Home Page', url: 'https://flooded.io/'
|
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
|
+
active_threads 'Active Threads'
|
18
|
+
|
19
|
+
#
|
20
|
+
# You need perfmon agent running
|
21
|
+
# http://jmeter-plugins.org/wiki/PerfMonAgent/
|
22
|
+
#
|
23
|
+
perfmon_collector name: 'Perfmon Metrics Collector',
|
24
|
+
nodes: [
|
25
|
+
{
|
26
|
+
server: 'localhost',
|
27
|
+
port: 4444,
|
28
|
+
metric: 'Memory',
|
29
|
+
parameters: 'name=node#1:label=memory-node'
|
30
|
+
}]
|
31
|
+
|
32
|
+
composite 'Composite Graph', [
|
33
|
+
{
|
34
|
+
graph: 'Response Latencies Over Time',
|
35
|
+
metric: 'Home Page'
|
36
|
+
},
|
37
|
+
{
|
38
|
+
graph: 'Active Threads',
|
39
|
+
metric: 'Overall Active Threads'
|
40
|
+
},
|
41
|
+
{
|
42
|
+
graph: 'Perfmon Metrics Collector',
|
43
|
+
metric: 'localhost Memory memory-node'
|
44
|
+
}
|
45
|
+
]
|
46
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
module JmeterRuby
|
5
|
+
class ExtendedDSL < DSL
|
6
|
+
def test_method_here
|
7
|
+
puts "here be dragons"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
|
13
|
+
test do
|
14
|
+
threads count: 1 do
|
15
|
+
test_fragment name: 'RegisterResponseToSentMail', enabled: 'false' do
|
16
|
+
test_method_here
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end.run(path: '/usr/local/share/jmeter-3.1/bin/', gui: true)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'jmeter-ruby'
|
3
|
+
|
4
|
+
module JmeterRuby
|
5
|
+
class ExtendedDSL < DSL
|
6
|
+
def test_method_here
|
7
|
+
puts "here be dragons"
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# Define your page objects
|
13
|
+
class HomePage
|
14
|
+
def initialize(dsl)
|
15
|
+
@dsl = dsl
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_method_unreachable
|
19
|
+
puts "I can never be reached from ExtendedDSL"
|
20
|
+
end
|
21
|
+
|
22
|
+
def visit
|
23
|
+
get name: 'home', url: '/' do
|
24
|
+
test_method_here
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def method_missing method, *args, &block
|
31
|
+
@dsl.__send__ method, *args, &block
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
test do
|
36
|
+
threads count: 1 do
|
37
|
+
# then re-use your page objects in your test plan
|
38
|
+
home = HomePage.new(self)
|
39
|
+
home.visit
|
40
|
+
end
|
41
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|