Class: Gridinit::Jmeter::ExtendedDSL
- Inherits:
-
DSL
- Object
- DSL
- Gridinit::Jmeter::ExtendedDSL
show all
- Includes:
- Parser
- Defined in:
- lib/gridinit-jmeter/dsl.rb
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#console_status_logger(name = "jp@gc - Console Status Logger", params = {}, &block) ⇒ Object
(also: #console)
-
#delete(*args, &block) ⇒ Object
-
#dummy_sampler(name = "jp@gc - Dummy Sampler", params = {}, &block) ⇒ Object
(also: #dummy)
-
#exists(variable, &block) ⇒ Object
-
#extract(params, &block) ⇒ Object
(also: #web_reg_save_param)
-
#get(*args, &block) ⇒ Object
(also: #visit)
-
#grid(token, params = {}) ⇒ Object
-
#http_cache_manager(params = {}, &block) ⇒ Object
(also: #cache)
-
#http_cookie_manager(params = {}, &block) ⇒ Object
(also: #cookies)
-
#http_header_manager(params, &block) ⇒ Object
(also: #header)
-
#initialize(params = {}) ⇒ ExtendedDSL
constructor
A new instance of ExtendedDSL.
-
#jmx(params = {}) ⇒ Object
-
#latencies_over_time(name = "jp@gc - Response Latencies Over Time", params = {}, &block) ⇒ Object
-
#loop_controller(params, &block) ⇒ Object
(also: #Loop)
-
#out(params = {}) ⇒ Object
-
#post(*args, &block) ⇒ Object
(also: #submit)
-
#put(*args, &block) ⇒ Object
-
#random_timer(delay = 0, range = 0, &block) ⇒ Object
(also: #think_time)
-
#response_assertion(params = {}, &block) ⇒ Object
(also: #assert, #web_reg_find)
-
#response_codes_per_second(name = "jp@gc - Response Codes per Second", params = {}, &block) ⇒ Object
-
#response_times_distribution(name = "jp@gc - Response Times Distribution", params = {}, &block) ⇒ Object
-
#response_times_over_time(name = "jp@gc - Response Times Over Time", params = {}, &block) ⇒ Object
-
#response_times_percentiles(name = "jp@gc - Response Times Percentiles", params = {}, &block) ⇒ Object
-
#run(params = {}) ⇒ Object
-
#soapxmlrpc_request(params, &block) ⇒ Object
(also: #soap)
-
#thread_group(*args, &block) ⇒ Object
(also: #threads)
-
#throughput_controller(params, &block) ⇒ Object
(also: #Throughput)
-
#throughput_shaper(name = "jp@gc - Throughput Shaping Timer", steps = [], params = {}, &block) ⇒ Object
(also: #shaper)
-
#to_doc ⇒ Object
-
#to_xml ⇒ Object
-
#transaction_controller(*args, &block) ⇒ Object
(also: #transaction)
-
#transactions_per_second(name = "jp@gc - Transactions per Second", params = {}, &block) ⇒ Object
-
#user_defined_variables(params, &block) ⇒ Object
(also: #variables)
-
#with_user_agent(device) ⇒ Object
-
#with_xhr ⇒ Object
Methods included from Parser
#fill_in, #parse_http_request, #parse_test_type, #parse_uri, #parse_url, #raw_body
Methods inherited from DSL
#access_log_sampler, #aggregate_graph, #aggregate_report, #ajp13_sampler, #assertion_results, #beanshell_assertion, #beanshell_listener, #beanshell_postprocessor, #beanshell_preprocessor, #beanshell_sampler, #beanshell_timer, #bsf_assertion, #bsf_listener, #bsf_postprocessor, #bsf_preprocessor, #bsf_sampler, #bsf_timer, #compare_assertion, #comparison_assertion_visualizer, #constant_throughput_timer, #constant_timer, #counter, #cssjquery_extractor, #csv_data_set_config, #debug_postprocessor, #debug_sampler, #distribution_graphalpha, #duration_assertion, #foreach_controller, #ftp_request, #ftp_request_defaults, #gaussian_random_timer, #generate_summary_results, #graph_results, #html_assertion, #html_link_parser, #html_parameter_mask, #http_authorization_manager, #http_request, #http_request_defaults, #http_url_rewriting_modifier, #if_controller, #include_controller, #java_request, #java_request_defaults, #jdbc_connection_configuration, #jdbc_postprocessor, #jdbc_preprocessor, #jdbc_request, #jms_pointtopoint, #jms_publisher, #jms_subscriber, #jsr223_assertion, #jsr223_listener, #jsr223_postprocessor, #jsr223_preprocessor, #jsr223_sampler, #jsr223_timer, #junit_request, #keystore_configuration, #ldap_extended_request, #ldap_extended_request_defaults, #ldap_request, #ldap_request_defaults, #login_config_element, #mail_reader_sampler, #mailer_visualizer, #md5hex_assertion, #module_controller, #monitor_results, #once_only_controller, #os_process_sampler, #poisson_random_timer, #random_controller, #random_order_controller, #random_variable, #recording_controller, #regex_user_parameters, #regular_expression_extractor, #response_time_graph, #result_status_action_handler, #runtime_controller, #save_responses_to_a_file, #simple_config_element, #simple_controller, #simple_data_writer, #smime_assertion, #smtp_sampler, #spline_visualizer, #summary_report, #switch_controller, #synchronizing_timer, #tcp_sampler, #tcp_sampler_config, #test_action, #test_plan, #uniform_random_timer, #user_parameters, #view_results_in_table, #view_results_tree, #while_controller, #xml_assertion, #xml_schema_assertion, #xpath_assertion, #xpath_extractor
Constructor Details
#initialize(params = {}) ⇒ ExtendedDSL
Returns a new instance of ExtendedDSL.
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/gridinit-jmeter/dsl.rb', line 9
def initialize(params = {})
@root = Nokogiri::XML(<<-EOF.strip_heredoc)
<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.1">
<hashTree>
</hashTree>
</jmeterTestPlan>
EOF
node = Gridinit::Jmeter::TestPlan.new(params)
@current_node = @root.at_xpath("//jmeterTestPlan/hashTree")
@current_node = attach_to_last(node)
variables :name => 'testguid',
:value => '${__P(testguid,${__time(,)})}',
:comments => 'Gridinit testguid automatically generated by DSL'
end
|
Instance Attribute Details
#root ⇒ Object
Returns the value of attribute root.
7
8
9
|
# File 'lib/gridinit-jmeter/dsl.rb', line 7
def root
@root
end
|
Instance Method Details
#console_status_logger(name = "jp@gc - Console Status Logger", params = {}, &block) ⇒ Object
Also known as:
console
294
295
296
297
|
# File 'lib/gridinit-jmeter/dsl.rb', line 294
def console_status_logger(name="jp@gc - Console Status Logger", params={}, &block)
node = Gridinit::Jmeter::GCConsoleStatusLogger.new(name, params)
attach_node(node, &block)
end
|
#delete(*args, &block) ⇒ Object
110
111
112
113
114
115
116
117
118
|
# File 'lib/gridinit-jmeter/dsl.rb', line 110
def delete(*args, &block)
params = args.shift || {}
params = { url: params }.merge(args.shift || {}) if params.class == String
params[:method] ||= 'DELETE'
params[:name] ||= params[:url]
parse_http_request(params)
node = Gridinit::Jmeter::HttpRequest.new(params)
attach_node(node, &block)
end
|
#dummy_sampler(name = "jp@gc - Dummy Sampler", params = {}, &block) ⇒ Object
Also known as:
dummy
308
309
310
311
|
# File 'lib/gridinit-jmeter/dsl.rb', line 308
def dummy_sampler(name="jp@gc - Dummy Sampler", params={}, &block)
node = Gridinit::Jmeter::GCDummySampler.new(name, params)
attach_node(node, &block)
end
|
#exists(variable, &block) ⇒ Object
166
167
168
169
170
171
|
# File 'lib/gridinit-jmeter/dsl.rb', line 166
def exists(variable, &block)
params ||= {}
params[:condition] = "'${#{variable}}'.length > 0"
node = Gridinit::Jmeter::IfController.new(params)
attach_node(node, &block)
end
|
222
223
224
225
226
227
228
229
230
231
232
233
234
|
# File 'lib/gridinit-jmeter/dsl.rb', line 222
def (params, &block)
node = if params[:regex]
params[:refname] = params[:name]
params[:regex] = params[:regex] params[:template] = params[:template] || "$1$"
Gridinit::Jmeter::RegularExpressionExtractor.new(params)
else
params[:refname] = params[:name]
params[:xpathQuery] = params[:xpath]
Gridinit::Jmeter::XpathExtractor.new(params)
end
attach_node(node, &block)
end
|
#get(*args, &block) ⇒ Object
Also known as:
visit
86
87
88
89
90
91
92
93
94
|
# File 'lib/gridinit-jmeter/dsl.rb', line 86
def get(*args, &block)
params = args.shift || {}
params = { url: params }.merge(args.shift || {}) if params.class == String
params[:method] ||= 'GET'
params[:name] ||= params[:url]
parse_http_request(params)
node = Gridinit::Jmeter::HttpRequest.new(params)
attach_node(node, &block)
end
|
#grid(token, params = {}) ⇒ Object
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
# File 'lib/gridinit-jmeter/dsl.rb', line 352
def grid(token, params={})
if params[:region] == 'local'
logger.info "Starting test ..."
params[:started] = Time.now
run params
params[:completed] = Time.now
logger.info "Completed test ..."
logger.debug "Uploading results ..." if params[:debug]
end
RestClient.proxy = params[:proxy] if params[:proxy]
begin
file = Tempfile.new(['jmeter', '.jmx'])
file.write(doc.to_xml(:indent => 2))
file.rewind
response = RestClient.post "http://#{params[:endpoint] ? params[:endpoint] : 'gridinit.com'}/api?token=#{token}®ion=#{params[:region]}",
{
:name => 'attachment',
:attachment => File.new("#{file.path}", 'rb'),
:results => (File.new("#{params[:jtl] ? params[:jtl] : 'jmeter.jtl'}", 'rb') if params[:region] == 'local'),
:multipart => true,
:content_type => 'application/octet-stream',
:started => params[:started],
:completed => params[:completed]
}
logger.info "Grid Results at: #{JSON.parse(response)["results"]}" if response.code == 200
rescue => e
logger.fatal "There was an error: #{e.message}"
end
end
|
#http_cache_manager(params = {}, &block) ⇒ Object
Also known as:
cache
46
47
48
49
|
# File 'lib/gridinit-jmeter/dsl.rb', line 46
def http_cache_manager(params={}, &block)
params[:clearEachIteration] = true if params.keys.include? 'clear_each_iteration'
super
end
|
#http_cookie_manager(params = {}, &block) ⇒ Object
Also known as:
cookies
39
40
41
42
|
# File 'lib/gridinit-jmeter/dsl.rb', line 39
def http_cookie_manager(params={}, &block)
params[:clearEachIteration] = true if params.keys.include? 'clear_each_iteration'
super
end
|
58
59
60
61
|
# File 'lib/gridinit-jmeter/dsl.rb', line 58
def (params, &block)
params['Header.name'] = params[:name]
super
end
|
#jmx(params = {}) ⇒ Object
321
322
323
324
|
# File 'lib/gridinit-jmeter/dsl.rb', line 321
def jmx(params={})
file(params)
logger.info "Test plan saved to: #{params[:file]}"
end
|
#latencies_over_time(name = "jp@gc - Response Latencies Over Time", params = {}, &block) ⇒ Object
289
290
291
292
|
# File 'lib/gridinit-jmeter/dsl.rb', line 289
def latencies_over_time(name="jp@gc - Response Latencies Over Time", params={}, &block)
node = Gridinit::Jmeter::GCLatenciesOverTime.new(name, params)
attach_node(node, &block)
end
|
#loop_controller(params, &block) ⇒ Object
Also known as:
Loop
175
176
177
178
|
# File 'lib/gridinit-jmeter/dsl.rb', line 175
def loop_controller(params, &block)
params[:loops] = params[:count] || 1
super
end
|
#out(params = {}) ⇒ Object
317
318
319
|
# File 'lib/gridinit-jmeter/dsl.rb', line 317
def out(params={})
puts doc.to_xml(:indent => 2)
end
|
#post(*args, &block) ⇒ Object
Also known as:
submit
98
99
100
101
102
103
104
105
106
|
# File 'lib/gridinit-jmeter/dsl.rb', line 98
def post(*args, &block)
params = args.shift || {}
params = { url: params }.merge(args.shift || {}) if params.class == String
params[:method] ||= 'POST'
params[:name] ||= params[:url]
parse_http_request(params)
node = Gridinit::Jmeter::HttpRequest.new(params)
attach_node(node, &block)
end
|
#put(*args, &block) ⇒ Object
120
121
122
123
124
125
126
127
128
|
# File 'lib/gridinit-jmeter/dsl.rb', line 120
def put(*args, &block)
params = args.shift || {}
params = { url: params }.merge(args.shift || {}) if params.class == String
params[:method] ||= 'PUT'
params[:name] ||= params[:url]
parse_http_request(params)
node = Gridinit::Jmeter::HttpRequest.new(params)
attach_node(node, &block)
end
|
#random_timer(delay = 0, range = 0, &block) ⇒ Object
Also known as:
think_time
238
239
240
241
242
243
244
|
# File 'lib/gridinit-jmeter/dsl.rb', line 238
def random_timer(delay=0, range=0, &block)
params={}
params[:delay] = delay
params[:range] = range
node = Gridinit::Jmeter::GaussianRandomTimer.new(params)
attach_node(node, &block)
end
|
#response_assertion(params = {}, &block) ⇒ Object
Also known as:
assert, web_reg_find
248
249
250
251
252
253
254
255
|
# File 'lib/gridinit-jmeter/dsl.rb', line 248
def response_assertion(params={}, &block)
params[:test_type] = parse_test_type(params)
params[:match] = params.values.first
node = Gridinit::Jmeter::ResponseAssertion.new(params)
node.doc.xpath("//stringProp[@name='Assertion.scope']").remove if
params[:scope] == 'main' || params['scope'] == 'main'
attach_node(node, &block)
end
|
#response_codes_per_second(name = "jp@gc - Response Codes per Second", params = {}, &block) ⇒ Object
264
265
266
267
|
# File 'lib/gridinit-jmeter/dsl.rb', line 264
def response_codes_per_second(name="jp@gc - Response Codes per Second", params={}, &block)
node = Gridinit::Jmeter::GCResponseCodesPerSecond.new(name, params)
attach_node(node, &block)
end
|
#response_times_distribution(name = "jp@gc - Response Times Distribution", params = {}, &block) ⇒ Object
269
270
271
272
|
# File 'lib/gridinit-jmeter/dsl.rb', line 269
def response_times_distribution(name="jp@gc - Response Times Distribution", params={}, &block)
node = Gridinit::Jmeter::GCResponseTimesDistribution.new(name, params)
attach_node(node, &block)
end
|
#response_times_over_time(name = "jp@gc - Response Times Over Time", params = {}, &block) ⇒ Object
274
275
276
277
|
# File 'lib/gridinit-jmeter/dsl.rb', line 274
def response_times_over_time(name="jp@gc - Response Times Over Time", params={}, &block)
node = Gridinit::Jmeter::GCResponseTimesOverTime.new(name, params)
attach_node(node, &block)
end
|
#response_times_percentiles(name = "jp@gc - Response Times Percentiles", params = {}, &block) ⇒ Object
279
280
281
282
|
# File 'lib/gridinit-jmeter/dsl.rb', line 279
def response_times_percentiles(name="jp@gc - Response Times Percentiles", params={}, &block)
node = Gridinit::Jmeter::GCResponseTimesPercentiles.new(name, params)
attach_node(node, &block)
end
|
#run(params = {}) ⇒ Object
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
|
# File 'lib/gridinit-jmeter/dsl.rb', line 334
def run(params={})
file(params)
logger.warn "Test executing locally ..."
cmd = "#{params[:path]}jmeter #{"-n" unless params[:gui] } -t #{params[:file]} -j #{params[:log] ? params[:log] : 'jmeter.log' } -l #{params[:jtl] ? params[:jtl] : 'jmeter.jtl' }"
logger.debug cmd if params[:debug]
Open3.popen2e("#{cmd} -q #{File.dirname(__FILE__)}/helpers/jmeter.properties") do |stdin, stdout_err, wait_thr|
while line = stdout_err.gets
logger.debug line.chomp if params[:debug]
end
exit_status = wait_thr.value
unless exit_status.success?
abort "FAILED !!! #{cmd}"
end
end
logger.info "Local Results at: #{params[:jtl] ? params[:jtl] : 'jmeter.jtl'}"
end
|
#soapxmlrpc_request(params, &block) ⇒ Object
Also known as:
soap
138
139
140
141
|
# File 'lib/gridinit-jmeter/dsl.rb', line 138
def soapxmlrpc_request(params, &block)
params[:method] ||= 'POST'
super
end
|
#thread_group(*args, &block) ⇒ Object
Also known as:
threads
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/gridinit-jmeter/dsl.rb', line 67
def thread_group(*args, &block)
params = args.shift || {}
params = { count: params }.merge(args.shift || {}) if params.class == Fixnum
params[:num_threads] = params[:count] || 1
params[:ramp_time] = params[:rampup] || (params[:num_threads]/2.0).ceil
params[:start_time] = params[:start_time] || Time.now.to_i * 1000
params[:end_time] = params[:end_time] || Time.now.to_i * 1000
params[:duration] ||= 60
params[:continue_forever] ||= false
params[:loops] = -1 if params[:continue_forever]
node = Gridinit::Jmeter::ThreadGroup.new(params)
attach_node(node, &block)
end
|
#throughput_controller(params, &block) ⇒ Object
Also known as:
Throughput
182
183
184
185
186
187
188
189
190
|
# File 'lib/gridinit-jmeter/dsl.rb', line 182
def throughput_controller(params, &block)
params[:style] = 1 if params[:percent]
params[:maxThroughput] = params[:total] || params[:percent] || 1
node = Gridinit::Jmeter::ThroughputController.new(params)
node.doc.xpath(".//FloatProperty/value").first.content = params[:maxThroughput].to_f
attach_node(node, &block)
end
|
#throughput_shaper(name = "jp@gc - Throughput Shaping Timer", steps = [], params = {}, &block) ⇒ Object
Also known as:
shaper
301
302
303
304
|
# File 'lib/gridinit-jmeter/dsl.rb', line 301
def throughput_shaper(name="jp@gc - Throughput Shaping Timer", steps=[], params={}, &block)
node = Gridinit::Jmeter::GCThroughputShapingTimer.new(name, steps)
attach_node(node, &block)
end
|
#to_doc ⇒ Object
330
331
332
|
# File 'lib/gridinit-jmeter/dsl.rb', line 330
def to_doc
doc.clone
end
|
#to_xml ⇒ Object
326
327
328
|
# File 'lib/gridinit-jmeter/dsl.rb', line 326
def to_xml
doc.to_xml(:indent => 2)
end
|
#transaction_controller(*args, &block) ⇒ Object
Also known as:
transaction
155
156
157
158
159
160
161
162
|
# File 'lib/gridinit-jmeter/dsl.rb', line 155
def transaction_controller(*args, &block)
params = args.shift || {}
params = { name: params }.merge(args.shift || {}) if params.class == String
params[:parent] ||= true
params[:includeTimers] = params[:include_timers] || false
node = Gridinit::Jmeter::TransactionController.new(params)
attach_node(node, &block)
end
|
#transactions_per_second(name = "jp@gc - Transactions per Second", params = {}, &block) ⇒ Object
284
285
286
287
|
# File 'lib/gridinit-jmeter/dsl.rb', line 284
def transactions_per_second(name="jp@gc - Transactions per Second", params={}, &block)
node = Gridinit::Jmeter::GCTransactionsPerSecond.new(name, params)
attach_node(node, &block)
end
|
#user_defined_variables(params, &block) ⇒ Object
Also known as:
variables
30
31
32
33
|
# File 'lib/gridinit-jmeter/dsl.rb', line 30
def user_defined_variables(params, &block)
params['Argument.name'] = params[:name]
super
end
|
#with_user_agent(device) ⇒ Object
53
54
55
56
|
# File 'lib/gridinit-jmeter/dsl.rb', line 53
def with_user_agent(device)
name: 'User-Agent',
value: Gridinit::Jmeter::UserAgent.new(device).string
end
|
#with_xhr ⇒ Object
130
131
132
133
|
# File 'lib/gridinit-jmeter/dsl.rb', line 130
def with_xhr
name: 'X-Requested-With',
value: 'XMLHttpRequest'
end
|