ruby-jmeter 3.0.11 → 3.0.12

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c41d4b20c8c48445ebfc213c9ab7a19f979f2c49
4
- data.tar.gz: aefcd31bd8b7d721b18aba6efc344382d4c21697
3
+ metadata.gz: d085f1b33ee976a6909d689a02e750894eeac44a
4
+ data.tar.gz: b2091b746d06be3eca4d45e40654370cf77fba40
5
5
  SHA512:
6
- metadata.gz: 6072a542c8fbd59152b74eef20e3b30eaf566ccbcd3f65121ed4590aad09fdc5596a54c076737d607c8a618b71ec686f02d33f08d2977ca3852154ba2724ac20
7
- data.tar.gz: b396ab791eca825fcb78187dafcac53cab6c5325df42afa8b13f8a03499315b3ff1a5ddaf9c05ea811e20ff2f71ab231b6fc283dbf0d57faccc46cf4f81a6753
6
+ metadata.gz: 10426d29a88b670f80e85cba4617db1fe5ae340650eecc2fd35c0ef265cd638e8cdef537bf4de523ac6cacfc925497f7c097be6cab574fa5ff5b1e0af8d7ac85
7
+ data.tar.gz: 2d83cdd235f8d9fd24be3b9f76374a28350d2474e25f02988031c8cc3393124b08aa6e2fd4f95026660b9be55fd730eddc683863cd3550b096e49b073e644f25
data/examples/flood.rb CHANGED
@@ -8,6 +8,6 @@ test do
8
8
  end.flood ENV['FLOOD_API_TOKEN'],
9
9
  privacy: 'public',
10
10
  name: ENV['FLOOD_NAME'] ||= 'Simple Demo',
11
- project: 'workspace',
11
+ project: 'Workspace',
12
12
  region: ENV['REGION'] ||= 'us-west-2',
13
13
  override_parameters: '-Dsun.net.inetaddr.ttl=30'
@@ -4,7 +4,8 @@ require 'ruby-jmeter'
4
4
  test do
5
5
  threads count: 1, loop: 1 do
6
6
  visit 'https://api.github.com/orgs/flood-io/repos' do
7
- assert json: '.name', value: 'ruby-jmeter'
7
+ assert json: '.name', value: '.*'
8
+ assert json: '.id', value: '\d+'
8
9
  end
9
10
  end
10
11
  end.run(path: '/usr/share/jmeter/bin/', gui: true)
@@ -111,5 +111,10 @@ module RubyJmeter
111
111
  node = RubyJmeter::Plugins::RedisDataSet.new(params)
112
112
  attach_node(node, &block)
113
113
  end
114
+
115
+ def jmx_collector(params = {}, &block)
116
+ node = RubyJmeter::Plugins::JMXCollector.new(params)
117
+ attach_node(node, &block)
118
+ end
114
119
  end
115
120
  end
