ruby-jmeter 2.12.0 → 2.12.1
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.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/examples/basic_composite_graph.rb +29 -0
- data/examples/basic_perfmon.rb +45 -0
- data/lib/ruby-jmeter/DSL.md +1 -3
- data/lib/ruby-jmeter/dsl.rb +21 -0
- data/lib/ruby-jmeter/plugins/active_threads_over_time.rb +56 -0
- data/lib/ruby-jmeter/plugins/composite_graph.rb +70 -0
- data/lib/ruby-jmeter/plugins/perfmon_collector.rb +73 -0
- data/lib/ruby-jmeter/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9f1bff2da4ca154924abf3dc2b8ce9e441b592a5
|
4
|
+
data.tar.gz: bbadb15adf193c28c0b5fbbcaf33eda278c71cb4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b1262480a75106af99796cb012aa4469189a36742ba7411ae155128056148c39b835d62be65e5ccb42434a12a6b32d2cb1151b09faacd6ded838a0e08ce23a4
|
7
|
+
data.tar.gz: e4b1b441b2fe03d70deb5ca61da08c0b36bdf2a9aea4c0165d2169cdf4099d5938665cc7f3133238d65802e0667569f2a5f64dcf9df35067dab40cdfeb4fb0a0
|
data/.travis.yml
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'ruby-jmeter'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 5, rampup: 10 do
|
7
|
+
transaction name: 'Google Search' do
|
8
|
+
visit name: 'Home Page', url: 'http://google.com/'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
#
|
13
|
+
# You need jmeter-plugins at Google code
|
14
|
+
# http://code.google.com/p/jmeter-plugins
|
15
|
+
#
|
16
|
+
latencies_over_time 'Response Latencies Over Time'
|
17
|
+
active_threads 'Active Threads'
|
18
|
+
|
19
|
+
composite 'Composite Graph', [
|
20
|
+
{
|
21
|
+
graph: 'Response Latencies Over Time',
|
22
|
+
metric: 'Home Page'
|
23
|
+
},
|
24
|
+
{
|
25
|
+
graph: 'Active Threads',
|
26
|
+
metric: 'Overall Active Threads'
|
27
|
+
}
|
28
|
+
]
|
29
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
@@ -0,0 +1,45 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'ruby-jmeter'
|
3
|
+
|
4
|
+
test do
|
5
|
+
cookies clear_each_iteration: false
|
6
|
+
threads count: 5, rampup: 10 do
|
7
|
+
transaction name: 'Google Search' do
|
8
|
+
visit name: 'Home Page', url: 'http://google.com/'
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
#
|
13
|
+
# You need jmeter-plugins at Google code
|
14
|
+
# http://code.google.com/p/jmeter-plugins
|
15
|
+
#
|
16
|
+
latencies_over_time 'Response Latencies Over Time'
|
17
|
+
active_threads 'Active Threads'
|
18
|
+
|
19
|
+
#
|
20
|
+
# You need perfmon agent running
|
21
|
+
# http://jmeter-plugins.org/wiki/PerfMonAgent/
|
22
|
+
#
|
23
|
+
perfmon_collector 'Perfmon Metrics Collector', [
|
24
|
+
{
|
25
|
+
server: 'localhost',
|
26
|
+
port: 4444,
|
27
|
+
metric: 'Memory',
|
28
|
+
parameters: 'name=node#1:label=memory-node'
|
29
|
+
}]
|
30
|
+
|
31
|
+
composite 'Composite Graph', [
|
32
|
+
{
|
33
|
+
graph: 'Response Latencies Over Time',
|
34
|
+
metric: 'Home Page'
|
35
|
+
},
|
36
|
+
{
|
37
|
+
graph: 'Active Threads',
|
38
|
+
metric: 'Overall Active Threads'
|
39
|
+
},
|
40
|
+
{
|
41
|
+
graph: 'Perfmon Metrics Collector',
|
42
|
+
metric: 'localhost Memory memory-node'
|
43
|
+
}
|
44
|
+
]
|
45
|
+
end.run(path: '/usr/share/jmeter/bin/', gui: true)
|
data/lib/ruby-jmeter/DSL.md
CHANGED
@@ -223,8 +223,6 @@
|
|
223
223
|
`monitor_results`
|
224
224
|
- Response Time Graph
|
225
225
|
`response_time_graph`
|
226
|
-
- Response Time Graph
|
227
|
-
`response_time_graph`
|
228
226
|
- Save Responses to a file
|
229
227
|
`save_responses_to_a_file`
|
230
228
|
- Simple Data Writer
|
@@ -236,4 +234,4 @@
|
|
236
234
|
- View Results in Table
|
237
235
|
`view_results_in_table`
|
238
236
|
- View Results Tree
|
239
|
-
`view_results_tree`
|
237
|
+
`view_results_tree`
|
data/lib/ruby-jmeter/dsl.rb
CHANGED
@@ -455,6 +455,27 @@ module RubyJmeter
|
|
455
455
|
|
456
456
|
alias_method :step, :stepping_thread_group
|
457
457
|
|
458
|
+
def composite_graph(name, params={}, &block)
|
459
|
+
node = RubyJmeter::Plugins::CompositeGraph.new(name, params)
|
460
|
+
attach_node(node, &block)
|
461
|
+
end
|
462
|
+
|
463
|
+
alias_method :composite, :composite_graph
|
464
|
+
|
465
|
+
def active_threads_over_time(params={}, &block)
|
466
|
+
node = RubyJmeter::Plugins::ActiveThreadsOverTime.new(params)
|
467
|
+
attach_node(node, &block)
|
468
|
+
end
|
469
|
+
|
470
|
+
alias_method :active_threads, :active_threads_over_time
|
471
|
+
|
472
|
+
def perfmon_collector(name, params={}, &block)
|
473
|
+
node = RubyJmeter::Plugins::PerfmonCollector.new(name, params)
|
474
|
+
attach_node(node, &block)
|
475
|
+
end
|
476
|
+
|
477
|
+
alias_method :perfmon, :perfmon_collector
|
478
|
+
|
458
479
|
# API Methods
|
459
480
|
|
460
481
|
def out(params={})
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module RubyJmeter
|
2
|
+
module Plugins
|
3
|
+
class ActiveThreadsOverTime
|
4
|
+
attr_accessor :doc
|
5
|
+
include Helper
|
6
|
+
def initialize(name, params={})
|
7
|
+
@doc = Nokogiri::XML(<<-XML.strip_heredoc)
|
8
|
+
<kg.apc.jmeter.vizualizers.CorrectedResultCollector guiclass="kg.apc.jmeter.vizualizers.ThreadsStateOverTimeGui" testclass="kg.apc.jmeter.vizualizers.CorrectedResultCollector" 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>false</message>
|
20
|
+
<threadName>true</threadName>
|
21
|
+
<dataType>false</dataType>
|
22
|
+
<encoding>false</encoding>
|
23
|
+
<assertions>false</assertions>
|
24
|
+
<subresults>false</subresults>
|
25
|
+
<responseData>false</responseData>
|
26
|
+
<samplerData>false</samplerData>
|
27
|
+
<xml>false</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
|
+
<threadCounts>true</threadCounts>
|
36
|
+
<sampleCount>true</sampleCount>
|
37
|
+
</value>
|
38
|
+
</objProp>
|
39
|
+
<stringProp name="filename"></stringProp>
|
40
|
+
<longProp name="interval_grouping">500</longProp>
|
41
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
42
|
+
<stringProp name="include_sample_labels"></stringProp>
|
43
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
44
|
+
<stringProp name="start_offset"></stringProp>
|
45
|
+
<stringProp name="end_offset"></stringProp>
|
46
|
+
<boolProp name="include_checkbox_state">false</boolProp>
|
47
|
+
<boolProp name="exclude_checkbox_state">false</boolProp>
|
48
|
+
</kg.apc.jmeter.vizualizers.CorrectedResultCollector>
|
49
|
+
XML
|
50
|
+
update params
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module RubyJmeter
|
2
|
+
module Plugins
|
3
|
+
class CompositeGraph
|
4
|
+
attr_accessor :doc
|
5
|
+
include Helper
|
6
|
+
def initialize(name, params={})
|
7
|
+
graphNodes = params.collect { |g| "<stringProp name=\"\">#{g[:graph]}</stringProp>"}
|
8
|
+
metricNodes = params.collect { |m| "<stringProp name=\"\">#{m[:metric]}</stringProp>"}
|
9
|
+
|
10
|
+
composite_collections = Nokogiri::XML(<<-XML.strip_heredoc)
|
11
|
+
<collectionProp name="COMPOSITE_CFG">
|
12
|
+
<collectionProp name="">
|
13
|
+
#{graphNodes.join "\n"}
|
14
|
+
</collectionProp>
|
15
|
+
<collectionProp name="">
|
16
|
+
#{metricNodes.join "\n"}
|
17
|
+
</collectionProp>
|
18
|
+
</collectionProp>
|
19
|
+
XML
|
20
|
+
|
21
|
+
@doc = Nokogiri::XML(<<-XML.strip_heredoc)
|
22
|
+
<kg.apc.jmeter.vizualizers.CompositeResultCollector guiclass="kg.apc.jmeter.vizualizers.CompositeGraphGui" testclass="kg.apc.jmeter.vizualizers.CompositeResultCollector" testname="#{name}" enabled="true">
|
23
|
+
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
24
|
+
<objProp>
|
25
|
+
<name>saveConfig</name>
|
26
|
+
<value class="SampleSaveConfiguration">
|
27
|
+
<time>true</time>
|
28
|
+
<latency>true</latency>
|
29
|
+
<timestamp>true</timestamp>
|
30
|
+
<success>true</success>
|
31
|
+
<label>true</label>
|
32
|
+
<code>true</code>
|
33
|
+
<message>false</message>
|
34
|
+
<threadName>true</threadName>
|
35
|
+
<dataType>false</dataType>
|
36
|
+
<encoding>false</encoding>
|
37
|
+
<assertions>false</assertions>
|
38
|
+
<subresults>false</subresults>
|
39
|
+
<responseData>false</responseData>
|
40
|
+
<samplerData>false</samplerData>
|
41
|
+
<xml>false</xml>
|
42
|
+
<fieldNames>false</fieldNames>
|
43
|
+
<responseHeaders>false</responseHeaders>
|
44
|
+
<requestHeaders>false</requestHeaders>
|
45
|
+
<responseDataOnError>false</responseDataOnError>
|
46
|
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
|
47
|
+
<assertionsResultsToSave>0</assertionsResultsToSave>
|
48
|
+
<bytes>true</bytes>
|
49
|
+
<threadCounts>true</threadCounts>
|
50
|
+
<sampleCount>true</sampleCount>
|
51
|
+
</value>
|
52
|
+
</objProp>
|
53
|
+
<stringProp name="filename"></stringProp>
|
54
|
+
<longProp name="interval_grouping">500</longProp>
|
55
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
56
|
+
<stringProp name="include_sample_labels"></stringProp>
|
57
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
58
|
+
<stringProp name="start_offset"></stringProp>
|
59
|
+
<stringProp name="end_offset"></stringProp>
|
60
|
+
<boolProp name="include_checkbox_state">false</boolProp>
|
61
|
+
<boolProp name="exclude_checkbox_state">false</boolProp>
|
62
|
+
#{composite_collections.root.to_s}
|
63
|
+
</kg.apc.jmeter.vizualizers.CompositeResultCollector>
|
64
|
+
XML
|
65
|
+
update params
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module RubyJmeter
|
2
|
+
module Plugins
|
3
|
+
class PerfmonCollector
|
4
|
+
attr_accessor :doc
|
5
|
+
include Helper
|
6
|
+
def initialize(name, params={})
|
7
|
+
metricNodes = params.collect do |m|
|
8
|
+
"
|
9
|
+
<collectionProp name=\"\">
|
10
|
+
<stringProp name=\"\">#{m[:server]}</stringProp>
|
11
|
+
<stringProp name=\"\">#{m[:port]}</stringProp>
|
12
|
+
<stringProp name=\"\">#{m[:metric]}</stringProp>
|
13
|
+
<stringProp name=\"\">#{m[:parameters]}</stringProp>
|
14
|
+
</collectionProp>
|
15
|
+
"
|
16
|
+
end
|
17
|
+
|
18
|
+
metricConnections = Nokogiri::XML(<<-XML.strip_heredoc)
|
19
|
+
<collectionProp name="metricConnections">
|
20
|
+
#{metricNodes.join "\n"}
|
21
|
+
</collectionProp>
|
22
|
+
XML
|
23
|
+
|
24
|
+
@doc = Nokogiri::XML(<<-XML.strip_heredoc)
|
25
|
+
<kg.apc.jmeter.perfmon.PerfMonCollector guiclass="kg.apc.jmeter.vizualizers.PerfMonGui" testclass="kg.apc.jmeter.perfmon.PerfMonCollector" testname="#{name}" enabled="true">
|
26
|
+
<boolProp name="ResultCollector.error_logging">false</boolProp>
|
27
|
+
<objProp>
|
28
|
+
<name>saveConfig</name>
|
29
|
+
<value class="SampleSaveConfiguration">
|
30
|
+
<time>true</time>
|
31
|
+
<latency>true</latency>
|
32
|
+
<timestamp>true</timestamp>
|
33
|
+
<success>true</success>
|
34
|
+
<label>true</label>
|
35
|
+
<code>true</code>
|
36
|
+
<message>false</message>
|
37
|
+
<threadName>true</threadName>
|
38
|
+
<dataType>false</dataType>
|
39
|
+
<encoding>false</encoding>
|
40
|
+
<assertions>false</assertions>
|
41
|
+
<subresults>false</subresults>
|
42
|
+
<responseData>false</responseData>
|
43
|
+
<samplerData>false</samplerData>
|
44
|
+
<xml>false</xml>
|
45
|
+
<fieldNames>false</fieldNames>
|
46
|
+
<responseHeaders>false</responseHeaders>
|
47
|
+
<requestHeaders>false</requestHeaders>
|
48
|
+
<responseDataOnError>false</responseDataOnError>
|
49
|
+
<saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
|
50
|
+
<assertionsResultsToSave>0</assertionsResultsToSave>
|
51
|
+
<bytes>true</bytes>
|
52
|
+
<threadCounts>true</threadCounts>
|
53
|
+
<sampleCount>true</sampleCount>
|
54
|
+
</value>
|
55
|
+
</objProp>
|
56
|
+
<stringProp name="filename"></stringProp>
|
57
|
+
<longProp name="interval_grouping">1000</longProp>
|
58
|
+
<boolProp name="graph_aggregated">false</boolProp>
|
59
|
+
<stringProp name="include_sample_labels"></stringProp>
|
60
|
+
<stringProp name="exclude_sample_labels"></stringProp>
|
61
|
+
<stringProp name="start_offset"></stringProp>
|
62
|
+
<stringProp name="end_offset"></stringProp>
|
63
|
+
<boolProp name="include_checkbox_state">false</boolProp>
|
64
|
+
<boolProp name="exclude_checkbox_state">false</boolProp>
|
65
|
+
#{metricConnections.root.to_s}
|
66
|
+
</kg.apc.jmeter.perfmon.PerfMonCollector>
|
67
|
+
XML
|
68
|
+
update params
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
data/lib/ruby-jmeter/version.rb
CHANGED
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: 2.12.
|
4
|
+
version: 2.12.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Koopmans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -50,6 +50,7 @@ files:
|
|
50
50
|
- ".gitignore"
|
51
51
|
- ".rspec"
|
52
52
|
- ".ruby-version"
|
53
|
+
- ".travis.yml"
|
53
54
|
- CHANGES.md
|
54
55
|
- Gemfile
|
55
56
|
- LICENSE.txt
|
@@ -60,6 +61,7 @@ files:
|
|
60
61
|
- examples/basic_auth.rb
|
61
62
|
- examples/basic_browser_headers.rb
|
62
63
|
- examples/basic_cache.rb
|
64
|
+
- examples/basic_composite_graph.rb
|
63
65
|
- examples/basic_cookies.rb
|
64
66
|
- examples/basic_counter.rb
|
65
67
|
- examples/basic_extract.rb
|
@@ -79,6 +81,7 @@ files:
|
|
79
81
|
- examples/basic_ldap_ext.rb
|
80
82
|
- examples/basic_loops.rb
|
81
83
|
- examples/basic_meta_fu.rb
|
84
|
+
- examples/basic_perfmon.rb
|
82
85
|
- examples/basic_post.rb
|
83
86
|
- examples/basic_preprocessor_user_parameters.rb
|
84
87
|
- examples/basic_query_params.rb
|
@@ -225,10 +228,13 @@ files:
|
|
225
228
|
- lib/ruby-jmeter/helpers/user-agents.rb
|
226
229
|
- lib/ruby-jmeter/idl.rb
|
227
230
|
- lib/ruby-jmeter/idl.xml
|
231
|
+
- lib/ruby-jmeter/plugins/active_threads_over_time.rb
|
232
|
+
- lib/ruby-jmeter/plugins/composite_graph.rb
|
228
233
|
- lib/ruby-jmeter/plugins/console_status_logger.rb
|
229
234
|
- lib/ruby-jmeter/plugins/dummy_sampler.rb
|
230
235
|
- lib/ruby-jmeter/plugins/json_path_extractor.rb
|
231
236
|
- lib/ruby-jmeter/plugins/latencies_over_time.rb
|
237
|
+
- lib/ruby-jmeter/plugins/perfmon_collector.rb
|
232
238
|
- lib/ruby-jmeter/plugins/response_codes_per_second.rb
|
233
239
|
- lib/ruby-jmeter/plugins/response_times_distribution.rb
|
234
240
|
- lib/ruby-jmeter/plugins/response_times_over_time.rb
|