newrelic_rpm 3.9.7.266 → 3.9.8.273

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +44 -1
  3. data/lib/new_relic/agent.rb +31 -0
  4. data/lib/new_relic/agent/agent.rb +34 -5
  5. data/lib/new_relic/agent/configuration/default_source.rb +25 -1
  6. data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
  7. data/lib/new_relic/agent/cross_app_monitor.rb +1 -1
  8. data/lib/new_relic/agent/custom_event_aggregator.rb +2 -4
  9. data/lib/new_relic/agent/error_collector.rb +17 -12
  10. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +9 -8
  11. data/lib/new_relic/agent/instrumentation/grape.rb +67 -0
  12. data/lib/new_relic/agent/new_relic_service.rb +93 -43
  13. data/lib/new_relic/agent/pipe_service.rb +4 -0
  14. data/lib/new_relic/agent/synthetics_event_buffer.rb +42 -0
  15. data/lib/new_relic/agent/system_info.rb +44 -18
  16. data/lib/new_relic/agent/transaction_event_aggregator.rb +9 -2
  17. data/lib/new_relic/agent/utilization_data.rb +77 -0
  18. data/lib/new_relic/agent/vm/mri_vm.rb +3 -3
  19. data/lib/new_relic/rack/agent_hooks.rb +15 -15
  20. data/lib/new_relic/recipes/capistrano3.rb +2 -2
  21. data/lib/new_relic/version.rb +1 -1
  22. data/newrelic_rpm.gemspec +0 -1
  23. data/test/agent_helper.rb +13 -3
  24. data/test/environments/lib/environments/runner.rb +3 -19
  25. data/test/environments/rails42/Gemfile +5 -1
  26. data/test/fixtures/cross_agent_tests/README.md +1 -1
  27. data/test/fixtures/cross_agent_tests/cat_map.json +154 -88
  28. data/test/fixtures/cross_agent_tests/docker_container_id/cases.json +30 -6
  29. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-lxc-driver.txt +10 -0
  30. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-fs.txt +10 -0
  31. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-systemd.txt +10 -0
  32. data/test/fixtures/cross_agent_tests/docker_container_id/heroku.txt +1 -0
  33. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-lxc-container.txt +10 -0
  34. data/test/fixtures/cross_agent_tests/docker_container_id/{lxc-containers-without-docker.txt → ubuntu-14.04-no-container.txt} +0 -0
  35. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.10-no-container.txt +10 -0
  36. data/test/multiverse/lib/multiverse/runner.rb +1 -0
  37. data/test/multiverse/lib/multiverse/suite.rb +6 -2
  38. data/test/multiverse/suites/active_record/.gitignore +1 -0
  39. data/test/multiverse/suites/active_record/Envfile +25 -7
  40. data/test/multiverse/suites/active_record/Rakefile +9 -0
  41. data/test/{new_relic/agent/instrumentation → multiverse/suites/active_record}/active_record_test.rb +82 -88
  42. data/test/multiverse/suites/active_record/app/models/models.rb +27 -0
  43. data/test/multiverse/suites/active_record/ar_method_aliasing.rb +5 -46
  44. data/test/multiverse/suites/active_record/before_suite.rb +23 -0
  45. data/test/multiverse/suites/active_record/config/database.rb +79 -0
  46. data/test/multiverse/suites/active_record/config/database.yml +19 -0
  47. data/test/multiverse/suites/active_record/db/migrate/20141105131800_create_users_and_aliases.rb +21 -0
  48. data/test/multiverse/suites/active_record/db/migrate/20141106082200_create_orders_and_shipments.rb +25 -0
  49. data/test/multiverse/suites/agent_only/cross_application_tracing_test.rb +4 -1
  50. data/test/multiverse/suites/agent_only/custom_analytics_events_test.rb +53 -0
  51. data/test/multiverse/suites/agent_only/keepalive_test.rb +3 -7
  52. data/test/multiverse/suites/agent_only/utilization_data_collection_test.rb +170 -0
  53. data/test/multiverse/suites/grape/Envfile +15 -0
  54. data/test/multiverse/suites/grape/config/newrelic.yml +18 -0
  55. data/test/multiverse/suites/grape/grape_test.rb +60 -0
  56. data/test/multiverse/suites/grape/grape_test_api.rb +43 -0
  57. data/test/multiverse/suites/grape/unsupported_version_test.rb +31 -0
  58. data/test/multiverse/suites/json/Envfile +3 -1
  59. data/test/multiverse/suites/rack/rack_env_mutation_test.rb +54 -0
  60. data/test/multiverse/suites/rails/Envfile +1 -1
  61. data/test/multiverse/suites/rails/view_instrumentation_test.rb +2 -1
  62. data/test/multiverse/suites/resque/resque_marshalling_test.rb +54 -0
  63. data/test/multiverse/suites/typhoeus/Envfile +4 -4
  64. data/test/new_relic/agent/agent_test.rb +37 -0
  65. data/test/new_relic/agent/configuration/default_source_test.rb +14 -0
  66. data/test/new_relic/agent/custom_event_aggregator_test.rb +3 -3
  67. data/test/new_relic/agent/error_collector/notice_error_test.rb +4 -4
  68. data/test/new_relic/agent/error_collector_test.rb +27 -4
  69. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +23 -0
  70. data/test/new_relic/agent/new_relic_service_test.rb +208 -103
  71. data/test/new_relic/agent/pipe_service_test.rb +7 -0
  72. data/test/new_relic/agent/synthetics_event_buffer_test.rb +54 -0
  73. data/test/new_relic/agent/synthetics_monitor_test.rb +0 -3
  74. data/test/new_relic/agent/system_info_test.rb +6 -6
  75. data/test/new_relic/agent/transaction_event_aggregator_test.rb +43 -2
  76. data/test/new_relic/agent/utilization_data_test.rb +18 -0
  77. data/test/new_relic/collection_helper_test.rb +0 -1
  78. data/test/new_relic/data_container_tests.rb +11 -7
  79. data/test/new_relic/fake_collector.rb +23 -0
  80. data/test/new_relic/fake_instance_metadata_service.rb +45 -0
  81. data/test/new_relic/license_test.rb +2 -0
  82. data/test/new_relic/marshalling_test_cases.rb +89 -4
  83. data/test/new_relic/transaction_sample_test.rb +1 -0
  84. data/test/test_helper.rb +1 -0
  85. metadata +33 -6
  86. metadata.gz.sig +1 -2
  87. data/test/active_record_fixtures.rb +0 -79
  88. data/test/new_relic/rack/all_test.rb +0 -14
