inst_statsd 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,200 +1,197 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
-
6
- def create_subject(payload={}, statsd=nil)
7
- args = ['name', 1000, 1001, 1234, payload]
5
+ def create_subject(payload = {}, statsd = nil)
6
+ args = ["name", 1000, 1001, 1234, payload]
8
7
  args << statsd if statsd
9
8
  InstStatsd::RequestStat.new(*args)
10
9
  end
11
10
 
12
-
13
11
  describe InstStatsd::RequestStat do
14
-
15
- describe '#db_runtime' do
16
- it 'should return the payload db_runtime' do
17
- rs = create_subject({db_runtime: 11.11})
12
+ describe "#db_runtime" do
13
+ it "should return the payload db_runtime" do
14
+ rs = create_subject({ db_runtime: 11.11 })
18
15
  expect(rs.db_runtime).to eq 11.11
19
16
  end
20
17
 
21
- it 'should return nil when payload db_runtime key doesnt exists' do
18
+ it "should return nil when payload db_runtime key doesnt exists" do
22
19
  rs = create_subject
23
- expect(rs.db_runtime).to eq nil
20
+ expect(rs.db_runtime).to be_nil
24
21
  end
25
22
  end
26
23
 
27
- describe '#view_runtime' do
28
- it 'should return the payload view_runtime' do
24
+ describe "#view_runtime" do
25
+ it "should return the payload view_runtime" do
29
26
  rs = create_subject(view_runtime: 11.11)
30
27
  expect(rs.view_runtime).to eq 11.11
31
28
  end
32
29
 
33
- it 'should return nil when payload view_runtime key doesnt exists' do
30
+ it "should return nil when payload view_runtime key doesnt exists" do
34
31
  rs = create_subject
35
- expect(rs.view_runtime).to eq nil
32
+ expect(rs.view_runtime).to be_nil
36
33
  end
37
34
  end
38
35
 
39
- describe '#controller' do
36
+ describe "#controller" do
40
37
  it "should return params['controller']" do
41
- rs = create_subject({params: {'controller' => 'foo'}})
42
- expect(rs.controller).to eq 'foo'
38
+ rs = create_subject({ params: { "controller" => "foo" } })
39
+ expect(rs.controller).to eq "foo"
43
40
  end
44
41
 
45
- it 'should return nil if no params are available' do
42
+ it "should return nil if no params are available" do
46
43
  rs = create_subject
47
- expect(rs.controller).to eq nil
44
+ expect(rs.controller).to be_nil
48
45
  end
49
46
 
50
- it 'should return nil if no controller is available on params' do
51
- rs = create_subject({params: {}})
52
- expect(rs.controller).to eq nil
47
+ it "should return nil if no controller is available on params" do
48
+ rs = create_subject({ params: {} })
49
+ expect(rs.controller).to be_nil
53
50
  end
54
51
  end
55
52
 
56
- describe '#action' do
53
+ describe "#action" do
57
54
  it "should return params['action']" do
58
- rs = create_subject({params: {'action' => 'index'}})
59
- expect(rs.action).to eq 'index'
55
+ rs = create_subject({ params: { "action" => "index" } })
56
+ expect(rs.action).to eq "index"
60
57
  end
61
58
 
62
- it 'should return nil if no params are available' do
59
+ it "should return nil if no params are available" do
63
60
  rs = create_subject
64
- expect(rs.action).to eq nil
61
+ expect(rs.action).to be_nil
65
62
  end
66
63
 
67
- it 'should return nil if no action is available on params' do
68
- rs = create_subject({params: {}})
69
- expect(rs.action).to eq nil
64
+ it "should return nil if no action is available on params" do
65
+ rs = create_subject({ params: {} })
66
+ expect(rs.action).to be_nil
70
67
  end
71
68
  end
72
69
 
73
- describe '#status' do
74
- it 'should return nil if status is not defined' do
70
+ describe "#status" do
71
+ it "should return nil if status is not defined" do
75
72
  rs = create_subject
76
- expect(rs.status).to eq nil
73
+ expect(rs.status).to be_nil
77
74
  end
78
75
 
79
- it 'should return HTTP status group if present' do
80
- expect(create_subject({status: 200}).status).to eq '2XX'
81
- expect(create_subject({status: 201}).status).to eq '2XX'
82
- expect(create_subject({status: 302}).status).to eq '3XX'
83
- expect(create_subject({status: 400}).status).to eq '4XX'
84
- expect(create_subject({status: 404}).status).to eq '4XX'
85
- expect(create_subject({status: 503}).status).to eq '5XX'
76
+ it "should return HTTP status group if present" do
77
+ expect(create_subject({ status: 200 }).status).to eq "2XX"
78
+ expect(create_subject({ status: 201 }).status).to eq "2XX"
79
+ expect(create_subject({ status: 302 }).status).to eq "3XX"
80
+ expect(create_subject({ status: 400 }).status).to eq "4XX"
81
+ expect(create_subject({ status: 404 }).status).to eq "4XX"
82
+ expect(create_subject({ status: 503 }).status).to eq "5XX"
86
83
  end
