airbrake-ruby 6.1.0-java → 6.2.0-java
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 +4 -4
- data/lib/airbrake-ruby/async_sender.rb +11 -15
- data/lib/airbrake-ruby/backlog.rb +123 -0
- data/lib/airbrake-ruby/config.rb +7 -0
- data/lib/airbrake-ruby/filters/git_last_checkout_filter.rb +1 -1
- data/lib/airbrake-ruby/nested_exception.rb +22 -1
- data/lib/airbrake-ruby/notice.rb +5 -3
- data/lib/airbrake-ruby/notice_notifier.rb +1 -0
- data/lib/airbrake-ruby/performance_notifier.rb +1 -0
- data/lib/airbrake-ruby/response.rb +56 -5
- data/lib/airbrake-ruby/sync_sender.rb +41 -10
- data/lib/airbrake-ruby/version.rb +1 -1
- data/lib/airbrake-ruby.rb +2 -1
- metadata +5 -122
- data/spec/airbrake_spec.rb +0 -522
- data/spec/async_sender_spec.rb +0 -65
- data/spec/backtrace_spec.rb +0 -430
- data/spec/benchmark_spec.rb +0 -35
- data/spec/code_hunk_spec.rb +0 -124
- data/spec/config/processor_spec.rb +0 -167
- data/spec/config/validator_spec.rb +0 -204
- data/spec/config_spec.rb +0 -188
- data/spec/context_spec.rb +0 -54
- data/spec/deploy_notifier_spec.rb +0 -50
- data/spec/file_cache_spec.rb +0 -35
- data/spec/filter_chain_spec.rb +0 -124
- data/spec/filters/context_filter_spec.rb +0 -32
- data/spec/filters/dependency_filter_spec.rb +0 -14
- data/spec/filters/exception_attributes_filter_spec.rb +0 -52
- data/spec/filters/gem_root_filter_spec.rb +0 -44
- data/spec/filters/git_last_checkout_filter_spec.rb +0 -61
- data/spec/filters/git_repository_filter_spec.rb +0 -72
- data/spec/filters/git_revision_filter_spec.rb +0 -126
- data/spec/filters/keys_allowlist_spec.rb +0 -204
- data/spec/filters/keys_blocklist_spec.rb +0 -242
- data/spec/filters/root_directory_filter_spec.rb +0 -39
- data/spec/filters/sql_filter_spec.rb +0 -274
- data/spec/filters/system_exit_filter_spec.rb +0 -16
- data/spec/filters/thread_filter_spec.rb +0 -281
- data/spec/fixtures/notroot.txt +0 -7
- data/spec/fixtures/project_root/code.rb +0 -221
- data/spec/fixtures/project_root/empty_file.rb +0 -0
- data/spec/fixtures/project_root/long_line.txt +0 -1
- data/spec/fixtures/project_root/short_file.rb +0 -3
- data/spec/fixtures/project_root/vendor/bundle/ignored_file.rb +0 -5
- data/spec/helpers.rb +0 -9
- data/spec/ignorable_spec.rb +0 -14
- data/spec/inspectable_spec.rb +0 -45
- data/spec/loggable_spec.rb +0 -17
- data/spec/monotonic_time_spec.rb +0 -25
- data/spec/nested_exception_spec.rb +0 -73
- data/spec/notice_notifier/options_spec.rb +0 -269
- data/spec/notice_notifier_spec.rb +0 -361
- data/spec/notice_spec.rb +0 -300
- data/spec/performance_breakdown_spec.rb +0 -11
- data/spec/performance_notifier_spec.rb +0 -645
- data/spec/promise_spec.rb +0 -203
- data/spec/query_spec.rb +0 -11
- data/spec/queue_spec.rb +0 -18
- data/spec/remote_settings/callback_spec.rb +0 -162
- data/spec/remote_settings/settings_data_spec.rb +0 -348
- data/spec/remote_settings_spec.rb +0 -201
- data/spec/request_spec.rb +0 -9
- data/spec/response_spec.rb +0 -110
- data/spec/spec_helper.rb +0 -100
- data/spec/stashable_spec.rb +0 -23
- data/spec/stat_spec.rb +0 -39
- data/spec/sync_sender_spec.rb +0 -168
- data/spec/tdigest_spec.rb +0 -235
- data/spec/thread_pool_spec.rb +0 -196
- data/spec/time_truncate_spec.rb +0 -30
- data/spec/timed_trace_spec.rb +0 -127
- data/spec/truncator_spec.rb +0 -267
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: airbrake-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.
|
4
|
+
version: 6.2.0
|
5
5
|
platform: java
|
6
6
|
authors:
|
7
7
|
- Airbrake Technologies, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-09-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rbtree-jruby
|
@@ -40,6 +40,7 @@ extra_rdoc_files: []
|
|
40
40
|
files:
|
41
41
|
- lib/airbrake-ruby.rb
|
42
42
|
- lib/airbrake-ruby/async_sender.rb
|
43
|
+
- lib/airbrake-ruby/backlog.rb
|
43
44
|
- lib/airbrake-ruby/backtrace.rb
|
44
45
|
- lib/airbrake-ruby/benchmark.rb
|
45
46
|
- lib/airbrake-ruby/code_hunk.rb
|
@@ -93,65 +94,6 @@ files:
|
|
93
94
|
- lib/airbrake-ruby/timed_trace.rb
|
94
95
|
- lib/airbrake-ruby/truncator.rb
|
95
96
|
- lib/airbrake-ruby/version.rb
|
96
|
-
- spec/airbrake_spec.rb
|
97
|
-
- spec/async_sender_spec.rb
|
98
|
-
- spec/backtrace_spec.rb
|
99
|
-
- spec/benchmark_spec.rb
|
100
|
-
- spec/code_hunk_spec.rb
|
101
|
-
- spec/config/processor_spec.rb
|
102
|
-
- spec/config/validator_spec.rb
|
103
|
-
- spec/config_spec.rb
|
104
|
-
- spec/context_spec.rb
|
105
|
-
- spec/deploy_notifier_spec.rb
|
106
|
-
- spec/file_cache_spec.rb
|
107
|
-
- spec/filter_chain_spec.rb
|
108
|
-
- spec/filters/context_filter_spec.rb
|
109
|
-
- spec/filters/dependency_filter_spec.rb
|
110
|
-
- spec/filters/exception_attributes_filter_spec.rb
|
111
|
-
- spec/filters/gem_root_filter_spec.rb
|
112
|
-
- spec/filters/git_last_checkout_filter_spec.rb
|
113
|
-
- spec/filters/git_repository_filter_spec.rb
|
114
|
-
- spec/filters/git_revision_filter_spec.rb
|
115
|
-
- spec/filters/keys_allowlist_spec.rb
|
116
|
-
- spec/filters/keys_blocklist_spec.rb
|
117
|
-
- spec/filters/root_directory_filter_spec.rb
|
118
|
-
- spec/filters/sql_filter_spec.rb
|
119
|
-
- spec/filters/system_exit_filter_spec.rb
|
120
|
-
- spec/filters/thread_filter_spec.rb
|
121
|
-
- spec/fixtures/notroot.txt
|
122
|
-
- spec/fixtures/project_root/code.rb
|
123
|
-
- spec/fixtures/project_root/empty_file.rb
|
124
|
-
- spec/fixtures/project_root/long_line.txt
|
125
|
-
- spec/fixtures/project_root/short_file.rb
|
126
|
-
- spec/fixtures/project_root/vendor/bundle/ignored_file.rb
|
127
|
-
- spec/helpers.rb
|
128
|
-
- spec/ignorable_spec.rb
|
129
|
-
- spec/inspectable_spec.rb
|
130
|
-
- spec/loggable_spec.rb
|
131
|
-
- spec/monotonic_time_spec.rb
|
132
|
-
- spec/nested_exception_spec.rb
|
133
|
-
- spec/notice_notifier/options_spec.rb
|
134
|
-
- spec/notice_notifier_spec.rb
|
135
|
-
- spec/notice_spec.rb
|
136
|
-
- spec/performance_breakdown_spec.rb
|
137
|
-
- spec/performance_notifier_spec.rb
|
138
|
-
- spec/promise_spec.rb
|
139
|
-
- spec/query_spec.rb
|
140
|
-
- spec/queue_spec.rb
|
141
|
-
- spec/remote_settings/callback_spec.rb
|
142
|
-
- spec/remote_settings/settings_data_spec.rb
|
143
|
-
- spec/remote_settings_spec.rb
|
144
|
-
- spec/request_spec.rb
|
145
|
-
- spec/response_spec.rb
|
146
|
-
- spec/spec_helper.rb
|
147
|
-
- spec/stashable_spec.rb
|
148
|
-
- spec/stat_spec.rb
|
149
|
-
- spec/sync_sender_spec.rb
|
150
|
-
- spec/tdigest_spec.rb
|
151
|
-
- spec/thread_pool_spec.rb
|
152
|
-
- spec/time_truncate_spec.rb
|
153
|
-
- spec/timed_trace_spec.rb
|
154
|
-
- spec/truncator_spec.rb
|
155
97
|
homepage: https://airbrake.io
|
156
98
|
licenses:
|
157
99
|
- MIT
|
@@ -172,67 +114,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
172
114
|
- !ruby/object:Gem::Version
|
173
115
|
version: '0'
|
174
116
|
requirements: []
|
175
|
-
rubygems_version: 3.
|
117
|
+
rubygems_version: 3.3.3
|
176
118
|
signing_key:
|
177
119
|
specification_version: 4
|
178
120
|
summary: Ruby notifier for https://airbrake.io
|
179
|
-
test_files:
|
180
|
-
- spec/airbrake_spec.rb
|
181
|
-
- spec/async_sender_spec.rb
|
182
|
-
- spec/backtrace_spec.rb
|
183
|
-
- spec/benchmark_spec.rb
|
184
|
-
- spec/code_hunk_spec.rb
|
185
|
-
- spec/config/processor_spec.rb
|
186
|
-
- spec/config/validator_spec.rb
|
187
|
-
- spec/config_spec.rb
|
188
|
-
- spec/context_spec.rb
|
189
|
-
- spec/deploy_notifier_spec.rb
|
190
|
-
- spec/file_cache_spec.rb
|
191
|
-
- spec/filter_chain_spec.rb
|
192
|
-
- spec/filters/context_filter_spec.rb
|
193
|
-
- spec/filters/dependency_filter_spec.rb
|
194
|
-
- spec/filters/exception_attributes_filter_spec.rb
|
195
|
-
- spec/filters/gem_root_filter_spec.rb
|
196
|
-
- spec/filters/git_last_checkout_filter_spec.rb
|
197
|
-
- spec/filters/git_repository_filter_spec.rb
|
198
|
-
- spec/filters/git_revision_filter_spec.rb
|
199
|
-
- spec/filters/keys_allowlist_spec.rb
|
200
|
-
- spec/filters/keys_blocklist_spec.rb
|
201
|
-
- spec/filters/root_directory_filter_spec.rb
|
202
|
-
- spec/filters/sql_filter_spec.rb
|
203
|
-
- spec/filters/system_exit_filter_spec.rb
|
204
|
-
- spec/filters/thread_filter_spec.rb
|
205
|
-
- spec/fixtures/notroot.txt
|
206
|
-
- spec/fixtures/project_root/code.rb
|
207
|
-
- spec/fixtures/project_root/empty_file.rb
|
208
|
-
- spec/fixtures/project_root/long_line.txt
|
209
|
-
- spec/fixtures/project_root/short_file.rb
|
210
|
-
- spec/fixtures/project_root/vendor/bundle/ignored_file.rb
|
211
|
-
- spec/helpers.rb
|
212
|
-
- spec/ignorable_spec.rb
|
213
|
-
- spec/inspectable_spec.rb
|
214
|
-
- spec/loggable_spec.rb
|
215
|
-
- spec/monotonic_time_spec.rb
|
216
|
-
- spec/nested_exception_spec.rb
|
217
|
-
- spec/notice_notifier/options_spec.rb
|
218
|
-
- spec/notice_notifier_spec.rb
|
219
|
-
- spec/notice_spec.rb
|
220
|
-
- spec/performance_breakdown_spec.rb
|
221
|
-
- spec/performance_notifier_spec.rb
|
222
|
-
- spec/promise_spec.rb
|
223
|
-
- spec/query_spec.rb
|
224
|
-
- spec/queue_spec.rb
|
225
|
-
- spec/remote_settings/callback_spec.rb
|
226
|
-
- spec/remote_settings/settings_data_spec.rb
|
227
|
-
- spec/remote_settings_spec.rb
|
228
|
-
- spec/request_spec.rb
|
229
|
-
- spec/response_spec.rb
|
230
|
-
- spec/spec_helper.rb
|
231
|
-
- spec/stashable_spec.rb
|
232
|
-
- spec/stat_spec.rb
|
233
|
-
- spec/sync_sender_spec.rb
|
234
|
-
- spec/tdigest_spec.rb
|
235
|
-
- spec/thread_pool_spec.rb
|
236
|
-
- spec/time_truncate_spec.rb
|
237
|
-
- spec/timed_trace_spec.rb
|
238
|
-
- spec/truncator_spec.rb
|
121
|
+
test_files: []
|
data/spec/airbrake_spec.rb
DELETED
@@ -1,522 +0,0 @@
|
|
1
|
-
RSpec.describe Airbrake do
|
2
|
-
let(:remote_settings) { instance_double(Airbrake::RemoteSettings) }
|
3
|
-
|
4
|
-
before do
|
5
|
-
allow(Airbrake::RemoteSettings).to receive(:poll).and_return(remote_settings)
|
6
|
-
allow(remote_settings).to receive(:stop_polling)
|
7
|
-
end
|
8
|
-
|
9
|
-
after { described_class.instance_variable_set(:@remote_settings, nil) }
|
10
|
-
|
11
|
-
it "gets initialized with a performance notifier" do
|
12
|
-
expect(described_class.performance_notifier).not_to be_nil
|
13
|
-
end
|
14
|
-
|
15
|
-
it "gets initialized with a notice notifier" do
|
16
|
-
expect(described_class.notice_notifier).not_to be_nil
|
17
|
-
end
|
18
|
-
|
19
|
-
it "gets initialized with a deploy notifier" do
|
20
|
-
expect(described_class.deploy_notifier).not_to be_nil
|
21
|
-
end
|
22
|
-
|
23
|
-
describe ".configure" do
|
24
|
-
before do
|
25
|
-
Airbrake::Config.instance = Airbrake::Config.new
|
26
|
-
described_class.reset
|
27
|
-
end
|
28
|
-
|
29
|
-
after { described_class.reset }
|
30
|
-
|
31
|
-
it "yields the config" do
|
32
|
-
expect do |b|
|
33
|
-
described_class.configure(&b)
|
34
|
-
rescue Airbrake::Error
|
35
|
-
nil
|
36
|
-
end.to yield_with_args(Airbrake::Config)
|
37
|
-
end
|
38
|
-
|
39
|
-
it "sets logger to Airbrake::Loggable" do
|
40
|
-
logger = Logger.new(File::NULL)
|
41
|
-
described_class.configure do |c|
|
42
|
-
c.project_id = 1
|
43
|
-
c.project_key = '123'
|
44
|
-
c.logger = logger
|
45
|
-
end
|
46
|
-
|
47
|
-
expect(Airbrake::Loggable.instance).to eql(logger)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "makes Airbrake configured" do
|
51
|
-
expect(described_class).not_to be_configured
|
52
|
-
|
53
|
-
described_class.configure do |c|
|
54
|
-
c.project_id = 1
|
55
|
-
c.project_key = '2'
|
56
|
-
end
|
57
|
-
|
58
|
-
expect(described_class).to be_configured
|
59
|
-
end
|
60
|
-
|
61
|
-
context "when called multiple times" do
|
62
|
-
it "doesn't overwrite performance notifier" do
|
63
|
-
described_class.configure { anything }
|
64
|
-
performance_notifier = described_class.performance_notifier
|
65
|
-
|
66
|
-
described_class.configure { anything }
|
67
|
-
expect(described_class.performance_notifier).to eql(performance_notifier)
|
68
|
-
end
|
69
|
-
|
70
|
-
it "doesn't overwrite notice notifier" do
|
71
|
-
described_class.configure { anything }
|
72
|
-
notice_notifier = described_class.notice_notifier
|
73
|
-
|
74
|
-
described_class.configure { anything }
|
75
|
-
expect(described_class.notice_notifier).to eql(notice_notifier)
|
76
|
-
end
|
77
|
-
|
78
|
-
it "doesn't overwrite deploy notifier" do
|
79
|
-
described_class.configure { anything }
|
80
|
-
deploy_notifier = described_class.deploy_notifier
|
81
|
-
|
82
|
-
described_class.configure { anything }
|
83
|
-
expect(described_class.deploy_notifier).to eql(deploy_notifier)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "doesn't append the same notice notifier filters over and over" do
|
87
|
-
described_class.configure do |c|
|
88
|
-
c.project_id = 1
|
89
|
-
c.project_key = '2'
|
90
|
-
end
|
91
|
-
|
92
|
-
allow(described_class.notice_notifier).to receive(:add_filter)
|
93
|
-
|
94
|
-
10.times { described_class.configure { anything } }
|
95
|
-
|
96
|
-
expect(described_class.notice_notifier).not_to have_received(:add_filter)
|
97
|
-
end
|
98
|
-
|
99
|
-
it "appends some default filters" do
|
100
|
-
allow(described_class.notice_notifier).to receive(:add_filter)
|
101
|
-
|
102
|
-
described_class.configure do |c|
|
103
|
-
c.project_id = 1
|
104
|
-
c.project_key = '2'
|
105
|
-
end
|
106
|
-
|
107
|
-
expect(described_class.notice_notifier).to have_received(:add_filter).with(
|
108
|
-
an_instance_of(Airbrake::Filters::RootDirectoryFilter),
|
109
|
-
)
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
context "when blocklist_keys gets configured" do
|
114
|
-
before { allow(described_class.notice_notifier).to receive(:add_filter) }
|
115
|
-
|
116
|
-
it "adds blocklist filter" do
|
117
|
-
allow(described_class.notice_notifier).to receive(:add_filter)
|
118
|
-
|
119
|
-
described_class.configure { |c| c.blocklist_keys = %w[password] }
|
120
|
-
|
121
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
122
|
-
.with(an_instance_of(Airbrake::Filters::KeysBlocklist))
|
123
|
-
end
|
124
|
-
|
125
|
-
it "initializes blocklist with specified parameters" do
|
126
|
-
allow(Airbrake::Filters::KeysBlocklist).to receive(:new)
|
127
|
-
|
128
|
-
described_class.configure { |c| c.blocklist_keys = %w[password] }
|
129
|
-
|
130
|
-
expect(Airbrake::Filters::KeysBlocklist)
|
131
|
-
.to have_received(:new).with(%w[password])
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
context "when allowlist_keys gets configured" do
|
136
|
-
before { allow(described_class.notice_notifier).to receive(:add_filter) }
|
137
|
-
|
138
|
-
it "adds allowlist filter" do
|
139
|
-
described_class.configure { |c| c.allowlist_keys = %w[banana] }
|
140
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
141
|
-
.with(an_instance_of(Airbrake::Filters::KeysAllowlist))
|
142
|
-
end
|
143
|
-
|
144
|
-
it "initializes allowlist with specified parameters" do
|
145
|
-
allow(Airbrake::Filters::KeysAllowlist).to receive(:new)
|
146
|
-
|
147
|
-
described_class.configure { |c| c.allowlist_keys = %w[banana] }
|
148
|
-
expect(Airbrake::Filters::KeysAllowlist)
|
149
|
-
.to have_received(:new).with(%w[banana])
|
150
|
-
end
|
151
|
-
end
|
152
|
-
|
153
|
-
context "when root_directory gets configured" do
|
154
|
-
before { allow(described_class.notice_notifier).to receive(:add_filter) }
|
155
|
-
|
156
|
-
it "adds root directory filter" do
|
157
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
158
|
-
|
159
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
160
|
-
.with(an_instance_of(Airbrake::Filters::RootDirectoryFilter))
|
161
|
-
end
|
162
|
-
|
163
|
-
it "initializes root directory filter with specified path" do
|
164
|
-
allow(Airbrake::Filters::RootDirectoryFilter).to receive(:new)
|
165
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
166
|
-
|
167
|
-
expect(Airbrake::Filters::RootDirectoryFilter)
|
168
|
-
.to have_received(:new).with('/my/path')
|
169
|
-
end
|
170
|
-
|
171
|
-
it "adds git revision filter" do
|
172
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
173
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
174
|
-
.with(an_instance_of(Airbrake::Filters::GitRevisionFilter))
|
175
|
-
end
|
176
|
-
|
177
|
-
it "initializes git revision filter with correct root directory" do
|
178
|
-
allow(Airbrake::Filters::GitRevisionFilter).to receive(:new)
|
179
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
180
|
-
|
181
|
-
expect(Airbrake::Filters::GitRevisionFilter)
|
182
|
-
.to have_received(:new).with('/my/path')
|
183
|
-
end
|
184
|
-
|
185
|
-
it "adds git repository filter" do
|
186
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
187
|
-
|
188
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
189
|
-
.with(an_instance_of(Airbrake::Filters::GitRepositoryFilter))
|
190
|
-
end
|
191
|
-
|
192
|
-
it "initializes git repository filter with correct root directory" do
|
193
|
-
allow(Airbrake::Filters::GitRepositoryFilter).to receive(:new)
|
194
|
-
|
195
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
196
|
-
|
197
|
-
expect(Airbrake::Filters::GitRepositoryFilter)
|
198
|
-
.to have_received(:new).with('/my/path')
|
199
|
-
end
|
200
|
-
|
201
|
-
it "adds git last checkout filter" do
|
202
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
203
|
-
expect(described_class.notice_notifier).to have_received(:add_filter)
|
204
|
-
.with(an_instance_of(Airbrake::Filters::GitLastCheckoutFilter))
|
205
|
-
end
|
206
|
-
|
207
|
-
it "initializes git last checkout filter with correct root directory" do
|
208
|
-
allow(Airbrake::Filters::GitLastCheckoutFilter).to receive(:new)
|
209
|
-
described_class.configure { |c| c.root_directory = '/my/path' }
|
210
|
-
|
211
|
-
expect(Airbrake::Filters::GitLastCheckoutFilter)
|
212
|
-
.to have_received(:new).with('/my/path')
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
describe ".notify_request" do
|
218
|
-
before do
|
219
|
-
allow(described_class.performance_notifier).to receive(:notify)
|
220
|
-
end
|
221
|
-
|
222
|
-
context "when :stash key is not provided" do
|
223
|
-
it "doesn't add anything to the stash of the request" do
|
224
|
-
described_class.notify_request(
|
225
|
-
method: 'GET',
|
226
|
-
route: '/',
|
227
|
-
status_code: 200,
|
228
|
-
timing: 1,
|
229
|
-
)
|
230
|
-
|
231
|
-
expect(
|
232
|
-
described_class.performance_notifier,
|
233
|
-
).to have_received(:notify) do |request|
|
234
|
-
expect(request.stash).to be_empty
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
context "when :stash key is provided" do
|
240
|
-
it "adds the value as the stash of the request" do
|
241
|
-
described_class.notify_request(
|
242
|
-
{
|
243
|
-
method: 'GET',
|
244
|
-
route: '/',
|
245
|
-
status_code: 200,
|
246
|
-
timing: 1,
|
247
|
-
},
|
248
|
-
request_id: 1,
|
249
|
-
)
|
250
|
-
|
251
|
-
expect(
|
252
|
-
described_class.performance_notifier,
|
253
|
-
).to have_received(:notify) do |request|
|
254
|
-
expect(request.stash).to eq(request_id: 1)
|
255
|
-
end
|
256
|
-
end
|
257
|
-
end
|
258
|
-
end
|
259
|
-
|
260
|
-
describe ".notify_request_sync" do
|
261
|
-
it "notifies request synchronously" do
|
262
|
-
allow(described_class.performance_notifier).to receive(:notify_sync)
|
263
|
-
|
264
|
-
described_class.notify_request_sync(
|
265
|
-
{
|
266
|
-
method: 'GET',
|
267
|
-
route: '/',
|
268
|
-
status_code: 200,
|
269
|
-
timing: 1,
|
270
|
-
},
|
271
|
-
request_id: 1,
|
272
|
-
)
|
273
|
-
|
274
|
-
expect(described_class.performance_notifier).to have_received(:notify_sync)
|
275
|
-
end
|
276
|
-
end
|
277
|
-
|
278
|
-
describe ".notify_query" do
|
279
|
-
before do
|
280
|
-
allow(described_class.performance_notifier).to receive(:notify)
|
281
|
-
end
|
282
|
-
|
283
|
-
context "when :stash key is not provided" do
|
284
|
-
it "doesn't add anything to the stash of the query" do
|
285
|
-
described_class.notify_query(
|
286
|
-
method: 'GET',
|
287
|
-
route: '/',
|
288
|
-
query: '',
|
289
|
-
timing: 1,
|
290
|
-
)
|
291
|
-
|
292
|
-
expect(
|
293
|
-
described_class.performance_notifier,
|
294
|
-
).to have_received(:notify) do |query|
|
295
|
-
expect(query.stash).to be_empty
|
296
|
-
end
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
|
-
context "when :stash key is provided" do
|
301
|
-
it "adds the value as the stash of the query" do
|
302
|
-
described_class.notify_query(
|
303
|
-
{
|
304
|
-
method: 'GET',
|
305
|
-
route: '/',
|
306
|
-
query: '',
|
307
|
-
timing: 1,
|
308
|
-
},
|
309
|
-
request_id: 1,
|
310
|
-
)
|
311
|
-
|
312
|
-
expect(
|
313
|
-
described_class.performance_notifier,
|
314
|
-
).to have_received(:notify) do |query|
|
315
|
-
expect(query.stash).to eq(request_id: 1)
|
316
|
-
end
|
317
|
-
end
|
318
|
-
end
|
319
|
-
end
|
320
|
-
|
321
|
-
describe ".notify_query_sync" do
|
322
|
-
it "notifies query synchronously" do
|
323
|
-
allow(described_class.performance_notifier).to receive(:notify_sync)
|
324
|
-
|
325
|
-
described_class.notify_query_sync(
|
326
|
-
{
|
327
|
-
method: 'GET',
|
328
|
-
route: '/',
|
329
|
-
query: '',
|
330
|
-
timing: 1,
|
331
|
-
},
|
332
|
-
request_id: 1,
|
333
|
-
)
|
334
|
-
|
335
|
-
expect(described_class.performance_notifier).to have_received(:notify_sync)
|
336
|
-
end
|
337
|
-
end
|
338
|
-
|
339
|
-
describe ".notify_performance_breakdown" do
|
340
|
-
before do
|
341
|
-
allow(described_class.performance_notifier).to receive(:notify)
|
342
|
-
end
|
343
|
-
|
344
|
-
context "when :stash key is not provided" do
|
345
|
-
it "doesn't add anything to the stash of the performance breakdown" do
|
346
|
-
described_class.notify_query(
|
347
|
-
method: 'GET',
|
348
|
-
route: '/',
|
349
|
-
query: '',
|
350
|
-
timing: 1,
|
351
|
-
)
|
352
|
-
|
353
|
-
expect(
|
354
|
-
described_class.performance_notifier,
|
355
|
-
).to have_received(:notify) do |query|
|
356
|
-
expect(query.stash).to be_empty
|
357
|
-
end
|
358
|
-
end
|
359
|
-
end
|
360
|
-
|
361
|
-
context "when :stash key is provided" do
|
362
|
-
it "adds the value as the stash of the performance breakdown" do
|
363
|
-
described_class.notify_performance_breakdown(
|
364
|
-
{
|
365
|
-
method: 'GET',
|
366
|
-
route: '/',
|
367
|
-
response_type: :html,
|
368
|
-
groups: {},
|
369
|
-
timing: 1,
|
370
|
-
},
|
371
|
-
request_id: 1,
|
372
|
-
)
|
373
|
-
|
374
|
-
expect(
|
375
|
-
described_class.performance_notifier,
|
376
|
-
).to have_received(:notify) do |performance_breakdown|
|
377
|
-
expect(performance_breakdown.stash).to eq(request_id: 1)
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|
382
|
-
|
383
|
-
describe ".notify_performance_breakdown_sync" do
|
384
|
-
it "notifies performance breakdown synchronously" do
|
385
|
-
allow(described_class.performance_notifier).to receive(:notify_sync)
|
386
|
-
|
387
|
-
described_class.notify_performance_breakdown_sync(
|
388
|
-
{
|
389
|
-
method: 'GET',
|
390
|
-
route: '/',
|
391
|
-
response_type: :html,
|
392
|
-
groups: {},
|
393
|
-
timing: 1,
|
394
|
-
},
|
395
|
-
request_id: 1,
|
396
|
-
)
|
397
|
-
|
398
|
-
expect(described_class.performance_notifier).to have_received(:notify_sync)
|
399
|
-
end
|
400
|
-
end
|
401
|
-
|
402
|
-
describe ".notify_queue" do
|
403
|
-
before do
|
404
|
-
allow(described_class.performance_notifier).to receive(:notify)
|
405
|
-
end
|
406
|
-
|
407
|
-
context "when :stash key is not provided" do
|
408
|
-
it "doesn't add anything to the stash of the queue" do
|
409
|
-
described_class.notify_queue(
|
410
|
-
queue: 'bananas',
|
411
|
-
error_count: 10,
|
412
|
-
)
|
413
|
-
|
414
|
-
expect(
|
415
|
-
described_class.performance_notifier,
|
416
|
-
).to have_received(:notify) do |queue|
|
417
|
-
expect(queue.stash).to be_empty
|
418
|
-
end
|
419
|
-
end
|
420
|
-
end
|
421
|
-
|
422
|
-
context "when :stash key is provided" do
|
423
|
-
it "adds the value as the stash of the queue" do
|
424
|
-
described_class.notify_queue(
|
425
|
-
{
|
426
|
-
queue: 'bananas',
|
427
|
-
error_count: 10,
|
428
|
-
},
|
429
|
-
request_id: 1,
|
430
|
-
)
|
431
|
-
|
432
|
-
expect(
|
433
|
-
described_class.performance_notifier,
|
434
|
-
).to have_received(:notify) do |queue|
|
435
|
-
expect(queue.stash).to eq(request_id: 1)
|
436
|
-
end
|
437
|
-
end
|
438
|
-
end
|
439
|
-
end
|
440
|
-
|
441
|
-
describe ".notify_queue_sync" do
|
442
|
-
it "notifies queue synchronously" do
|
443
|
-
allow(described_class.performance_notifier).to receive(:notify_sync)
|
444
|
-
|
445
|
-
described_class.notify_queue_sync(
|
446
|
-
{
|
447
|
-
queue: 'bananas',
|
448
|
-
error_count: 10,
|
449
|
-
},
|
450
|
-
request_id: 1,
|
451
|
-
)
|
452
|
-
|
453
|
-
expect(described_class.performance_notifier).to have_received(:notify_sync)
|
454
|
-
end
|
455
|
-
end
|
456
|
-
|
457
|
-
describe ".performance_notifier" do
|
458
|
-
it "returns a performance notifier" do
|
459
|
-
expect(described_class.performance_notifier)
|
460
|
-
.to be_an(Airbrake::PerformanceNotifier)
|
461
|
-
end
|
462
|
-
end
|
463
|
-
|
464
|
-
describe ".notice_notifier" do
|
465
|
-
it "returns a notice notifier" do
|
466
|
-
expect(described_class.notice_notifier).to be_an(Airbrake::NoticeNotifier)
|
467
|
-
end
|
468
|
-
end
|
469
|
-
|
470
|
-
describe ".deploy_notifier" do
|
471
|
-
it "returns a deploy notifier" do
|
472
|
-
expect(described_class.deploy_notifier).to be_an(Airbrake::DeployNotifier)
|
473
|
-
end
|
474
|
-
end
|
475
|
-
|
476
|
-
# rubocop:disable RSpec/MessageSpies
|
477
|
-
describe ".close" do
|
478
|
-
after { described_class.reset }
|
479
|
-
|
480
|
-
context "when notice_notifier is defined" do
|
481
|
-
it "gets closed" do
|
482
|
-
expect(described_class.notice_notifier).to receive(:close)
|
483
|
-
end
|
484
|
-
end
|
485
|
-
|
486
|
-
context "when notice_notifier is undefined" do
|
487
|
-
it "doesn't get closed (because it wasn't initialized)" do
|
488
|
-
described_class.instance_variable_set(:@notice_notifier, nil)
|
489
|
-
expect_any_instance_of(Airbrake::NoticeNotifier).not_to receive(:close)
|
490
|
-
end
|
491
|
-
end
|
492
|
-
|
493
|
-
context "when performance_notifier is defined" do
|
494
|
-
it "gets closed" do
|
495
|
-
expect(described_class.performance_notifier).to receive(:close)
|
496
|
-
end
|
497
|
-
end
|
498
|
-
|
499
|
-
context "when perforance_notifier is undefined" do
|
500
|
-
it "doesn't get closed (because it wasn't initialized)" do
|
501
|
-
described_class.instance_variable_set(:@performance_notifier, nil)
|
502
|
-
expect_any_instance_of(Airbrake::PerformanceNotifier)
|
503
|
-
.not_to receive(:close)
|
504
|
-
end
|
505
|
-
end
|
506
|
-
|
507
|
-
context "when remote settings are defined" do
|
508
|
-
it "stops polling" do
|
509
|
-
described_class.instance_variable_set(:@remote_settings, remote_settings)
|
510
|
-
expect(remote_settings).to receive(:stop_polling)
|
511
|
-
end
|
512
|
-
end
|
513
|
-
|
514
|
-
context "when remote settings are undefined" do
|
515
|
-
it "doesn't stop polling (because they weren't initialized)" do
|
516
|
-
described_class.instance_variable_set(:@remote_settings, nil)
|
517
|
-
expect(remote_settings).not_to receive(:stop_polling)
|
518
|
-
end
|
519
|
-
end
|
520
|
-
end
|
521
|
-
# rubocop:enable RSpec/MessageSpies
|
522
|
-
end
|