@@ -0,0 +1,15 @@
1
+ suite_condition("Grape is only supported for versions >= 1.9.3") do
2
+ # Grape instrumentation is not ready to go live yet.
3
+ # When set, should require 1.9.3 or greater
4
+ false
5
+ end
6
+
7
+ versions = %w(0.9.0 0.8.0 0.7.0 0.6.1 0.5.0 0.4.1 0.3.2 0.2.6 0.2.0 0.1.5)
8
+
9
+ versions.each do |version|
10
+ gemfile <<-RB
11
+ gem 'rack'
12
+ gem 'rack-test'
13
+ gem 'grape', '~> #{version}'
14
+ RB
15
+ end
@@ -0,0 +1,18 @@
1
+ ---
2
+ development:
3
+ error_collector:
4
+ enabled: true
5
+ apdex_t: 0.5
6
+ ssl: false
7
+ monitor_mode: true
8
+ license_key: bootstrap_newrelic_admin_license_key_000
9
+ developer_mode: false
10
+ app_name: test
11
+ host: 127.0.0.1
12
+ api_host: 127.0.0.1
13
+ transaction_tracer:
14
+ record_sql: obfuscated
15
+ enabled: true
16
+ stack_trace_threshold: 0.5
17
+ transaction_threshold: 1.0
18
+ capture_params: false
@@ -0,0 +1,60 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic"s license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require "grape"
6
+ require "newrelic_rpm"
7
+ require 'multiverse_helpers'
8
+ require './grape_test_api'
9
+
10
+ require File.join(File.dirname(__FILE__), "..", "..", "..", "agent_helper")
11
+
12
+ class GrapeTest < Minitest::Test
13
+ include Rack::Test::Methods
14
+ include MultiverseHelpers
15
+
16
+ setup_and_teardown_agent
17
+
18
+ unless ::Grape::VERSION == '0.1.5'
19
+ def app
20
+ Rack::Builder.app { run GrapeTestApi.new }
21
+ end
22
+
23
+ def test_nonexistent_route
24
+ get '/not_grape_ape'
25
+ assert_no_metrics_match(/grape_ape/)
26
+ end
27
+
28
+ def test_route_raises_an_error
29
+ assert_raises(GrapeTestApiError) do
30
+ get '/self_destruct'
31
+ end
32
+ assert_metrics_recorded(['Errors/Controller/Rack/GrapeTestApi/self_destruct (GET)'])
33
+ end
34
+
35
+ def test_getting_a_list_of_grape_apes
36
+ get '/grape_ape'
37
+ assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape (GET)'])
38
+ end
39
+
40
+ def test_showing_a_grape_ape
41
+ get '/grape_ape/1'
42
+ assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (GET)'])
43
+ end
44
+
45
+ def test_creating_a_grape_ape
46
+ post '/grape_ape', {}
47
+ assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape (POST)'])
48
+ end
49
+
50
+ def test_updating_a_grape_ape
51
+ put '/grape_ape/1', {}
52
+ assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (PUT)'])
53
+ end
54
+
55
+ def test_deleting_a_grape_ape
56
+ delete '/grape_ape/1'
57
+ assert_metrics_recorded(['Controller/Rack/GrapeTestApi/grape_ape/:id (DELETE)'])
58
+ end
59
+ end
60
+ end
@@ -0,0 +1,43 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic"s license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require 'grape'
6
+
7
+ class GrapeTestApiError < StandardError; end
8
+ class GrapeTestApi < Grape::API
9
+ # namespace, group, resource, and resources all do the same thing.
10
+ # They are aliases for namespace.
11
+
12
+ get :self_destruct do
13
+ raise GrapeTestApiError.new("I'm sorry Dave, I'm afraid I can't do that.")
14
+ end
15
+
16
+ namespace :grape_ape do
17
+ get do
18
+ 'List grape apes!'
19
+ end
20
+
21
+ get ':id' do
22
+ 'Show grape ape!'
23
+ end
24
+ end
25
+
26
+ resource :grape_ape do
27
+ post do
28
+ 'Create grape ape!'
29
+ end
30
+ end
31
+
32
+ resources :grape_ape do
33
+ put ':id' do
34
+ 'Update grape ape!'
35
+ end
36
+ end
37
+
38
+ group :grape_ape do
39
+ delete ':id' do
40
+ 'Destroy grape ape!'
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,31 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic"s license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require "grape"
6
+ require "newrelic_rpm"
7
+ require 'multiverse_helpers'
8
+ require './grape_test_api'
9
+
10
+ require File.join(File.dirname(__FILE__), "..", "..", "..", "agent_helper")
11
+
12
+ class UnsupportedGrapeTest < Minitest::Test
13
+ include Rack::Test::Methods
14
+ include MultiverseHelpers
15
+
16
+ if ::Grape::VERSION == '0.1.5'
17
+ def app
18
+ GrapeTestApi
19
+ end
20
+
21
+ def test_unsupported_version
22
+ get '/grape_ape'
23
+ get '/grape_ape/1'
24
+ post '/grape_ape', {}
25
+ put '/grape_ape/1', {}
26
+ delete '/grape_ape/1'
27
+
28
+ assert_no_metrics_match(/grape_ape/)
29
+ end
30
+ end
31
+ end
@@ -1,8 +1,10 @@
1
- all_versions = [ '~> 1.8.1', '~> 1.7.7', '~> 1.6.8', '~> 1.5.5' ]
1
+ all_versions = [ '~> 1.8.1' ]
2
+ before_2_2_0 = [ '~> 1.7.7', '~> 1.6.8', '~> 1.5.5' ]
2
3
  before_2_0_0 = [ '~> 1.4.6', '~> 1.2.4', '~> 1.1.9' ]
