gridinit-jmeter 0.1.1 → 0.1.2
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.
- data/.gitignore +1 -0
- data/examples/basic_gc_results.rb +20 -0
- data/examples/jbhifi_now_search.rb +98 -0
- data/lib/gridinit-jmeter/{response_assertion.rb → assertions/response_assertion.rb} +3 -6
- data/lib/gridinit-jmeter/{auth_manager.rb → config/auth_manager.rb} +3 -5
- data/lib/gridinit-jmeter/{cache_manager.rb → config/cache_manager.rb} +3 -5
- data/lib/gridinit-jmeter/{cookie_manager.rb → config/cookie_manager.rb} +3 -5
- data/lib/gridinit-jmeter/config/counter_config.rb +24 -0
- data/lib/gridinit-jmeter/{header_manager.rb → config/header_manager.rb} +2 -1
- data/lib/gridinit-jmeter/{request_defaults.rb → config/request_defaults.rb} +3 -5
- data/lib/gridinit-jmeter/{user_defined_variable.rb → config/user_defined_variable.rb} +2 -4
- data/lib/gridinit-jmeter/{if_controller.rb → controllers/if_controller.rb} +3 -5
- data/lib/gridinit-jmeter/controllers/loop_controller.rb +19 -0
- data/lib/gridinit-jmeter/{once_only.rb → controllers/once_only.rb} +3 -5
- data/lib/gridinit-jmeter/{transaction.rb → controllers/transaction.rb} +3 -5
- data/lib/gridinit-jmeter/dsl.rb +66 -1
- data/lib/gridinit-jmeter/helpers/dsl_helper.rb +12 -0
- data/lib/gridinit-jmeter/{fallback_content_proxy.rb → helpers/fallback_content_proxy.rb} +0 -0
- data/lib/gridinit-jmeter/{logger-colors.rb → helpers/logger-colors.rb} +0 -0
- data/lib/gridinit-jmeter/{strip-heredoc.rb → helpers/strip-heredoc.rb} +0 -0
- data/lib/gridinit-jmeter/listeners/gc_latencies_over_time.rb +50 -0
- data/lib/gridinit-jmeter/listeners/gc_response_codes_per_second.rb +50 -0
- data/lib/gridinit-jmeter/listeners/gc_response_times_distribution.rb +50 -0
- data/lib/gridinit-jmeter/listeners/gc_response_times_over_time.rb +50 -0
- data/lib/gridinit-jmeter/listeners/gc_response_times_percentiles.rb +50 -0
- data/lib/gridinit-jmeter/listeners/gc_transactions_per_second.rb +51 -0
- data/lib/gridinit-jmeter/{graph_visualizer.rb → listeners/graph_visualizer.rb} +2 -7
- data/lib/gridinit-jmeter/{response_time_graph_visualizer.rb → listeners/response_time_graph_visualizer.rb} +2 -7
- data/lib/gridinit-jmeter/{stat_visualizer.rb → listeners/stat_visualizer.rb} +2 -7
- data/lib/gridinit-jmeter/{summary_report.rb → listeners/summary_report.rb} +2 -7
- data/lib/gridinit-jmeter/{table_visualizer.rb → listeners/table_visualizer.rb} +2 -7
- data/lib/gridinit-jmeter/{view_results_full_visualizer.rb → listeners/view_results_full_visualizer.rb} +2 -7
- data/lib/gridinit-jmeter/{regex_extractor.rb → post_processors/regex_extractor.rb} +3 -5
- data/lib/gridinit-jmeter/{xpath_extractor.rb → post_processors/xpath_extractor.rb} +2 -4
- data/lib/gridinit-jmeter/pre_processors/bean_shell_pre_processor.rb +21 -0
- data/lib/gridinit-jmeter/{http_sampler.rb → samplers/http_sampler.rb} +2 -4
- data/lib/gridinit-jmeter/{ldap_ext_sampler.rb → samplers/ldap_ext_sampler.rb} +2 -6
- data/lib/gridinit-jmeter/{test_plan.rb → test_plan/test_plan.rb} +2 -1
- data/lib/gridinit-jmeter/{thread_group.rb → threads/thread_group.rb} +3 -5
- data/lib/gridinit-jmeter/{gaussian_random_timer.rb → timers/gaussian_random_timer.rb} +2 -1
- data/lib/gridinit-jmeter/version.rb +1 -1
- data/lib/gridinit-jmeter.rb +98 -26
- metadata +40 -28
data/.gitignore
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'gridinit-jmeter'
|
3
|
+
|
4
|
+
test do
|
5
|
+
threads 1, { loops: 10 } do
|
6
|
+
visit 'Google Search', 'http://google.com'
|
7
|
+
end
|
8
|
+
|
9
|
+
#
|
10
|
+
# You need jmeter-plugins at Google code
|
11
|
+
# http://code.google.com/p/jmeter-plugins
|
12
|
+
#
|
13
|
+
gc_latencies_over_time 'Response Latencies Over Time'
|
14
|
+
gc_response_codes_per_second 'Response Codes per Second'
|
15
|
+
gc_response_times_distribution 'Response Times Distribution'
|
16
|
+
gc_response_times_over_time 'Response Times Over Time'
|
17
|
+
gc_response_times_percentiles 'Response Times Percentiles'
|
18
|
+
gc_transactions_per_second 'Transactions per Second'
|
19
|
+
|
20
|
+
end.jmx
|
@@ -0,0 +1,98 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'gridinit-jmeter'
|
3
|
+
require 'open-uri'
|
4
|
+
|
5
|
+
test do
|
6
|
+
|
7
|
+
defaults(
|
8
|
+
domain: 'now.jbhifi.com.au',
|
9
|
+
protocol: 'https',
|
10
|
+
image_parser: true,
|
11
|
+
concurrentDwn: true,
|
12
|
+
embedded_url_re: '.+?now.((?!\$\{).)*$',
|
13
|
+
concurrentPool: 4
|
14
|
+
)
|
15
|
+
|
16
|
+
header(
|
17
|
+
'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.27 (KHTML, like Gecko) Chrome/26.0.1386.0 Safari/537.27',
|
18
|
+
'Accept' => '*/*'
|
19
|
+
)
|
20
|
+
|
21
|
+
cache clear_each_iteration: true
|
22
|
+
|
23
|
+
cookies
|
24
|
+
|
25
|
+
threads 3, {loops: 3} do
|
26
|
+
|
27
|
+
random_timer 1000, 1500
|
28
|
+
|
29
|
+
transaction 'jbhifi_home' do
|
30
|
+
visit 'home', '/'
|
31
|
+
visit 'choose', '/music/Home/Choose/?_=${__time(,)}', {
|
32
|
+
follow_redirects: false,
|
33
|
+
image_parser: true,
|
34
|
+
embedded_url_re: 'none',
|
35
|
+
} do
|
36
|
+
header('X-Requested-With' => 'XMLHttpRequest')
|
37
|
+
assert 'contains', 'WELCOME TO JB HI-FI NOW'
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
transaction 'jbhifi_search_xhr' do
|
43
|
+
Loop 4 do
|
44
|
+
counter
|
45
|
+
bsh_pre(<<-EOS.strip_heredoc)
|
46
|
+
String[] varArray = {"de", "dead", "deadma", "deadmau5"};
|
47
|
+
idx = Integer.parseInt(vars.get("counter"))-1;
|
48
|
+
vars.put("search_value", varArray[idx]);
|
49
|
+
EOS
|
50
|
+
get 'tgsearch', '/tgsearch/predictSearch.aspx?id=MD84-225&k=${search_value}' do
|
51
|
+
header('X-Requested-With' => 'XMLHttpRequest')
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
transaction'jbhifi_search' do
|
57
|
+
post 'search', '/music/Search/Search', {
|
58
|
+
fill_in: {
|
59
|
+
'searchType' => 'KW',
|
60
|
+
'keyword' => 'deadmau5',
|
61
|
+
'numRecords' => 25
|
62
|
+
}
|
63
|
+
} do
|
64
|
+
header('X-Requested-With' => 'XMLHttpRequest')
|
65
|
+
extract 'id', '"c":"(.+?)"', {
|
66
|
+
match_number: 0,
|
67
|
+
template: '$1$'
|
68
|
+
}
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
transaction'jbhifi_add_to_playlist' do
|
73
|
+
post 'playlist', '/music/Playlist/AddPreview/', {
|
74
|
+
fill_in: {
|
75
|
+
'id' => '${id}'
|
76
|
+
}
|
77
|
+
} do
|
78
|
+
header('X-Requested-With' => 'XMLHttpRequest')
|
79
|
+
extract 'mp3', '"mp3":"(.+?)"', {
|
80
|
+
match_number: 0,
|
81
|
+
template: '$1$'
|
82
|
+
}
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
exists 'mp3' do
|
87
|
+
transaction'jbhifi_preview_track' do
|
88
|
+
get 'preview', '${mp3}'
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
view_results
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end.grid ENV['API_TOKEN']
|
97
|
+
# end.jmx
|
98
|
+
# end.run(path: '/usr/share/jmeter/bin/')
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class ResponseAssertion
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(match, pattern, params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<ResponseAssertion guiclass="AssertionGui" testclass="ResponseAssertion" testname="Response Assertion" enabled="true">
|
@@ -21,10 +22,7 @@ module Gridinit
|
|
21
22
|
EOF
|
22
23
|
params.delete [:scope]
|
23
24
|
end
|
24
|
-
params
|
25
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
26
|
-
node.first.content = value unless node.empty?
|
27
|
-
end
|
25
|
+
update params
|
28
26
|
end
|
29
27
|
|
30
28
|
private
|
@@ -51,8 +49,7 @@ module Gridinit
|
|
51
49
|
2
|
52
50
|
end
|
53
51
|
end
|
54
|
-
|
55
52
|
end
|
56
53
|
|
57
54
|
end
|
58
|
-
end
|
55
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class AuthManager
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<AuthManager guiclass="AuthPanel" testclass="AuthManager" testname="HTTP Authorization Manager" enabled="true">
|
@@ -17,12 +18,9 @@ module Gridinit
|
|
17
18
|
</collectionProp>
|
18
19
|
</AuthManager>
|
19
20
|
EOF
|
20
|
-
params
|
21
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
22
|
-
node.first.content = value unless node.empty?
|
23
|
-
end
|
21
|
+
update params
|
24
22
|
end
|
25
23
|
end
|
26
24
|
|
27
25
|
end
|
28
|
-
end
|
26
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class CacheManager
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<CacheManager guiclass="CacheManagerGui" testclass="CacheManager" testname="HTTP Cache Manager" enabled="true">
|
@@ -11,12 +12,9 @@ module Gridinit
|
|
11
12
|
</CacheManager>
|
12
13
|
EOF
|
13
14
|
params.delete :clear_each_iteration
|
14
|
-
params
|
15
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
16
|
-
node.first.content = value unless node.empty?
|
17
|
-
end
|
15
|
+
update params
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
19
|
end
|
22
|
-
end
|
20
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class CookieManager
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
|
@@ -12,12 +13,9 @@ module Gridinit
|
|
12
13
|
</CookieManager>
|
13
14
|
EOF
|
14
15
|
params.delete :clear_each_iteration
|
15
|
-
params
|
16
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
17
|
-
node.first.content = value unless node.empty?
|
18
|
-
end
|
16
|
+
update params
|
19
17
|
end
|
20
18
|
end
|
21
19
|
|
22
20
|
end
|
23
|
-
end
|
21
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
module Gridinit
|
2
|
+
module Jmeter
|
3
|
+
|
4
|
+
class CounterConfig
|
5
|
+
attr_accessor :doc
|
6
|
+
include Helper
|
7
|
+
def initialize(name, params={})
|
8
|
+
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
9
|
+
<CounterConfig guiclass="CounterConfigGui" testclass="CounterConfig" testname="#{name}" enabled="true">
|
10
|
+
<stringProp name="CounterConfig.start">1</stringProp>
|
11
|
+
<stringProp name="CounterConfig.end"></stringProp>
|
12
|
+
<stringProp name="CounterConfig.incr">1</stringProp>
|
13
|
+
<stringProp name="CounterConfig.name">#{name}</stringProp>
|
14
|
+
<stringProp name="CounterConfig.format"></stringProp>
|
15
|
+
<boolProp name="CounterConfig.per_user">true</boolProp>
|
16
|
+
<boolProp name="CounterConfig.reset_on_tg_iteration">true</boolProp>
|
17
|
+
</CounterConfig>
|
18
|
+
EOF
|
19
|
+
update params
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class HeaderManager
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
|
@@ -22,4 +23,4 @@ module Gridinit
|
|
22
23
|
end
|
23
24
|
|
24
25
|
end
|
25
|
-
end
|
26
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class RequestDefaults
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
|
@@ -22,12 +23,9 @@ module Gridinit
|
|
22
23
|
<stringProp name="HTTPSampler.concurrentPool">4</stringProp>
|
23
24
|
</ConfigTestElement>
|
24
25
|
EOF
|
25
|
-
params
|
26
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
27
|
-
node.first.content = value unless node.empty?
|
28
|
-
end
|
26
|
+
update params
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
30
|
end
|
33
|
-
end
|
31
|
+
end
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class UserDefinedVariable
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<Arguments guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
|
@@ -16,10 +17,7 @@ module Gridinit
|
|
16
17
|
<stringProp name="TestPlan.comments"></stringProp>
|
17
18
|
</Arguments>
|
18
19
|
EOF
|
19
|
-
params
|
20
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
21
|
-
node.first.content = value unless node.empty?
|
22
|
-
end
|
20
|
+
update params
|
23
21
|
end
|
24
22
|
end
|
25
23
|
|
@@ -3,6 +3,7 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class IfController
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(name, params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<IfController guiclass="IfControllerPanel" testclass="IfController" testname="#{name}" enabled="true">
|
@@ -10,12 +11,9 @@ module Gridinit
|
|
10
11
|
<boolProp name="IfController.evaluateAll">false</boolProp>
|
11
12
|
</IfController>
|
12
13
|
EOF
|
13
|
-
params
|
14
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
15
|
-
node.first.content = value unless node.empty?
|
16
|
-
end
|
14
|
+
update params
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
20
18
|
end
|
21
|
-
end
|
19
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Gridinit
|
2
|
+
module Jmeter
|
3
|
+
|
4
|
+
class LoopController
|
5
|
+
attr_accessor :doc
|
6
|
+
include Helper
|
7
|
+
def initialize(loops, params={})
|
8
|
+
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
9
|
+
<LoopController guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
|
10
|
+
<boolProp name="LoopController.continue_forever">true</boolProp>
|
11
|
+
<stringProp name="LoopController.loops">#{loops}</stringProp>
|
12
|
+
</LoopController>
|
13
|
+
EOF
|
14
|
+
update params
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
end
|
@@ -3,17 +3,15 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class OnceOnly
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(name, params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<OnceOnlyController guiclass="OnceOnlyControllerGui" testclass="OnceOnlyController" testname="#{name}" enabled="true">
|
9
10
|
</OnceOnlyController>
|
10
11
|
EOF
|
11
|
-
params
|
12
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
13
|
-
node.first.content = value unless node.empty?
|
14
|
-
end
|
12
|
+
update params
|
15
13
|
end
|
16
14
|
end
|
17
15
|
|
18
16
|
end
|
19
|
-
end
|
17
|
+
end
|
@@ -3,18 +3,16 @@ module Gridinit
|
|
3
3
|
|
4
4
|
class Transaction
|
5
5
|
attr_accessor :doc
|
6
|
+
include Helper
|
6
7
|
def initialize(name, params={})
|
7
8
|
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
8
9
|
<TransactionController guiclass="TransactionControllerGui" testclass="TransactionController" testname="#{name}" enabled="true">
|
9
10
|
<boolProp name="TransactionController.parent">true</boolProp>
|
10
11
|
</TransactionController>
|
11
12
|
EOF
|
12
|
-
params
|
13
|
-
node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
|
14
|
-
node.first.content = value unless node.empty?
|
15
|
-
end
|
13
|
+
update params
|
16
14
|
end
|
17
15
|
end
|
18
16
|
|
19
17
|
end
|
20
|
-
end
|
18
|
+
end
|
data/lib/gridinit-jmeter/dsl.rb
CHANGED
@@ -97,6 +97,30 @@ module Gridinit
|
|
97
97
|
self.instance_exec(&block) if block
|
98
98
|
end
|
99
99
|
|
100
|
+
def If(name="If Controller", params={}, &block)
|
101
|
+
node = Gridinit::Jmeter::IfController.new(name, params)
|
102
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
103
|
+
self.instance_exec(&block) if block
|
104
|
+
end
|
105
|
+
|
106
|
+
def Loop(loops=1, params={}, &block)
|
107
|
+
node = Gridinit::Jmeter::LoopController.new(loops, params)
|
108
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
109
|
+
self.instance_exec(&block) if block
|
110
|
+
end
|
111
|
+
|
112
|
+
def counter(name="counter", params={}, &block)
|
113
|
+
node = Gridinit::Jmeter::CounterConfig.new(name, params)
|
114
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
115
|
+
self.instance_exec(&block) if block
|
116
|
+
end
|
117
|
+
|
118
|
+
def bsh_pre(script, params={}, &block)
|
119
|
+
node = Gridinit::Jmeter::BeanShellPreProcessor.new(script, params)
|
120
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
121
|
+
self.instance_exec(&block) if block
|
122
|
+
end
|
123
|
+
|
100
124
|
def visit(name="HTTP Request", url="", params={}, &block)
|
101
125
|
params[:method] = 'GET'
|
102
126
|
node = Gridinit::Jmeter::HttpSampler.new(name, url, params)
|
@@ -217,7 +241,6 @@ module Gridinit
|
|
217
241
|
|
218
242
|
alias_method :response_graph, :response_time_graph_visualizer
|
219
243
|
|
220
|
-
|
221
244
|
def summary_report(name="Summary Report", params={}, &block)
|
222
245
|
node = Gridinit::Jmeter::SummaryReport.new(name, params)
|
223
246
|
last_node_from(caller) << node.doc.children << hash_tree
|
@@ -229,6 +252,42 @@ module Gridinit
|
|
229
252
|
last_node_from(caller) << node.doc.children << hash_tree
|
230
253
|
self.instance_exec(&block) if block
|
231
254
|
end
|
255
|
+
|
256
|
+
def gc_response_codes_per_second(name="jp@gc - Response Codes per Second", params={}, &block)
|
257
|
+
node = Gridinit::Jmeter::GCResponseCodesPerSecond.new(name, params)
|
258
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
259
|
+
self.instance_exec(&block) if block
|
260
|
+
end
|
261
|
+
|
262
|
+
def gc_response_times_distribution(name="jp@gc - Response Times Distribution", params={}, &block)
|
263
|
+
node = Gridinit::Jmeter::GCResponseTimesDistribution.new(name, params)
|
264
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
265
|
+
self.instance_exec(&block) if block
|
266
|
+
end
|
267
|
+
|
268
|
+
def gc_response_times_over_time(name="jp@gc - Response Times Over Time", params={}, &block)
|
269
|
+
node = Gridinit::Jmeter::GCResponseTimesOverTime.new(name, params)
|
270
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
271
|
+
self.instance_exec(&block) if block
|
272
|
+
end
|
273
|
+
|
274
|
+
def gc_response_times_percentiles(name="jp@gc - Response Times Percentiles", params={}, &block)
|
275
|
+
node = Gridinit::Jmeter::GCResponseTimesPercentiles.new(name, params)
|
276
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
277
|
+
self.instance_exec(&block) if block
|
278
|
+
end
|
279
|
+
|
280
|
+
def gc_transactions_per_second(name="jp@gc - Transactions per Second", params={}, &block)
|
281
|
+
node = Gridinit::Jmeter::GCTransactionsPerSecond.new(name, params)
|
282
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
283
|
+
self.instance_exec(&block) if block
|
284
|
+
end
|
285
|
+
|
286
|
+
def gc_latencies_over_time(name="jp@gc - Response Latencies Over Time", params={}, &block)
|
287
|
+
node = Gridinit::Jmeter::GCLatenciesOverTime.new(name, params)
|
288
|
+
last_node_from(caller) << node.doc.children << hash_tree
|
289
|
+
self.instance_exec(&block) if block
|
290
|
+
end
|
232
291
|
|
233
292
|
private
|
234
293
|
|
@@ -252,6 +311,12 @@ module Gridinit
|
|
252
311
|
'//OnceOnlyController/following-sibling::hashTree'
|
253
312
|
when 'exists'
|
254
313
|
'//IfController/following-sibling::hashTree'
|
314
|
+
when 'Loop'
|
315
|
+
'//LoopController/following-sibling::hashTree'
|
316
|
+
when 'counter'
|
317
|
+
'//CounterConfig/following-sibling::hashTree'
|
318
|
+
when 'bsh_pre'
|
319
|
+
'//BeanShellPreProcessor/following-sibling::hashTree'
|
255
320
|
when 'visit'
|
256
321
|
'//HTTPSamplerProxy/following-sibling::hashTree'
|
257
322
|
when 'submit'
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Gridinit
|
2
|
+
module Jmeter
|
3
|
+
|
4
|
+
class GCLatenciesOverTime
|
5
|
+
attr_accessor :doc
|
6
|
+
include Helper
|
7
|
+
def initialize(name, params={})
|
8
|
+
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
9
|
+
<kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.LatenciesOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="#{name}" enabled="true">
|
10
|
+
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
11
|
+
<objProp>
|
12
|
+
<name>saveConfig</name>
|
13
|
+
<value class="SampleSaveConfiguration">
|
14
|
+
<time>true</time>
|
15
|
+
<latency>true</latency>
|
16
|
+
<timestamp>true</timestamp>
|
17
|
+
<success>true</success>
|
18
|
+
<label>true</label>
|
19
|
+
<code>true</code>
|
20
|
+
<message>true</message>
|
21
|
+
<threadName>true</threadName>
|
22
|
+
<dataType>true</dataType>
|
23
|
+
<encoding>false</encoding>
|
24
|
+
<assertions>true</assertions>
|
25
|
+
<subresults>true</subresults>
|
26
|
+
<responseData>false</responseData>
|
27
|
+
<samplerData>false</samplerData>
|
28
|
+
<xml>true</xml>
|
29
|
+
<fieldNames>false</fieldNames>
|
30
|
+
<responseHeaders>false</responseHeaders>
|
31
|
+
<requestHeaders>false</requestHeaders>
|
32
|
+
<responseDataOnError>false</responseDataOnError>
|
33
|
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
|
34
|
+
<assertionsResultsToSave>0</assertionsResultsToSave>
|
35
|
+
<bytes>true</bytes>
|
36
|
+
</value>
|
37
|
+
</objProp>
|
38
|
+
<stringProp name="filename"></stringProp>
|
39
|
+
<longProp name="interval_grouping">500</longProp>
|
40
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
41
|
+
<stringProp name="include_sample_labels"></stringProp>
|
42
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
43
|
+
</kg.apc.jmeter.vizualizers.CorrectedResultCollector>
|
44
|
+
EOF
|
45
|
+
update params
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Gridinit
|
2
|
+
module Jmeter
|
3
|
+
|
4
|
+
class GCResponseCodesPerSecond
|
5
|
+
attr_accessor :doc
|
6
|
+
include Helper
|
7
|
+
def initialize(name, params={})
|
8
|
+
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
9
|
+
<kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseCodesPerSecondGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="#{name}" enabled="true">
|
10
|
+
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
11
|
+
<objProp>
|
12
|
+
<name>saveConfig</name>
|
13
|
+
<value class="SampleSaveConfiguration">
|
14
|
+
<time>true</time>
|
15
|
+
<latency>true</latency>
|
16
|
+
<timestamp>true</timestamp>
|
17
|
+
<success>true</success>
|
18
|
+
<label>true</label>
|
19
|
+
<code>true</code>
|
20
|
+
<message>true</message>
|
21
|
+
<threadName>true</threadName>
|
22
|
+
<dataType>true</dataType>
|
23
|
+
<encoding>false</encoding>
|
24
|
+
<assertions>true</assertions>
|
25
|
+
<subresults>true</subresults>
|
26
|
+
<responseData>false</responseData>
|
27
|
+
<samplerData>false</samplerData>
|
28
|
+
<xml>true</xml>
|
29
|
+
<fieldNames>false</fieldNames>
|
30
|
+
<responseHeaders>false</responseHeaders>
|
31
|
+
<requestHeaders>false</requestHeaders>
|
32
|
+
<responseDataOnError>false</responseDataOnError>
|
33
|
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
|
34
|
+
<assertionsResultsToSave>0</assertionsResultsToSave>
|
35
|
+
<bytes>true</bytes>
|
36
|
+
</value>
|
37
|
+
</objProp>
|
38
|
+
<stringProp name="filename"></stringProp>
|
39
|
+
<longProp name="interval_grouping">1000</longProp>
|
40
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
41
|
+
<stringProp name="include_sample_labels"></stringProp>
|
42
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
43
|
+
</kg.apc.jmeter.vizualizers.CorrectedResultCollector>
|
44
|
+
EOF
|
45
|
+
update params
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Gridinit
|
2
|
+
module Jmeter
|
3
|
+
|
4
|
+
class GCResponseTimesDistribution
|
5
|
+
attr_accessor :doc
|
6
|
+
include Helper
|
7
|
+
def initialize(name, params={})
|
8
|
+
@doc = Nokogiri::XML(<<-EOF.strip_heredoc)
|
9
|
+
<kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ResponseTimesDistributionGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" testname="#{name}" enabled="true">
|
10
|
+
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
11
|
+
<objProp>
|
12
|
+
<name>saveConfig</name>
|
13
|
+
<value class="SampleSaveConfiguration">
|
14
|
+
<time>true</time>
|
15
|
+
<latency>true</latency>
|
16
|
+
<timestamp>true</timestamp>
|
17
|
+
<success>true</success>
|
18
|
+
<label>true</label>
|
19
|
+
<code>true</code>
|
20
|
+
<message>true</message>
|
21
|
+
<threadName>true</threadName>
|
22
|
+
<dataType>true</dataType>
|
23
|
+
<encoding>false</encoding>
|
24
|
+
<assertions>true</assertions>
|
25
|
+
<subresults>true</subresults>
|
26
|
+
<responseData>false</responseData>
|
27
|
+
<samplerData>false</samplerData>
|
28
|
+
<xml>true</xml>
|
29
|
+
<fieldNames>false</fieldNames>
|
30
|
+
<responseHeaders>false</responseHeaders>
|
31
|
+
<requestHeaders>false</requestHeaders>
|
32
|
+
<responseDataOnError>false</responseDataOnError>
|
33
|
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
|
34
|
+
<assertionsResultsToSave>0</assertionsResultsToSave>
|
35
|
+
<bytes>true</bytes>
|
36
|
+
</value>
|
37
|
+
</objProp>
|
38
|
+
<stringProp name="filename"></stringProp>
|
39
|
+
<longProp name="interval_grouping">100</longProp>
|
40
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
41
|
+
<stringProp name="include_sample_labels"></stringProp>
|
42
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
43
|
+
</kg.apc.jmeter.vizualizers.CorrectedResultCollector>
|
44
|
+
EOF
|
45
|
+
update params
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|