appsignal 4.0.6-java → 4.0.8-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.
Files changed (202) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +20 -0
  3. data/Rakefile +9 -9
  4. data/appsignal.gemspec +22 -1
  5. data/ext/agent.rb +27 -27
  6. data/lib/appsignal/check_in.rb +1 -1
  7. data/lib/appsignal/config.rb +1 -3
  8. data/lib/appsignal/integrations/resque.rb +1 -6
  9. data/lib/appsignal/utils/hash_sanitizer.rb +4 -0
  10. data/lib/appsignal/version.rb +1 -1
  11. data/lib/appsignal.rb +10 -8
  12. metadata +2 -192
  13. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -31
  14. data/.github/ISSUE_TEMPLATE/chore.md +0 -14
  15. data/.github/workflows/ci.yml +0 -3285
  16. data/.github/workflows/create_release_from_tag.yml +0 -62
  17. data/.gitignore +0 -35
  18. data/.gitmodules +0 -3
  19. data/.rspec +0 -4
  20. data/.yardopts +0 -8
  21. data/benchmark.rake +0 -139
  22. data/gemfiles/capistrano2.gemfile +0 -6
  23. data/gemfiles/capistrano3.gemfile +0 -7
  24. data/gemfiles/dry-monitor.gemfile +0 -5
  25. data/gemfiles/grape.gemfile +0 -5
  26. data/gemfiles/hanami-2.0.gemfile +0 -7
  27. data/gemfiles/hanami-2.1.gemfile +0 -7
  28. data/gemfiles/http5.gemfile +0 -5
  29. data/gemfiles/no_dependencies.gemfile +0 -10
  30. data/gemfiles/padrino.gemfile +0 -7
  31. data/gemfiles/psych-3.gemfile +0 -5
  32. data/gemfiles/psych-4.gemfile +0 -5
  33. data/gemfiles/que-1.gemfile +0 -5
  34. data/gemfiles/que-2.gemfile +0 -5
  35. data/gemfiles/rails-6.0.gemfile +0 -10
  36. data/gemfiles/rails-6.1.gemfile +0 -11
  37. data/gemfiles/rails-7.0.gemfile +0 -11
  38. data/gemfiles/rails-7.1.gemfile +0 -11
  39. data/gemfiles/rails-7.2.gemfile +0 -11
  40. data/gemfiles/redis-4.gemfile +0 -5
  41. data/gemfiles/redis-5.gemfile +0 -6
  42. data/gemfiles/resque-2.gemfile +0 -6
  43. data/gemfiles/sequel.gemfile +0 -10
  44. data/gemfiles/sinatra.gemfile +0 -5
  45. data/gemfiles/webmachine1.gemfile +0 -7
  46. data/gemfiles/webmachine2.gemfile +0 -6
  47. data/mono.yml +0 -16
  48. data/spec/.rubocop.yml +0 -7
  49. data/spec/lib/appsignal/auth_check_spec.rb +0 -84
  50. data/spec/lib/appsignal/capistrano2_spec.rb +0 -227
  51. data/spec/lib/appsignal/capistrano3_spec.rb +0 -284
  52. data/spec/lib/appsignal/check_in/cron_spec.rb +0 -210
  53. data/spec/lib/appsignal/check_in/scheduler_spec.rb +0 -557
  54. data/spec/lib/appsignal/cli/demo_spec.rb +0 -46
  55. data/spec/lib/appsignal/cli/diagnose/paths_spec.rb +0 -16
  56. data/spec/lib/appsignal/cli/diagnose/utils_spec.rb +0 -86
  57. data/spec/lib/appsignal/cli/diagnose_spec.rb +0 -1553
  58. data/spec/lib/appsignal/cli/helpers_spec.rb +0 -179
  59. data/spec/lib/appsignal/cli/install_spec.rb +0 -848
  60. data/spec/lib/appsignal/cli_spec.rb +0 -56
  61. data/spec/lib/appsignal/config_spec.rb +0 -1380
  62. data/spec/lib/appsignal/demo_spec.rb +0 -83
  63. data/spec/lib/appsignal/environment_spec.rb +0 -190
  64. data/spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb +0 -60
  65. data/spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb +0 -21
  66. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +0 -21
  67. data/spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb +0 -52
  68. data/spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb +0 -21
  69. data/spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb +0 -84
  70. data/spec/lib/appsignal/event_formatter/rom/sql_formatter_spec.rb +0 -22
  71. data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +0 -30
  72. data/spec/lib/appsignal/event_formatter/view_component/render_formatter_spec.rb +0 -41
  73. data/spec/lib/appsignal/event_formatter_spec.rb +0 -193
  74. data/spec/lib/appsignal/extension/jruby_spec.rb +0 -46
  75. data/spec/lib/appsignal/extension_install_failure_spec.rb +0 -20
  76. data/spec/lib/appsignal/extension_spec.rb +0 -178
  77. data/spec/lib/appsignal/garbage_collection_spec.rb +0 -98
  78. data/spec/lib/appsignal/hooks/action_cable_spec.rb +0 -345
  79. data/spec/lib/appsignal/hooks/action_mailer_spec.rb +0 -55
  80. data/spec/lib/appsignal/hooks/active_support_notifications/finish_with_state_shared_examples.rb +0 -23
  81. data/spec/lib/appsignal/hooks/active_support_notifications/instrument_shared_examples.rb +0 -99
  82. data/spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb +0 -47
  83. data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +0 -47
  84. data/spec/lib/appsignal/hooks/activejob_spec.rb +0 -650
  85. data/spec/lib/appsignal/hooks/at_exit_spec.rb +0 -105
  86. data/spec/lib/appsignal/hooks/celluloid_spec.rb +0 -40
  87. data/spec/lib/appsignal/hooks/data_mapper_spec.rb +0 -40
  88. data/spec/lib/appsignal/hooks/delayed_job_spec.rb +0 -38
  89. data/spec/lib/appsignal/hooks/dry_monitor_spec.rb +0 -83
  90. data/spec/lib/appsignal/hooks/excon_spec.rb +0 -67
  91. data/spec/lib/appsignal/hooks/gvl_spec.rb +0 -145
  92. data/spec/lib/appsignal/hooks/http_spec.rb +0 -37
  93. data/spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb +0 -46
  94. data/spec/lib/appsignal/hooks/mri_spec.rb +0 -23
  95. data/spec/lib/appsignal/hooks/net_http_spec.rb +0 -18
  96. data/spec/lib/appsignal/hooks/passenger_spec.rb +0 -30
  97. data/spec/lib/appsignal/hooks/puma_spec.rb +0 -80
  98. data/spec/lib/appsignal/hooks/que_spec.rb +0 -19
  99. data/spec/lib/appsignal/hooks/rake_spec.rb +0 -144
  100. data/spec/lib/appsignal/hooks/redis_client_spec.rb +0 -218
  101. data/spec/lib/appsignal/hooks/redis_spec.rb +0 -124
  102. data/spec/lib/appsignal/hooks/resque_spec.rb +0 -27
  103. data/spec/lib/appsignal/hooks/sequel_spec.rb +0 -44
  104. data/spec/lib/appsignal/hooks/shoryuken_spec.rb +0 -29
  105. data/spec/lib/appsignal/hooks/sidekiq_spec.rb +0 -115
  106. data/spec/lib/appsignal/hooks/unicorn_spec.rb +0 -63
  107. data/spec/lib/appsignal/hooks/webmachine_spec.rb +0 -24
  108. data/spec/lib/appsignal/hooks_spec.rb +0 -124
  109. data/spec/lib/appsignal/integrations/data_mapper_spec.rb +0 -74
  110. data/spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb +0 -454
  111. data/spec/lib/appsignal/integrations/http_spec.rb +0 -111
  112. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +0 -154
  113. data/spec/lib/appsignal/integrations/net_http_spec.rb +0 -33
  114. data/spec/lib/appsignal/integrations/object_spec.rb +0 -347
  115. data/spec/lib/appsignal/integrations/puma_spec.rb +0 -150
  116. data/spec/lib/appsignal/integrations/que_spec.rb +0 -187
  117. data/spec/lib/appsignal/integrations/railtie_spec.rb +0 -457
  118. data/spec/lib/appsignal/integrations/resque_spec.rb +0 -155
  119. data/spec/lib/appsignal/integrations/shoryuken_spec.rb +0 -165
  120. data/spec/lib/appsignal/integrations/sidekiq_spec.rb +0 -640
  121. data/spec/lib/appsignal/integrations/webmachine_spec.rb +0 -136
  122. data/spec/lib/appsignal/loaders/grape_spec.rb +0 -12
  123. data/spec/lib/appsignal/loaders/hanami_spec.rb +0 -92
  124. data/spec/lib/appsignal/loaders/padrino_spec.rb +0 -273
  125. data/spec/lib/appsignal/loaders/sinatra_spec.rb +0 -44
  126. data/spec/lib/appsignal/loaders_spec.rb +0 -144
  127. data/spec/lib/appsignal/logger_spec.rb +0 -205
  128. data/spec/lib/appsignal/marker_spec.rb +0 -51
  129. data/spec/lib/appsignal/probes/gvl_spec.rb +0 -164
  130. data/spec/lib/appsignal/probes/mri_spec.rb +0 -162
  131. data/spec/lib/appsignal/probes/sidekiq_spec.rb +0 -333
  132. data/spec/lib/appsignal/probes_spec.rb +0 -414
  133. data/spec/lib/appsignal/rack/abstract_middleware_spec.rb +0 -370
  134. data/spec/lib/appsignal/rack/body_wrapper_spec.rb +0 -319
  135. data/spec/lib/appsignal/rack/event_handler_spec.rb +0 -441
  136. data/spec/lib/appsignal/rack/grape_middleware_spec.rb +0 -201
  137. data/spec/lib/appsignal/rack/hanami_middleware_spec.rb +0 -36
  138. data/spec/lib/appsignal/rack/instrumentation_middleware_spec.rb +0 -38
  139. data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +0 -126
  140. data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +0 -217
  141. data/spec/lib/appsignal/rack_spec.rb +0 -243
  142. data/spec/lib/appsignal/sample_data_spec.rb +0 -238
  143. data/spec/lib/appsignal/span_spec.rb +0 -141
  144. data/spec/lib/appsignal/system_spec.rb +0 -126
  145. data/spec/lib/appsignal/transaction_spec.rb +0 -2115
  146. data/spec/lib/appsignal/transmitter_spec.rb +0 -198
  147. data/spec/lib/appsignal/utils/data_spec.rb +0 -166
  148. data/spec/lib/appsignal/utils/hash_sanitizer_spec.rb +0 -182
  149. data/spec/lib/appsignal/utils/integration_logger_spec.rb +0 -21
  150. data/spec/lib/appsignal/utils/integration_memory_logger_spec.rb +0 -153
  151. data/spec/lib/appsignal/utils/json_spec.rb +0 -44
  152. data/spec/lib/appsignal/utils/query_params_sanitizer_spec.rb +0 -192
  153. data/spec/lib/appsignal_spec.rb +0 -1919
  154. data/spec/lib/puma/appsignal_spec.rb +0 -334
  155. data/spec/spec_helper.rb +0 -179
  156. data/spec/support/fixtures/generated_config.yml +0 -24
  157. data/spec/support/fixtures/projects/broken/config/appsignal.yml +0 -1
  158. data/spec/support/fixtures/projects/valid/config/appsignal.yml +0 -57
  159. data/spec/support/fixtures/projects/valid/log/.gitkeep +0 -0
  160. data/spec/support/fixtures/projects/valid_with_rails_app/config/application.rb +0 -16
  161. data/spec/support/fixtures/projects/valid_with_rails_app/config/appsignal.yml +0 -56
  162. data/spec/support/fixtures/projects/valid_with_rails_app/config/environment.rb +0 -10
  163. data/spec/support/fixtures/projects/valid_with_rails_app/log/.gitkeep +0 -0
  164. data/spec/support/fixtures/uploaded_file.txt +0 -0
  165. data/spec/support/hanami/hanami_app.rb +0 -29
  166. data/spec/support/helpers/action_mailer_helpers.rb +0 -25
  167. data/spec/support/helpers/activejob_helpers.rb +0 -27
  168. data/spec/support/helpers/api_request_helper.rb +0 -60
  169. data/spec/support/helpers/cli_helpers.rb +0 -40
  170. data/spec/support/helpers/config_helpers.rb +0 -66
  171. data/spec/support/helpers/dependency_helper.rb +0 -155
  172. data/spec/support/helpers/directory_helper.rb +0 -27
  173. data/spec/support/helpers/env_helpers.rb +0 -41
  174. data/spec/support/helpers/environment_metdata_helper.rb +0 -16
  175. data/spec/support/helpers/example_exception.rb +0 -13
  176. data/spec/support/helpers/example_standard_error.rb +0 -13
  177. data/spec/support/helpers/loader_helper.rb +0 -21
  178. data/spec/support/helpers/log_helpers.rb +0 -36
  179. data/spec/support/helpers/rails_helper.rb +0 -28
  180. data/spec/support/helpers/std_streams_helper.rb +0 -94
  181. data/spec/support/helpers/system_helpers.rb +0 -8
  182. data/spec/support/helpers/take_at_most_helper.rb +0 -21
  183. data/spec/support/helpers/time_helpers.rb +0 -11
  184. data/spec/support/helpers/transaction_helpers.rb +0 -122
  185. data/spec/support/helpers/wait_for_helper.rb +0 -39
  186. data/spec/support/matchers/contains_log.rb +0 -26
  187. data/spec/support/matchers/have_colorized_text.rb +0 -28
  188. data/spec/support/matchers/transaction.rb +0 -200
  189. data/spec/support/mocks/appsignal_mock.rb +0 -18
  190. data/spec/support/mocks/dummy_app.rb +0 -20
  191. data/spec/support/mocks/fake_gc_profiler.rb +0 -19
  192. data/spec/support/mocks/fake_gvl_tools.rb +0 -28
  193. data/spec/support/mocks/hash_like.rb +0 -10
  194. data/spec/support/mocks/mock_probe.rb +0 -13
  195. data/spec/support/mocks/puma_mock.rb +0 -43
  196. data/spec/support/shared_examples/instrument.rb +0 -48
  197. data/spec/support/stubs/appsignal/loaders/loader_stub.rb +0 -7
  198. data/spec/support/stubs/delayed_job.rb +0 -0
  199. data/spec/support/stubs/sidekiq/api.rb +0 -4
  200. data/spec/support/testing.rb +0 -203
  201. data/support/bundler_wrapper +0 -12
  202. data/support/install_deps +0 -33
