capistrano-measure 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
[![Gem Version](https://badge.fury.io/rb/capistrano-measure.svg)](https://badge.fury.io/rb/capistrano-measure)
|
3
|
+
[![Build Status](https://travis-ci.org/AMekss/capistrano-measure.svg?branch=master)](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
|