gridinit-jmeter 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
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