gridinit-jmeter 0.0.8 → 0.0.9

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