@@ -0,0 +1,73 @@
1
+ module RubyJmeter
2
+ module Plugins
3
+ class JMXCollector
4
+ attr_accessor :doc
5
+ include Helper
6
+ def initialize(params={})
7
+
8
+ params[:name] ||= 'JMX Collector'
9
+ params[:jtl] ||= ''
10
+ params[:attribute_key] ||= ''
11
+
12
+ @doc = Nokogiri::XML(<<-XML.strip_heredoc)
13
+ <kg.apc.jmeter.jmxmon.JMXMonCollector guiclass="kg.apc.jmeter.vizualizers.JMXMonGui" testclass="kg.apc.jmeter.jmxmon.JMXMonCollector" testname="#{params[:name]}" enabled="true">
14
+ <boolProp name="ResultCollector.error_logging">false</boolProp>
15
+ <objProp>
16
+ <name>saveConfig</name>
17
+ <value class="SampleSaveConfiguration">
18
+ <time>true</time>
19
+ <latency>true</latency>
20
+ <timestamp>true</timestamp>
21
+ <success>true</success>
22
+ <label>true</label>
23
+ <code>true</code>
24
+ <message>true</message>
25
+ <threadName>true</threadName>
26
+ <dataType>true</dataType>
27
+ <encoding>false</encoding>
28
+ <assertions>true</assertions>
29
+ <subresults>true</subresults>
30
+ <responseData>false</responseData>
31
+ <samplerData>false</samplerData>
32
+ <xml>false</xml>
33
+ <fieldNames>true</fieldNames>
34
+ <responseHeaders>false</responseHeaders>
35
+ <requestHeaders>false</requestHeaders>
36
+ <responseDataOnError>false</responseDataOnError>
37
+ <saveAssertionResultsFailureMessage>true</saveAssertionResultsFailureMessage>
38
+ <assertionsResultsToSave>0</assertionsResultsToSave>
39
+ <bytes>true</bytes>
40
+ <threadCounts>true</threadCounts>
41
+ <idleTime>true</idleTime>
42
+ </value>
43
+ </objProp>
44
+ <stringProp name="filename">#{params[:jtl]}</stringProp>
45
+ <longProp name="interval_grouping">1000</longProp
46
+ <boolProp name="graph_aggregated">false</boolProp>
47
+ <stringProp name="include_sample_labels"></stringProp>
48
+ <stringProp name="exclude_sample_labels"></stringProp>
49
+ <stringProp name="start_offset"></stringProp>
50
+ <stringProp name="end_offset"></stringProp>
51
+ <boolProp name="include_checkbox_state">false</boolProp>
52
+ <boolProp name="exclude_checkbox_state">false</boolProp>
53
+ <collectionProp name="samplers">
54
+ <collectionProp name="311458936">
55
+ <stringProp name="label"></stringProp>
56
+ <stringProp name="service_endpoint">service:jmx:rmi:///jndi/rmi://#{params[:host]}:#{params[:port]}/jmxrmi</stringProp>
57
+ <stringProp name="username"></stringProp>
58
+ <stringProp name="password"></stringProp>
59
+ <stringProp name="object_name">#{params[:object_name]}</stringProp>
60
+ <stringProp name="attribute_name">#{params[:attribute_name]}</stringProp>
61
+ <stringProp name="attribute_key">#{params[:attribute_key]}</stringProp>
62
+ <stringProp name="delta">false</stringProp>
63
+ <stringProp name="retry">true</stringProp>
64
+ </collectionProp>
65
+ </collectionProp>
66
+ </kg.apc.jmeter.jmxmon.JMXMonCollector>
67
+ XML
68
+ end
69
+ end
70
+ end
71
+ end
72
+
73
+
@@ -1,3 +1,3 @@
1
1
  module RubyJmeter
2
- VERSION = '3.0.11'
2
+ VERSION = '3.0.12'
3
3
  end
@@ -17,15 +17,15 @@ describe 'http_request' do
17
17
  end
18
18
 
19
19
  it 'matches on domain' do
20
- expect(fragment.search(".//stringProp[@name='HTTPSampler.domain']").text).to eq 'google.com'
20
+ expect(fragment.search(".//stringProp[@name='HTTPSampler.domain']").text).to eq 'flooded.io'
21
21
  end
22
22
 
23
23
  it 'matches on port' do
24
- expect(fragment.search(".//stringProp[@name='HTTPSampler.port']").text).to eq '80'
24
+ expect(fragment.search(".//stringProp[@name='HTTPSampler.port']").text).to eq '443'
25
25
  end
26
26
 
27
27
  it 'matches on protocol' do
28
- expect(fragment.search(".//stringProp[@name='HTTPSampler.protocol']").text).to eq 'http'
28
+ expect(fragment.search(".//stringProp[@name='HTTPSampler.protocol']").text).to eq 'https'
29
29
  end
30
30
 
31
31
  it 'matches on path' do
@@ -153,3 +153,93 @@ describe 'redis data set' do
153
153
  end
154
154
  end
155
155
  end