87
84
  end
88
85
 
89
- describe '#total' do
90
- it 'correctly calculates milliseconds from start, finish' do
91
- rs = create_subject({params: {}})
86
+ describe "#total" do
87
+ it "correctly calculates milliseconds from start, finish" do
88
+ rs = create_subject({ params: {} })
92
89
  # start and finish are in seconds
93
90
  expect(rs.total).to eq 1000
94
91
  end
95
92
 
96
- it 'defaults to zero if either start or finish are nil' do
97
- rs = InstStatsd::RequestStat.new('name', nil, 1001, 1111, {params: {}})
93
+ it "defaults to zero if either start or finish are nil" do
94
+ rs = InstStatsd::RequestStat.new("name", nil, 1001, 1111, { params: {} })
98
95
  expect(rs.total).to eq 0
99
- rs = InstStatsd::RequestStat.new('name', 1, nil, 1111, {params: {}})
96
+ rs = InstStatsd::RequestStat.new("name", 1, nil, 1111, { params: {} })
100
97
  expect(rs.total).to eq 0
101
98
  end
102
99
  end
103
100
 
104
- describe '#report' do
105
- it 'doesnt send stats when no controller or action' do
101
+ describe "#report" do
102
+ it "doesnt send stats when no controller or action" do
106
103
  statsd = InstStatsd::Statsd
107
- rs = create_subject({params: {}}, statsd)
108
- expect(statsd).to_not receive(:timing).with('request.foo.index', 1000, {short_stat: nil, tags: {}})
104
+ rs = create_subject({ params: {} }, statsd)
105
+ expect(statsd).not_to receive(:timing).with("request.foo.index", 1000, { short_stat: nil, tags: {} })
109
106
  rs.report
110
107
  end
111
108
 
112
- it 'sends total timing when controller && action are present, doesnt send db, or view if they are not' do
109
+ it "sends total timing when controller && action are present, doesnt send db, or view if they are not" do
113
110
  statsd = InstStatsd::Statsd
114
111
  payload = {
115
112
  params: {
116
- 'controller' => 'foo',
117
- 'action' => 'index'
113
+ "controller" => "foo",
114
+ "action" => "index"
118
115
  }
119
116
  }
120
117
  rs = create_subject(payload, statsd)
121
- expect(statsd).to receive(:timing).with('request.foo.index.total', 1000, {short_stat: ".total", tags: {}})
118
+ expect(statsd).to receive(:timing).with("request.foo.index.total", 1000, { short_stat: ".total", tags: {} })
122
119
  rs.report
123
120
  end
124
121
 
125
- it 'sends total timing when controller && action are present as tags for data dog' do
122
+ it "sends total timing when controller && action are present as tags for data dog" do
126
123
  statsd = InstStatsd::Statsd
127
124
  expect(statsd).to receive(:data_dog?).and_return true
128
125
  payload = {
129
126
  params: {
130
- 'controller' => 'foo',
131
- 'action' => 'index'
127
+ "controller" => "foo",
128
+ "action" => "index"
132
129
  },
133
130
  status: 200
134
131
  }
135
132
  rs = create_subject(payload, statsd)
136
- expect(statsd).to receive(:timing).with('request.total', 1000, {short_stat: 'request.total', tags: {action: "index", controller: "foo", status: '2XX'}} )
133
+ expect(statsd).to receive(:timing).with("request.total",
134
+ 1000,
135
+ { short_stat: "request.total",
136
+ tags: { action: "index", controller: "foo", status: "2XX" } })
137
137
  rs.report
138
138
  end
139
139
 
140
- it 'sends view_runtime and db_runtime when present' do
140
+ it "sends view_runtime and db_runtime when present" do
141
141
  statsd = InstStatsd::Statsd
142
142
  payload = {
143
143
  view_runtime: 70.1,
144
144
  db_runtime: 100.2,
145
145
  params: {
146
- 'controller' => 'foo',
147
- 'action' => 'index'
146
+ "controller" => "foo",
147
+ "action" => "index"
148
148
  }
149
149
  }
150
150
  rs = create_subject(payload, statsd)
151
- allow(statsd).to receive(:timing).with('request.foo.index.total', 1000, {short_stat: ".total", tags: {}})
152
- expect(statsd).to receive(:timing).with('request.foo.index.view', 70.1, {short_stat: ".view", tags: {}})
153
- expect(statsd).to receive(:timing).with('request.foo.index.db', 100.2, {short_stat: ".db", tags: {}})
151
+ allow(statsd).to receive(:timing).with("request.foo.index.total", 1000, { short_stat: ".total", tags: {} })
152
+ expect(statsd).to receive(:timing).with("request.foo.index.view", 70.1, { short_stat: ".view", tags: {} })
153
+ expect(statsd).to receive(:timing).with("request.foo.index.db", 100.2, { short_stat: ".db", tags: {} })
154
154
  rs.report
