spec/sidekiq/middleware/server/datadog_spec.rb in sidekiq-datadog-0.4.1 vs spec/sidekiq/middleware/server/datadog_spec.rb in sidekiq-datadog-0.5.0
- old
+ new
@@ -2,58 +2,73 @@
describe Sidekiq::Middleware::Server::Datadog do
let(:statsd) { Mock::Statsd.new('localhost', 55555) }
let(:worker) { Mock::Worker.new }
- let(:tags) {
- ["custom:tag", lambda{|w, *| "worker:#{w.class.name[1..2]}" }]
- }
+ let(:tags) do
+ ['custom:tag', ->(w, *) { "worker:#{w.class.name[1..2]}" }]
+ end
+ let(:options) { {} }
- before { statsd.written.clear }
- subject { described_class.new hostname: "test.host", statsd: statsd, tags: tags }
+ before { statsd.messages.clear }
+ subject { described_class.new(hostname: 'test.host', statsd: statsd, tags: tags, **options) }
it 'should send an increment and timing event for each job run' do
- subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') { "ok" }
- expect(statsd.written).to eq([
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
- "sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
+ subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') { 'ok' }
+ expect(statsd.messages).to eq([
+ 'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
+ 'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
+ 'sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
])
end
it 'should support wrappers' do
- subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'wrapped' => 'wrap'}, nil) { "ok" }
- expect(statsd.written).to eq([
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
- "sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok",
+ subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'wrapped' => 'wrap' }, nil) { 'ok' }
+ expect(statsd.messages).to eq([
+ 'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
+ 'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
+ 'sidekiq.job.queued_time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:wrap,status:ok',
])
end
it 'should handle errors' do
expect(lambda {
- subject.call(worker, {}, nil) { raise RuntimeError, "doh!" }
- }).to raise_error("doh!")
+ subject.call(worker, {}, nil) { raise 'doh!' }
+ }).to raise_error('doh!')
- expect(statsd.written).to eq([
- "sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime",
- "sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime",
+ expect(statsd.messages).to eq([
+ 'sidekiq.job:1|c|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime',
+ 'sidekiq.job.time:333|ms|#custom:tag,worker:oc,host:test.host,env:test,name:mock/worker,status:error,error:runtime',
])
end
context 'with a dynamic tag list' do
- let(:tags) {
- ["custom:tag", lambda {|w, j, *| j['args'].map { |n| "arg:#{n}"} }]
- }
+ let(:tags) do
+ ['custom:tag', ->(_w, j, *) { j['args'].map {|n| "arg:#{n}" } }]
+ end
it 'should generate the correct tags' do
- subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'args' => [1, 2] }, 'default') { "ok" }
+ subject.call(worker, { 'enqueued_at' => 1461881794.9312189, 'args' => [1, 2] }, 'default') { 'ok' }
- expect(statsd.written).to eq([
- "sidekiq.job:1|c|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
- "sidekiq.job.time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok",
- "sidekiq.job.queued_time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok"
+ expect(statsd.messages).to eq([
+ 'sidekiq.job:1|c|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
+ 'sidekiq.job.time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
+ 'sidekiq.job.queued_time:333|ms|#custom:tag,arg:1,arg:2,host:test.host,env:test,name:mock/worker,queue:default,status:ok',
])
end
end
+ context 'with a list of skipped tags' do
+ let(:tags) { [] }
+ let(:options) { { skip_tags: %i[env host name] } }
+
+ it 'should send metrics without the skipped tags' do
+ subject.call(worker, { 'enqueued_at' => 1461881794.9312189 }, 'default') { 'ok' }
+
+ expect(statsd.messages).to eq([
+ 'sidekiq.job:1|c|#queue:default,status:ok',
+ 'sidekiq.job.time:333|ms|#queue:default,status:ok',
+ 'sidekiq.job.queued_time:333|ms|#queue:default,status:ok',
+ ])
+ end
+ end
end