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.
Files changed (43) hide show
  1. data/.gitignore +1 -0
  2. data/examples/basic_gc_results.rb +20 -0
  3. data/examples/jbhifi_now_search.rb +98 -0
  4. data/lib/gridinit-jmeter/{response_assertion.rb → assertions/response_assertion.rb} +3 -6
  5. data/lib/gridinit-jmeter/{auth_manager.rb → config/auth_manager.rb} +3 -5
  6. data/lib/gridinit-jmeter/{cache_manager.rb → config/cache_manager.rb} +3 -5
  7. data/lib/gridinit-jmeter/{cookie_manager.rb → config/cookie_manager.rb} +3 -5
  8. data/lib/gridinit-jmeter/config/counter_config.rb +24 -0
  9. data/lib/gridinit-jmeter/{header_manager.rb → config/header_manager.rb} +2 -1
  10. data/lib/gridinit-jmeter/{request_defaults.rb → config/request_defaults.rb} +3 -5
  11. data/lib/gridinit-jmeter/{user_defined_variable.rb → config/user_defined_variable.rb} +2 -4
  12. data/lib/gridinit-jmeter/{if_controller.rb → controllers/if_controller.rb} +3 -5
  13. data/lib/gridinit-jmeter/controllers/loop_controller.rb +19 -0
  14. data/lib/gridinit-jmeter/{once_only.rb → controllers/once_only.rb} +3 -5
  15. data/lib/gridinit-jmeter/{transaction.rb → controllers/transaction.rb} +3 -5
  16. data/lib/gridinit-jmeter/dsl.rb +66 -1
  17. data/lib/gridinit-jmeter/helpers/dsl_helper.rb +12 -0
  18. data/lib/gridinit-jmeter/{fallback_content_proxy.rb → helpers/fallback_content_proxy.rb} +0 -0
  19. data/lib/gridinit-jmeter/{logger-colors.rb → helpers/logger-colors.rb} +0 -0
  20. data/lib/gridinit-jmeter/{strip-heredoc.rb → helpers/strip-heredoc.rb} +0 -0
  21. data/lib/gridinit-jmeter/listeners/gc_latencies_over_time.rb +50 -0
  22. data/lib/gridinit-jmeter/listeners/gc_response_codes_per_second.rb +50 -0
  23. data/lib/gridinit-jmeter/listeners/gc_response_times_distribution.rb +50 -0
  24. data/lib/gridinit-jmeter/listeners/gc_response_times_over_time.rb +50 -0
  25. data/lib/gridinit-jmeter/listeners/gc_response_times_percentiles.rb +50 -0
  26. data/lib/gridinit-jmeter/listeners/gc_transactions_per_second.rb +51 -0
  27. data/lib/gridinit-jmeter/{graph_visualizer.rb → listeners/graph_visualizer.rb} +2 -7
  28. data/lib/gridinit-jmeter/{response_time_graph_visualizer.rb → listeners/response_time_graph_visualizer.rb} +2 -7
  29. data/lib/gridinit-jmeter/{stat_visualizer.rb → listeners/stat_visualizer.rb} +2 -7
  30. data/lib/gridinit-jmeter/{summary_report.rb → listeners/summary_report.rb} +2 -7
  31. data/lib/gridinit-jmeter/{table_visualizer.rb → listeners/table_visualizer.rb} +2 -7
  32. data/lib/gridinit-jmeter/{view_results_full_visualizer.rb → listeners/view_results_full_visualizer.rb} +2 -7
  33. data/lib/gridinit-jmeter/{regex_extractor.rb → post_processors/regex_extractor.rb} +3 -5
  34. data/lib/gridinit-jmeter/{xpath_extractor.rb → post_processors/xpath_extractor.rb} +2 -4
  35. data/lib/gridinit-jmeter/pre_processors/bean_shell_pre_processor.rb +21 -0
  36. data/lib/gridinit-jmeter/{http_sampler.rb → samplers/http_sampler.rb} +2 -4
  37. data/lib/gridinit-jmeter/{ldap_ext_sampler.rb → samplers/ldap_ext_sampler.rb} +2 -6
  38. data/lib/gridinit-jmeter/{test_plan.rb → test_plan/test_plan.rb} +2 -1
  39. data/lib/gridinit-jmeter/{thread_group.rb → threads/thread_group.rb} +3 -5
  40. data/lib/gridinit-jmeter/{gaussian_random_timer.rb → timers/gaussian_random_timer.rb} +2 -1
  41. data/lib/gridinit-jmeter/version.rb +1 -1
  42. data/lib/gridinit-jmeter.rb +98 -26
  43. metadata +40 -28
data/.gitignore CHANGED
@@ -18,3 +18,4 @@ tmp
18
18
  *.log
19
19
  *.jmx
20
20
  *.jtl
21
+ *.bak
@@ -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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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.each do |name, value|
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
@@ -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'
@@ -0,0 +1,12 @@
1
+ module Gridinit
2
+ module Jmeter
3
+ module Helper
4
+ def update(params)
5
+ params.each do |name, value|
6
+ node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
7
+ node.first.content = value unless node.empty?
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -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