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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: bd5962c2dbebb023bfdccdae71cdf2e20f35c850
4
- data.tar.gz: 2f6d070dd839fb1c2ab940d230d9b7425135ea08
3
+ metadata.gz: 9f1bff2da4ca154924abf3dc2b8ce9e441b592a5
4
+ data.tar.gz: bbadb15adf193c28c0b5fbbcaf33eda278c71cb4
5
5
  SHA512:
6
- metadata.gz: b7ba4e23772b00701f5978ad6f0f6613ed71401d865a0821a5f8f73f7c429d3da585140ba6a4fc423503df21e685216472b1780deeb74e7b097b79bbabafedea
7
- data.tar.gz: 5af6ad4233fbe7b72f79ea9fe12e807ab7750311b66ecf9a6e9f5b39bb761b575af6e924dfc7b5566642e00273be9fb5806850fcceb642e14c6eafa5b5fb29f6
6
+ metadata.gz: 2b1262480a75106af99796cb012aa4469189a36742ba7411ae155128056148c39b835d62be65e5ccb42434a12a6b32d2cb1151b09faacd6ded838a0e08ce23a4
7
+ data.tar.gz: e4b1b441b2fe03d70deb5ca61da08c0b36bdf2a9aea4c0165d2169cdf4099d5938665cc7f3133238d65802e0667569f2a5f64dcf9df35067dab40cdfeb4fb0a0
data/.travis.yml ADDED
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.1.1
@@ -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)
@@ -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`
@@ -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
+
@@ -1,3 +1,3 @@
1
1
  module RubyJmeter
2
- VERSION = "2.12.0"
2
+ VERSION = "2.12.1"
3
3
  end
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.0
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 00:00:00.000000000 Z
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