capistrano-measure 0.8.1 → 0.9.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.
- checksums.yaml +4 -4
- data/.travis.yml +6 -0
- data/README.md +10 -0
- data/capistrano-measure.gemspec +1 -1
- data/lib/capistrano/measure/adapter.rb +18 -6
- data/lib/capistrano/measure/integration/capistrano_2.rb +1 -1
- data/lib/capistrano/measure/integration/capistrano_3.rb +1 -1
- data/lib/capistrano/measure/log_reporter.rb +16 -9
- data/lib/capistrano/measure/version.rb +1 -1
- data/spec/capistrano/measure/adapter_spec.rb +2 -1
- data/spec/capistrano/measure/lib_reporter_spec.rb +18 -7
- data/spec/capistrano/measure/timer_spec.rb +2 -2
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99df5ec82607f37cc6e65e3c5e7f23f6b97b128d
|
4
|
+
data.tar.gz: 50eb47607674e04c9cf635eb52d72cf4d689784a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7aeaf46f3a2b1653653eae7c283d4c519f223fd97bb21d68b0ca5b7e33b079f5692fbc33bbd2759de8151846c95fccc833772a6ce31f543fcbe00a355436e09
|
7
|
+
data.tar.gz: d5c309a04d93ecc7eb28c78515c8270f84c30c1c1635b0854a61a62e96fca607c6bf2aadf68d7291810d9147545708dbae841ba63bf6caea6a30f8a3fa4a8b87
|
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
# Capistrano::Measure - deployment speed measure tool
|
2
|
+
[](https://badge.fury.io/rb/capistrano-measure)
|
3
|
+
[](https://travis-ci.org/AMekss/capistrano-measure)
|
2
4
|
|
3
5
|
In order to improve something you have to measure it! This helps you measure performance of your Capistrano deployments by appending performance reports after each Capistrano execution
|
4
6
|
|
@@ -85,6 +87,14 @@ It will append every capistrano execution with similar report
|
|
85
87
|
I, [2014-10-23T18:10:31.386225 #14352] INFO -- : deploy 104s
|
86
88
|
I, [2014-10-23T18:10:31.386246 #14352] INFO -- : ==========================================================
|
87
89
|
|
90
|
+
### Settings
|
91
|
+
You could change threshold time to change the results duration's color.
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
set :alert_threshold, 10 # default 60 sec
|
95
|
+
set :warning_threshold, 5 # default 30 sec
|
96
|
+
```
|
97
|
+
|
88
98
|
## Contributing
|
89
99
|
|
90
100
|
1. Fork it ( https://github.com/[my-github-username]/capistrano-measure/fork )
|
data/capistrano-measure.gemspec
CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency "capistrano", ">= 2", "< 4"
|
21
|
-
spec.add_dependency "
|
21
|
+
spec.add_dependency "colorize"
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
@@ -8,21 +8,33 @@ module Capistrano
|
|
8
8
|
nil
|
9
9
|
end
|
10
10
|
|
11
|
-
def initialize(logger
|
12
|
-
@
|
13
|
-
@
|
11
|
+
def initialize(logger, config)
|
12
|
+
@logger = logger
|
13
|
+
@config = config
|
14
14
|
end
|
15
15
|
|
16
16
|
def before_task(task_name)
|
17
|
-
|
17
|
+
timer.start(task_name)
|
18
18
|
end
|
19
19
|
|
20
20
|
def after_task(task_name)
|
21
|
-
|
21
|
+
timer.stop(task_name)
|
22
22
|
end
|
23
23
|
|
24
24
|
def print_report
|
25
|
-
|
25
|
+
log_reporter.render(timer.report_events)
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :logger, :config
|
31
|
+
|
32
|
+
def log_reporter
|
33
|
+
@log_reporter ||= Capistrano::Measure::LogReporter.new(logger, config)
|
34
|
+
end
|
35
|
+
|
36
|
+
def timer
|
37
|
+
@timer ||= Capistrano::Measure::Timer.new
|
26
38
|
end
|
27
39
|
|
28
40
|
end
|
@@ -3,7 +3,7 @@ module Capistrano
|
|
3
3
|
module Integration
|
4
4
|
module Capistrano3
|
5
5
|
def measure_adapter
|
6
|
-
@measure_adapter ||= Capistrano::Measure::Adapter.new
|
6
|
+
@measure_adapter ||= Capistrano::Measure::Adapter.new(::Logger.new(STDOUT), ::Capistrano::Configuration.env)
|
7
7
|
end
|
8
8
|
|
9
9
|
def insert_measure_tasks
|
@@ -1,21 +1,26 @@
|
|
1
|
-
require '
|
1
|
+
require 'colorized_string'
|
2
2
|
require 'logger'
|
3
3
|
|
4
4
|
module Capistrano
|
5
5
|
module Measure
|
6
6
|
class LogReporter
|
7
|
-
ALERT_TRASHOLD = 60
|
8
|
-
WARNING_TRASHOLD = 30
|
9
7
|
|
10
|
-
|
11
|
-
|
8
|
+
attr_reader :alert_threshold, :warning_threshold
|
9
|
+
|
10
|
+
DEFALUT_ALERT_THRESHOLD = 60
|
11
|
+
DEFAULT_WARNING_THRESHOLD = 30
|
12
|
+
|
13
|
+
def initialize(logger, config)
|
14
|
+
@logger = logger
|
15
|
+
@alert_threshold = config.fetch(:alert_threshold, DEFALUT_ALERT_THRESHOLD)
|
16
|
+
@warning_threshold = config.fetch(:warning_threshold, DEFAULT_WARNING_THRESHOLD)
|
12
17
|
end
|
13
18
|
|
14
19
|
def render(events)
|
15
20
|
return if events.to_a.empty?
|
16
21
|
|
17
22
|
log_sepertor
|
18
|
-
log " Performance Report".green
|
23
|
+
log ColorizedString[" Performance Report"].green
|
19
24
|
log_sepertor
|
20
25
|
|
21
26
|
events.each do |event|
|
@@ -27,7 +32,7 @@ module Capistrano
|
|
27
32
|
private
|
28
33
|
|
29
34
|
def log_sepertor
|
30
|
-
log "
|
35
|
+
log "=" * 60
|
31
36
|
end
|
32
37
|
|
33
38
|
def log(text)
|
@@ -36,10 +41,12 @@ module Capistrano
|
|
36
41
|
|
37
42
|
def colorize_time(time_spent)
|
38
43
|
return if time_spent.nil?
|
39
|
-
color
|
40
|
-
"#{time_spent}s".send(color)
|
44
|
+
ColorizedString["#{time_spent}s"].colorize(color(time_spent))
|
41
45
|
end
|
42
46
|
|
47
|
+
def color(time_spent)
|
48
|
+
(time_spent > alert_threshold ? :red : (time_spent > warning_threshold ? :yellow : :green))
|
49
|
+
end
|
43
50
|
end
|
44
51
|
end
|
45
52
|
end
|
@@ -5,7 +5,8 @@ require 'capistrano/measure/adapter'
|
|
5
5
|
|
6
6
|
describe Capistrano::Measure::Adapter do
|
7
7
|
let(:logger) { ::StringLogger.new }
|
8
|
-
|
8
|
+
let(:config) { {} }
|
9
|
+
subject { Capistrano::Measure::Adapter.new(logger, config) }
|
9
10
|
|
10
11
|
it "end-to-end test" do
|
11
12
|
subject.before_task('root_task')
|
@@ -5,25 +5,36 @@ LogItem = Struct.new(:indent, :name, :elapsed_time)
|
|
5
5
|
|
6
6
|
describe Capistrano::Measure::LogReporter do
|
7
7
|
let(:logger) { ::StringLogger.new }
|
8
|
-
|
9
|
-
|
10
|
-
it "should be able to create with default logger" do
|
11
|
-
expect(::Logger).to receive(:new).with(STDOUT)
|
12
|
-
Capistrano::Measure::LogReporter.new
|
13
|
-
end
|
8
|
+
let(:config) { {} }
|
9
|
+
subject { Capistrano::Measure::LogReporter.new(logger, config) }
|
14
10
|
|
15
11
|
describe "#render" do
|
16
12
|
{green: [0, 30], yellow: [31, 60], red: [61, 100]}.each do |color, times|
|
17
13
|
times.each do |elapsed_time|
|
18
14
|
it "should render line with time in #{color} when elapsed time eq #{elapsed_time}" do
|
19
15
|
subject.render([LogItem.new(0, 'test', elapsed_time)])
|
20
|
-
colorized_time = "#{elapsed_time}s".
|
16
|
+
colorized_time = ColorizedString["#{elapsed_time}s"].colorize(color)
|
21
17
|
|
22
18
|
expect(logger.to_s).to include("test #{colorized_time}\n")
|
23
19
|
end
|
24
20
|
end
|
25
21
|
end
|
26
22
|
|
23
|
+
context "with changed thresholds" do
|
24
|
+
let(:config) { { warning_threshold: 20, alert_threshold: 30 } }
|
25
|
+
|
26
|
+
{green: [0, 20], yellow: [21, 30], red: [31, 100]}.each do |color, times|
|
27
|
+
times.each do |elapsed_time|
|
28
|
+
it "should render line with time in #{color} when elapsed time eq #{elapsed_time}" do
|
29
|
+
subject.render([LogItem.new(0, 'test', elapsed_time)])
|
30
|
+
colorized_time = ColorizedString["#{elapsed_time}s"].colorize(color)
|
31
|
+
|
32
|
+
expect(logger.to_s).to include("test #{colorized_time}\n")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
27
38
|
it "should not render empty report" do
|
28
39
|
subject.render([])
|
29
40
|
expect(logger.to_s).to eq ""
|
@@ -75,14 +75,14 @@ describe Capistrano::Measure::Timer do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should raise exception with unstarted event" do
|
78
|
-
expect{ subject.stop('test123') }.to
|
78
|
+
expect{ subject.stop('test123') }.to raise_error(RuntimeError)
|
79
79
|
end
|
80
80
|
end
|
81
81
|
|
82
82
|
describe "#report_events" do
|
83
83
|
it "should raise exception if called in the middle of process" do
|
84
84
|
subject.start('test')
|
85
|
-
expect{ subject.report_events }.to
|
85
|
+
expect{ subject.report_events }.to raise_error(RuntimeError)
|
86
86
|
end
|
87
87
|
|
88
88
|
context "in completed state" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-measure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artūrs Mekšs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -31,19 +31,19 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '4'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: colorize
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: bundler
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,6 +111,7 @@ extra_rdoc_files: []
|
|
111
111
|
files:
|
112
112
|
- ".gitignore"
|
113
113
|
- ".rspec"
|
114
|
+
- ".travis.yml"
|
114
115
|
- Gemfile
|
115
116
|
- LICENSE.txt
|
116
117
|
- README.md
|
@@ -149,7 +150,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
149
150
|
version: '0'
|
150
151
|
requirements: []
|
151
152
|
rubyforge_project:
|
152
|
-
rubygems_version: 2.
|
153
|
+
rubygems_version: 2.5.1
|
153
154
|
signing_key:
|
154
155
|
specification_version: 4
|
155
156
|
summary: Capistrano deployment speed measure tool
|