front_end_loader 0.2.3 → 0.3.0
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.
- data/README.md +11 -16
- data/front_end_loader.gemspec +1 -1
- data/lib/front_end_loader/experiment.rb +4 -2
- data/lib/front_end_loader/request.rb +14 -4
- data/lib/front_end_loader/request_manager.rb +12 -0
- data/lib/front_end_loader/screen.rb +1 -1
- metadata +8 -7
data/README.md
CHANGED
@@ -86,22 +86,17 @@ of the script will be run in order and will not affect other iterations that may
|
|
86
86
|
Excuting an experiment will produce output like this:
|
87
87
|
|
88
88
|
```
|
89
|
-
|
90
|
-
| call
|
91
|
-
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
| me | 36 | 0.25 | 0.555 | 0 | 0.0 | 126 |
|
101
|
-
| | | | | | | |
|
102
|
-
| TOTAL | 345 | 0.238 | 0.731 | 0 | 0.0 | 1209 |
|
103
|
-
------------------------------------------------------------------------------------------------------
|
104
|
-
run time: 0:00:17
|
89
|
+
------------------------------------------------------------------------------------------
|
90
|
+
| call | count | avg time | max time | errors | error % | throughput |
|
91
|
+
------------------------------------------------------------------------------------------
|
92
|
+
| test_search | 100 | 0.36 | 0.863 | 0 | 0.0 | 1450 |
|
93
|
+
| random_word_search | 100 | 0.263 | 0.708 | 0 | 0.0 | 1450 |
|
94
|
+
| privacy_policy | 100 | 0.038 | 0.056 | 0 | 0.0 | 1450 |
|
95
|
+
| | | | | | | |
|
96
|
+
| TOTAL | 300 | 0.22 | 0.863 | 0 | 0.0 | 4352 |
|
97
|
+
------------------------------------------------------------------------------------------
|
98
|
+
|
99
|
+
run time: 0:00:11
|
105
100
|
```
|
106
101
|
|
107
102
|
Throughput is measured in requests per minute and note that because each "user" is running though the script
|
data/front_end_loader.gemspec
CHANGED
@@ -3,7 +3,7 @@ Gem::Specification.new do |s|
|
|
3
3
|
s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5") if s.respond_to? :required_rubygems_version=
|
4
4
|
|
5
5
|
s.name = 'front_end_loader'
|
6
|
-
s.version = '0.
|
6
|
+
s.version = '0.3.0'
|
7
7
|
|
8
8
|
s.summary = 'A framework for doing declarative load testing in ruby'
|
9
9
|
s.description = <<-EOF
|
@@ -4,6 +4,8 @@ module FrontEndLoader
|
|
4
4
|
attr_accessor :user_count
|
5
5
|
attr_accessor :loop_count
|
6
6
|
attr_accessor :default_parameters
|
7
|
+
attr_accessor :default_headers
|
8
|
+
attr_accessor :timeout, :connect_timeout
|
7
9
|
attr_reader :basic_auth_enabled
|
8
10
|
attr_reader :basic_auth_user
|
9
11
|
attr_reader :basic_auth_password
|
@@ -166,9 +168,9 @@ module FrontEndLoader
|
|
166
168
|
session.auth_type = :basic
|
167
169
|
session.username = basic_auth_user
|
168
170
|
session.password = basic_auth_password
|
169
|
-
session.connect_timeout = 10
|
170
|
-
session.timeout = 500
|
171
171
|
end
|
172
|
+
session.connect_timeout = connect_timeout || 10
|
173
|
+
session.timeout = timeout || 500
|
172
174
|
end
|
173
175
|
end
|
174
176
|
|
@@ -1,12 +1,18 @@
|
|
1
1
|
module FrontEndLoader
|
2
2
|
class Request
|
3
|
-
def initialize(experiment, session, method, name, path, params, data, response_block)
|
3
|
+
def initialize(experiment, session, method, name, path, params, data, files = {}, response_block)
|
4
4
|
@experiment = experiment
|
5
5
|
@session = session
|
6
6
|
@method = method
|
7
7
|
@name = name
|
8
8
|
@path = path
|
9
|
-
@
|
9
|
+
@files = files
|
10
|
+
|
11
|
+
@headers = @experiment.default_headers || {}
|
12
|
+
|
13
|
+
param_hash = @experiment.default_parameters ? @experiment.default_parameters.merge(params) : params
|
14
|
+
@params = URI.encode(param_hash.map { |k,v| "#{k}=#{v}" }.join('&'))
|
15
|
+
|
10
16
|
@data = data
|
11
17
|
@response_block = response_block
|
12
18
|
end
|
@@ -15,11 +21,15 @@ module FrontEndLoader
|
|
15
21
|
response = nil
|
16
22
|
if [:get, :delete].include?(@method)
|
17
23
|
response = @experiment.time_call(@name) do
|
18
|
-
@session.__send__(@method, "#{@path}?#{@params}")
|
24
|
+
@session.__send__(@method, "#{@path}?#{@params}", @headers)
|
25
|
+
end
|
26
|
+
elsif @method == :post_multipart
|
27
|
+
response = @experiment.time_call(@name) do
|
28
|
+
@session.post_multipart("#{@path}?#{@params}", @data, @files, @headers)
|
19
29
|
end
|
20
30
|
else
|
21
31
|
response = @experiment.time_call(@name) do
|
22
|
-
@session.__send__(@method, "#{@path}?#{@params}", @data,
|
32
|
+
@session.__send__(@method, "#{@path}?#{@params}", @data, @headers)
|
23
33
|
end
|
24
34
|
end
|
25
35
|
if @response_block && response.is_a?(Patron::Response)
|
@@ -9,6 +9,10 @@ module FrontEndLoader
|
|
9
9
|
Request.new(@experiment, @session, :get, name, path, params, nil, block).run
|
10
10
|
end
|
11
11
|
|
12
|
+
def post_multipart(name, path, params = {}, data = "{}", files = nil, &block)
|
13
|
+
Request.new(@experiment, @session, :post_multipart, name, path, params, data, files, block).run
|
14
|
+
end
|
15
|
+
|
12
16
|
def post(name, path, params={}, data="{}", &block)
|
13
17
|
Request.new(@experiment, @session, :post, name, path, params, data, block).run
|
14
18
|
end
|
@@ -21,6 +25,14 @@ module FrontEndLoader
|
|
21
25
|
Request.new(@experiment, @session, :delete, name, path, params, nil, block).run
|
22
26
|
end
|
23
27
|
|
28
|
+
def propfind(name, path, params={}, &block)
|
29
|
+
Request.new(@experiment, @session, :propfind, name, path, params, nil, block).run
|
30
|
+
end
|
31
|
+
|
32
|
+
def report(name, path, params={}, &block)
|
33
|
+
Request.new(@experiment, @session, :report, name, path, params, nil, block).run
|
34
|
+
end
|
35
|
+
|
24
36
|
def debug(data)
|
25
37
|
@experiment.write_debug(data)
|
26
38
|
end
|
@@ -68,7 +68,7 @@ module FrontEndLoader
|
|
68
68
|
total_calls = @experiment.call_counts.values.inject(0) { |s,i| s + i }
|
69
69
|
total_time = @experiment.call_times.values.inject(0) { |s,i| s + i }
|
70
70
|
total_errors = @experiment.call_error_counts.values.inject(0) { |s,i| s + i }
|
71
|
-
max_max_time = @experiment.call_max_times.values.max.round(3).to_s
|
71
|
+
max_max_time = (@experiment.call_max_times.values.max || 0).round(3).to_s
|
72
72
|
delta = ((@experiment.run_completed_time || Time.now) - @experiment.run_start_time) / 60.0
|
73
73
|
end
|
74
74
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: front_end_loader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,24 +9,24 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: patron
|
16
|
+
prerelease: false
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '0'
|
22
|
+
none: false
|
22
23
|
type: :runtime
|
23
|
-
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
25
|
requirements:
|
27
26
|
- - ! '>='
|
28
27
|
- !ruby/object:Gem::Version
|
29
28
|
version: '0'
|
29
|
+
none: false
|
30
30
|
description: ! 'Front End Loader allows clients to declare load tests using a pure-Ruby
|
31
31
|
DSL.
|
32
32
|
|
@@ -57,17 +57,17 @@ rdoc_options: []
|
|
57
57
|
require_paths:
|
58
58
|
- lib
|
59
59
|
required_ruby_version: !ruby/object:Gem::Requirement
|
60
|
-
none: false
|
61
60
|
requirements:
|
62
61
|
- - ! '>='
|
63
62
|
- !ruby/object:Gem::Version
|
64
63
|
version: '0'
|
65
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
66
64
|
none: false
|
65
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
67
66
|
requirements:
|
68
67
|
- - ! '>='
|
69
68
|
- !ruby/object:Gem::Version
|
70
69
|
version: 1.3.5
|
70
|
+
none: false
|
71
71
|
requirements: []
|
72
72
|
rubyforge_project:
|
73
73
|
rubygems_version: 1.8.24
|
@@ -75,3 +75,4 @@ signing_key:
|
|
75
75
|
specification_version: 2
|
76
76
|
summary: A framework for doing declarative load testing in ruby
|
77
77
|
test_files: []
|
78
|
+
has_rdoc:
|