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 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