appsignal 3.4.2 → 3.4.3

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.
@@ -643,6 +643,7 @@ describe Appsignal::Config do
643
643
  expect(ENV.fetch("_APPSIGNAL_FILES_WORLD_ACCESSIBLE", nil)).to eq "true"
644
644
  expect(ENV.fetch("_APPSIGNAL_TRANSACTION_DEBUG_MODE", nil)).to eq "true"
645
645
  expect(ENV.fetch("_APPSIGNAL_SEND_ENVIRONMENT_METADATA", nil)).to eq "false"
646
+ expect(ENV.fetch("_APPSIGNAL_STATSD_PORT", nil)).to eq ""
646
647
  expect(ENV.fetch("_APPSIGNAL_FILTER_PARAMETERS", nil)).to eq "password,confirm_password"
647
648
  expect(ENV.fetch("_APPSIGNAL_FILTER_SESSION_DATA", nil)).to eq "key1,key2"
648
649
  expect(ENV.fetch("_APP_REVISION", nil)).to eq "v2.5.1"
@@ -682,6 +683,17 @@ describe Appsignal::Config do
682
683
  expect(ENV.fetch("_APPSIGNAL_WORKING_DIRECTORY_PATH", nil)).to eq "/tmp/appsignal2"
683
684
  end
684
685
  end
686
+
687
+ context "with :statsd_port" do
688
+ before do
689
+ config[:statsd_port] = "1000"
690
+ config.write_to_environment
691
+ end
692
+
693
+ it "sets the statsd_port env var" do
694
+ expect(ENV.fetch("_APPSIGNAL_STATSD_PORT", nil)).to eq "1000"
695
+ end
696
+ end
685
697
  end
686
698
 
687
699
  describe "#log_file_path" do
@@ -106,26 +106,31 @@ RSpec.describe "Puma plugin" do
106
106
  end
107
107
  end
108
108
  end
109
- Puma._set_stats = stats_data
110
109
  load File.expand_path("../lib/puma/plugin/appsignal.rb", APPSIGNAL_SPEC_DIR)
111
-
112
- @statsd = StatsdServer.new
113
- @server_thread = Thread.new { @statsd.start }
114
- @server_thread.abort_on_exception = true
115
110
  end
116
111
  after do
117
- @statsd = nil
118
-
119
112
  Object.send(:remove_const, :Puma)
120
113
  Object.send(:remove_const, :AppsignalPumaPlugin)
121
114
  end
122
115
 
123
- def run_plugin(plugin, &block)
116
+ def run_plugin(stats_data, plugin, &block)
117
+ Puma._set_stats = stats_data
118
+ @statsd = StatsdServer.new
119
+ @server_thread = Thread.new { @statsd.start }
120
+ @server_thread.abort_on_exception = true
124
121
  @client_thread = Thread.new { start_plugin(plugin) }
125
122
  @client_thread.abort_on_exception = true
126
123
  wait_for(:puma_client_wait, &block)
127
124
  ensure
128
- stop_all
125
+ Puma._set_stats = nil
126
+ # Stop all threads in test and stop listening on the UDPSocket
127
+ @client_thread.kill if defined?(@client_thread) && @client_thread
128
+ @server_thread.kill if defined?(@server_thread) && @server_thread
129
+ @client_thread = nil
130
+ @server_thread = nil
131
+
132
+ @statsd.stop if defined?(@statsd) && @statsd
133
+ @statsd = nil
129
134
  end
130
135
 
131
136
  def appsignal_plugin
@@ -141,15 +146,6 @@ RSpec.describe "Puma plugin" do
141
146
  plugin.in_background_block.call
142
147
  end
143
148
 
144
- # Stop all threads in test and stop listening on the UDPSocket
145
- def stop_all
146
- @client_thread.kill if defined?(@client_thread) && @client_thread
147
- @server_thread.kill if defined?(@server_thread) && @server_thread
148
- @statsd.stop if defined?(@statsd) && @statsd
149
- @client_thread = nil
150
- @server_thread = nil
151
- end
152
-
153
149
  def logs
154
150
  launcher.log_writer.logs
155
151
  end
@@ -209,7 +205,7 @@ RSpec.describe "Puma plugin" do
209
205
  end
210
206
 
211
207
  it "collects puma stats as guage metrics with the (summed) worker metrics" do
