gridinit-jmeter 0.0.8 → 0.0.9

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.
@@ -0,0 +1,17 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'gridinit-jmeter'
3
+
4
+ test do
5
+ header 'User-Agent' => 'Firefox'
6
+ threads 1 do
7
+ transaction 'Google Search' do
8
+ visit 'Home Page', 'http://google.com/'
9
+ end
10
+
11
+ transaction 'Google Search via XHR' do
12
+ visit 'Home Page', 'http://google.com/' do
13
+ header 'X-Requested-With' => 'XMLHttpRequest'
14
+ end
15
+ end
16
+ end
17
+ end.jmx
@@ -0,0 +1,16 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ require 'gridinit-jmeter'
3
+
4
+ test do
5
+
6
+ threads 1 do
7
+
8
+ transaction 'Post with a Raw Body', {parent: true} do
9
+ post 'Home Page', 'http://google.com', {
10
+ raw_body: '{"name":"Big Poncho","price":10,"vendor_attendance_id":24,"product_id":1}'
11
+ }
12
+ end
13
+
14
+ end
15
+
16
+ end.jmx
@@ -13,6 +13,7 @@ require 'gridinit-jmeter/request_defaults'
13
13
  require 'gridinit-jmeter/auth_manager'
14
14
  require 'gridinit-jmeter/cookie_manager'
15
15
  require 'gridinit-jmeter/cache_manager'
16
+ require 'gridinit-jmeter/header_manager'
16
17
  require 'gridinit-jmeter/thread_group'
17
18
  require 'gridinit-jmeter/transaction'
18
19
  require 'gridinit-jmeter/once_only'
@@ -23,6 +24,7 @@ require 'gridinit-jmeter/xpath_extractor'
23
24
  require 'gridinit-jmeter/user_defined_variable'
24
25
  require 'gridinit-jmeter/gaussian_random_timer'
25
26
  require 'gridinit-jmeter/response_assertion'
27
+ require 'gridinit-jmeter/view_results_full_visualizer'
26
28
  require 'gridinit-jmeter/table_visualizer'
27
29
  require 'gridinit-jmeter/graph_visualizer'
28
30
  require 'gridinit-jmeter/summary_report'
@@ -60,6 +60,12 @@ module Gridinit
60
60
  self.instance_exec(&block) if block
61
61
  end
62
62
 
63
+ def header(params={}, &block)
64
+ node = Gridinit::Jmeter::HeaderManager.new(params)
65
+ last_node_from(caller) << node.doc.children << hash_tree
66
+ self.instance_exec(&block) if block
67
+ end
68
+
63
69
  def auth(params={}, &block)
64
70
  node = Gridinit::Jmeter::AuthManager.new(params)
65
71
  last_node_from(caller) << node.doc.children << hash_tree
@@ -175,19 +181,27 @@ module Gridinit
175
181
  end
176
182
  end
177
183
 
178
- def table_visualizer(name="", params={}, &block)
184
+ def view_results_full_visualizer(name="View Results Tree", params={}, &block)
185
+ node = Gridinit::Jmeter::ViewResultsFullVisualizer.new(name, params)
186
+ last_node_from(caller) << node.doc.children << hash_tree
187
+ self.instance_exec(&block) if block
188
+ end
189
+
190
+ alias_method :view_results, :view_results_full_visualizer
191
+
192
+ def table_visualizer(name="View Results in Table", params={}, &block)
179
193
  node = Gridinit::Jmeter::TableVisualizer.new(name, params)
180
194
  last_node_from(caller) << node.doc.children << hash_tree
181
195
  self.instance_exec(&block) if block
182
196
  end
183
197
 
184
- def graph_visualizer(name="", params={}, &block)
198
+ def graph_visualizer(name="Graph Results", params={}, &block)
185
199
  node = Gridinit::Jmeter::GraphVisualizer.new(name, params)
186
200
  last_node_from(caller) << node.doc.children << hash_tree
187
201
  self.instance_exec(&block) if block
188
202
  end
189
203
 
190
- def summary_report(name="", params={}, &block)
204
+ def summary_report(name="Summary Report", params={}, &block)
191
205
  node = Gridinit::Jmeter::SummaryReport.new(name, params)
192
206
  last_node_from(caller) << node.doc.children << hash_tree
193
207
  self.instance_exec(&block) if block
@@ -219,6 +233,8 @@ module Gridinit
219
233
  '//HTTPSamplerProxy/following-sibling::hashTree'
220
234
  when 'submit'
221
235
  '//HTTPSamplerProxy/following-sibling::hashTree'
236
+ when 'post'
237
+ '//HTTPSamplerProxy/following-sibling::hashTree'
222
238
  when 'extract'
223
239
  '//RegexExtractor/following-sibling::hashTree'
224
240
  when 'random_timer'
@@ -3,7 +3,7 @@ module Gridinit
3
3
 
4
4
  class GraphVisualizer
5
5
  attr_accessor :doc
