appsignal 3.9.3 → 3.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +22 -19
- data/.rubocop.yml +1 -1
- data/CHANGELOG.md +180 -0
- data/Gemfile +1 -0
- data/README.md +0 -1
- data/Rakefile +1 -1
- data/benchmark.rake +99 -42
- data/build_matrix.yml +10 -12
- data/gemfiles/webmachine1.gemfile +5 -4
- data/lib/appsignal/cli/demo.rb +0 -1
- data/lib/appsignal/config.rb +57 -97
- data/lib/appsignal/demo.rb +15 -20
- data/lib/appsignal/environment.rb +6 -1
- data/lib/appsignal/event_formatter/rom/sql_formatter.rb +1 -0
- data/lib/appsignal/event_formatter.rb +3 -2
- data/lib/appsignal/helpers/instrumentation.rb +490 -16
- data/lib/appsignal/hooks/action_cable.rb +21 -16
- data/lib/appsignal/hooks/active_job.rb +15 -14
- data/lib/appsignal/hooks/delayed_job.rb +1 -1
- data/lib/appsignal/hooks/shoryuken.rb +3 -63
- data/lib/appsignal/integrations/action_cable.rb +5 -7
- data/lib/appsignal/integrations/active_support_notifications.rb +1 -0
- data/lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb +36 -35
- data/lib/appsignal/integrations/data_mapper.rb +1 -0
- data/lib/appsignal/integrations/delayed_job_plugin.rb +27 -33
- data/lib/appsignal/integrations/dry_monitor.rb +1 -0
- data/lib/appsignal/integrations/excon.rb +1 -0
- data/lib/appsignal/integrations/http.rb +1 -0
- data/lib/appsignal/integrations/net_http.rb +1 -0
- data/lib/appsignal/integrations/object.rb +6 -0
- data/lib/appsignal/integrations/padrino.rb +21 -25
- data/lib/appsignal/integrations/que.rb +13 -20
- data/lib/appsignal/integrations/railtie.rb +1 -1
- data/lib/appsignal/integrations/rake.rb +45 -15
- data/lib/appsignal/integrations/redis.rb +1 -0
- data/lib/appsignal/integrations/redis_client.rb +1 -0
- data/lib/appsignal/integrations/resque.rb +2 -5
- data/lib/appsignal/integrations/shoryuken.rb +75 -0
- data/lib/appsignal/integrations/sidekiq.rb +7 -25
- data/lib/appsignal/integrations/unicorn.rb +1 -0
- data/lib/appsignal/integrations/webmachine.rb +12 -9
- data/lib/appsignal/logger.rb +7 -3
- data/lib/appsignal/probes/helpers.rb +1 -0
- data/lib/appsignal/probes/mri.rb +1 -0
- data/lib/appsignal/probes/sidekiq.rb +1 -0
- data/lib/appsignal/probes.rb +3 -0
- data/lib/appsignal/rack/abstract_middleware.rb +67 -24
- data/lib/appsignal/rack/body_wrapper.rb +143 -0
- data/lib/appsignal/rack/event_handler.rb +39 -8
- data/lib/appsignal/rack/generic_instrumentation.rb +6 -4
- data/lib/appsignal/rack/grape_middleware.rb +3 -2
- data/lib/appsignal/rack/hanami_middleware.rb +1 -1
- data/lib/appsignal/rack/instrumentation_middleware.rb +62 -0
- data/lib/appsignal/rack/rails_instrumentation.rb +1 -3
- data/lib/appsignal/rack/sinatra_instrumentation.rb +1 -3
- data/lib/appsignal/rack/streaming_listener.rb +14 -59
- data/lib/appsignal/rack.rb +60 -0
- data/lib/appsignal/span.rb +1 -0
- data/lib/appsignal/transaction.rb +353 -104
- data/lib/appsignal/utils/data.rb +0 -1
- data/lib/appsignal/utils/hash_sanitizer.rb +0 -1
- data/lib/appsignal/utils/integration_logger.rb +0 -13
- data/lib/appsignal/utils/integration_memory_logger.rb +0 -13
- data/lib/appsignal/utils/json.rb +0 -1
- data/lib/appsignal/utils/query_params_sanitizer.rb +0 -1
- data/lib/appsignal/utils/stdout_and_logger_message.rb +0 -1
- data/lib/appsignal/utils.rb +6 -0
- data/lib/appsignal/version.rb +1 -1
- data/lib/appsignal.rb +9 -6
- data/spec/lib/appsignal/capistrano2_spec.rb +1 -1
- data/spec/lib/appsignal/config_spec.rb +139 -43
- data/spec/lib/appsignal/hooks/action_cable_spec.rb +43 -74
- data/spec/lib/appsignal/hooks/activejob_spec.rb +9 -0
- data/spec/lib/appsignal/hooks/delayed_job_spec.rb +2 -443
- data/spec/lib/appsignal/hooks/rake_spec.rb +100 -17
- data/spec/lib/appsignal/hooks/shoryuken_spec.rb +0 -171
- data/spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb +459 -0
- data/spec/lib/appsignal/integrations/padrino_spec.rb +181 -131
- data/spec/lib/appsignal/integrations/que_spec.rb +3 -4
- data/spec/lib/appsignal/integrations/shoryuken_spec.rb +167 -0
- data/spec/lib/appsignal/integrations/sidekiq_spec.rb +4 -4
- data/spec/lib/appsignal/integrations/sinatra_spec.rb +10 -2
- data/spec/lib/appsignal/integrations/webmachine_spec.rb +77 -17
- data/spec/lib/appsignal/rack/abstract_middleware_spec.rb +144 -11
- data/spec/lib/appsignal/rack/body_wrapper_spec.rb +263 -0
- data/spec/lib/appsignal/rack/event_handler_spec.rb +81 -10
- data/spec/lib/appsignal/rack/generic_instrumentation_spec.rb +70 -17
- data/spec/lib/appsignal/rack/grape_middleware_spec.rb +1 -1
- data/spec/lib/appsignal/rack/instrumentation_middleware_spec.rb +38 -0
- data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +4 -2
- data/spec/lib/appsignal/rack/streaming_listener_spec.rb +43 -120
- data/spec/lib/appsignal/rack_spec.rb +63 -0
- data/spec/lib/appsignal/transaction_spec.rb +1675 -953
- data/spec/lib/appsignal/utils/integration_logger_spec.rb +12 -16
- data/spec/lib/appsignal/utils/integration_memory_logger_spec.rb +0 -10
- data/spec/lib/appsignal_spec.rb +517 -13
- data/spec/support/helpers/transaction_helpers.rb +44 -20
- data/spec/support/matchers/transaction.rb +15 -1
- data/spec/support/mocks/dummy_app.rb +1 -1
- data/spec/support/testing.rb +1 -1
- metadata +12 -4
- data/support/check_versions +0 -22
@@ -14,13 +14,6 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
describe ActionCable::Channel::Base do
|
17
|
-
let(:transaction) do
|
18
|
-
Appsignal::Transaction.new(
|
19
|
-
transaction_id,
|
20
|
-
Appsignal::Transaction::ACTION_CABLE,
|
21
|
-
ActionDispatch::Request.new(env)
|
22
|
-
)
|
23
|
-
end
|
24
17
|
let(:channel) do
|
25
18
|
Class.new(ActionCable::Channel::Base) do
|
26
19
|
def speak(_data)
|
@@ -37,21 +30,20 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
37
30
|
s.config.logger = ActiveSupport::Logger.new(log)
|
38
31
|
end
|
39
32
|
end
|
33
|
+
let(:env) do
|
34
|
+
http_request_env_with_data(
|
35
|
+
"action_dispatch.request_id" => request_id,
|
36
|
+
:params => params,
|
37
|
+
:with_queue_start => true
|
38
|
+
)
|
39
|
+
end
|
40
40
|
let(:connection) { ActionCable::Connection::Base.new(server, env) }
|
41
41
|
let(:identifier) { { :channel => "MyChannel" }.to_json }
|
42
42
|
let(:params) { {} }
|
43
43
|
let(:request_id) { SecureRandom.uuid }
|
44
|
-
let(:transaction_id) { request_id }
|
45
|
-
let(:env) do
|
46
|
-
http_request_env_with_data("action_dispatch.request_id" => request_id, :params => params)
|
47
|
-
end
|
48
44
|
let(:instance) { channel.new(connection, identifier, params) }
|
49
45
|
before do
|
50
46
|
start_agent
|
51
|
-
expect(Appsignal.active?).to be_truthy
|
52
|
-
transaction
|
53
|
-
|
54
|
-
set_current_transaction(transaction)
|
55
47
|
|
56
48
|
# Stub transmit call for subscribe/unsubscribe tests
|
57
49
|
allow(connection).to receive(:websocket)
|
@@ -64,7 +56,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
64
56
|
instance.perform_action("message" => "foo", "action" => "speak")
|
65
57
|
|
66
58
|
transaction = last_transaction
|
67
|
-
expect(transaction).to have_id
|
59
|
+
expect(transaction).to have_id
|
68
60
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
69
61
|
expect(transaction).to have_action("MyChannel#speak")
|
70
62
|
expect(transaction).to_not have_error
|
@@ -83,40 +75,20 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
83
75
|
"action" => "speak",
|
84
76
|
"message" => "foo"
|
85
77
|
)
|
78
|
+
expect(transaction).to include_tags("request_id" => request_id)
|
79
|
+
expect(transaction).to_not have_queue_start
|
80
|
+
expect(transaction).to be_completed
|
86
81
|
end
|
87
82
|
|
88
83
|
context "without request_id (standalone server)" do
|
89
84
|
let(:request_id) { nil }
|
90
|
-
let(:transaction_id) { SecureRandom.uuid }
|
91
|
-
let(:action_transaction) do
|
92
|
-
Appsignal::Transaction.new(
|
93
|
-
transaction_id,
|
94
|
-
Appsignal::Transaction::ACTION_CABLE,
|
95
|
-
ActionDispatch::Request.new(env)
|
96
|
-
)
|
97
|
-
end
|
98
|
-
before do
|
99
|
-
# Stub future (private AppSignal) transaction id generated by the hook.
|
100
|
-
expect(SecureRandom).to receive(:uuid).and_return(transaction_id)
|
101
|
-
end
|
102
85
|
|
103
|
-
it "
|
86
|
+
it "sets a generated request ID" do
|
104
87
|
# Subscribe action, sets the request_id
|
105
88
|
instance.subscribe_to_channel
|
106
|
-
expect(transaction).to have_id(transaction_id)
|
107
|
-
|
108
|
-
# Expect another transaction for the action.
|
109
|
-
# This transaction will use the same request_id as the
|
110
|
-
# transaction id used to subscribe to the channel.
|
111
|
-
expect(Appsignal::Transaction).to receive(:create).with(
|
112
|
-
transaction_id,
|
113
|
-
Appsignal::Transaction::ACTION_CABLE,
|
114
|
-
kind_of(ActionDispatch::Request)
|
115
|
-
).and_return(action_transaction)
|
116
|
-
allow(Appsignal::Transaction).to receive(:current).and_return(action_transaction)
|
117
89
|
|
118
90
|
instance.perform_action("message" => "foo", "action" => "speak")
|
119
|
-
expect(
|
91
|
+
expect(last_transaction).to include_tags("request_id" => kind_of(String))
|
120
92
|
end
|
121
93
|
end
|
122
94
|
|
@@ -139,7 +111,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
139
111
|
end.to raise_error(ExampleException)
|
140
112
|
|
141
113
|
transaction = last_transaction
|
142
|
-
expect(transaction).to have_id
|
114
|
+
expect(transaction).to have_id
|
143
115
|
expect(transaction).to have_action("MyChannel#speak")
|
144
116
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
145
117
|
expect(transaction).to have_error("ExampleException", "oh no!")
|
@@ -151,6 +123,8 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
151
123
|
"action" => "speak",
|
152
124
|
"message" => "foo"
|
153
125
|
)
|
126
|
+
expect(transaction).to_not have_queue_start
|
127
|
+
expect(transaction).to be_completed
|
154
128
|
end
|
155
129
|
end
|
156
130
|
end
|
@@ -162,7 +136,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
162
136
|
instance.subscribe_to_channel
|
163
137
|
|
164
138
|
transaction = last_transaction
|
165
|
-
expect(transaction).to have_id
|
139
|
+
expect(transaction).to have_id
|
166
140
|
expect(transaction).to have_action("MyChannel#subscribed")
|
167
141
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
168
142
|
expect(transaction).to_not have_error
|
@@ -178,18 +152,17 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
178
152
|
"name" => "subscribed.action_cable",
|
179
153
|
"title" => ""
|
180
154
|
)
|
155
|
+
expect(transaction).to include_tags("request_id" => request_id)
|
156
|
+
expect(transaction).to_not have_queue_start
|
157
|
+
expect(transaction).to be_completed
|
181
158
|
end
|
182
159
|
|
183
160
|
context "without request_id (standalone server)" do
|
184
161
|
let(:request_id) { nil }
|
185
|
-
|
186
|
-
before do
|
187
|
-
allow(SecureRandom).to receive(:uuid).and_return(transaction_id)
|
188
|
-
instance.subscribe_to_channel
|
189
|
-
end
|
162
|
+
before { instance.subscribe_to_channel }
|
190
163
|
|
191
|
-
it "
|
192
|
-
expect(last_transaction).to
|
164
|
+
it "sets a generated request ID" do
|
165
|
+
expect(last_transaction).to include_tags("request_id" => kind_of(String))
|
193
166
|
end
|
194
167
|
end
|
195
168
|
|
@@ -212,7 +185,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
212
185
|
end.to raise_error(ExampleException)
|
213
186
|
|
214
187
|
transaction = last_transaction
|
215
|
-
expect(transaction).to have_id
|
188
|
+
expect(transaction).to have_id
|
216
189
|
expect(transaction).to have_action("MyChannel#subscribed")
|
217
190
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
218
191
|
expect(transaction).to have_error("ExampleException", "oh no!")
|
@@ -221,23 +194,20 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
221
194
|
"path" => "/blog"
|
222
195
|
)
|
223
196
|
expect(transaction).to include_params("internal" => "true")
|
197
|
+
expect(transaction).to_not have_queue_start
|
198
|
+
expect(transaction).to be_completed
|
224
199
|
end
|
225
200
|
end
|
226
201
|
|
227
202
|
if DependencyHelper.rails6_present?
|
228
203
|
context "with ConnectionStub" do
|
229
204
|
let(:connection) { ActionCable::Channel::ConnectionStub.new }
|
230
|
-
let(:transaction_id) { "Stubbed transaction id" }
|
231
|
-
before do
|
232
|
-
# Stub future (private AppSignal) transaction id generated by the hook.
|
233
|
-
expect(SecureRandom).to receive(:uuid).and_return(transaction_id)
|
234
|
-
end
|
235
205
|
|
236
206
|
it "does not fail on missing `#env` method on `ConnectionStub`" do
|
237
207
|
instance.subscribe_to_channel
|
238
208
|
|
239
209
|
transaction = last_transaction
|
240
|
-
expect(transaction).to have_id
|
210
|
+
expect(transaction).to have_id
|
241
211
|
expect(transaction).to have_action("MyChannel#subscribed")
|
242
212
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
243
213
|
expect(transaction).to_not have_error
|
@@ -245,7 +215,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
245
215
|
"method" => "websocket",
|
246
216
|
"path" => "" # No path as the ConnectionStub doesn't have the real request env
|
247
217
|
)
|
248
|
-
expect(transaction).
|
218
|
+
expect(transaction).to_not include_params
|
249
219
|
expect(transaction).to include_event(
|
250
220
|
"body" => "",
|
251
221
|
"body_format" => Appsignal::EventFormatter::DEFAULT,
|
@@ -253,6 +223,8 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
253
223
|
"name" => "subscribed.action_cable",
|
254
224
|
"title" => ""
|
255
225
|
)
|
226
|
+
expect(transaction).to_not have_queue_start
|
227
|
+
expect(transaction).to be_completed
|
256
228
|
end
|
257
229
|
end
|
258
230
|
end
|
@@ -265,7 +237,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
265
237
|
instance.unsubscribe_from_channel
|
266
238
|
|
267
239
|
transaction = last_transaction
|
268
|
-
expect(transaction).to have_id
|
240
|
+
expect(transaction).to have_id
|
269
241
|
expect(transaction).to have_action("MyChannel#unsubscribed")
|
270
242
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
271
243
|
expect(transaction).to_not have_error
|
@@ -281,18 +253,16 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
281
253
|
"name" => "unsubscribed.action_cable",
|
282
254
|
"title" => ""
|
283
255
|
)
|
256
|
+
expect(transaction).to_not have_queue_start
|
257
|
+
expect(transaction).to be_completed
|
284
258
|
end
|
285
259
|
|
286
260
|
context "without request_id (standalone server)" do
|
287
261
|
let(:request_id) { nil }
|
288
|
-
|
289
|
-
before do
|
290
|
-
allow(SecureRandom).to receive(:uuid).and_return(transaction_id)
|
291
|
-
instance.unsubscribe_from_channel
|
292
|
-
end
|
262
|
+
before { instance.unsubscribe_from_channel }
|
293
263
|
|
294
|
-
it "
|
295
|
-
expect(
|
264
|
+
it "sets a generated request ID" do
|
265
|
+
expect(last_transaction).to include_tags("request_id" => kind_of(String))
|
296
266
|
end
|
297
267
|
end
|
298
268
|
|
@@ -315,7 +285,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
315
285
|
end.to raise_error(ExampleException)
|
316
286
|
|
317
287
|
transaction = last_transaction
|
318
|
-
expect(transaction).to have_id
|
288
|
+
expect(transaction).to have_id
|
319
289
|
expect(transaction).to have_action("MyChannel#unsubscribed")
|
320
290
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
321
291
|
expect(transaction).to have_error("ExampleException", "oh no!")
|
@@ -324,23 +294,20 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
324
294
|
"path" => "/blog"
|
325
295
|
)
|
326
296
|
expect(transaction).to include_params("internal" => "true")
|
297
|
+
expect(transaction).to_not have_queue_start
|
298
|
+
expect(transaction).to be_completed
|
327
299
|
end
|
328
300
|
end
|
329
301
|
|
330
302
|
if DependencyHelper.rails6_present?
|
331
303
|
context "with ConnectionStub" do
|
332
304
|
let(:connection) { ActionCable::Channel::ConnectionStub.new }
|
333
|
-
let(:transaction_id) { "Stubbed transaction id" }
|
334
|
-
before do
|
335
|
-
# Stub future (private AppSignal) transaction id generated by the hook.
|
336
|
-
expect(SecureRandom).to receive(:uuid).and_return(transaction_id)
|
337
|
-
end
|
338
305
|
|
339
306
|
it "does not fail on missing `#env` method on `ConnectionStub`" do
|
340
307
|
instance.unsubscribe_from_channel
|
341
308
|
|
342
309
|
transaction = last_transaction
|
343
|
-
expect(transaction).to have_id
|
310
|
+
expect(transaction).to have_id
|
344
311
|
expect(transaction).to have_action("MyChannel#unsubscribed")
|
345
312
|
expect(transaction).to have_namespace(Appsignal::Transaction::ACTION_CABLE)
|
346
313
|
expect(transaction).to_not have_error
|
@@ -348,7 +315,7 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
348
315
|
"method" => "websocket",
|
349
316
|
"path" => "" # No path as the ConnectionStub doesn't have the real request env
|
350
317
|
)
|
351
|
-
expect(transaction).
|
318
|
+
expect(transaction).to_not include_params
|
352
319
|
expect(transaction).to include_event(
|
353
320
|
"body" => "",
|
354
321
|
"body_format" => Appsignal::EventFormatter::DEFAULT,
|
@@ -356,6 +323,8 @@ describe Appsignal::Hooks::ActionCableHook do
|
|
356
323
|
"name" => "unsubscribed.action_cable",
|
357
324
|
"title" => ""
|
358
325
|
)
|
326
|
+
expect(transaction).to_not have_queue_start
|
327
|
+
expect(transaction).to be_completed
|
359
328
|
end
|
360
329
|
end
|
361
330
|
end
|
@@ -126,6 +126,7 @@ if DependencyHelper.active_job_present?
|
|
126
126
|
expect(transaction).to include_params([])
|
127
127
|
expect(transaction).to include_tags(
|
128
128
|
"active_job_id" => kind_of(String),
|
129
|
+
"request_id" => kind_of(String),
|
129
130
|
"queue" => queue,
|
130
131
|
"executions" => 1
|
131
132
|
)
|
@@ -196,6 +197,7 @@ if DependencyHelper.active_job_present?
|
|
196
197
|
expect(transaction).to include_params([])
|
197
198
|
expect(transaction).to include_tags(
|
198
199
|
"active_job_id" => kind_of(String),
|
200
|
+
"request_id" => kind_of(String),
|
199
201
|
"queue" => queue,
|
200
202
|
"executions" => 1
|
201
203
|
)
|
@@ -335,6 +337,7 @@ if DependencyHelper.active_job_present?
|
|
335
337
|
expect(transaction).to include_params([])
|
336
338
|
expect(transaction).to include_tags(
|
337
339
|
"active_job_id" => kind_of(String),
|
340
|
+
"request_id" => kind_of(String),
|
338
341
|
"queue" => queue,
|
339
342
|
"executions" => 1
|
340
343
|
)
|
@@ -470,6 +473,7 @@ if DependencyHelper.active_job_present?
|
|
470
473
|
)
|
471
474
|
expect(transaction).to include_tags(
|
472
475
|
"active_job_id" => kind_of(String),
|
476
|
+
"request_id" => kind_of(String),
|
473
477
|
"queue" => "mailers",
|
474
478
|
"executions" => 1
|
475
479
|
)
|
@@ -488,6 +492,7 @@ if DependencyHelper.active_job_present?
|
|
488
492
|
)
|
489
493
|
expect(transaction).to include_tags(
|
490
494
|
"active_job_id" => kind_of(String),
|
495
|
+
"request_id" => kind_of(String),
|
491
496
|
"queue" => "mailers",
|
492
497
|
"executions" => 1
|
493
498
|
)
|
@@ -510,6 +515,7 @@ if DependencyHelper.active_job_present?
|
|
510
515
|
)
|
511
516
|
expect(transaction).to include_tags(
|
512
517
|
"active_job_id" => kind_of(String),
|
518
|
+
"request_id" => kind_of(String),
|
513
519
|
"queue" => "mailers",
|
514
520
|
"executions" => 1
|
515
521
|
)
|
@@ -549,6 +555,7 @@ if DependencyHelper.active_job_present?
|
|
549
555
|
)
|
550
556
|
expect(transaction).to include_tags(
|
551
557
|
"active_job_id" => kind_of(String),
|
558
|
+
"request_id" => kind_of(String),
|
552
559
|
"queue" => "mailers",
|
553
560
|
"executions" => 1
|
554
561
|
)
|
@@ -573,6 +580,7 @@ if DependencyHelper.active_job_present?
|
|
573
580
|
)
|
574
581
|
expect(transaction).to include_tags(
|
575
582
|
"active_job_id" => kind_of(String),
|
583
|
+
"request_id" => kind_of(String),
|
576
584
|
"queue" => "mailers",
|
577
585
|
"executions" => 1
|
578
586
|
)
|
@@ -599,6 +607,7 @@ if DependencyHelper.active_job_present?
|
|
599
607
|
)
|
600
608
|
expect(transaction).to include_tags(
|
601
609
|
"active_job_id" => kind_of(String),
|
610
|
+
"request_id" => kind_of(String),
|
602
611
|
"queue" => "mailers",
|
603
612
|
"executions" => 1
|
604
613
|
)
|