@@ -1,333 +0,0 @@
1
- require "appsignal/probes/sidekiq"
2
-
3
- describe Appsignal::Probes::SidekiqProbe do
4
- describe "#call" do
5
- let(:probe) { described_class.new }
6
- let(:redis_hostname) { "localhost" }
7
- let(:expected_default_tags) { { :hostname => "localhost" } }
8
- before do
9
- start_agent
10
-
11
- class SidekiqStats
12
- class << self
13
- attr_reader :calls
14
-
15
- def count_call
16
- @calls ||= -1
17
- @calls += 1
18
- end
19
- end
20
-
21
- def workers_size
22
- # First method called, so count it towards a call
23
- self.class.count_call
24
- 24
25
- end
26
-
27
- def processes_size
28
- 25
29
- end
30
-
31
- # Return two different values for two separate calls.
32
- # This allows us to test the delta of the value send as a gauge.
33
- def processed
34
- [10, 15][self.class.calls]
35
- end
36
-
37
- # Return two different values for two separate calls.
38
- # This allows us to test the delta of the value send as a gauge.
39
- def failed
40
- [10, 13][self.class.calls]
41
- end
42
-
43
- def retry_size
44
- 12
45
- end
46
-
47
- # Return two different values for two separate calls.
48
- # This allows us to test the delta of the value send as a gauge.
49
- def dead_size
50
- [10, 12][self.class.calls]
51
- end
52
-
53
- def scheduled_size
54
- 14
55
- end
56
-
57
- def enqueued
58
- 15
59
- end
60
- end
61
-
62
- class SidekiqQueue
63
- Queue = Struct.new(:name, :size, :latency)
64
-
65
- def self.all
66
- [
67
- Queue.new("default", 10, 12),
68
- Queue.new("critical", 1, 2)
69
- ]
70
- end
71
- end
72
-
73
- module Sidekiq7Mock
74
- VERSION = "7.0.0".freeze
75
-
76
- def self.redis_info_data=(info)
77
- @redis_info_data = info
78
- end
79
-
80
- def self.redis_info_data
81
- return @redis_info_data if defined?(@redis_info_data)
82
-
83
- {
84
- "connected_clients" => 2,
85
- "used_memory" => 1024,
86
- "used_memory_rss" => 512
87
- }
88
- end
89
-
90
- def self.redis
91
- yield Client.new
92
- end
93
-
94
- class Client
95
- def config
96
- Config.new
97
- end
98
-
99
- def info
100
- Sidekiq7Mock.redis_info_data
101
- end
102
- end
103
-
104
- class Config
105
- def host
106
- "localhost"
107
- end
108
- end
109
-
110
- Stats = ::SidekiqStats
111
- Queue = ::SidekiqQueue
112
- end
113
-
114
- module Sidekiq6Mock
115
- VERSION = "6.9.9".freeze
116
-
117
- def self.redis_info
118
- {
119
- "connected_clients" => 2,
120
- "used_memory" => 1024,
121
- "used_memory_rss" => 512
122
- }
123
- end
124
-
125
- def self.redis
126
- yield Client.new
127
- end
128
-
129
- class Client
130
- def connection
131
- { :host => "localhost" }
132
- end
133
- end
134
-
135
- Stats = ::SidekiqStats
136
- Queue = ::SidekiqQueue
137
- end
138
- end
139
- after do
140
- Object.send(:remove_const, :SidekiqStats)
141
- Object.send(:remove_const, :SidekiqQueue)
142
- Object.send(:remove_const, :Sidekiq6Mock)
143
- Object.send(:remove_const, :Sidekiq7Mock)
144
- end
145
-
146
- def with_sidekiq7!
147
- stub_const("Sidekiq", Sidekiq7Mock)
148
- end
149
- # Version not relevant, but requires any version for tests
150
- alias_method :with_sidekiq!, :with_sidekiq7!
151
-
152
- def with_sidekiq6!
153
- stub_const("Sidekiq", Sidekiq6Mock)
154
- end
155
-
156
- describe ".dependencies_present?" do
157
- context "when Sidekiq 7" do
158
- before { with_sidekiq7! }
159
-
160
- it "starts the probe" do
161
- expect(described_class.dependencies_present?).to be_truthy
162
- end
163
- end
164
-
165
- context "when Sidekiq 6" do
166
- before do
167
- with_sidekiq6!
168
- stub_const("Redis::VERSION", version)
169
- end
170
-
171
- context "when Redis version is < 3.3.5" do
172
- let(:version) { "3.3.4" }
173
-
174
- it "does not start probe" do
175
- expect(described_class.dependencies_present?).to be_falsy
176
- end
177
- end
178
-
179
- context "when Redis version is >= 3.3.5" do
180
- let(:version) { "3.3.5" }
181
-
182
- it "starts the probe" do
183
- expect(described_class.dependencies_present?).to be_truthy
184
- end
185
- end
186
- end
187
- end
188
-
189
- it "loads Sidekiq::API" do
190
- with_sidekiq!
191
- # Hide the Sidekiq constant if it was already loaded. It will be
192
- # redefined by loading "sidekiq/api" in the probe.
193
- hide_const "Sidekiq::Stats"
194
-
195
- expect(defined?(Sidekiq::Stats)).to be_falsy
196
- probe
197
- expect(defined?(Sidekiq::Stats)).to be_truthy
198
- end
199
-
200
- it "logs config on initialize" do
201
- with_sidekiq!
202
- log = capture_logs { probe }
203
- expect(log).to contains_log(:debug, "Initializing Sidekiq probe\n")
204
- end
205
-
206
- context "with Sidekiq 7" do
207
- before { with_sidekiq7! }
208
-
209
- it "logs used hostname on call once" do
210
- log = capture_logs { probe.call }
211
- expect(log).to contains_log(
212
- :debug,
213
- %(Sidekiq probe: Using Redis server hostname "localhost" as hostname)
214
- )
215
- log = capture_logs { probe.call }
216
- # Match more logs with incompelete message
217
- expect(log).to_not contains_log(:debug, %(Sidekiq probe: ))
218
- end
219
-
220
- it "collects custom metrics" do
221
- expect_gauge("worker_count", 24).twice
222
- expect_gauge("process_count", 25).twice
223
- expect_gauge("connection_count", 2).twice
224
- expect_gauge("memory_usage", 1024).twice
225
- expect_gauge("memory_usage_rss", 512).twice
226
- expect_gauge("job_count", 5, :status => :processed) # Gauge delta
227
- expect_gauge("job_count", 3, :status => :failed) # Gauge delta
228
- expect_gauge("job_count", 12, :status => :retry_queue).twice
229
- expect_gauge("job_count", 2, :status => :died) # Gauge delta
230
- expect_gauge("job_count", 14, :status => :scheduled).twice
231
- expect_gauge("job_count", 15, :status => :enqueued).twice
232
- expect_gauge("queue_length", 10, :queue => "default").twice
233
- expect_gauge("queue_latency", 12_000, :queue => "default").twice
234
- expect_gauge("queue_length", 1, :queue => "critical").twice
235
- expect_gauge("queue_latency", 2_000, :queue => "critical").twice
236
- # Call probe twice so we can calculate the delta for some gauge values
237
- probe.call
238
- probe.call
239
- end
240
-
241
- context "when redis info doesn't contain requested keys" do
242
- before { Sidekiq7Mock.redis_info_data = {} }
243
-
244
- it "doesn't create metrics for nil values" do
245
- expect_gauge("connection_count").never
246
- expect_gauge("memory_usage").never
247
- expect_gauge("memory_usage_rss").never
248
- # Call probe twice so we can calculate the delta for some gauge values
249
- probe.call
250
- probe.call
251
- end
252
- end
253
- end
254
-
255
- context "with Sidekiq 6" do
256
- before { with_sidekiq6! }
257
-
258
- it "logs used hostname on call once" do
259
- log = capture_logs { probe.call }
260
- expect(log).to contains_log(
261
- :debug,
262
- %(Sidekiq probe: Using Redis server hostname "localhost" as hostname)
263
- )
264
- log = capture_logs { probe.call }
265
- # Match more logs with incompelete message
266
- expect(log).to_not contains_log(:debug, %(Sidekiq probe: ))
267
- end
268
-
269
- it "collects custom metrics" do
270
- expect_gauge("worker_count", 24).twice
271
- expect_gauge("process_count", 25).twice
272
- expect_gauge("connection_count", 2).twice
273
- expect_gauge("memory_usage", 1024).twice
274
- expect_gauge("memory_usage_rss", 512).twice
275
- expect_gauge("job_count", 5, :status => :processed) # Gauge delta
276
- expect_gauge("job_count", 3, :status => :failed) # Gauge delta
277
- expect_gauge("job_count", 12, :status => :retry_queue).twice
278
- expect_gauge("job_count", 2, :status => :died) # Gauge delta
279
- expect_gauge("job_count", 14, :status => :scheduled).twice
280
- expect_gauge("job_count", 15, :status => :enqueued).twice
281
- expect_gauge("queue_length", 10, :queue => "default").twice
282
- expect_gauge("queue_latency", 12_000, :queue => "default").twice
283
- expect_gauge("queue_length", 1, :queue => "critical").twice
284
- expect_gauge("queue_latency", 2_000, :queue => "critical").twice
285
- # Call probe twice so we can calculate the delta for some gauge values
286
- probe.call
287
- probe.call
288
- end
289
-
290
- context "when Sidekiq `redis_info` is not defined" do
291
- before do
292
- allow(Sidekiq).to receive(:respond_to?).with(:redis_info).and_return(false)
293
- end
294
-
295
- it "does not collect redis metrics" do
296
- expect_gauge("connection_count", 2).never
297
- expect_gauge("memory_usage", 1024).never
298
- expect_gauge("memory_usage_rss", 512).never
299
- probe.call
300
- end
301
- end
302
- end
303
-
304
- context "when hostname is configured for probe" do
305
- let(:redis_hostname) { "my_redis_server" }
306
- let(:probe) { described_class.new(:hostname => redis_hostname) }
307
-
308
- it "uses the redis hostname for the hostname tag" do
309
- with_sidekiq!
310
-
311
- allow(Appsignal).to receive(:set_gauge).and_call_original
312
- log = capture_logs { probe }
313
- expect(log).to contains_log(
314
- :debug,
315
- %(Initializing Sidekiq probe with config: {:hostname=>"#{redis_hostname}"})
316
- )
317
- log = capture_logs { probe.call }
318
- expect(log).to contains_log(
319
- :debug,
320
- "Sidekiq probe: Using hostname config option #{redis_hostname.inspect} as hostname"
321
- )
322
- expect(Appsignal).to have_received(:set_gauge)
323
- .with(anything, anything, :hostname => redis_hostname).at_least(:once)
324
- end
325
- end
326
-
327
- def expect_gauge(key, value = anything, tags = {})
328
- expect(Appsignal).to receive(:set_gauge)
329
- .with("sidekiq_#{key}", value, expected_default_tags.merge(tags))
330
- .and_call_original
331
- end
332
- end
333
- end