6
- def initialize(name="Graph Results", params={})
6
+ def initialize(name, params={})
7
7
  @doc = Nokogiri::XML(<<-EOF.strip_heredoc)
8
8
  <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="#{name}" enabled="true">
9
9
  <boolProp name="ResultCollector.error_logging">false</boolProp>
@@ -0,0 +1,25 @@
1
+ module Gridinit
2
+ module Jmeter
3
+
4
+ class HeaderManager
5
+ attr_accessor :doc
6
+ def initialize(params={})
7
+ @doc = Nokogiri::XML(<<-EOF.strip_heredoc)
8
+ <HeaderManager guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
9
+ <collectionProp name="HeaderManager.headers"/>
10
+ </HeaderManager>
11
+ EOF
12
+ params.each do |name, value|
13
+ @doc.at_xpath('//collectionProp') <<
14
+ Nokogiri::XML(<<-EOF.strip_heredoc).children
15
+ <elementProp name="" elementType="Header">
16
+ <stringProp name="Header.name">#{name}</stringProp>
17
+ <stringProp name="Header.value">#{value}</stringProp>
18
+ </elementProp>
19
+ EOF
20
+ end
21
+ end
22
+ end
23
+
24
+ end
25
+ end
@@ -22,13 +22,15 @@ module Gridinit
22
22
  <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
23
23
  <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
24
24
  <boolProp name="HTTPSampler.monitor">false</boolProp>
25
- <boolProp name="HTTPSampler.image_parser">true</boolProp>
26
- <boolProp name="HTTPSampler.concurrentDwn">true</boolProp>
25
+ <boolProp name="HTTPSampler.image_parser">false</boolProp>
27
26
  <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
27
+ <boolProp name="HTTPSampler.concurrentDwn">false</boolProp>
28
+ <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
28
29
  </HTTPSamplerProxy>
29
30
  EOF
30
31
  parse_url(url, params) unless url.empty?
31
- fill_in(params) if params[:fill_in]
32
+ fill_in(params) if params[:fill_in]
33
+ raw_body(params) if params[:raw_body]
32
34
  params[:query] && params[:query].split('&').each do |param|
33
35
  name,value = param.split('=')
34
36
  fill_in({ fill_in: { "#{name}" => value }, always_encode: params[:always_encode] })
@@ -40,7 +42,7 @@ module Gridinit
40
42
  end
41
43
 
42
44
  def parse_uri(url)
43
- URI.parse(url).scheme.nil? ? URI.parse("http://#{url}") : URI.parse(url)
45
+ URI.parse(URI::encode(url)).scheme.nil? ? URI.parse(URI::encode("http://#{url}")) : URI.parse(URI::encode(url))
44
46
  end
45
47
 
46
48
  def parse_url(url, params)
@@ -48,11 +50,11 @@ module Gridinit
48
50
  params[:path] = url # special case for named expressions
49
51
  else
50
52
  uri = parse_uri(url)
51
- params[:protocol] ||= uri.scheme
53
+ params[:port] ||= uri.port unless URI.parse(URI::encode(url)).scheme.nil?
54
+ params[:protocol] ||= uri.scheme unless URI.parse(URI::encode(url)).scheme.nil?
52
55
  params[:domain] ||= uri.host
53
- params[:port] ||= uri.port
54
- params[:path] ||= uri.path
55
- params[:query] ||= uri.query
56
+ params[:path] ||= uri.path && URI::decode(uri.path)
57
+ params[:query] ||= uri.query && URI::decode(uri.query)
56
58
  end
57
59
  end
58
60
 
@@ -72,6 +74,22 @@ module Gridinit
72
74
  params.delete :fill_in
73
75
  end
74
76
 
77
+ def raw_body(params)
78
+ @doc.at_xpath('//HTTPSamplerProxy') <<
79
+ Nokogiri::XML(<<-EOF.strip_heredoc).children
80
+ <boolProp name="HTTPSampler.postBodyRaw">true</boolProp>
81
+ EOF
82
+ @doc.at_xpath('//collectionProp') <<
83
+ Nokogiri::XML(<<-EOF.strip_heredoc).children
84
+ <elementProp name="" elementType="HTTPArgument">
85
+ <boolProp name="HTTPArgument.always_encode">false</boolProp>
86
+ <stringProp name="Argument.value">#{params[:raw_body]}</stringProp>
87
+ <stringProp name="Argument.metadata">=</stringProp>
88
+ </elementProp>
89
+ EOF
90
+ params.delete :raw_body
91
+ end
92
+
75
93
  end
76
94
 
77
95
  end
@@ -16,6 +16,9 @@ module Gridinit
16
16
  <stringProp name="HTTPSampler.protocol"></stringProp>
17
17
  <stringProp name="HTTPSampler.contentEncoding"></stringProp>
18
18
  <stringProp name="HTTPSampler.path"></stringProp>
