performance_tester 0.0.6 → 0.0.7
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 +1 -0
- data/lib/performance_tester/csv_logger.rb +14 -18
- data/lib/performance_tester/logger.rb +39 -0
- data/lib/performance_tester/outcome.rb +1 -1
- data/lib/performance_tester/puts_aggregate_logger.rb +2 -9
- data/lib/performance_tester/runner.rb +10 -11
- data/lib/performance_tester/version.rb +1 -1
- metadata +2 -1
data/lib/performance_tester.rb
CHANGED
@@ -2,13 +2,9 @@
|
|
2
2
|
require 'csv'
|
3
3
|
|
4
4
|
module PerformanceTester
|
5
|
-
class CsvLogger
|
6
|
-
|
7
|
-
|
8
|
-
def initialize(name, outcome, options = {})
|
9
|
-
@name = name
|
10
|
-
@outcome = outcome
|
11
|
-
@path = options.fetch(:path) { 'performance_test.csv' }
|
5
|
+
class CsvLogger < Logger
|
6
|
+
def path
|
7
|
+
options.fetch(:path) { 'performance_test.csv' }
|
12
8
|
end
|
13
9
|
|
14
10
|
def log
|
@@ -20,6 +16,15 @@ module PerformanceTester
|
|
20
16
|
end
|
21
17
|
end
|
22
18
|
|
19
|
+
def with_csv
|
20
|
+
append = File.exists?(path)
|
21
|
+
flags = append ? 'ab' : 'wb'
|
22
|
+
CSV.open(path, flags) do |csv|
|
23
|
+
csv << header_line unless append
|
24
|
+
yield csv
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
23
28
|
def header_line
|
24
29
|
[
|
25
30
|
'Run name',
|
@@ -33,7 +38,7 @@ module PerformanceTester
|
|
33
38
|
|
34
39
|
def request_line(request)
|
35
40
|
[
|
36
|
-
|
41
|
+
run_name,
|
37
42
|
outcome.started_at,
|
38
43
|
request.host_alias,
|
39
44
|
request.path,
|
@@ -43,16 +48,7 @@ module PerformanceTester
|
|
43
48
|
end
|
44
49
|
|
45
50
|
def total_line
|
46
|
-
[
|
47
|
-
end
|
48
|
-
|
49
|
-
def with_csv
|
50
|
-
append = File.exists?(path)
|
51
|
-
flags = append ? 'ab' : 'wb'
|
52
|
-
CSV.open(path, flags) do |csv|
|
53
|
-
csv << header_line unless append
|
54
|
-
yield csv
|
55
|
-
end
|
51
|
+
[run_name, outcome.started_at, '', '', '', outcome.total_time_elapsed]
|
56
52
|
end
|
57
53
|
end
|
58
54
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
module PerformanceTester
|
4
|
+
module_function
|
5
|
+
|
6
|
+
def loggers
|
7
|
+
@loggers ||= {}
|
8
|
+
end
|
9
|
+
|
10
|
+
def register_logger(name, klass)
|
11
|
+
loggers[name] = klass
|
12
|
+
end
|
13
|
+
|
14
|
+
def registered_logger(name)
|
15
|
+
loggers.fetch(name)
|
16
|
+
rescue KeyError
|
17
|
+
raise ArgumentError, "Unregistered logger: #{name}"
|
18
|
+
end
|
19
|
+
|
20
|
+
class Logger
|
21
|
+
attr_reader :run_name, :outcome, :options
|
22
|
+
|
23
|
+
def initialize(run_name, outcome, options = {})
|
24
|
+
@run_name = run_name
|
25
|
+
@outcome = outcome
|
26
|
+
@options = options
|
27
|
+
end
|
28
|
+
|
29
|
+
def log
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
require 'performance_tester/puts_aggregate_logger'
|
35
|
+
require 'performance_tester/csv_logger'
|
36
|
+
|
37
|
+
PerformanceTester.register_logger(
|
38
|
+
:summary, PerformanceTester::PutsAggregateLogger)
|
39
|
+
PerformanceTester.register_logger(:csv, PerformanceTester::CsvLogger)
|
@@ -1,16 +1,9 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
|
3
3
|
module PerformanceTester
|
4
|
-
class PutsAggregateLogger
|
5
|
-
attr_reader :name, :outcome
|
6
|
-
|
7
|
-
def initialize(name, outcome)
|
8
|
-
@name = name
|
9
|
-
@outcome = outcome
|
10
|
-
end
|
11
|
-
|
4
|
+
class PutsAggregateLogger < Logger
|
12
5
|
def log
|
13
|
-
puts "Test run: #{
|
6
|
+
puts "Test run: #{run_name}"
|
14
7
|
puts "Success: #{outcome.success?}"
|
15
8
|
puts "Number of requests: #{number_of_requests}"
|
16
9
|
puts "Sum of request times: #{sprintf("%.02f", sum_of_times_of_all_requests)}"
|
@@ -3,11 +3,9 @@ require 'capybara'
|
|
3
3
|
require 'capybara/dsl'
|
4
4
|
require 'capybara/poltergeist'
|
5
5
|
require 'performance_tester/outcome'
|
6
|
-
require 'performance_tester/puts_aggregate_logger'
|
7
|
-
require 'performance_tester/csv_logger'
|
8
6
|
|
9
7
|
module PerformanceTester
|
10
|
-
# Executes a scenario
|
8
|
+
# Executes a scenario, then creates and logs outcomes
|
11
9
|
class Runner
|
12
10
|
attr_reader :options
|
13
11
|
|
@@ -17,8 +15,8 @@ module PerformanceTester
|
|
17
15
|
end
|
18
16
|
|
19
17
|
def run(scenario)
|
20
|
-
start = time_now
|
21
18
|
context = build_context
|
19
|
+
start = time_now
|
22
20
|
context.execute(scenario)
|
23
21
|
stop = time_now
|
24
22
|
period = (start .. stop)
|
@@ -40,8 +38,9 @@ module PerformanceTester
|
|
40
38
|
end
|
41
39
|
|
42
40
|
def log_outcome(outcome)
|
43
|
-
loggers.each do |
|
44
|
-
logger.
|
41
|
+
loggers.each do |logger_name, logger_options|
|
42
|
+
logger = PerformanceTester.registered_logger(logger_name)
|
43
|
+
logger.new(run_name, outcome, logger_options).log
|
45
44
|
end
|
46
45
|
end
|
47
46
|
|
@@ -53,7 +52,7 @@ module PerformanceTester
|
|
53
52
|
clock.now
|
54
53
|
end
|
55
54
|
|
56
|
-
def
|
55
|
+
def run_name
|
57
56
|
options.fetch(:name) { '' }
|
58
57
|
end
|
59
58
|
|
@@ -65,12 +64,12 @@ module PerformanceTester
|
|
65
64
|
options.fetch(:hosts) { {} }
|
66
65
|
end
|
67
66
|
|
68
|
-
def
|
69
|
-
options.fetch(:
|
67
|
+
def loggers
|
68
|
+
options.fetch(:loggers) { {} }
|
70
69
|
end
|
71
70
|
|
72
|
-
def
|
73
|
-
options.fetch(:
|
71
|
+
def outcome
|
72
|
+
options.fetch(:outcome) { Outcome }
|
74
73
|
end
|
75
74
|
|
76
75
|
def clock
|
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.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -41,6 +41,7 @@ files:
|
|
41
41
|
- Rakefile
|
42
42
|
- lib/performance_tester.rb
|
43
43
|
- lib/performance_tester/csv_logger.rb
|
44
|
+
- lib/performance_tester/logger.rb
|
44
45
|
- lib/performance_tester/outcome.rb
|
45
46
|
- lib/performance_tester/puts_aggregate_logger.rb
|
46
47
|
- lib/performance_tester/runner.rb
|