ruby-jmeter 2.13.4 → 2.13.5
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/examples/basic_os_process_sampler.rb +24 -0
- data/lib/ruby-jmeter/dsl.rb +14 -0
- data/lib/ruby-jmeter/dsl/setup_thread_group.rb +36 -0
- data/lib/ruby-jmeter/version.rb +1 -1
- data/spec/dsl_spec.rb +30 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2bc45180e9ae9b2911cbe73279e54fe7a367b33b
|
4
|
+
data.tar.gz: 9e1d2afeb4dcaf99274a2b3804717fdcfa2134ed
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c7322a18414e08695dbd0eb280af2423580c65cf801e7b5d89345f171016ad2a80f1f42a60a74a7705216cf33c755813b91ffb19930cd35cede75a26f9ee7d1
|
7
|
+
data.tar.gz: 6db79206bc45f66291c0f58ea3d84ede37e67d4e733ee307bf176fc4d4f2a110d7b03ff2798440d56bd993c2a6c9061a728fc5bbc7457a4ed85bc1bea662ca94
|
@@ -0,0 +1,24 @@
|
|
1
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
2
|
+
require 'ruby-jmeter'
|
3
|
+
|
4
|
+
build_args = ->(args) do
|
5
|
+
args.collect do |arg|
|
6
|
+
{
|
7
|
+
xpath: "//collectionProp[@name='Arguments.arguments']",
|
8
|
+
value: Nokogiri::XML(<<-EOF.strip_heredoc).children
|
9
|
+
<elementProp name="" elementType="Argument">
|
10
|
+
<stringProp name="Argument.name"></stringProp>
|
11
|
+
<stringProp name="Argument.value">#{arg}</stringProp>
|
12
|
+
<stringProp name="Argument.metadata">=</stringProp>
|
13
|
+
</elementProp>
|
14
|
+
EOF
|
15
|
+
}
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
|
20
|
+
test do
|
21
|
+
os_process_sampler 'SystemSampler.command' => 'git',
|
22
|
+
update_at_xpath: build_args.call(['push', 'origin', 'master'])
|
23
|
+
|
24
|
+
end.run(path: '/usr/share/jmeter-2.13/bin/', gui: true)
|
data/lib/ruby-jmeter/dsl.rb
CHANGED
@@ -94,6 +94,20 @@ module RubyJmeter
|
|
94
94
|
|
95
95
|
alias_method :threads, :thread_group
|
96
96
|
|
97
|
+
def setup_thread_group(*args, &block)
|
98
|
+
params = args.shift || {}
|
99
|
+
params = { count: params }.merge(args.shift || {}) if params.class == Fixnum
|
100
|
+
params[:num_threads] = params[:count] || 1
|
101
|
+
params[:ramp_time] = params[:rampup] || (params[:num_threads]/2.0).ceil
|
102
|
+
params[:start_time] = params[:start_time] || Time.now.to_i * 1000
|
103
|
+
params[:end_time] = params[:end_time] || Time.now.to_i * 1000
|
104
|
+
params[:duration] ||= 60
|
105
|
+
params[:continue_forever] ||= false
|
106
|
+
params[:loops] = -1 if params[:continue_forever]
|
107
|
+
node = RubyJmeter::SetupThreadGroup.new(params)
|
108
|
+
attach_node(node, &block)
|
109
|
+
end
|
110
|
+
|
97
111
|
##
|
98
112
|
# HTTP Samplers
|
99
113
|
|
@@ -0,0 +1,36 @@
|
|
1
|
+
module RubyJmeter
|
2
|
+
class DSL
|
3
|
+
def setup_thread_group(params={}, &block)
|
4
|
+
node = RubyJmeter::SetupThreadGroup.new(params)
|
5
|
+
attach_node(node, &block)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
class SetupThreadGroup
|
10
|
+
attr_accessor :doc
|
11
|
+
include Helper
|
12
|
+
|
13
|
+
def initialize(params={})
|
14
|
+
testname = params.kind_of?(Array) ? 'SetupThreadGroup' : (params[:name] || 'SetupThreadGroup')
|
15
|
+
@doc = Nokogiri::XML(<<-EOS.strip_heredoc)
|
16
|
+
<SetupThreadGroup guiclass="SetupThreadGroupGui" testclass="SetupThreadGroup" testname="#{testname}" enabled="true">
|
17
|
+
<stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
|
18
|
+
<elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="#{testname}" enabled="true">
|
19
|
+
<boolProp name="LoopController.continue_forever">false</boolProp>
|
20
|
+
<stringProp name="LoopController.loops">-1</stringProp>
|
21
|
+
</elementProp>
|
22
|
+
<stringProp name="ThreadGroup.num_threads">1</stringProp>
|
23
|
+
<stringProp name="ThreadGroup.ramp_time">1</stringProp>
|
24
|
+
<longProp name="ThreadGroup.start_time">1442954623000</longProp>
|
25
|
+
<longProp name="ThreadGroup.end_time">1442954623000</longProp>
|
26
|
+
<boolProp name="ThreadGroup.scheduler">true</boolProp>
|
27
|
+
<stringProp name="ThreadGroup.duration"></stringProp>
|
28
|
+
<stringProp name="ThreadGroup.delay"></stringProp>
|
29
|
+
</SetupThreadGroup>)
|
30
|
+
EOS
|
31
|
+
update params
|
32
|
+
update_at_xpath params if params.is_a?(Hash) && params[:update_at_xpath]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
data/lib/ruby-jmeter/version.rb
CHANGED
data/spec/dsl_spec.rb
CHANGED
@@ -186,6 +186,36 @@ describe 'DSL' do
|
|
186
186
|
end
|
187
187
|
end
|
188
188
|
|
189
|
+
describe 'setup thread groups' do
|
190
|
+
let(:doc) do
|
191
|
+
test do
|
192
|
+
setup_thread_group count: 101, continue_forever: true, duration: 69
|
193
|
+
end.to_doc
|
194
|
+
end
|
195
|
+
|
196
|
+
let(:fragment) { doc.search("//SetupThreadGroup").first }
|
197
|
+
|
198
|
+
it 'should match on num_threads' do
|
199
|
+
fragment.search(".//stringProp[@name='ThreadGroup.num_threads']").text.should == '101'
|
200
|
+
end
|
201
|
+
|
202
|
+
it 'should match on scheduler' do
|
203
|
+
fragment.search(".//boolProp[@name='ThreadGroup.scheduler']").text.should == 'true'
|
204
|
+
end
|
205
|
+
|
206
|
+
it 'should match on continue_forever' do
|
207
|
+
fragment.search(".//boolProp[@name='LoopController.continue_forever']").text.should == 'true'
|
208
|
+
end
|
209
|
+
|
210
|
+
it 'should match on loops' do
|
211
|
+
fragment.search(".//stringProp[@name='LoopController.loops']").text.should == '-1'
|
212
|
+
end
|
213
|
+
|
214
|
+
it 'should match on duration' do
|
215
|
+
fragment.search(".//stringProp[@name='ThreadGroup.duration']").text.should == '69'
|
216
|
+
end
|
217
|
+
end
|
218
|
+
|
189
219
|
describe 'thread groups old syntax' do
|
190
220
|
let(:doc) do
|
191
221
|
test do
|
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.13.
|
4
|
+
version: 2.13.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tim Koopmans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rest-client
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- examples/basic_loadosophia.rb
|
85
85
|
- examples/basic_loops.rb
|
86
86
|
- examples/basic_meta_fu.rb
|
87
|
+
- examples/basic_os_process_sampler.rb
|
87
88
|
- examples/basic_perfmon.rb
|
88
89
|
- examples/basic_post.rb
|
89
90
|
- examples/basic_preprocessor_user_parameters.rb
|
@@ -198,6 +199,7 @@ files:
|
|
198
199
|
- lib/ruby-jmeter/dsl/result_status_action_handler.rb
|
199
200
|
- lib/ruby-jmeter/dsl/runtime_controller.rb
|
200
201
|
- lib/ruby-jmeter/dsl/save_responses_to_a_file.rb
|
202
|
+
- lib/ruby-jmeter/dsl/setup_thread_group.rb
|
201
203
|
- lib/ruby-jmeter/dsl/simple_config_element.rb
|
202
204
|
- lib/ruby-jmeter/dsl/simple_controller.rb
|
203
205
|
- lib/ruby-jmeter/dsl/simple_data_writer.rb
|