ruby-jmeter 2.13.2 → 2.13.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGES.md +1 -1
- data/examples/basic_assertion.rb +1 -1
- data/examples/basic_auth.rb +1 -1
- data/examples/basic_cache.rb +1 -1
- data/examples/basic_composite_graph.rb +1 -1
- data/examples/basic_cookies.rb +1 -1
- data/examples/basic_foreach.rb +4 -4
- data/examples/basic_gc_dummy_sampler.rb +2 -2
- data/examples/basic_gc_results.rb +2 -2
- data/examples/basic_google.rb +1 -1
- data/examples/basic_header.rb +4 -4
- data/examples/basic_http_request_defaults.rb +2 -2
- data/examples/basic_ldap_ext.rb +4 -4
- data/examples/basic_loadosophia.rb +1 -1
- data/examples/basic_perfmon.rb +1 -1
- data/examples/basic_post.rb +2 -2
- data/examples/basic_preprocessor_user_parameters.rb +1 -1
- data/examples/basic_query_params.rb +1 -1
- data/examples/basic_response_assertion.rb +13 -0
- data/examples/basic_simple_data_writer.rb +2 -2
- data/examples/basic_testdata.rb +11 -11
- data/examples/basic_think_time.rb +1 -1
- data/examples/basic_throughput_controller.rb +2 -2
- data/examples/basic_throughput_shaping_timer.rb +1 -1
- data/examples/basic_user_defined_variables.rb +3 -3
- data/examples/etsy_login_browse.rb +3 -3
- data/lib/ruby-jmeter/helpers/parser.rb +19 -15
- data/lib/ruby-jmeter/version.rb +1 -1
- data/spec/dsl_spec.rb +27 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 68b5a89a9ad1fd1e5659763d2dfb64066b1e86e1
|
4
|
+
data.tar.gz: 840ebafe7550c59520181704decd556187339f72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e7339dfe60edf6c580e1d0f118c0c8ddcee21b2ddb449821400dc44c6fa9bcd30746af5179b34f03932ce4f7c329cabf9c5d78298076991916c15107397cc08
|
7
|
+
data.tar.gz: a75f59422d0d44793e89560b9dd3767610fe468f2a5ca4cf066e795582286508789b923d532bcf096129780bbaa13cd191880c00fbf68495ee8c33b09a72f536
|
data/CHANGES.md
CHANGED
data/examples/basic_assertion.rb
CHANGED
data/examples/basic_auth.rb
CHANGED
data/examples/basic_cache.rb
CHANGED
data/examples/basic_cookies.rb
CHANGED
data/examples/basic_foreach.rb
CHANGED
@@ -3,9 +3,9 @@ require 'ruby-jmeter'
|
|
3
3
|
|
4
4
|
test do
|
5
5
|
threads 1, {
|
6
|
-
rampup: 1,
|
6
|
+
rampup: 1,
|
7
7
|
scheduler: true,
|
8
|
-
duration: 60,
|
8
|
+
duration: 60,
|
9
9
|
continue_forever: true
|
10
10
|
} do
|
11
11
|
|
@@ -28,5 +28,5 @@ test do
|
|
28
28
|
|
29
29
|
# end.jmx
|
30
30
|
# end.flood(ENV['FLOOD_API_TOKEN'])
|
31
|
-
# end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
32
|
-
end.run(path: '/usr/share/jmeter/bin/')
|
31
|
+
# end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
32
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/')
|
@@ -5,6 +5,6 @@ test do
|
|
5
5
|
threads count: 1 do
|
6
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
7
|
end
|
8
|
-
|
9
8
|
|
10
|
-
|
9
|
+
|
10
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -8,7 +8,7 @@ test do
|
|
8
8
|
visit name: 'Home Page', url: 'http://google.com/'
|
9
9
|
end
|
10
10
|
end
|
11
|
-
|
11
|
+
|
12
12
|
#
|
13
13
|
# You need jmeter-plugins at Google code
|
14
14
|
# http://code.google.com/p/jmeter-plugins
|
@@ -20,4 +20,4 @@ test do
|
|
20
20
|
response_times_percentiles 'Response Times Percentiles'
|
21
21
|
transactions_per_second 'Transactions per Second'
|
22
22
|
|
23
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
23
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
data/examples/basic_google.rb
CHANGED
data/examples/basic_header.rb
CHANGED
@@ -3,10 +3,10 @@ require 'ruby-jmeter'
|
|
3
3
|
|
4
4
|
test do
|
5
5
|
# header with multiple values
|
6
|
-
header [
|
6
|
+
header [
|
7
7
|
{ name: 'Accept', value: '*' },
|
8
8
|
{ name: 'User-Agent', value: 'Test' }
|
9
|
-
]
|
9
|
+
]
|
10
10
|
|
11
11
|
with_user_agent :iphone
|
12
12
|
|
@@ -19,5 +19,5 @@ test do
|
|
19
19
|
with_xhr
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
23
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
22
|
+
|
23
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -2,9 +2,9 @@ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
|
2
2
|
require 'ruby-jmeter'
|
3
3
|
|
4
4
|
test do
|
5
|
-
defaults domain: 'example.com',
|
5
|
+
defaults domain: 'example.com',
|
6
6
|
protocol: 'https',
|
7
7
|
download_resources: true,
|
8
8
|
use_concurrent_pool: 5,
|
9
9
|
urls_must_match: 'http.+?example.com'
|
10
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
10
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
data/examples/basic_ldap_ext.rb
CHANGED
@@ -3,14 +3,14 @@ require 'ruby-jmeter'
|
|
3
3
|
|
4
4
|
test do
|
5
5
|
threads count: 1 do
|
6
|
-
ldap_ext name: 'ldap_ext sample',
|
7
|
-
test: 'sbind',
|
6
|
+
ldap_ext name: 'ldap_ext sample',
|
7
|
+
test: 'sbind',
|
8
8
|
user_dn: 'user_dn',
|
9
9
|
user_pw: 'user_password',
|
10
10
|
servername: 'your_ldap_server',
|
11
11
|
secure: true,
|
12
12
|
port: 636
|
13
|
-
|
13
|
+
|
14
14
|
end
|
15
15
|
view_results name: 'debug'
|
16
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
16
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
data/examples/basic_perfmon.rb
CHANGED
data/examples/basic_post.rb
CHANGED
@@ -6,10 +6,10 @@ test do
|
|
6
6
|
threads count: 1 do
|
7
7
|
|
8
8
|
transaction name: 'Post with a Raw Body', parent: false do
|
9
|
-
post name: 'Home Page', url: 'http://google.com',
|
9
|
+
post name: 'Home Page', url: 'http://google.com',
|
10
10
|
raw_body: '{"name":"Big Poncho","price":10,"vendor_attendance_id":24,"product_id":1}'
|
11
11
|
end
|
12
12
|
|
13
13
|
end
|
14
14
|
|
15
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
15
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -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
|
+
response_assertion contains: 'We test, tune and secure your site'
|
9
|
+
response_assertion 'not-contains' => 'Something in frames', scope: 'children'
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -6,6 +6,6 @@ test do
|
|
6
6
|
visit name: 'Home Page', url: 'http://google.com/'
|
7
7
|
|
8
8
|
# write errors to a simple data writer with the log alias
|
9
|
-
log filename: '/var/log/flood/custom.log', error_logging: true
|
9
|
+
log filename: '/var/log/flood/custom.log', error_logging: true
|
10
10
|
end
|
11
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
11
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
data/examples/basic_testdata.rb
CHANGED
@@ -33,28 +33,28 @@ test do
|
|
33
33
|
|
34
34
|
# populate named ${postcode_random} from shared data url
|
35
35
|
# using random result, match number 0 and override name
|
36
|
-
test_data :postcodes,
|
37
|
-
name: 'postcode_random',
|
36
|
+
test_data :postcodes,
|
37
|
+
name: 'postcode_random',
|
38
38
|
match_num: 0
|
39
39
|
|
40
40
|
|
41
41
|
# populate named ${postcode} from shared data url
|
42
42
|
# using exact result, match number 1 and override name
|
43
|
-
test_data 'postcodes',
|
44
|
-
name: 'postcode_exact',
|
45
|
-
regex: '^(\d+)',
|
43
|
+
test_data 'postcodes',
|
44
|
+
name: 'postcode_exact',
|
45
|
+
regex: '^(\d+)',
|
46
46
|
match_num: 1
|
47
47
|
|
48
48
|
# populate named ${postcode} from a stubbed data url
|
49
49
|
# with stub = true and default value 2010
|
50
|
-
test_data 'postcodes',
|
51
|
-
name: 'postcode_stub',
|
52
|
-
regex: '^(\d+)',
|
53
|
-
match_num: 1,
|
54
|
-
default: '2010',
|
50
|
+
test_data 'postcodes',
|
51
|
+
name: 'postcode_stub',
|
52
|
+
regex: '^(\d+)',
|
53
|
+
match_num: 1,
|
54
|
+
default: '2010',
|
55
55
|
stub: true
|
56
56
|
|
57
57
|
debug_sampler
|
58
58
|
view_results
|
59
59
|
end
|
60
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
60
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -3,8 +3,8 @@ require 'ruby-jmeter'
|
|
3
3
|
|
4
4
|
test do
|
5
5
|
# user defined with multiple values
|
6
|
-
variables [
|
6
|
+
variables [
|
7
7
|
{ name: 'email', value: 'support@flood.io' },
|
8
8
|
{ name: 'password', value: 'password' }
|
9
|
-
]
|
10
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
9
|
+
]
|
10
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -8,7 +8,7 @@ test do
|
|
8
8
|
cache :clear_each_iteration => true
|
9
9
|
|
10
10
|
cookies
|
11
|
-
|
11
|
+
|
12
12
|
threads :count => 1, :loops => 10 do
|
13
13
|
|
14
14
|
random_timer 1000, 3000
|
@@ -35,7 +35,7 @@ test do
|
|
35
35
|
extract :regex => 'a href="(/browse.+?)"', :name => 'random_category'
|
36
36
|
end
|
37
37
|
end
|
38
|
-
end
|
38
|
+
end
|
39
39
|
|
40
40
|
exists 'random_category' do
|
41
41
|
|
@@ -61,4 +61,4 @@ test do
|
|
61
61
|
|
62
62
|
# end.grid ARGV[1]
|
63
63
|
# end.jmx
|
64
|
-
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
64
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
@@ -10,7 +10,8 @@ module RubyJmeter
|
|
10
10
|
params[:fill_in] ||= {}
|
11
11
|
params[:params] && params[:params].split('&').each do |param|
|
12
12
|
name,value = param.split('=')
|
13
|
-
params[:fill_in][name]
|
13
|
+
params[:fill_in][name] ||= []
|
14
|
+
params[:fill_in][name] << value
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
@@ -42,20 +43,23 @@ module RubyJmeter
|
|
42
43
|
|
43
44
|
def fill_in(params)
|
44
45
|
params[:update_at_xpath] ||= []
|
45
|
-
params[:update_at_xpath]
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
46
|
+
params[:update_at_xpath] = params[:fill_in].
|
47
|
+
each_with_object(params[:update_at_xpath]) do |(name, values), memo|
|
48
|
+
Array(values).each do |value|
|
49
|
+
memo << {
|
50
|
+
:xpath => '//collectionProp',
|
51
|
+
:value => Nokogiri::XML(<<-EOF.strip_heredoc).children
|
52
|
+
<elementProp name="#{name}" elementType="HTTPArgument">
|
53
|
+
<boolProp name="HTTPArgument.always_encode">#{params[:always_encode] ? 'true' : false}</boolProp>
|
54
|
+
<stringProp name="Argument.value">#{value}</stringProp>
|
55
|
+
<stringProp name="Argument.metadata">=</stringProp>
|
56
|
+
<boolProp name="HTTPArgument.use_equals">true</boolProp>
|
57
|
+
<stringProp name="Argument.name">#{name}</stringProp>
|
58
|
+
</elementProp>
|
59
|
+
EOF
|
60
|
+
}
|
61
|
+
end
|
62
|
+
end
|
59
63
|
params.delete(:fill_in)
|
60
64
|
end
|
61
65
|
|
data/lib/ruby-jmeter/version.rb
CHANGED
data/spec/dsl_spec.rb
CHANGED
@@ -270,7 +270,7 @@ describe 'DSL' do
|
|
270
270
|
test do
|
271
271
|
threads do
|
272
272
|
transaction name: "TC_01", parent: true, include_timers: true do
|
273
|
-
visit url: "/home?location=melbourne", always_encode: true
|
273
|
+
visit url: "/home?location=melbourne&location=sydney", always_encode: true
|
274
274
|
end
|
275
275
|
end
|
276
276
|
end.to_doc
|
@@ -282,8 +282,32 @@ describe 'DSL' do
|
|
282
282
|
fragment.search(".//stringProp[@name='HTTPSampler.path']").text.should == '/home'
|
283
283
|
end
|
284
284
|
|
285
|
-
|
286
|
-
|
285
|
+
context "first argument" do
|
286
|
+
it 'should match on always_encode' do
|
287
|
+
fragment.search(".//boolProp[@name='HTTPArgument.always_encode']")[0].text.should == 'true'
|
288
|
+
end
|
289
|
+
|
290
|
+
it 'should match on query param name: location' do
|
291
|
+
fragment.search(".//stringProp[@name='Argument.name']")[0].text.should == 'location'
|
292
|
+
end
|
293
|
+
|
294
|
+
it 'should match on query param value: melbourne' do
|
295
|
+
fragment.search(".//stringProp[@name='Argument.value']")[0].text.should == 'melbourne'
|
296
|
+
end
|
297
|
+
end
|
298
|
+
|
299
|
+
context "second argument" do
|
300
|
+
it 'should match on always_encode' do
|
301
|
+
fragment.search(".//boolProp[@name='HTTPArgument.always_encode']")[1].text.should == 'true'
|
302
|
+
end
|
303
|
+
|
304
|
+
it 'should match on query param name: location' do
|
305
|
+
fragment.search(".//stringProp[@name='Argument.name']")[1].text.should == 'location'
|
306
|
+
end
|
307
|
+
|
308
|
+
it 'should match on query param value: sydney' do
|
309
|
+
fragment.search(".//stringProp[@name='Argument.value']")[1].text.should == 'sydney'
|
310
|
+
end
|
287
311
|
end
|
288
312
|
end
|
289
313
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby-jmeter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.13.
|
4
|
+
version: 2.13.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Koopmans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-05-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -88,6 +88,7 @@ files:
|
|
88
88
|
- examples/basic_post.rb
|
89
89
|
- examples/basic_preprocessor_user_parameters.rb
|
90
90
|
- examples/basic_query_params.rb
|
91
|
+
- examples/basic_response_assertion.rb
|
91
92
|
- examples/basic_run.rb
|
92
93
|
- examples/basic_simple_data_writer.rb
|
93
94
|
- examples/basic_stepping_thread_group.rb
|