212
- run_plugin(appsignal_plugin) do
208
+ run_plugin(stats_data, appsignal_plugin) do
213
209
  expect(logs).to_not include([:error, kind_of(String)])
214
210
  expect_gauge(:workers, 2, "type" => "count")
215
211
  expect_gauge(:workers, 2, "type" => "booted")
@@ -233,7 +229,7 @@ RSpec.describe "Puma plugin" do
233
229
  end
234
230
 
235
231
  it "calls `puma_gauge` with the (summed) worker metrics" do
236
- run_plugin(appsignal_plugin) do
232
+ run_plugin(stats_data, appsignal_plugin) do
237
233
  expect(logs).to_not include([:error, kind_of(String)])
238
234
  expect_gauge(:connection_backlog, 0)
239
235
  expect_gauge(:pool_capacity, 5)
@@ -249,7 +245,7 @@ RSpec.describe "Puma plugin" do
249
245
  after { ENV.delete("APPSIGNAL_HOSTNAME") }
250
246
 
251
247
  it "reports the APPSIGNAL_HOSTNAME as the hostname tag value" do
252
- run_plugin(appsignal_plugin) do
248
+ run_plugin(stats_data, appsignal_plugin) do
253
249
  expect(logs).to_not include([:error, kind_of(String)])
254
250
  expect_gauge(:connection_backlog, 1)
255
251
  end
@@ -262,7 +258,7 @@ RSpec.describe "Puma plugin" do
262
258
  end
263
259
 
264
260
  it "fetches metrics from Puma.stats instead" do
265
- run_plugin(appsignal_plugin) do
261
+ run_plugin(stats_data, appsignal_plugin) do
266
262
  expect(logs).to_not include([:error, kind_of(String)])
267
263
  expect(logs).to_not include([kind_of(Symbol), "AppSignal: No Puma stats to report."])
268
264
  expect_gauge(:connection_backlog, 1)
@@ -277,7 +273,7 @@ RSpec.describe "Puma plugin" do
277
273
  end
278
274
 
279
275
  it "does not fetch metrics" do
280
- run_plugin(appsignal_plugin) do
276
+ run_plugin(stats_data, appsignal_plugin) do
281
277
  expect(logs).to_not include([:error, kind_of(String)])
282
278
  expect(logs).to include([:debug, "AppSignal: No Puma stats to report."])
283
279
  expect(messages).to be_empty
@@ -287,8 +283,7 @@ RSpec.describe "Puma plugin" do
287
283
 
288
284
  context "without running StatsD server" do
289
285
  it "does nothing" do
290
- stop_all
291
- run_plugin(appsignal_plugin) do
286
+ run_plugin(stats_data, appsignal_plugin) do
292
287
  expect(logs).to_not include([:error, kind_of(String)])
293
288
  expect(messages).to be_empty
294
289
  end
@@ -328,7 +323,7 @@ RSpec.describe "Puma plugin" do
328
323
  let(:stats_data) { { :max_threads => 5 } }
329
324
 
330
325
  it "logs messages to the events class" do
331
- run_plugin(appsignal_plugin) do
326
+ run_plugin(stats_data, appsignal_plugin) do
332
327
  expect(launcher.events.logs).to_not be_empty
333
328
  end
334
329
  end
@@ -1,6 +1,18 @@
1
1
  RSpec::Matchers.define :contains_log do |level, message|
2
+ expected_log_line = "[#{level.upcase}] #{message}"
3
+
2
4
  match do |actual|
3
- actual.include?("[#{level.upcase}] #{message}")
5
+ actual.include?(expected_log_line)
6
+ end
7
+
8
+ failure_message do |actual|
9
+ <<~MESSAGE
10
+ Did not contain log line:
11
+ #{expected_log_line}
12
+
13
+ Received logs:
14
+ #{actual}
15
+ MESSAGE
4
16
  end
5
17
 
6
18
  diffable
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.2
4
+ version: 3.4.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2023-05-02 00:00:00.000000000 Z
13
+ date: 2023-06-02 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -439,7 +439,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
439
439
  - !ruby/object:Gem::Version
440
440
  version: '0'
441
441
  requirements: []
442
- rubygems_version: 3.4.6
442
+ rubygems_version: 3.4.8
443
443
  signing_key:
444
444
  specification_version: 4
445
445
  summary: Logs performance and exception data from your app to appsignal.com