3
4
  before_1_9_2 = [ '1.1.2' ]
4
5
 
5
6
  json_gems = all_versions.dup
7
+ json_gems += before_2_2_0 if RUBY_VERSION < '2.2.0'
6
8
  json_gems += before_2_0_0 if RUBY_VERSION < '2.0.0'
7
9
  json_gems += before_1_9_2 if RUBY_VERSION < '1.9.2'
8
10
 
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic's license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require 'multiverse_helpers'
6
+ require 'new_relic/rack/browser_monitoring'
7
+ require 'new_relic/rack/agent_hooks'
8
+ require 'new_relic/rack/error_collector'
9
+
10
+ if NewRelic::Agent::Instrumentation::RackHelpers.rack_version_supported?
11
+
12
+ class RackEnvMutationTest < Minitest::Test
13
+ attr_accessor :inner_app
14
+
15
+ include MultiverseHelpers
16
+ include Rack::Test::Methods
17
+
18
+ setup_and_teardown_agent
19
+
20
+ class BadApp
21
+ def call(env)
22
+ Thread.new do
23
+ 100.times do
24
+ env.each do |k, v|
25
+ # allow main thread to run while we're still in the middle of
26
+ # iterating
27
+ Thread.pass
28
+ end
29
+ end
30
+ end
31
+
32
+ # Give the thread we just spawned a chance to start up
33
+ Thread.pass
34
+
35
+ [200, {}, ['cool story']]
36
+ end
37
+ end
38
+
39
+ def app
40
+ inner_app = BadApp.new
41
+ Rack::Builder.app do
42
+ use NewRelic::Rack::AgentHooks
43
+ run inner_app
44
+ end
45
+ end
46
+
47
+ def test_safe_from_iterations_over_rack_env_from_background_threads
48
+ 100.times do
49
+ get '/'
50
+ end
51
+ end
52
+ end
53
+
54
+ end
@@ -1,6 +1,6 @@
1
1
  if RUBY_VERSION >= '1.9.3'