155
155
  end
156
156
 
157
- it 'sends cache_read_count when present' do
158
- statsd = InstStatsd::Statsd
159
- payload = {
160
- params: {
161
- 'controller' => 'foo',
162
- 'action' => 'index'
163
- }
164
- }
165
- end
166
-
167
- describe 'sql stats' do
168
-
169
- before :each do
157
+ describe "sql stats" do
158
+ before do
170
159
  @statsd = InstStatsd::Statsd
171
160
  payload = {
172
161
  params: {
173
- 'controller' => 'foo',
174
- 'action' => 'index'
162
+ "controller" => "foo",
163
+ "action" => "index"
175
164
  }
176
165
  }
177
166
  @rs = create_subject(payload, @statsd)
178
- @rs.stats['cache.read'] = 25
179
- expect(@statsd).to receive(:timing).with('request.foo.index.cache.read', 25, {short_stat: ".cache.read", tags: {}})
167
+ @rs.stats["cache.read"] = 25
168
+ expect(@statsd).to receive(:timing).with("request.foo.index.cache.read",
169
+ 25,
170
+ { short_stat: ".cache.read", tags: {} })
180
171
  end
181
172
 
182
- it 'doesnt send sql stats when they dont exist' do
183
- allow(@statsd).to receive(:timing).with('request.foo.index.total', 1000, {short_stat: nil, tags: {}})
184
- expect(@statsd).to_not receive(:timing).with('request.foo.index.sql.read', kind_of(Numeric), {short_stat: ".sql.read", tags: {}})
185
- expect(@statsd).to_not receive(:timing).with('request.foo.index.sql.write', kind_of(Numeric), {short_stat: ".sql.write", tags: {}})
186
- expect(@statsd).to_not receive(:timing).with('request.foo.index.sql.cache', kind_of(Numeric), {short_stat: ".sql.cache", tags: {}})
173
+ it "doesnt send sql stats when they dont exist" do
174
+ allow(@statsd).to receive(:timing).with("request.foo.index.total", 1000, { short_stat: nil, tags: {} })
175
+ expect(@statsd).not_to receive(:timing).with("request.foo.index.sql.read",
176
+ kind_of(Numeric),
177
+ { short_stat: ".sql.read", tags: {} })
178
+ expect(@statsd).not_to receive(:timing).with("request.foo.index.sql.write",
179
+ kind_of(Numeric),
180
+ { short_stat: ".sql.write", tags: {} })
181
+ expect(@statsd).not_to receive(:timing).with("request.foo.index.sql.cache",
182
+ kind_of(Numeric),
183
+ { short_stat: ".sql.cache", tags: {} })
187
184
  @rs.report
188
185
  end
189
186
 
190
- it 'sends sql_read_count when present' do
191
- @rs.stats['sql.read'] = 10
192
- allow(@statsd).to receive(:timing).with('request.foo.index.total', 1000, {short_stat: ".total", tags: {}})
193
- expect(@statsd).to receive(:timing).with('request.foo.index.sql.read', 10, {short_stat: ".sql.read", tags: {}})
187
+ it "sends sql_read_count when present" do
188
+ @rs.stats["sql.read"] = 10
189
+ allow(@statsd).to receive(:timing).with("request.foo.index.total", 1000, { short_stat: ".total", tags: {} })
190
+ expect(@statsd).to receive(:timing).with("request.foo.index.sql.read",
191
+ 10,
192
+ { short_stat: ".sql.read", tags: {} })
194
193
  @rs.report
195
194
  end
196
195
  end
197
-
198
196
  end
199
-
200
197
  end
@@ -1,16 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe InstStatsd::RequestTracking do
6
-
7
- describe '#enable' do
8
- it 'should delegate log messages to the optional logger' do
9
- log_double = double()
6
+ describe "#enable" do
7
+ it "should delegate log messages to the optional logger" do
8
+ log_double = instance_double(Logger)
10
9
  expect(log_double).to receive(:info)
11
10
  InstStatsd::RequestTracking.enable logger: log_double
12
- InstStatsd::RequestTracking.start_processing
13
- InstStatsd::RequestTracking.finalize_processing('name', 1000, 10001, 1234, {})
11
+ InstStatsd::RequestTracking.send(:start_processing)
12
+ InstStatsd::RequestTracking.send(:finalize_processing, "name", 1000, 10_001, 1234, {})
14
13
  end
15
14
  end
16
15
  end
@@ -1,30 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  module InstStatsd
6
6
  describe SqlTracker do
