canvas_statsd 1.0.1 → 1.0.2

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: 4616d02f4c3c8ef8030b703e6bbf5d838af47a19
4
- data.tar.gz: 605ae45df5f43db4fb9935bc9183d3e37461d9be
3
+ metadata.gz: f4d82332ae38bf5817fccb8a0bc7558427e9bc1c
4
+ data.tar.gz: b007d80588d91577b3997008fe236386e86551c5
5
5
  SHA512:
6
- metadata.gz: 3ee48720a9b97a96c005f612e8b1b1eb3fc530e0677686d24acd8cc0109936f5d9bdd75079ec0bc36cae90423c9eeec7bcb81e32b500c905236b76cb497f839f
7
- data.tar.gz: b3a03993abfc29f5c500e33d14e3bbbf619bcb31d2fc6dc3efb27525a8db5e463d7c1d25dfc472e7d2aab73b5ad49e0439e70048a7293ad76467d414482a28f1
6
+ metadata.gz: 623fdba2e7573d930fa7ae361703957e32ad476a270e3ca6b27116e1ca63e6b2866a55c76cfb2c53f56416e3453133d3055de62153719350d5d6753727f077e2
7
+ data.tar.gz: c4b10a26a2bdec126571e3128ae68a68060f550eb05178e25c30a99b595a17f715110d73244e35bd024ec64814840c2944ad6846c23d564bcd44ef1692819656
data/lib/canvas_statsd.rb CHANGED
@@ -8,6 +8,8 @@ module CanvasStatsd
8
8
  require "canvas_statsd/counter"
9
9
  require "canvas_statsd/sql_tracker"
10
10
  require "canvas_statsd/default_tracking"
11
+ require "canvas_statsd/request_logger"
12
+ require "canvas_statsd/null_logger"
11
13
 
12
14
  def self.settings
13
15
  @settings || env_settings
@@ -5,7 +5,8 @@ module CanvasStatsd
5
5
  @sql_tracker = CanvasStatsd::SqlTracker.new(blocked_names: ['SCHEMA'])
6
6
 
7
7
  def self.track_default_metrics(options={})
8
- options = {sql: true, active_record: true}.merge(options)
8
+ options = {sql: true, active_record: true, logger: nil}.merge(options)
9
+ @logger = RequestLogger.new(options[:logger])
9
10
  track_timing
10
11
  track_sql if !!options[:sql]
11
12
  track_active_record if !!options[:active_record]
@@ -57,6 +58,7 @@ module CanvasStatsd
57
58
  request_stat.sql_write_count = @sql_tracker.num_writes if @tracking_sql
58
59
  request_stat.sql_cache_count = @sql_tracker.num_caches if @tracking_sql
59
60
  request_stat.report
61
+ @logger.log(request_stat)
60
62
  end
61
63
 
62
64
  end
@@ -0,0 +1,11 @@
1
+ require 'logger'
2
+
3
+ module CanvasStatsd
4
+ class NullLogger < Logger
5
+ def initialize(*args)
6
+ end
7
+
8
+ def add(*args, &block)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ module CanvasStatsd
2
+ class RequestLogger
3
+
4
+ VALUES_MAP = {
5
+ total: :ms,
6
+ view: :view_runtime,
7
+ db: :db_runtime,
8
+ sql_read: :sql_read_count,
9
+ sql_write: :sql_write_count,
10
+ sql_cache: :sql_cache_count,
11
+ active_record: :ar_count
12
+ }.freeze
13
+
14
+
15
+ def initialize(logger)
16
+ @logger = logger || CanvasStatsd::NullLogger.new
17
+ end
18
+
19
+ def log(request_stat, header=nil)
20
+ @logger.info(build_log_message(request_stat, header))
21
+ end
22
+
23
+ def build_log_message(request_stat, header=nil)
24
+ header ||= "STATSD"
25
+ message = "[#{header}]"
26
+ VALUES_MAP.each do |k,v|
27
+ value = request_stat.respond_to?(v) ? request_stat.send(v) : nil
28
+ message += " (#{k}: #{value})" if value
29
+ end
30
+ message
31
+ end
32
+
33
+ end
34
+ end
@@ -20,6 +20,13 @@ describe CanvasStatsd::DefaultTracking do
20
20
  expect(CanvasStatsd::DefaultTracking).not_to receive(:track_active_record)
21
21
  CanvasStatsd::DefaultTracking.track_default_metrics active_record: false
22
22
  end
23
+
24
+ it 'should delegate log messages to the optional logger' do
25
+ log_double = double()
26
+ expect(log_double).to receive(:info)
27
+ CanvasStatsd::DefaultTracking.track_default_metrics logger: log_double
28
+ CanvasStatsd::DefaultTracking.finalize_processing('name', 1000, 10001, 1234, {})
29
+ end
23
30
  end
24
31
 