19
+ <boolProp name="HTTPSampler.image_parser">false</boolProp>
20
+ <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
21
+ <boolProp name="HTTPSampler.concurrentDwn">false</boolProp>
19
22
  <stringProp name="HTTPSampler.concurrentPool">4</stringProp>
20
23
  </ConfigTestElement>
21
24
  EOF
@@ -3,7 +3,7 @@ module Gridinit
3
3
 
4
4
  class SummaryReport
5
5
  attr_accessor :doc
6
- def initialize(name="Summary Report", params={})
6
+ def initialize(name, params={})
7
7
  @doc = Nokogiri::XML(<<-EOF.strip_heredoc)
8
8
  <ResultCollector guiclass="SummaryReport" testclass="ResultCollector" testname="#{name}" enabled="true">
9
9
  <boolProp name="ResultCollector.error_logging">false</boolProp>
@@ -3,7 +3,7 @@ module Gridinit
3
3
 
4
4
  class TableVisualizer
5
5
  attr_accessor :doc
6
- def initialize(name="View Results in Table", params={})
6
+ def initialize(name, params={})
7
7
  @doc = Nokogiri::XML(<<-EOF.strip_heredoc)
8
8
  <ResultCollector guiclass="TableVisualizer" testclass="ResultCollector" testname="#{name}" enabled="true">
9
9
  <boolProp name="ResultCollector.error_logging">false</boolProp>
@@ -1,5 +1,5 @@
1
1
  module Gridinit
2
2
  module Jmeter
3
- VERSION = "0.0.8"
3
+ VERSION = "0.0.9"
4
4
  end
5
5
  end
@@ -0,0 +1,51 @@
1
+ module Gridinit
2
+ module Jmeter
3
+
4
+ class ViewResultsFullVisualizer
5
+ attr_accessor :doc
6
+ def initialize(name, params={})
7
+ @doc = Nokogiri::XML(<<-EOF.strip_heredoc)
8
+ <ResultCollector guiclass="ViewResultsFullVisualizer" testclass="ResultCollector" testname="#{name}" enabled="true">
9
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
10
+ <objProp>
11
+ <name>saveConfig</name>
12
+ <value class="SampleSaveConfiguration">
13
+ <time>true</time>
14
+ <latency>true</latency>
15
+ <timestamp>true</timestamp>
16
+ <success>true</success>
17
+ <label>true</label>
18
+ <code>true</code>
19
+ <message>true</message>
20
+ <threadName>true</threadName>
21
+ <dataType>true</dataType>
22
+ <encoding>false</encoding>
23
+ <assertions>true</assertions>
24
+ <subresults>true</subresults>
25
+ <responseData>false</responseData>
26
+ <samplerData>false</samplerData>
27
+ <xml>true</xml>
28
+ <fieldNames>false</fieldNames>
29
+ <responseHeaders>false</responseHeaders>
30
+ <requestHeaders>false</requestHeaders>
31
+ <responseDataOnError>false</responseDataOnError>
32
+ <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
33
+ <assertionsResultsToSave>0</assertionsResultsToSave>
34
+ <bytes>true</bytes>
35
+ </value>
36
+ </objProp>
37
+ <stringProp name="filename"></stringProp>
38
+ </ResultCollector>
39
+ EOF
40
+ params.each do |name, value|
41
+ node = @doc.children.xpath("//*[contains(@name,\"#{name.to_s}\")]")
42
+ node.first.content = value unless node.empty?
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ end
49
+
50
+ end
51
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gridinit-jmeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000 Z
12
+ date: 2013-01-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rest-client
@@ -68,6 +68,8 @@ files:
68
68
  - examples/basic_extract.rb
69
69
  - examples/basic_google.rb
70
70
  - examples/basic_grid.rb
71
+ - examples/basic_header.rb
72
+ - examples/basic_post.rb
71
73
  - examples/basic_proxy.rb
72
74
  - examples/basic_query_params.rb
73
75
  - examples/basic_run.rb
@@ -85,6 +87,7 @@ files:
85
87
  - lib/gridinit-jmeter/fallback_content_proxy.rb
86
88
  - lib/gridinit-jmeter/gaussian_random_timer.rb
87
89
  - lib/gridinit-jmeter/graph_visualizer.rb
90
+ - lib/gridinit-jmeter/header_manager.rb
88
91
  - lib/gridinit-jmeter/http_sampler.rb
89
92
  - lib/gridinit-jmeter/if_controller.rb
90
93
  - lib/gridinit-jmeter/logger-colors.rb
@@ -100,6 +103,7 @@ files:
100
103
  - lib/gridinit-jmeter/transaction.rb
101
104
  - lib/gridinit-jmeter/user_defined_variable.rb
102
105
  - lib/gridinit-jmeter/version.rb
106
+ - lib/gridinit-jmeter/view_results_full_visualizer.rb
103
107
  - lib/gridinit-jmeter/xpath_extractor.rb
104
108
  - spec/dsl_spec.rb
105
109
  - spec/spec_helper.rb