156
+
157
+ describe 'jmx collector' do
158
+
159
+ describe 'passing all optionals' do
160
+ let(:doc) do
161
+ test do
162
+ jmx_collector(
163
+ name: 'some jmx collector name',
164
+ host: 'localhost',
165
+ port: 12345,
166
+ object_name: 'java.lang:type=Memory',
167
+ attribute_name: 'HeapMemoryUsage',
168
+ attribute_key: 'committed',
169
+ jtl: 'path/to/some/dir/file.jtl'
170
+ )
171
+ end.to_doc
172
+ end
173
+
174
+ let(:fragment) {
175
+ doc.search('//kg.apc.jmeter.jmxmon.JMXMonCollector').first }
176
+
177
+ it 'should have a name' do
178
+ expect(fragment.attributes['testname'].value).to eq 'some jmx collector name'
179
+ end
180
+
181
+ it 'should point to the service endpoint' do
182
+ expect(fragment.search("//stringProp[@name='service_endpoint']").text).to eq 'service:jmx:rmi:///jndi/rmi://localhost:12345/jmxrmi'
183
+ end
184
+
185
+ it 'should use the object name' do
186
+ expect(fragment.search("//stringProp[@name='object_name']").text).to eq 'java.lang:type=Memory'
187
+ end
188
+
189
+ it 'should use the attribute name' do
190
+ expect(fragment.search("//stringProp[@name='attribute_name']").text).to eq 'HeapMemoryUsage'
191
+ end
192
+
193
+ it 'should use the attribute key' do
194
+ expect(fragment.search("//stringProp[@name='attribute_key']").text).to eq 'committed'
195
+ end
196
+
197
+ it 'should use the jtl path' do
198
+ expect(fragment.search("//stringProp[@name='filename']").text).to eq 'path/to/some/dir/file.jtl'
199
+ end
200
+
201
+ end
202
+
203
+ describe 'passing no optionals' do
204
+ let(:doc) do
205
+ test do
206
+ jmx_collector(
207
+ host: '127.0.0.1',
208
+ port: 54321,
209
+ object_name: 'java.lang:type=Threading',
210
+ attribute_name: 'ThreadCount',
211
+ )
212
+ end.to_doc
213
+ end
214
+
215
+ let(:fragment) {
216
+ doc.search('//kg.apc.jmeter.jmxmon.JMXMonCollector').first }
217
+
218
+ it 'should have a default name' do
219
+ expect(fragment.attributes['testname'].value).to eq 'JMX Collector'
220
+ end
221
+
222
+ it 'should point to the service endpoint' do
223
+ expect(fragment.search("//stringProp[@name='service_endpoint']").text).to eq 'service:jmx:rmi:///jndi/rmi://127.0.0.1:54321/jmxrmi'
224
+ end
225
+
226
+ it 'should use the object name' do
227
+ expect(fragment.search("//stringProp[@name='object_name']").text).to eq 'java.lang:type=Threading'
228
+ end
229
+
230
+ it 'should use the attribute name' do
231
+ expect(fragment.search("//stringProp[@name='attribute_name']").text).to eq 'ThreadCount'
232
+ end
233
+
234
+ it 'should use an empty attribute key' do
235
+ expect(fragment.search("//stringProp[@name='attribute_key']").text).to eq ''
236
+ end
237
+
238
+ it 'should use an empty jtl path' do
239
+ expect(fragment.search("//stringProp[@name='filename']").text).to eq ''
240
+ end
241
+
242
+ end
243
+
244
+ end
245
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-jmeter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.11
4
+ version: 3.0.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Koopmans
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-14 00:00:00.000000000 Z
11
+ date: 2016-11-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -265,6 +265,7 @@ files:
265
265
  - lib/ruby-jmeter/plugins/composite_graph.rb
266
266
  - lib/ruby-jmeter/plugins/console_status_logger.rb
267
267
  - lib/ruby-jmeter/plugins/dummy_sampler.rb
268
+ - lib/ruby-jmeter/plugins/jmx_collector.rb
268
269
  - lib/ruby-jmeter/plugins/json_path_assertion.rb
269
270
  - lib/ruby-jmeter/plugins/json_path_extractor.rb
270
271
  - lib/ruby-jmeter/plugins/latencies_over_time.rb