appsignal 3.4.2 → 3.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +15 -0
- data/ext/agent.rb +27 -27
- data/lib/appsignal/config.rb +3 -0
- data/lib/appsignal/version.rb +1 -1
- data/lib/puma/plugin/appsignal.rb +1 -1
- data/resources/cacert.pem +915 -1009
- data/spec/lib/appsignal/config_spec.rb +12 -0
- data/spec/lib/puma/appsignal_spec.rb +21 -26
- data/spec/support/matchers/contains_log.rb +13 -1
- metadata +3 -3
@@ -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
|
-
|
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
|
-
|
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?(
|
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.
|
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-
|
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.
|
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
|