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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8800ff49810b512b1a0fac4e8efa703f0cd2a3a4
4
- data.tar.gz: fa54945a4235c958ec5c7a1df9ed58207ac76242
3
+ metadata.gz: 99df5ec82607f37cc6e65e3c5e7f23f6b97b128d
4
+ data.tar.gz: 50eb47607674e04c9cf635eb52d72cf4d689784a
5
5
  SHA512:
6
- metadata.gz: 342c4504f111003037d240c6c2e5c1473d3297c24c1b3f6c91e61db813a9f3d1c24871ce1083c7bc4edbd975b307f7afe5f825e1063af74ff6dcbc764f0b1232
7
- data.tar.gz: 0a472eaae23502477d039e487fc03e12040e7102b556bdd6a314017f2c222b1cf85711215a63b247eb6780de4d13e115c8e4a4e8b7c57f76f15708a618fa4008
6
+ metadata.gz: b7aeaf46f3a2b1653653eae7c283d4c519f223fd97bb21d68b0ca5b7e33b079f5692fbc33bbd2759de8151846c95fccc833772a6ce31f543fcbe00a355436e09
7
+ data.tar.gz: d5c309a04d93ecc7eb28c78515c8270f84c30c1c1635b0854a61a62e96fca607c6bf2aadf68d7291810d9147545708dbae841ba63bf6caea6a30f8a3fa4a8b87
data/.travis.yml ADDED
@@ -0,0 +1,6 @@
1
+ language: ruby
2
+ script: "bundle exec rspec spec"
3
+ rvm:
4
+ - 2.0.0
5
+ - 2.3.1
6
+ sudo: false
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 )
@@ -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 "colored", "~> 1.2"
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=nil)
12
- @timer = Capistrano::Measure::Timer.new
13
- @log_reporter = Capistrano::Measure::LogReporter.new(logger)
11
+ def initialize(logger, config)
12
+ @logger = logger
13
+ @config = config
14
14
  end
15
15
 
16
16
  def before_task(task_name)
17
- @timer.start(task_name)
17
+ timer.start(task_name)
18
18
  end
19
19
 
20
20
  def after_task(task_name)
21
- @timer.stop(task_name)
21
+ timer.stop(task_name)
22
22
  end
23
23
 
24
24
  def print_report
25
- @log_reporter.render(@timer.report_events)
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
@@ -1,5 +1,5 @@
1
1
  Capistrano::Configuration.instance(:must_exist).load do |config|
2
- adapter = Capistrano::Measure::Adapter.new(logger)
2
+ adapter = Capistrano::Measure::Adapter.new(logger, config)
3
3
 
4
4
  on :before do
5
5
  adapter.before_task(current_task.fully_qualified_name)
@@ -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 'colored'
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
- def initialize(logger=nil)
11
- @logger = logger || ::Logger.new(STDOUT)
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 = (time_spent > ALERT_TRASHOLD ? :red : (time_spent > WARNING_TRASHOLD ? :yellow : :green))
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
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Measure
3
- VERSION = "0.8.1"
3
+ VERSION = "0.9.0"
4
4
  end
5
5
  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
- subject { Capistrano::Measure::Adapter.new(logger) }
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
- subject { Capistrano::Measure::LogReporter.new(logger) }
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".send(color)
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 raise_exception
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 raise_exception
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.8.1
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: 2014-10-27 00:00:00.000000000 Z
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: colored
34
+ name: colorize
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - "~>"
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '1.2'
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: '1.2'
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.2.2
153
+ rubygems_version: 2.5.1
153
154
  signing_key:
154
155
  specification_version: 4
155
156
  summary: Capistrano deployment speed measure tool