appsignal 2.10.12-java → 2.11.0.alpha.1-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.
@@ -4,7 +4,7 @@ describe Appsignal::Marker do
4
4
  described_class.new(
5
5
  {
6
6
  :revision => "503ce0923ed177a3ce000005",
7
- :repository => "main",
7
+ :repository => "master",
8
8
  :user => "batman",
9
9
  :rails_env => "production"
10
10
  },
@@ -4,12 +4,9 @@ describe Appsignal::Rack::JSExceptionCatcher do
4
4
  let(:config_options) { { :enable_frontend_error_catching => true } }
5
5
  let(:config) { project_fixture_config("production", config_options) }
6
6
  let(:deprecation_message) do
7
- "The Appsignal::Rack::JSExceptionCatcher is " \
8
- "deprecated and will be removed in a future version. Please use " \
9
- "the official AppSignal JavaScript integration by disabling " \
10
- "`enable_frontend_error_catching` in your configuration and " \
11
- "installing AppSignal for JavaScript instead. " \
12
- "(https://docs.appsignal.com/front-end/)"
7
+ "The Appsignal::Rack::JSExceptionCatcher is deprecated. " \
8
+ "Please use the official AppSignal JavaScript integration instead. " \
9
+ "https://docs.appsignal.com/front-end/"
13
10
  end
14
11
  before { Appsignal.config = config }
15
12
 
@@ -35,9 +32,7 @@ describe Appsignal::Rack::JSExceptionCatcher do
35
32
 
36
33
  describe "#call" do
37
34
  let(:catcher) do
38
- silence :allowed => ["enable_frontend_error_catching"] do
39
- Appsignal::Rack::JSExceptionCatcher.new(app, options)
40
- end
35
+ silence { Appsignal::Rack::JSExceptionCatcher.new(app, options) }
41
36
  end
42
37
  after { catcher.call(env) }
43
38
 
@@ -500,23 +500,40 @@ describe Appsignal::Transaction do
500
500
  end
501
501
 
502
502
  describe "#set_http_or_background_queue_start" do
503
- context "for a http transaction" do
504
- let(:namespace) { Appsignal::Transaction::HTTP_REQUEST }
505
- let(:env) { { "HTTP_X_REQUEST_START" => (fixed_time * 1000).to_s } }
503
+ let(:header_factor) { 1_000 }
504
+ let(:env_queue_start) { fixed_time + 20 } # in seconds
506
505
 
507
- it "should set the queue start on the transaction" do
508
- expect(transaction).to receive(:set_queue_start).with(13_897_836_000)
506
+ context "when a queue time is found in a request header" do
507
+ let(:header_time) { ((fixed_time + 10) * header_factor).to_i } # in milliseconds
508
+ let(:env) { { "HTTP_X_REQUEST_START" => "t=#{header_time}" } }
509
+
510
+ it "sets the http header value in milliseconds on the transaction" do
511
+ expect(transaction).to receive(:set_queue_start).with(1_389_783_610_000)
509
512
 
510
513
  transaction.set_http_or_background_queue_start
511
514
  end
515
+
516
+ context "when a :queue_start key is found in the transaction environment" do
517
+ let(:env) do
518
+ {
519
+ "HTTP_X_REQUEST_START" => "t=#{header_time}",
520
+ :queue_start => env_queue_start
521
+ }
522
+ end
523
+
524
+ it "sets the http header value in milliseconds on the transaction" do
525
+ expect(transaction).to receive(:set_queue_start).with(1_389_783_610_000)
526
+
527
+ transaction.set_http_or_background_queue_start
528
+ end
529
+ end
512
530
  end
513
531
 
514
- context "for a background transaction" do
515
- let(:namespace) { Appsignal::Transaction::BACKGROUND_JOB }
516
- let(:env) { { :queue_start => fixed_time } }
532
+ context "when a :queue_start key is found in the transaction environment" do
533
+ let(:env) { { :queue_start => env_queue_start } } # in seconds
517
534
 
518
- it "should set the queue start on the transaction" do
519
- expect(transaction).to receive(:set_queue_start).with(1_389_783_600_000)
535
+ it "sets the :queue_start value in milliseconds on the transaction" do
536
+ expect(transaction).to receive(:set_queue_start).with(1_389_783_620_000)
520
537
 
521
538
  transaction.set_http_or_background_queue_start
522
539
  end
@@ -910,7 +927,7 @@ describe Appsignal::Transaction do
910
927
  context "when queue start is set" do
911
928
  let(:env) { background_env_with_data }
912
929
 
913
- it { is_expected.to eq 1_389_783_590_000 }
930
+ it { is_expected.to eq 1_389_783_600_000 }
914
931
  end
915
932
  end
916
933
 
@@ -949,7 +966,7 @@ describe Appsignal::Transaction do
949
966
  it { is_expected.to be_nil }
950
967
  end
951
968
 
952
- context "with some cruft" do
969
+ context "with unparsable content at the end" do
953
970
  let(:env) { { "HTTP_X_REQUEST_START" => "t=#{slightly_earlier_time_value}aaaa" } }
954
971
 
955
972
  it { is_expected.to eq 1_389_783_599_600 }
@@ -969,7 +986,7 @@ describe Appsignal::Transaction do
969
986
  end
970
987
  end
971
988
 
972
- context "time in miliseconds" do
989
+ context "time in milliseconds" do
973
990
  let(:factor) { 1_000 }
974
991
 
975
992
  it_should_behave_like "http queue start"
@@ -1,4 +1,6 @@
1
1
  describe Appsignal do
2
+ include EnvironmentMetadataHelper
3
+
2
4
  before do
3
5
  # Make sure we have a clean state because we want to test
4
6
  # initialization here.
@@ -80,18 +82,22 @@ describe Appsignal do
80
82
  allow(GC::Profiler).to receive(:enable)
81
83
  Appsignal.config.config_hash[:enable_allocation_tracking] = true
82
84
  Appsignal.config.config_hash[:enable_gc_instrumentation] = true
85
+ capture_environment_metadata_report_calls
83
86
  end
84
87
 
85
88
  it "should enable Ruby's GC::Profiler" do
86
89
  expect(GC::Profiler).to receive(:enable)
87
90
  Appsignal.start
91
+ expect_environment_metadata("ruby_gc_instrumentation_enabled", "true")
88
92
  end
89
93
 
90
94
  unless Appsignal::System.jruby?
95
+
91
96
  it "installs the allocation event hook" do
92
97
  expect(Appsignal::Extension).to receive(:install_allocation_event_hook)
93
98
  .and_call_original
94
99
  Appsignal.start
100
+ expect_environment_metadata("ruby_allocation_tracking_enabled", "true")
95
101
  end
96
102
  end
97
103
  end
@@ -100,6 +106,7 @@ describe Appsignal do
100
106
  before do
101
107
  Appsignal.config.config_hash[:enable_allocation_tracking] = false
102
108
  Appsignal.config.config_hash[:enable_gc_instrumentation] = false
109
+ capture_environment_metadata_report_calls
103
110
  end
104
111
 
105
112
  it "should not enable Ruby's GC::Profiler" do
@@ -110,11 +117,13 @@ describe Appsignal do
110
117
  it "should not install the allocation event hook" do
111
118
  expect(Appsignal::Minutely).not_to receive(:install_allocation_event_hook)
112
119
  Appsignal.start
120
+ expect_not_environment_metadata("ruby_allocation_tracking_enabled")
113
121
  end
114
122
 
115
123
  it "should not add the gc probe to minutely" do
116
124
  expect(Appsignal::Minutely).not_to receive(:register_garbage_collection_probe)
117
125
  Appsignal.start
126
+ expect_not_environment_metadata("ruby_gc_instrumentation_enabled")
118
127
  end
119
128
  end
120
129
 
@@ -139,6 +148,19 @@ describe Appsignal do
139
148
  Appsignal.start
140
149
  end
141
150
  end
151
+
152
+ describe "environment metadata" do
153
+ before { capture_environment_metadata_report_calls }
154
+
155
+ it "collects and reports environment metadata" do
156
+ Appsignal.start
157
+ expect_environment_metadata("ruby_version", "#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}")
158
+ expect_environment_metadata("ruby_engine", RUBY_ENGINE)
159
+ if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new("2.3.0")
160
+ expect_environment_metadata("ruby_engine_version", RUBY_ENGINE_VERSION)
161
+ end
162
+ end
163
+ end
142
164
  end
143
165
 
144
166
  context "with debug logging" do
@@ -5,13 +5,12 @@ module ConfigHelpers
5
5
  )
6
6
  end
7
7
 
8
- def project_fixture_config(env = "production", initial_config = {}, logger = Appsignal.logger, config_file = nil)
8
+ def project_fixture_config(env = "production", initial_config = {}, logger = Appsignal.logger)
9
9
  Appsignal::Config.new(
10
10
  project_fixture_path,
11
11
  env,
12
12
  initial_config,
13
- logger,
14
- config_file
13
+ logger
15
14
  )
16
15
  end
17
16
 
@@ -27,7 +27,7 @@ module EnvHelpers
27
27
  :priority => 1,
28
28
  :attempts => 0,
29
29
  :queue => "default",
30
- :queue_start => fixed_time - 10.0
30
+ :queue_start => fixed_time
31
31
  }.merge(args)
32
32
  end
33
33
  end
@@ -0,0 +1,16 @@
1
+ module EnvironmentMetadataHelper
2
+ def capture_environment_metadata_report_calls
3
+ allow(Appsignal::Extension).to receive(:set_environment_metadata)
4
+ .and_call_original
5
+ end
6
+
7
+ def expect_environment_metadata(key, value)
8
+ expect(Appsignal::Extension).to have_received(:set_environment_metadata)
9
+ .with(key, value)
10
+ end
11
+
12
+ def expect_not_environment_metadata(key)
13
+ expect(Appsignal::Extension).to_not have_received(:set_environment_metadata)
14
+ .with(key, anything)
15
+ end
16
+ end
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: 2.10.12
4
+ version: 2.11.0.alpha.1
5
5
  platform: java
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: 2020-07-28 00:00:00.000000000 Z
13
+ date: 2020-06-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -204,6 +204,7 @@ files:
204
204
  - lib/appsignal/cli/notify_of_deploy.rb
205
205
  - lib/appsignal/config.rb
206
206
  - lib/appsignal/demo.rb
207
+ - lib/appsignal/environment.rb
207
208
  - lib/appsignal/event_formatter.rb
208
209
  - lib/appsignal/event_formatter/action_view/render_formatter.rb
209
210
  - lib/appsignal/event_formatter/active_record/instantiation_formatter.rb
@@ -288,6 +289,7 @@ files:
288
289
  - spec/lib/appsignal/cli_spec.rb
289
290
  - spec/lib/appsignal/config_spec.rb
290
291
  - spec/lib/appsignal/demo_spec.rb
292
+ - spec/lib/appsignal/environment_spec.rb
291
293
  - spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb
292
294
  - spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb
293
295
  - spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb
@@ -362,6 +364,7 @@ files:
362
364
  - spec/support/helpers/dependency_helper.rb
363
365
  - spec/support/helpers/directory_helper.rb
364
366
  - spec/support/helpers/env_helpers.rb
367
+ - spec/support/helpers/environment_metdata_helper.rb
365
368
  - spec/support/helpers/example_exception.rb
366
369
  - spec/support/helpers/example_standard_error.rb
367
370
  - spec/support/helpers/log_helpers.rb
@@ -389,7 +392,7 @@ licenses:
389
392
  - MIT
390
393
  metadata:
391
394
  bug_tracker_uri: https://github.com/appsignal/appsignal-ruby/issues
392
- changelog_uri: https://github.com/appsignal/appsignal-ruby/blob/main/CHANGELOG.md
395
+ changelog_uri: https://github.com/appsignal/appsignal-ruby/blob/master/CHANGELOG.md
393
396
  documentation_uri: https://docs.appsignal.com/ruby/
394
397
  homepage_uri: https://docs.appsignal.com/ruby/
395
398
  source_code_uri: https://github.com/appsignal/appsignal-ruby
@@ -405,9 +408,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
405
408
  version: '1.9'
406
409
  required_rubygems_version: !ruby/object:Gem::Requirement
407
410
  requirements:
408
- - - ">="
411
+ - - ">"
409
412
  - !ruby/object:Gem::Version
410
- version: '0'
413
+ version: 1.3.1
411
414
  requirements: []
412
415
  rubygems_version: 3.1.4
413
416
  signing_key:
@@ -428,6 +431,7 @@ test_files:
428
431
  - spec/lib/appsignal/cli_spec.rb
429
432
  - spec/lib/appsignal/config_spec.rb
430
433
  - spec/lib/appsignal/demo_spec.rb
434
+ - spec/lib/appsignal/environment_spec.rb
431
435
  - spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb
432
436
  - spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb
433
437
  - spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb
@@ -502,6 +506,7 @@ test_files:
502
506
  - spec/support/helpers/dependency_helper.rb
503
507
  - spec/support/helpers/directory_helper.rb
504
508
  - spec/support/helpers/env_helpers.rb
509
+ - spec/support/helpers/environment_metdata_helper.rb
505
510
  - spec/support/helpers/example_exception.rb
506
511
  - spec/support/helpers/example_standard_error.rb
507
512
  - spec/support/helpers/log_helpers.rb