25
32
  describe '#track_active_record' do
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe CanvasStatsd::NullLogger do
4
+
5
+ describe 'initialize' do
6
+ it 'takes any arguments' do
7
+ expect{CanvasStatsd::NullLogger.new}.to_not raise_error
8
+ expect{CanvasStatsd::NullLogger.new(1, 2, 3)}.to_not raise_error
9
+ end
10
+ end
11
+
12
+ describe 'debug, info, warn, fatal, and unknown' do
13
+ it 'should all no-op instead of logging' do
14
+ log_path = 'spec/support/test.log'
15
+ File.open(log_path, 'w') { |f| f.write('') } # empty log file
16
+ logger = CanvasStatsd::NullLogger.new(log_path)
17
+ %w[debug info warn error fatal unknown].each { |m| logger.send(m, 'foo') }
18
+ log_contents = File.read(log_path)
19
+ expect(log_contents).to eq ''
20
+ end
21
+ end
22
+
23
+ end
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+ require 'logger'
3
+
4
+ describe CanvasStatsd::RequestLogger do
5
+
6
+ describe '#build_log_message' do
7
+ before :all do
8
+ @logger = CanvasStatsd::RequestLogger.new(Logger.new(STDOUT))
9
+ end
10
+ it 'should include the supplied header' do
11
+ request_stat = double('request_stat')
12
+ results = @logger.build_log_message(request_stat, 'FOO_STATS')
13
+ expect(results).to eq("[FOO_STATS]")
14
+ end
15
+ it 'should fallback to the default header' do
16
+ request_stat = double('request_stat')
17
+ results = @logger.build_log_message(request_stat)
18
+ expect(results).to eq("[STATSD]")
19
+ end
20
+ it 'should include stats that are available' do
21
+ request_stat = double('request_stat')
22
+ request_stat.stub(:ms).and_return(100.2)
23
+ request_stat.stub(:ar_count).and_return(24)
24
+ results = @logger.build_log_message(request_stat)
25
+ expect(results).to eq("[STATSD] (total: 100.2) (active_record: 24)")
26
+ end
27
+ it 'should not include nil stats' do
28
+ request_stat = double('request_stat')
29
+ request_stat.stub(:ms).and_return(100.2)
30
+ request_stat.stub(:ar_count).and_return(nil)
31
+ results = @logger.build_log_message(request_stat)
32
+ expect(results).to eq("[STATSD] (total: 100.2)")
33
+ end
34
+ end
35
+
36
+ describe '#log' do
37
+ it 'should send info method to logger if logger exists' do
38
+ std_out_logger = Logger.new(STDOUT)
39
+ logger = CanvasStatsd::RequestLogger.new(std_out_logger)
40
+ expect(std_out_logger).to receive(:info)
41
+ request_stat = double('request_stat')
42
+ logger.log(request_stat)
43
+ end
44
+ it 'should send info method with build_log_message output if logger exists' do
45
+ std_out_logger = Logger.new(STDOUT)
46
+ logger = CanvasStatsd::RequestLogger.new(std_out_logger)
47
+ expect(std_out_logger).to receive(:info).with("[DEFAULT_METRICS] (total: 100.2)")
48
+ request_stat = double('request_stat')
49
+ request_stat.stub(:ms).and_return(100.2)
50
+ logger.log(request_stat, "DEFAULT_METRICS")
51
+ end
52
+ end
53
+
54
+ end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canvas_statsd
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Cloward
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-16 00:00:00.000000000 Z
11
+ date: 2015-06-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: statsd-ruby
@@ -90,16 +90,21 @@ files:
90
90
  - lib/canvas_statsd.rb
91
91
  - lib/canvas_statsd/counter.rb
92
92
  - lib/canvas_statsd/default_tracking.rb
93
+ - lib/canvas_statsd/null_logger.rb
94
+ - lib/canvas_statsd/request_logger.rb
93
95
  - lib/canvas_statsd/request_stat.rb
94
96
  - lib/canvas_statsd/sql_tracker.rb
95
97
  - lib/canvas_statsd/statsd.rb
96
98
  - spec/canvas_statsd/canvas_statsd_spec.rb
97
99
  - spec/canvas_statsd/counter_spec.rb
98
100
  - spec/canvas_statsd/default_tracking_spec.rb
101
+ - spec/canvas_statsd/null_logger_spec.rb
102
+ - spec/canvas_statsd/request_logger_spec.rb
99
103
  - spec/canvas_statsd/request_stat_spec.rb
100
104
  - spec/canvas_statsd/sql_tracker_spec.rb
101
105
  - spec/canvas_statsd/statsd_spec.rb
102
106
  - spec/spec_helper.rb
107
+ - spec/support/test.log
103
108
  - test.sh
104
109
  homepage: https://github.com/instructure/canvas_statsd
105
110
  licenses:
@@ -129,8 +134,11 @@ test_files:
129
134
  - spec/canvas_statsd/canvas_statsd_spec.rb
130
135
  - spec/canvas_statsd/counter_spec.rb
131
136
  - spec/canvas_statsd/default_tracking_spec.rb
137
+ - spec/canvas_statsd/null_logger_spec.rb
138
+ - spec/canvas_statsd/request_logger_spec.rb
132
139
  - spec/canvas_statsd/request_stat_spec.rb
133
140
  - spec/canvas_statsd/sql_tracker_spec.rb
134
141
  - spec/canvas_statsd/statsd_spec.rb
135
142
  - spec/spec_helper.rb
143
+ - spec/support/test.log
136
144
  has_rdoc: