fastly_nsq 1.16.0 → 1.18.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (54) hide show
  1. checksums.yaml +4 -4
  2. data/.env +2 -2
  3. data/.git-blame-ignore-revs +6 -0
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +4 -3
  6. data/ChangeLog.md +31 -1
  7. data/Gemfile +8 -8
  8. data/README.md +84 -6
  9. data/Rakefile +10 -11
  10. data/fastly_nsq.gemspec +26 -26
  11. data/lib/fastly_nsq/cli.rb +43 -50
  12. data/lib/fastly_nsq/consumer.rb +27 -14
  13. data/lib/fastly_nsq/feeder.rb +5 -7
  14. data/lib/fastly_nsq/http/nsqd.rb +28 -28
  15. data/lib/fastly_nsq/http/nsqlookupd.rb +11 -11
  16. data/lib/fastly_nsq/http.rb +4 -4
  17. data/lib/fastly_nsq/launcher.rb +16 -16
  18. data/lib/fastly_nsq/listener.rb +16 -16
  19. data/lib/fastly_nsq/manager.rb +13 -12
  20. data/lib/fastly_nsq/message.rb +4 -4
  21. data/lib/fastly_nsq/messenger.rb +25 -15
  22. data/lib/fastly_nsq/new_relic.rb +8 -8
  23. data/lib/fastly_nsq/priority_queue.rb +2 -2
  24. data/lib/fastly_nsq/priority_thread_pool.rb +3 -3
  25. data/lib/fastly_nsq/producer.rb +23 -14
  26. data/lib/fastly_nsq/safe_thread.rb +1 -1
  27. data/lib/fastly_nsq/testing.rb +4 -3
  28. data/lib/fastly_nsq/tls_options.rb +6 -6
  29. data/lib/fastly_nsq/version.rb +1 -1
  30. data/lib/fastly_nsq.rb +64 -29
  31. data/spec/cli_spec.rb +2 -2
  32. data/spec/consumer_spec.rb +53 -12
  33. data/spec/fastly_nsq_spec.rb +108 -32
  34. data/spec/feeder_spec.rb +4 -4
  35. data/spec/http/nsqd_spec.rb +23 -23
  36. data/spec/http/nsqlookupd_spec.rb +19 -19
  37. data/spec/http_spec.rb +22 -22
  38. data/spec/integration_spec.rb +10 -10
  39. data/spec/launcher_spec.rb +21 -21
  40. data/spec/listener_spec.rb +50 -50
  41. data/spec/manager_spec.rb +27 -27
  42. data/spec/matchers/delegate.rb +4 -4
  43. data/spec/message_spec.rb +19 -19
  44. data/spec/messenger_spec.rb +71 -59
  45. data/spec/new_relic.rb +27 -27
  46. data/spec/priority_thread_pool_spec.rb +2 -2
  47. data/spec/producer_spec.rb +70 -31
  48. data/spec/spec_helper.rb +12 -12
  49. data/spec/support/http.rb +2 -2
  50. data/spec/support/webmock.rb +1 -1
  51. data/spec/testing_spec.rb +12 -12
  52. data/spec/tls_options_spec.rb +47 -47
  53. metadata +10 -11
  54. data/.rubocop.yml +0 -68
data/spec/manager_spec.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe FastlyNsq::Manager do
6
- let!(:topic) { 'fnsq' }
7
- let!(:channel) { 'fnsq' }
6
+ let!(:topic) { "fnsq" }
7
+ let!(:channel) { "fnsq" }
8
8
 
9
9
  subject { FastlyNsq.manager }
10
10
 
@@ -14,33 +14,33 @@ RSpec.describe FastlyNsq::Manager do
14
14
 
15
15
  it { should_not be_stopped }
16
16
 
17
- describe '#initialize' do
18
- it 'allows max_threads to be specified' do
17
+ describe "#initialize" do
18
+ it "allows max_threads to be specified" do
19
19
  max_threads = FastlyNsq.max_processing_pool_threads * 2
20
20
  manager = described_class.new(max_threads: max_threads)
21
21
 
22
22
  expect(manager.pool.max_threads).to eq(max_threads)
23
23
  end
24
24
 
25
- it 'defaults max_threads to FastlyNsq.max_processing_pool_threads' do
25
+ it "defaults max_threads to FastlyNsq.max_processing_pool_threads" do
26
26
  expect(subject.pool.max_threads).to eq(FastlyNsq.max_processing_pool_threads)
27
27
  end
28
28
 
29
- it 'allows fallback_policy to be specified' do
29
+ it "allows fallback_policy to be specified" do
30
30
  manager = described_class.new(fallback_policy: :abort)
31
31
 
32
32
  expect(manager.pool.fallback_policy).to eq(:abort)
33
33
  end
34
34
 
35
- it 'defaults fallback_policy to caller_runs' do
35
+ it "defaults fallback_policy to caller_runs" do
36
36
  expect(subject.pool.fallback_policy).to eq(:caller_runs)
37
37
  end
38
38
 
39
- it 'defaults logger to FastlyNsq.logger' do
39
+ it "defaults logger to FastlyNsq.logger" do
40
40
  expect(subject.logger).to eq(FastlyNsq.logger)
41
41
  end
42
42
 
43
- it 'allows logger to be specified' do
43
+ it "allows logger to be specified" do
44
44
  logger = Logger.new(nil)
45
45
  manager = described_class.new(logger: logger)
46
46
 
@@ -48,39 +48,39 @@ RSpec.describe FastlyNsq::Manager do
48
48
  end
49
49
  end
50
50
 
51
- context 'with a listener' do
51
+ context "with a listener" do
52
52
  let!(:listener) { FastlyNsq::Listener.new(topic: topic, channel: channel, processor: ->(*) {}) }
53
53
  before { expect { listener }.to eventually(be_connected).within(5) }
54
54
 
55
- it 'tracks listener' do
55
+ it "tracks listener" do
56
56
  expect(subject.listeners).to contain_exactly(listener)
57
57
  end
58
58
 
59
- it 'tracks topic listeners' do
59
+ it "tracks topic listeners" do
60
60
  expect(subject.topic_listeners).to eq(topic => listener)
61
61
  end
62
62
 
63
- it 'tracks topics' do
63
+ it "tracks topics" do
64
64
  expect(subject.topics).to contain_exactly(topic)
65
65
  end
66
66
 
67
- describe '#terminate' do
68
- it 'terminates listeners' do
67
+ describe "#terminate" do
68
+ it "terminates listeners" do
69
69
  expect { subject.terminate(2) }.to change(listener, :connected?).to(false)
70
70
  end
71
71
 
72
- it 'terminates the processing pool' do
72
+ it "terminates the processing pool" do
73
73
  expect { subject.terminate(2) }.to change(subject.pool, :shutdown?).to(true)
74
74
  end
75
75
 
76
- it 'stops' do
77
- expect { subject.terminate(2) } .to change(subject, :stopped?).from(false).to(true)
76
+ it "stops" do
77
+ expect { subject.terminate(2) }.to change(subject, :stopped?).from(false).to(true)
78
78
  end
79
79
 
80
- context 'when the pool does not terminate within a the specified timeframe' do
80
+ context "when the pool does not terminate within a the specified timeframe" do
81
81
  before { expect(subject.pool).to receive(:shutdown).and_return(false) }
82
82
 
83
- it 'kills the pool' do
83
+ it "kills the pool" do
84
84
  expect(subject.pool).to receive(:kill).once.and_call_original
85
85
 
86
86
  expect { subject.terminate(0.1) }.to change(subject.pool, :shutdown?).to(true)
@@ -89,19 +89,19 @@ RSpec.describe FastlyNsq::Manager do
89
89
  end
90
90
  end
91
91
 
92
- it 'transfers' do
92
+ it "transfers" do
93
93
  manager = described_class.new
94
94
 
95
95
  listener = nil
96
96
  # register listener with default manager
97
- expect { listener = FastlyNsq::Listener.new(topic: topic, channel: channel, processor: ->(*) {}) }.
98
- to change { FastlyNsq.manager.listeners.size }.by(1)
97
+ expect { listener = FastlyNsq::Listener.new(topic: topic, channel: channel, processor: ->(*) {}) }
98
+ .to change { FastlyNsq.manager.listeners.size }.by(1)
99
99
  expect { listener }.to eventually(be_connected).within(5)
100
100
 
101
101
  # transfer listener to new manager
102
- expect { FastlyNsq.manager.transfer(manager) }.
103
- to change { manager.listeners.size }.by(1).
104
- and change { FastlyNsq.manager.listeners.size }.by(-1)
102
+ expect { FastlyNsq.manager.transfer(manager) }
103
+ .to change { manager.listeners.size }.by(1)
104
+ .and change { FastlyNsq.manager.listeners.size }.by(-1)
105
105
 
106
106
  # old manager processing is disabled
107
107
  expect(FastlyNsq.manager.pool).to be_shutdown
@@ -9,22 +9,22 @@ RSpec::Matchers.define :delegate do |method|
9
9
  rescue NoMethodError
10
10
  raise "#{@delegator} does not respond to #{@to}!"
11
11
  end
12
- allow(@delegator).to receive(@to).and_return(double('receiver', method => :called))
12
+ allow(@delegator).to receive(@to).and_return(double("receiver", method => :called))
13
13
  actual = (@delegator.send(@method) == :called)
14
14
  allow(@delegator).to receive(@to).and_call_original # unstub
15
15
  actual
16
16
  end
17
17
 
18
18
  description do
19
- "delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}"
19
+ "delegate :#{@method} to its #{@to}#{@prefix ? " with prefix" : ""}"
20
20
  end
21
21
 
22
22
  failure_message do |_text|
23
- "expected #{@delegator} to delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}"
23
+ "expected #{@delegator} to delegate :#{@method} to its #{@to}#{@prefix ? " with prefix" : ""}"
24
24
  end
25
25
 
26
26
  failure_message_when_negated do |_text|
27
- "expected #{@delegator} not to delegate :#{@method} to its #{@to}#{@prefix ? ' with prefix' : ''}"
27
+ "expected #{@delegator} not to delegate :#{@method} to its #{@to}#{@prefix ? " with prefix" : ""}"
28
28
  end
29
29
 
30
30
  chain(:to) { |receiver| @to = receiver }
data/spec/message_spec.rb CHANGED
@@ -1,35 +1,35 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
4
- require 'json'
3
+ require "spec_helper"
4
+ require "json"
5
5
 
6
6
  RSpec.describe FastlyNsq::Message do
7
- let(:nsq_message) { double 'Nsq::Message', body: json_body, attempts: 1, finish: nil, requeue: nil, touch: nil, timestamp: nil, id: nil }
8
- let(:body) { { 'data' => 'goes here', 'other_field' => 'is over here', 'meta' => 'meta stuff' } }
9
- let(:json_body) { body.to_json }
10
- subject { FastlyNsq::Message.new nsq_message }
7
+ let(:nsq_message) { double "Nsq::Message", body: json_body, attempts: 1, finish: nil, requeue: nil, touch: nil, timestamp: nil, id: nil }
8
+ let(:body) { {"data" => "goes here", "other_field" => "is over here", "meta" => "meta stuff"} }
9
+ let(:json_body) { body.to_json }
10
+ subject { FastlyNsq::Message.new nsq_message }
11
11
 
12
- it 'preserves original message body as raw_body' do
12
+ it "preserves original message body as raw_body" do
13
13
  expect(subject.raw_body).to eq(json_body)
14
14
  end
15
15
 
16
- it 'presents parsed message body as body' do
16
+ it "presents parsed message body as body" do
17
17
  expect(subject.body).to eq(body)
18
18
  end
19
19
 
20
- it 'plucks data as data' do
21
- expect(subject.data).to eq('goes here')
20
+ it "plucks data as data" do
21
+ expect(subject.data).to eq("goes here")
22
22
  end
23
23
 
24
- it 'plucks meta as meta' do
25
- expect(subject.meta).to eq(body['meta'])
24
+ it "plucks meta as meta" do
25
+ expect(subject.meta).to eq(body["meta"])
26
26
  end
27
27
 
28
- it 'aliases raw_body to to_s' do
28
+ it "aliases raw_body to to_s" do
29
29
  expect(subject.to_s).to eq(json_body)
30
30
  end
31
31
 
32
- it 'delegates methods to the nsq_message object' do
32
+ it "delegates methods to the nsq_message object" do
33
33
  %w[attempts finish requeue touch timestamp id].each do |method|
34
34
  subject = FastlyNsq::Message.new nsq_message
35
35
  expect(nsq_message).to receive(method)
@@ -38,7 +38,7 @@ RSpec.describe FastlyNsq::Message do
38
38
  end
39
39
  end
40
40
 
41
- it 'does not finish if the message was requeued' do
41
+ it "does not finish if the message was requeued" do
42
42
  expect(nsq_message).to receive(:requeue).with(1000)
43
43
  expect(nsq_message).not_to receive(:finish)
44
44
 
@@ -48,7 +48,7 @@ RSpec.describe FastlyNsq::Message do
48
48
  expect(subject.managed).to eq(:requeued)
49
49
  end
50
50
 
51
- it 'does not requeue if the message was finished' do
51
+ it "does not requeue if the message was finished" do
52
52
  expect(nsq_message).to receive(:finish)
53
53
  expect(nsq_message).not_to receive(:requeue)
54
54
 
@@ -58,19 +58,19 @@ RSpec.describe FastlyNsq::Message do
58
58
  expect(subject.managed).to eq(:finished)
59
59
  end
60
60
 
61
- it 'uses the passed timeout for the requeue timeout' do
61
+ it "uses the passed timeout for the requeue timeout" do
62
62
  expect(nsq_message).to receive(:requeue).with(1000)
63
63
 
64
64
  subject.requeue(1000)
65
65
  end
66
66
 
67
- it 'uses exponential backoff for timeout if none is given' do
67
+ it "uses exponential backoff for timeout if none is given" do
68
68
  expect(nsq_message).to receive(:requeue).with(46_000..166_000)
69
69
 
70
70
  subject.requeue
71
71
  end
72
72
 
73
- it 'uses the FastlyNsq.max_req_timeout it timeout is larger than FastlyNsq.max_req_timeout' do
73
+ it "uses the FastlyNsq.max_req_timeout it timeout is larger than FastlyNsq.max_req_timeout" do
74
74
  expect(nsq_message).to receive(:requeue).with(60 * 60 * 1_000)
75
75
 
76
76
  subject.requeue(60 * 60 * 4 * 1_000)
@@ -1,23 +1,22 @@
1
-
2
1
  # frozen_string_literal: true
3
2
 
4
- require 'spec_helper'
5
- require 'json'
3
+ require "spec_helper"
4
+ require "json"
6
5
 
7
6
  RSpec.describe FastlyNsq::Messenger do
8
- let(:message) { { sample: 'sample', message: 'message' } }
9
- let(:message2) { { sample: 'elpmas', message: 'egassem' } }
10
- let(:producer) { double 'FastlyNsq::Producer', write: nil, terminate: :terminated }
11
- let(:origin) { 'originating_service' }
12
- let(:sent_at) { Time.now.iso8601(5) }
7
+ let(:message) { {sample: "sample", message: "message"} }
8
+ let(:message2) { {sample: "elpmas", message: "egassem"} }
9
+ let(:producer) { double "FastlyNsq::Producer", write: nil, terminate: :terminated }
10
+ let(:origin) { "originating_service" }
11
+ let(:sent_at) { Time.now.iso8601(5) }
13
12
 
14
13
  let(:expected_attributes) do
15
14
  {
16
15
  data: message,
17
16
  meta: {
18
- originating_service: 'originating_service',
19
- sent_at: sent_at,
20
- },
17
+ originating_service: "originating_service",
18
+ sent_at: sent_at
19
+ }
21
20
  }
22
21
  end
23
22
 
@@ -27,87 +26,100 @@ RSpec.describe FastlyNsq::Messenger do
27
26
  FastlyNsq::Messenger.instance_variable_set(:@producers, nil)
28
27
  end
29
28
 
30
- describe '#deliver' do
29
+ describe "#deliver" do
31
30
  before { Timecop.freeze(sent_at) }
32
31
 
33
- it 'writes a single message on a producer' do
34
- subject.producers['topic'] = producer
32
+ it "writes a single message on a producer" do
33
+ subject.producers["topic"] = producer
35
34
 
36
- subject.deliver message: message, topic: 'topic', originating_service: origin
35
+ subject.deliver message: message, topic: "topic", originating_service: origin
37
36
 
38
37
  expect(producer).to have_received(:write).with(expected_attributes.to_json)
39
38
  end
40
39
 
41
- it 'uses a Unknown for the default originating_service' do
42
- subject.producers['topic'] = producer
43
- expected_attributes[:meta][:originating_service] = 'Unknown'
40
+ it "uses a Unknown for the default originating_service" do
41
+ subject.producers["topic"] = producer
42
+ expected_attributes[:meta][:originating_service] = "Unknown"
44
43
 
45
- subject.deliver message: message, topic: 'topic'
44
+ subject.deliver message: message, topic: "topic"
46
45
 
47
46
  expect(producer).to have_received(:write).with(expected_attributes.to_json)
48
47
  end
49
48
 
50
- it 'allows setting arbitrary metadata' do
51
- meta = { test: 'test' }
49
+ it "allows setting arbitrary metadata" do
50
+ meta = {test: "test"}
52
51
 
53
- expected_attributes = { data: message, meta: meta.merge(originating_service: origin, sent_at: sent_at) }
52
+ expected_attributes = {data: message, meta: meta.merge(originating_service: origin, sent_at: sent_at)}
54
53
 
55
- subject.producers['topic'] = producer
54
+ subject.producers["topic"] = producer
56
55
 
57
- subject.deliver message: message, topic: 'topic', meta: meta, originating_service: origin
56
+ subject.deliver message: message, topic: "topic", meta: meta, originating_service: origin
58
57
 
59
58
  expect(producer).to have_received(:write).with(expected_attributes.to_json)
60
59
  end
61
60
 
62
- it 'prevents originating_service from being overwritten by meta' do
63
- meta = { test: 'test' }
61
+ it "prevents originating_service from being overwritten by meta" do
62
+ meta = {test: "test"}
63
+
64
+ expected_attributes = {data: message, meta: meta.merge(originating_service: origin, sent_at: sent_at)}
65
+
66
+ meta[:originating_service] = "other_service"
67
+
68
+ subject.producers["topic"] = producer
69
+
70
+ subject.deliver message: message, topic: "topic", meta: meta, originating_service: origin
71
+
72
+ expect(producer).to have_received(:write).with(expected_attributes.to_json)
73
+ end
64
74
 
65
- expected_attributes = { data: message, meta: meta.merge(originating_service: origin, sent_at: sent_at) }
75
+ it "can set the sent_at in the metadata" do
76
+ sent_at = Time.parse("2020-06-08 23:42:42")
77
+ meta = {}
66
78
 
67
- meta[:originating_service] = 'other_service'
79
+ expected_attributes = {data: message, meta: meta.merge(originating_service: origin, sent_at: sent_at.iso8601(5))}
68
80
 
69
- subject.producers['topic'] = producer
81
+ subject.producers["topic"] = producer
70
82
 
71
- subject.deliver message: message, topic: 'topic', meta: meta, originating_service: origin
83
+ subject.deliver message: message, topic: "topic", sent_at: sent_at, meta: meta, originating_service: origin
72
84
 
73
85
  expect(producer).to have_received(:write).with(expected_attributes.to_json)
74
86
  end
75
87
  end
76
88
 
77
- describe '#deliver_multi' do
89
+ describe "#deliver_multi" do
78
90
  let(:expected_attributes_multi) do
79
91
  [
80
92
  expected_attributes.to_json,
81
93
  {
82
94
  data: message2,
83
95
  meta: {
84
- originating_service: 'originating_service',
85
- sent_at: sent_at,
86
- },
87
- }.to_json,
96
+ originating_service: "originating_service",
97
+ sent_at: sent_at
98
+ }
99
+ }.to_json
88
100
  ]
89
101
  end
90
102
  before { Timecop.freeze(sent_at) }
91
103
 
92
- it 'writes an array of messages on a producer' do
93
- subject.producers['topic'] = producer
104
+ it "writes an array of messages on a producer" do
105
+ subject.producers["topic"] = producer
94
106
 
95
- subject.deliver_multi messages: [message, message2], topic: 'topic', originating_service: origin
107
+ subject.deliver_multi messages: [message, message2], topic: "topic", originating_service: origin
96
108
 
97
109
  expect(producer).to have_received(:write).with(expected_attributes_multi)
98
110
  end
99
111
  end
100
112
 
101
- describe '#originating_service=' do
113
+ describe "#originating_service=" do
102
114
  before { Timecop.freeze(sent_at) }
103
115
 
104
116
  it "set's the default originating service" do
105
- subject.producers['nanotopic'] = producer
106
- service = 'nano service'
117
+ subject.producers["nanotopic"] = producer
118
+ service = "nano service"
107
119
  subject.originating_service = service
108
120
  expected_attributes[:meta][:originating_service] = service
109
121
 
110
- subject.deliver message: message, topic: 'nanotopic'
122
+ subject.deliver message: message, topic: "nanotopic"
111
123
 
112
124
  expect(producer).to have_received(:write).with(expected_attributes.to_json)
113
125
 
@@ -116,42 +128,42 @@ RSpec.describe FastlyNsq::Messenger do
116
128
  end
117
129
  end
118
130
 
119
- describe '#producer_for' do
120
- it 'returns an FastlyNsq::Producer for the given topic' do
121
- my_producer = subject.producer_for(topic: 'my_topic')
131
+ describe "#producer_for" do
132
+ it "returns an FastlyNsq::Producer for the given topic" do
133
+ my_producer = subject.producer_for(topic: "my_topic")
122
134
  expect(my_producer).to be_a(FastlyNsq::Producer)
123
135
  end
124
136
 
125
- it 'persists producers' do
126
- subject.producers['topic'] = producer
137
+ it "persists producers" do
138
+ subject.producers["topic"] = producer
127
139
 
128
- my_producer = subject.producer_for(topic: 'topic')
140
+ my_producer = subject.producer_for(topic: "topic")
129
141
 
130
142
  expect(my_producer).to eq(producer)
131
143
  end
132
144
  end
133
145
 
134
- describe '#terminate_producer' do
146
+ describe "#terminate_producer" do
135
147
  before do
136
- subject.producers['topic'] = producer
137
- subject.terminate_producer(topic: 'topic')
148
+ subject.producers["topic"] = producer
149
+ subject.terminate_producer(topic: "topic")
138
150
  end
139
151
 
140
- it 'terminates a producer' do
152
+ it "terminates a producer" do
141
153
  expect(producer).to have_received(:terminate)
142
154
  end
143
155
 
144
- it 'removes the producer from the persisted producers' do
145
- expect(subject.producers.key?('topic')).to be(false)
156
+ it "removes the producer from the persisted producers" do
157
+ expect(subject.producers.key?("topic")).to be(false)
146
158
  end
147
159
  end
148
160
 
149
- describe '#terminate_all_producers' do
150
- let(:producer_2) { double 'FastlyNsq::Producer', write: nil, terminate: :terminated }
161
+ describe "#terminate_all_producers" do
162
+ let(:producer_2) { double "FastlyNsq::Producer", write: nil, terminate: :terminated }
151
163
 
152
- it 'terminates all the producers and resets the hash or producers' do
153
- subject.producers['topic'] = producer
154
- subject.producers['topic_2'] = producer_2
164
+ it "terminates all the producers and resets the hash or producers" do
165
+ subject.producers["topic"] = producer
166
+ subject.producers["topic_2"] = producer_2
155
167
 
156
168
  subject.terminate_all_producers
157
169
 
data/spec/new_relic.rb CHANGED
@@ -1,29 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe FastlyNsq::NewRelic do
6
- let(:agent) { double 'NewRelic::Agent', notice_error: true }
6
+ let(:agent) { double "NewRelic::Agent", notice_error: true }
7
7
  let(:tracer) { FastlyNsq::NewRelic.new(agent) }
8
8
 
9
- describe '#enabled?' do
10
- it 'returns false unless NewRelic is loaded' do
11
- allow(Object).to receive(:const_defined?).with('NewRelic').and_return(false)
9
+ describe "#enabled?" do
10
+ it "returns false unless NewRelic is loaded" do
11
+ allow(Object).to receive(:const_defined?).with("NewRelic").and_return(false)
12
12
  expect(tracer.enabled?).to be false
13
13
  end
14
14
 
15
- it 'returns true id NewRelic is loaded' do
15
+ it "returns true id NewRelic is loaded" do
16
16
  expect(tracer.enabled?).to be true
17
17
  end
18
18
  end
19
19
 
20
- context 'enabled' do
20
+ context "enabled" do
21
21
  before do
22
- allow(Object).to receive(:const_defined?).with('NewRelic').and_return(true)
22
+ allow(Object).to receive(:const_defined?).with("NewRelic").and_return(true)
23
23
  end
24
24
 
25
- describe '#notice_error' do
26
- it 'call agent.notice_error' do
25
+ describe "#notice_error" do
26
+ it "call agent.notice_error" do
27
27
  ex = Exception.new
28
28
 
29
29
  tracer.notice_error(ex)
@@ -31,34 +31,34 @@ RSpec.describe FastlyNsq::NewRelic do
31
31
  end
32
32
  end
33
33
 
34
- describe '#trace_with_newrelic' do
35
- it 'calls perform_action_with_newrelic_trace and yields' do
34
+ describe "#trace_with_newrelic" do
35
+ it "calls perform_action_with_newrelic_trace and yields" do
36
36
  allow(tracer).to receive(:perform_action_with_newrelic_trace).and_yield
37
37
 
38
38
  expect { |b| tracer.trace_with_newrelic({}, &b) }.to yield_control
39
39
  expect(tracer).to have_received(:perform_action_with_newrelic_trace)
40
40
  end
41
41
 
42
- it 'calls perform_action_with_newrelic_trace with trace_args' do
43
- params = { id: 1, vp: 'joe biden' }
42
+ it "calls perform_action_with_newrelic_trace with trace_args" do
43
+ params = {id: 1, vp: "joe biden"}
44
44
 
45
45
  expected = {
46
- name: 'call',
46
+ name: "call",
47
47
  category: FastlyNsq::NewRelic::CATEGORY,
48
48
  params: params,
49
- class_name: 'SomeClass',
49
+ class_name: "SomeClass"
50
50
  }
51
51
 
52
52
  allow(tracer).to receive(:perform_action_with_newrelic_trace).and_yield
53
- expect { |b| tracer.trace_with_newrelic(params: params, class_name: 'SomeClass', &b) }.to yield_control
53
+ expect { |b| tracer.trace_with_newrelic(params: params, class_name: "SomeClass", &b) }.to yield_control
54
54
 
55
55
  expect(tracer).to have_received(:perform_action_with_newrelic_trace).with(expected)
56
56
  end
57
57
 
58
- it 'always sends the default trace args' do
58
+ it "always sends the default trace args" do
59
59
  expected = {
60
- name: 'call',
61
- category: FastlyNsq::NewRelic::CATEGORY,
60
+ name: "call",
61
+ category: FastlyNsq::NewRelic::CATEGORY
62
62
  }
63
63
  allow(tracer).to receive(:perform_action_with_newrelic_trace).and_yield
64
64
 
@@ -69,19 +69,19 @@ RSpec.describe FastlyNsq::NewRelic do
69
69
  end
70
70
  end
71
71
 
72
- context 'disabled' do
72
+ context "disabled" do
73
73
  before do
74
- allow(Object).to receive(:const_defined?).with('NewRelic').and_return(false)
74
+ allow(Object).to receive(:const_defined?).with("NewRelic").and_return(false)
75
75
  end
76
76
 
77
- describe '#notice_error' do
78
- it 'returns nil' do
79
- expect(tracer.notice_error('ex')).to be nil
77
+ describe "#notice_error" do
78
+ it "returns nil" do
79
+ expect(tracer.notice_error("ex")).to be nil
80
80
  end
81
81
  end
82
82
 
83
- describe '#trace_with_newrelic' do
84
- it 'yields' do
83
+ describe "#trace_with_newrelic" do
84
+ it "yields" do
85
85
  allow(tracer).to receive(:perform_action_with_newrelic_trace)
86
86
 
87
87
  expect { |b| tracer.trace_with_newrelic({}, &b) }.to yield_control
@@ -1,13 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe FastlyNsq::PriorityThreadPool do
6
6
  let!(:pool) { described_class.new(max_threads: 1) }
7
7
 
8
8
  after { pool.shutdown || pool.wait_for_termination }
9
9
 
10
- it 'executes work based on supplied priority' do
10
+ it "executes work based on supplied priority" do
11
11
  actual = []
12
12
  count = 10
13
13
  count.times { |i| pool.post(i) { actual << i } }