performance_tester 0.0.5 → 0.0.6
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/lib/performance_tester.rb
CHANGED
@@ -3,9 +3,10 @@ require 'csv'
|
|
3
3
|
|
4
4
|
module PerformanceTester
|
5
5
|
class CsvLogger
|
6
|
-
attr_reader :outcome, :path
|
6
|
+
attr_reader :name, :outcome, :path
|
7
7
|
|
8
|
-
def initialize(outcome, options = {})
|
8
|
+
def initialize(name, outcome, options = {})
|
9
|
+
@name = name
|
9
10
|
@outcome = outcome
|
10
11
|
@path = options.fetch(:path) { 'performance_test.csv' }
|
11
12
|
end
|
@@ -21,6 +22,7 @@ module PerformanceTester
|
|
21
22
|
|
22
23
|
def header_line
|
23
24
|
[
|
25
|
+
'Run name',
|
24
26
|
'Run datetime',
|
25
27
|
'Host alias',
|
26
28
|
'Path',
|
@@ -31,6 +33,7 @@ module PerformanceTester
|
|
31
33
|
|
32
34
|
def request_line(request)
|
33
35
|
[
|
36
|
+
name,
|
34
37
|
outcome.started_at,
|
35
38
|
request.host_alias,
|
36
39
|
request.path,
|
@@ -40,7 +43,7 @@ module PerformanceTester
|
|
40
43
|
end
|
41
44
|
|
42
45
|
def total_line
|
43
|
-
[outcome.started_at, '', '', '', outcome.total_time_elapsed]
|
46
|
+
[name, outcome.started_at, '', '', '', outcome.total_time_elapsed]
|
44
47
|
end
|
45
48
|
|
46
49
|
def with_csv
|
@@ -2,13 +2,15 @@
|
|
2
2
|
|
3
3
|
module PerformanceTester
|
4
4
|
class PutsAggregateLogger
|
5
|
-
attr_reader :outcome
|
5
|
+
attr_reader :name, :outcome
|
6
6
|
|
7
|
-
def initialize(outcome)
|
7
|
+
def initialize(name, outcome)
|
8
|
+
@name = name
|
8
9
|
@outcome = outcome
|
9
10
|
end
|
10
11
|
|
11
12
|
def log
|
13
|
+
puts "Test run: #{name}"
|
12
14
|
puts "Success: #{outcome.success?}"
|
13
15
|
puts "Number of requests: #{number_of_requests}"
|
14
16
|
puts "Sum of request times: #{sprintf("%.02f", sum_of_times_of_all_requests)}"
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'capybara'
|
3
3
|
require 'capybara/dsl'
|
4
|
+
require 'capybara/poltergeist'
|
4
5
|
require 'performance_tester/outcome'
|
5
6
|
require 'performance_tester/puts_aggregate_logger'
|
6
7
|
require 'performance_tester/csv_logger'
|
@@ -8,61 +9,101 @@ require 'performance_tester/csv_logger'
|
|
8
9
|
module PerformanceTester
|
9
10
|
# Executes a scenario in an environment and creates outcomes
|
10
11
|
class Runner
|
11
|
-
|
12
|
+
attr_reader :options
|
12
13
|
|
13
|
-
|
14
|
-
|
15
|
-
def initialize(environment, options = {})
|
16
|
-
@environment = environment
|
14
|
+
def initialize(options = {})
|
17
15
|
@options = options
|
16
|
+
initialize_browser
|
18
17
|
end
|
19
18
|
|
20
19
|
def run(scenario)
|
21
20
|
start = time_now
|
22
|
-
|
23
|
-
|
24
|
-
rescue => error
|
25
|
-
end
|
21
|
+
context = build_context
|
22
|
+
context.execute(scenario)
|
26
23
|
stop = time_now
|
27
24
|
period = (start .. stop)
|
28
|
-
outcome = create_outcome(period,
|
25
|
+
outcome = create_outcome(period, context)
|
29
26
|
log_outcome(outcome)
|
30
27
|
outcome
|
31
28
|
end
|
32
29
|
|
33
|
-
def
|
34
|
-
|
35
|
-
|
30
|
+
def initialize_browser
|
31
|
+
browser.run_server = false
|
32
|
+
browser.current_driver = :poltergeist
|
33
|
+
browser.register_driver :poltergeist do |app|
|
34
|
+
driver.new(app, :debug => false)
|
35
|
+
end
|
36
36
|
end
|
37
37
|
|
38
|
-
def
|
39
|
-
|
38
|
+
def create_outcome(period, context)
|
39
|
+
outcome.new(context.network_traffic, period, hosts, context.error)
|
40
40
|
end
|
41
41
|
|
42
42
|
def log_outcome(outcome)
|
43
43
|
loggers.each do |logger|
|
44
|
-
logger.new(outcome).log
|
44
|
+
logger.new(name, outcome).log
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
|
48
|
+
def build_context
|
49
|
+
Context.new(params, hosts)
|
50
50
|
end
|
51
51
|
|
52
52
|
def time_now
|
53
53
|
clock.now
|
54
54
|
end
|
55
55
|
|
56
|
+
def name
|
57
|
+
options.fetch(:name) { '' }
|
58
|
+
end
|
59
|
+
|
60
|
+
def params
|
61
|
+
options.fetch(:params) { {} }
|
62
|
+
end
|
63
|
+
|
64
|
+
def hosts
|
65
|
+
options.fetch(:hosts) { {} }
|
66
|
+
end
|
67
|
+
|
68
|
+
def outcome
|
69
|
+
options.fetch(:outcome) { Outcome }
|
70
|
+
end
|
71
|
+
|
72
|
+
def loggers
|
73
|
+
options.fetch(:loggers) { [PutsAggregateLogger, CsvLogger] }
|
74
|
+
end
|
75
|
+
|
56
76
|
def clock
|
57
77
|
options.fetch(:clock) { Time }
|
58
78
|
end
|
59
79
|
|
60
|
-
def
|
61
|
-
|
80
|
+
def browser
|
81
|
+
options.fetch(:browser) { Capybara }
|
62
82
|
end
|
63
83
|
|
64
|
-
def
|
65
|
-
|
84
|
+
def driver
|
85
|
+
options.fetch(:driver) { Capybara::Poltergeist::Driver }
|
86
|
+
end
|
87
|
+
|
88
|
+
class Context
|
89
|
+
include Capybara::DSL
|
90
|
+
|
91
|
+
attr_reader :params, :hosts, :error
|
92
|
+
|
93
|
+
def initialize(params, hosts)
|
94
|
+
@params = params
|
95
|
+
@hosts = hosts
|
96
|
+
end
|
97
|
+
|
98
|
+
def execute(scenario)
|
99
|
+
instance_eval(&scenario)
|
100
|
+
rescue => error
|
101
|
+
@error = error
|
102
|
+
end
|
103
|
+
|
104
|
+
def network_traffic
|
105
|
+
page.driver.network_traffic
|
106
|
+
end
|
66
107
|
end
|
67
108
|
end
|
68
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: performance_tester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: poltergeist
|
@@ -41,7 +41,6 @@ files:
|
|
41
41
|
- Rakefile
|
42
42
|
- lib/performance_tester.rb
|
43
43
|
- lib/performance_tester/csv_logger.rb
|
44
|
-
- lib/performance_tester/environment.rb
|
45
44
|
- lib/performance_tester/outcome.rb
|
46
45
|
- lib/performance_tester/puts_aggregate_logger.rb
|
47
46
|
- lib/performance_tester/runner.rb
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require "capybara"
|
3
|
-
require "capybara/poltergeist"
|
4
|
-
|
5
|
-
module PerformanceTester
|
6
|
-
# Describe an execution environment - server, credentials, etc.
|
7
|
-
class Environment
|
8
|
-
attr_reader :options
|
9
|
-
|
10
|
-
def initialize(options = {})
|
11
|
-
@options = options
|
12
|
-
browser.run_server = false
|
13
|
-
browser.current_driver = :poltergeist
|
14
|
-
browser.register_driver :poltergeist do |app|
|
15
|
-
driver.new(app, :debug => false)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def hosts
|
20
|
-
options.fetch(:hosts) { {} }
|
21
|
-
end
|
22
|
-
|
23
|
-
def browser
|
24
|
-
options.fetch(:browser) { Capybara }
|
25
|
-
end
|
26
|
-
|
27
|
-
def driver
|
28
|
-
options.fetch(:driver) { Capybara::Poltergeist::Driver }
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|