2
2
  gemfile <<-RB
3
- gem 'rails', '~>4.2.0.beta4'
3
+ gem 'rails', '~>4.2.0.rc1'
4
4
  gem 'haml', :require => false
5
5
  gem 'minitest', '5.2.3'
6
6
  RB
@@ -97,7 +97,8 @@ class ViewInstrumentationTest < RailsMultiverseTest
97
97
  end
98
98
  end
99
99
 
100
- (ViewsController.action_methods - ['raise_render']).each do |method|
100
+ # https://github.com/rails/rails/pull/17862 for 4.2.0.rc1 _generate_paths_by_default
101
+ (ViewsController.action_methods - ['raise_render', '_generate_paths_by_default']).each do |method|
101
102
 
102
103
  # proc rendering doesn't work on Rails 2
103
104
  next if method == 'proc_render' && Rails::VERSION::MAJOR <= 2
@@ -0,0 +1,54 @@
1
+ # encoding: utf-8
2
+ # This file is distributed under New Relic's license terms.
3
+ # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
4
+
5
+ require 'multiverse_helpers'
6
+ require File.join(File.dirname(__FILE__), '..', '..', '..', 'new_relic', 'marshalling_test_cases')
7
+
8
+ if NewRelic::LanguageSupport.can_fork?
9
+
10
+ class ResqueMarshallingTest < Minitest::Test
11
+
12
+ include MultiverseHelpers
13
+ include MarshallingTestCases
14
+
15
+ setup_and_teardown_agent
16
+
17
+ class DummyJob
18
+ extend Resque::Plugins::NewRelicInstrumentation
19
+ end
20
+
21
+ def invoke_hook(name, *args)
22
+ hooks = Array(Resque.send(name))
23
+ hooks.each { |h| h.call(*args) }
24
+ end
25
+
26
+ def around_each
27
+ invoke_hook(:before_first_fork)
28
+
29
+ # We just need something that responds to object_id here, because our
30
+ # Resque instrumentation uses that to assign a unique identifier to the pipe
31
+ # that will be used to send data about this job.
32
+ job = Object.new
33
+
34
+ invoke_hook(:before_fork, job)
35
+
36
+ child_pid = Process.fork
37
+
38
+ if child_pid
39
+ Process.wait(child_pid)
40
+ else
41
+ invoke_hook(:after_fork, job)
42
+ DummyJob.around_perform_with_monitoring do
43
+ yield
44
+ end
45
+ exit
46
+ end
47
+ end
48
+
49
+ def after_each
50
+ NewRelic::Agent::PipeChannelManager.listener.stop
51
+ end
52
+ end
53
+
54
+ end
@@ -1,9 +1,9 @@
1
- suite_condition("Typhoeus excluded on 1.8.7 non-REE") do
2
- # Under Ruby 1.8.7 (but not REE), there are persistent segfaults with Typhoeus
1
+ suite_condition("Typhoeus excluded on 1.8.7") do
2
+ # Under Ruby 1.8.7 there are periodic segfaults with Typhoeus
3
3
  # and the Ruby agent. This predated our Typhoeus instrumentation, but given
4
4
  # usage levels and obscurity of the issue, it isn't worth deeper digging.
5
- # Just use REE, or better yet >= 1.9
6
- (RUBY_VERSION != '1.8.7' || RUBY_DESCRIPTION =~ /Enterprise/)
5
+ # Just use >= 1.9
6
+ RUBY_VERSION > '1.8.7'
7
7
  end
8
8
 
9
9
  gemfile <<-RB
@@ -597,6 +597,43 @@ module NewRelic
597
597
  @agent.stop_event_loop
598
598
  end
599
599
 
600
+ def test_doesnt_wire_up_utilization_in_resque_child
601
+ fake_loop = create_utilization_loop
602
+ fake_loop.expects(:on).with(:report_utilization_data).never
603
+
604
+ @agent.stubs(:in_resque_child_process?).returns(true)
605
+
606
+ with_config(:collect_utilization => true) do
607
+ @agent.create_and_run_event_loop
608
+ end
609
+ end
610
+
611
+ def test_wires_up_utilization_when_not_in_resque
612
+ fake_loop = create_utilization_loop
613
+ fake_loop.expects(:on).with(:report_utilization_data).once
614
+
615
+ @agent.stubs(:in_resque_child_process?).returns(false)
616
+
617
+ with_config(:collect_utilization => true) do
618
+ @agent.create_and_run_event_loop
619
+ end
620
+ end
621
+
622
+ def create_utilization_loop
623
+ fake_loop = stub
624
+ fake_loop.stubs(:on).with(:report_utilization_data)
625
+ fake_loop.stubs(:on).with(:report_data)
626
+ fake_loop.stubs(:on).with(:report_event_data)
627
+ fake_loop.stubs(:on).with(:reset_log_once_keys)
628
+
629
+ fake_loop.stubs(:fire)
630
+ fake_loop.stubs(:fire_every)
631
+ fake_loop.stubs(:run)
632
+
633
+ @agent.stubs(:create_event_loop).returns(fake_loop)
634
+ fake_loop
635
+ end
636
+
600
637
  def test_untraced_graceful_disconnect_logs_errors
601
638
  NewRelic::Agent.stubs(:disable_all_tracing).raises(TestError, 'test')
602
639
  ::NewRelic::Agent.logger.expects(:error).with(is_a(TestError))
@@ -110,6 +110,20 @@ module NewRelic::Agent::Configuration
110
110
  end
111
111
  end
112
112
 
113
+ def test_config_search_paths_with_home
114
+ with_environment("HOME" => "/home") do
115
+ paths = DefaultSource.config_search_paths.call()
116
+ assert_includes paths, "/home/.newrelic/newrelic.yml"
117
+ assert_includes paths, "/home/newrelic.yml"
118
+ end
119
+ end
120
+
121
+ def test_config_search_path_in_warbler
122
+ with_environment("GEM_HOME" => "/some/path.jar!") do
123
+ assert_includes DefaultSource.config_search_paths.call(), "/some/path.jar!/path/config/newrelic.yml"
124
+ end
125
+ end
126
+
113
127
  def get_config_value_class(value)
114
128
  type = value.class
115
129
 
@@ -72,7 +72,7 @@ module NewRelic::Agent
72
72
  end
73
73
  end
74
74
 
75
- def test_record_adds_type_and_timestamp_and_source
75
+ def test_record_adds_type_and_timestamp
76
76
  t0 = Time.now
77
77
  @aggregator.record(:type_a, :foo => :bar, :baz => :qux)
78
78
 
@@ -81,8 +81,8 @@ module NewRelic::Agent
81
81
  assert_equal(1, events.size)
82
82
  event = events.first
83
83
 
84
- assert_equal({ 'type' => 'type_a', 'timestamp' => t0.to_i, 'source' => 'Agent' }, event[0])
85
- assert_equal({ 'foo' => 'bar' , 'baz' => 'qux' }, event[1])
84
+ assert_equal({ 'type' => 'type_a', 'timestamp' => t0.to_i }, event[0])
85
+ assert_equal({ 'foo' => 'bar' , 'baz' => 'qux' }, event[1])
86
86
  end
87
87
  end
88
88
  end
@@ -143,7 +143,7 @@ class NewRelic::Agent::ErrorCollector::NoticeErrorTest < Minitest::Test
143
143
  def test_skip_notice_error_is_true_if_the_error_collector_is_disabled
144
144
  error = mocked_error
145
145
  with_error_collector_config(:'error_collector.enabled' => false) do |error_collector|
146
- assert error_collector.skip_notice_error?(error)
146
+ assert error_collector.skip_notice_error?(NewRelic::Agent::TransactionState.tl_get, error)
147
147
  end
148
148
  end
149
149
 
@@ -151,7 +151,7 @@ class NewRelic::Agent::ErrorCollector::NoticeErrorTest < Minitest::Test
151
151
  error = nil
152
152
  with_error_collector_config(:'error_collector.enabled' => true) do |error_collector|
153
153
  error_collector.expects(:error_is_ignored?).with(error).returns(false)
154
- assert error_collector.skip_notice_error?(error)
154
+ assert error_collector.skip_notice_error?(NewRelic::Agent::TransactionState.tl_get, error)
155
155
  end
156
156
  end
157
157
 
@@ -159,7 +159,7 @@ class NewRelic::Agent::ErrorCollector::NoticeErrorTest < Minitest::Test
159
159
  error = mocked_error
160
160
  with_error_collector_config(:'error_collector.enabled' => true) do |error_collector|
161
161
  error_collector.expects(:error_is_ignored?).with(error).returns(true)
162
- assert error_collector.skip_notice_error?(error)
162
+ assert error_collector.skip_notice_error?(NewRelic::Agent::TransactionState.tl_get, error)
163
163
  end
164
164
  end
165
165
 
@@ -167,7 +167,7 @@ class NewRelic::Agent::ErrorCollector::NoticeErrorTest < Minitest::Test
167
167
  error = mocked_error
168
168
  with_error_collector_config(:'error_collector.enabled' => true) do |error_collector|
169
169
  error_collector.expects(:error_is_ignored?).with(error).returns(false)
170
- assert !error_collector.skip_notice_error?(error)
170
+ assert !error_collector.skip_notice_error?(NewRelic::Agent::TransactionState.tl_get, error)
171
171
  end
172
172
  end
173
173