7
-
8
- describe '#start' do
9
- it 'resets values to zero' do
7
+ describe "#start" do
8
+ it "resets values to zero" do
10
9
  subject = SqlTracker.new
11
10
  subject.start
12
- subject.track 'CACHE', 'SELECT * FROM some_table'
11
+ subject.track "CACHE", "SELECT * FROM some_table"
13
12
  cookies = subject.start
14
13
  expect(subject.finalize_counts(cookies)).to eq([0, 0, 0])
15
14
  end
16
15
  end
17
16
 
18
- describe '#track' do
19
- before :each do
17
+ describe "#track" do
18
+ before do
20
19
  @subject = SqlTracker.new
21
20
  @cookies = @subject.start
22
21
  end
23
22
 
24
23
  def finish
25
- if @num_reads.nil?
26
- @num_reads, @num_writes, @num_caches = @subject.finalize_counts(@cookies)
27
- end
24
+ return unless @num_reads.nil?
25
+
26
+ @num_reads, @num_writes, @num_caches = @subject.finalize_counts(@cookies)
28
27
  end
29
28
 
30
29
  def num_reads
@@ -42,57 +41,56 @@ module InstStatsd
42
41
  @num_caches
43
42
  end
44
43
 
45
- it 'considers CACHE above all' do
46
- @subject.track 'CACHE', 'SELECT * FROM some_table'
44
+ it "considers CACHE above all" do
45
+ @subject.track "CACHE", "SELECT * FROM some_table"
47
46
  expect(num_caches).to eq(1)
48
47
  expect(num_reads).to eq(0)
49
48
  end
50
49
 
51
- it 'marks as read when select is in the first 15 chars of the sql' do
52
- @subject.track 'LOAD', ' SELECT "context_external_tools".* FROM'
50
+ it "marks as read when select is in the first 15 chars of the sql" do
51
+ @subject.track "LOAD", ' SELECT "context_external_tools".* FROM'
53
52
  expect(num_reads).to eq(1)
54
53
  expect(num_writes).to eq(0)
55
54
  end
56
55
 
57
- it 'marks as read with no select, but a LOAD name' do
58
- @subject.track 'LOAD', 'WITH RECURSIVE t AS'
56
+ it "marks as read with no select, but a LOAD name" do
57
+ @subject.track "LOAD", "WITH RECURSIVE t AS"
59
58
  expect(num_reads).to eq(1)
60
59
  expect(num_writes).to eq(0)
61
60
  end
62
61
 
63
- it 'doesnt track names set as blocked' do
64
- tracker = SqlTracker.new(blocked_names: ['SCHEMA'])
62
+ it "doesnt track names set as blocked" do
63
+ tracker = SqlTracker.new(blocked_names: ["SCHEMA"])
65
64
  cookies = tracker.start
66
- tracker.track 'SCHEMA', 'SELECT * FROM some_table'
65
+ tracker.track "SCHEMA", "SELECT * FROM some_table"
67
66
  expect(tracker.finalize_counts(cookies)[0]).to eq(0)
68
67
  end
69
68
 
70
- it 'doesnt track nil names or sql values' do
71
- @subject.track nil, 'SELECT *'
72
- @subject.track 'CACHE', nil
69
+ it "doesnt track nil names or sql values" do
70
+ @subject.track nil, "SELECT *"
71
+ @subject.track "CACHE", nil
73
72
  expect(num_reads).to eq(0)
74
73
  end
75
74
 
76
- it 'passes full sql to counter.track calls for reads' do
77
- sql = ' SELECT \'context_external_tools\'.* FROM'
78
- read_counter = double()
75
+ it "passes full sql to counter.track calls for reads" do
76
+ sql = " SELECT 'context_external_tools'.* FROM"
77
+ read_counter = double
79
78
  allow(read_counter).to receive(:start)
80
79
  expect(read_counter).to receive(:track).with sql
81
80
  tracker = SqlTracker.new(read_counter: read_counter)
82
81
  tracker.start
83
- tracker.track 'LOAD', sql
82
+ tracker.track "LOAD", sql
84
83
  end
85
84
 
86
- it 'passes full sql to counter.track calls for writes' do
87
- sql = ' UPDATE \'context_external_tools\'.* FROM'
88
- write_counter = double()
85
+ it "passes full sql to counter.track calls for writes" do
86
+ sql = " UPDATE 'context_external_tools'.* FROM"
87
+ write_counter = double
89
88
  allow(write_counter).to receive(:start)
90
89
  expect(write_counter).to receive(:track).with sql
91
90
  tracker = SqlTracker.new(write_counter: write_counter)
92
91
  tracker.start
93
- tracker.track 'UPDATE', sql
92
+ tracker.track "UPDATE", sql
94
93
  end
95
94
  end
96
-
97
95
  end
98
96
  end