newrelic_rpm 3.5.5.540.dev → 3.5.6.42.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data/.gitignore +1 -1
  2. data/CHANGELOG +7 -0
  3. data/Rakefile +9 -18
  4. data/lib/new_relic/agent/agent.rb +51 -83
  5. data/lib/new_relic/agent/configuration/manager.rb +12 -0
  6. data/lib/new_relic/agent/configuration/yaml_source.rb +5 -1
  7. data/lib/new_relic/agent/cross_process_monitoring.rb +164 -20
  8. data/lib/new_relic/agent/error_collector.rb +2 -0
  9. data/lib/new_relic/agent/event_listener.rb +39 -0
  10. data/lib/new_relic/agent/instrumentation/browser_monitoring_timings.rb +17 -7
  11. data/lib/new_relic/agent/stats_engine/transactions.rb +1 -0
  12. data/lib/new_relic/build.rb +1 -0
  13. data/lib/new_relic/control/frameworks/rails.rb +17 -3
  14. data/lib/new_relic/rack/agent_hooks.rb +20 -0
  15. data/lib/new_relic/rack/error_collector.rb +11 -1
  16. data/lib/new_relic/recipes.rb +32 -10
  17. data/lib/new_relic/version.rb +10 -15
  18. data/newrelic.yml +6 -0
  19. data/newrelic_rpm.gemspec +23 -454
  20. data/test/multiverse/lib/multiverse/suite.rb +2 -0
  21. data/test/multiverse/suites/active_record/Envfile +1 -1
  22. data/test/multiverse/suites/active_record/config/newrelic.yml +2 -2
  23. data/test/multiverse/suites/agent_only/Envfile +2 -1
  24. data/test/multiverse/suites/agent_only/config/newrelic.yml +3 -1
  25. data/test/multiverse/suites/agent_only/cross_process_test.rb +56 -0
  26. data/test/multiverse/suites/{logging → agent_only}/logging_test.rb +24 -23
  27. data/test/multiverse/suites/agent_only/no_dns_resolv.rb +17 -0
  28. data/test/multiverse/suites/{rum_auto_instrumentation/sanity_test.rb → agent_only/rum_instrumentation_test.rb} +25 -46
  29. data/test/multiverse/suites/{no_load → agent_only}/start_up_test.rb +0 -0
  30. data/test/multiverse/suites/agent_only/testing_app.rb +17 -0
  31. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +6 -5
  32. data/test/multiverse/suites/datamapper/config/newrelic.yml +1 -1
  33. data/test/multiverse/suites/{rails_3_queue_time → rails}/Envfile +3 -0
  34. data/test/multiverse/suites/{rails_3_views → rails}/app/views/foos/_foo.html.haml +0 -0
  35. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_a_partial.html.erb +0 -0
  36. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_mid_partial.html.erb +0 -0
  37. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_top_partial.html.erb +0 -0
  38. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/deep_partial.html.erb +0 -0
  39. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/haml_view.html.haml +0 -0
  40. data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/index.html.erb +0 -0
  41. data/test/multiverse/suites/rails/app.rb +49 -0
  42. data/test/multiverse/suites/{rails_3_error_tracing → rails}/config/newrelic.yml +0 -0
  43. data/test/multiverse/suites/{rails_3_error_tracing → rails}/error_tracing_test.rb +13 -68
  44. data/test/multiverse/suites/{rails_3_gc/instrumentation_test.rb → rails/gc_instrumentation_test.rb} +14 -35
  45. data/test/multiverse/suites/{rails_3_queue_time → rails}/queue_time_test.rb +3 -23
  46. data/test/multiverse/suites/{rails_3_views → rails}/view_instrumentation_test.rb +21 -61
  47. data/test/multiverse/suites/resque/config/newrelic.yml +1 -1
  48. data/test/multiverse/suites/sinatra/config/newrelic.yml +1 -2
  49. data/test/multiverse/test/suite_examples/one/a/config/newrelic.yml +1 -1
  50. data/test/multiverse/test/suite_examples/one/b/config/newrelic.yml +1 -1
  51. data/test/new_relic/agent/agent/connect_test.rb +17 -74
  52. data/test/new_relic/agent/agent/start_worker_thread_test.rb +3 -3
  53. data/test/new_relic/agent/agent_test.rb +59 -2
  54. data/test/new_relic/agent/configuration/manager_test.rb +28 -0
  55. data/test/new_relic/agent/configuration/yaml_source_test.rb +12 -2
  56. data/test/new_relic/agent/cross_process_monitoring_test.rb +144 -31
  57. data/test/new_relic/agent/event_listener_test.rb +46 -0
  58. data/test/new_relic/agent/instrumentation/browser_monitoring_timings_test.rb +57 -30
  59. data/test/new_relic/agent/worker_loop_test.rb +1 -1
  60. data/test/new_relic/fake_collector.rb +17 -4
  61. data/test/new_relic/rack/agent_hooks_test.rb +30 -0
  62. data/test/new_relic/rack/error_collector_test.rb +16 -0
  63. data/test/new_relic/version_number_test.rb +6 -30
  64. data/test/script/ci.sh +6 -5
  65. data/test/test_contexts.rb +1 -0
  66. data/test/test_helper.rb +2 -4
  67. metadata +34 -42
  68. data/newrelic_rpm.gemspec.erb +0 -53
  69. data/test/fixtures/gemspec_no_build.rb +0 -442
  70. data/test/fixtures/gemspec_with_build.rb +0 -442
  71. data/test/fixtures/gemspec_with_build_and_stage.rb +0 -442
  72. data/test/multiverse/suites/logging/Envfile +0 -4
  73. data/test/multiverse/suites/logging/config/newrelic.yml +0 -22
  74. data/test/multiverse/suites/monitor_mode_false/Envfile +0 -2
  75. data/test/multiverse/suites/monitor_mode_false/config/newrelic.yml +0 -25
  76. data/test/multiverse/suites/monitor_mode_false/no_dns_resolv.rb +0 -29
  77. data/test/multiverse/suites/no_load/Envfile +0 -2
  78. data/test/multiverse/suites/no_load/config/newrelic.yml +0 -22
  79. data/test/multiverse/suites/rails_3_error_tracing/Envfile +0 -15
  80. data/test/multiverse/suites/rails_3_gc/Envfile +0 -8
  81. data/test/multiverse/suites/rails_3_gc/config/newrelic.yml +0 -167
  82. data/test/multiverse/suites/rails_3_queue_time/config/newrelic.yml +0 -165
  83. data/test/multiverse/suites/rails_3_views/.gitignore +0 -3
  84. data/test/multiverse/suites/rails_3_views/Envfile +0 -16
  85. data/test/multiverse/suites/rails_3_views/config/newrelic.yml +0 -164
  86. data/test/multiverse/suites/rum_auto_instrumentation/Envfile +0 -4
  87. data/test/multiverse/suites/rum_auto_instrumentation/config/newrelic.yml +0 -24
  88. data/test/multiverse/suites/rum_auto_instrumentation/responses/worst_case_small.html +0 -5000
@@ -0,0 +1,46 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper'))
2
+
3
+ class EventListenerTest < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @events = NewRelic::Agent::EventListener.new
7
+
8
+ @called = false
9
+ @called_with = nil
10
+
11
+ @check_method = Proc.new do |*args|
12
+ @called = true
13
+ @called_with = args
14
+ end
15
+ end
16
+
17
+ def test_notifies
18
+ @events.subscribe(:before_call, &@check_method)
19
+ @events.notify(:before_call, :env => "env")
20
+
21
+ assert_was_called
22
+ assert_equal([{:env => "env"}], @called_with)
23
+ end
24
+
25
+ def test_failure_during_notify_doesnt_block_other_hooks
26
+ @events.subscribe(:after_call) { raise "Boo!" }
27
+ @events.subscribe(:after_call, &@check_method)
28
+
29
+ @events.notify(:after_call)
30
+
31
+ assert_was_called
32
+ end
33
+
34
+ def test_runaway_events
35
+ @events.runaway_threshold = 0
36
+ expects_logging(:debug, includes("my_event"))
37
+ @events.subscribe(:my_event) {}
38
+ end
39
+
40
+
41
+ def assert_was_called
42
+ assert @called, "Event wasn't called"
43
+ end
44
+
45
+ end
46
+
@@ -1,39 +1,66 @@
1
1
  require File.expand_path(File.join(File.dirname(__FILE__),'..','..','..','test_helper'))
2
2
 
3
- class NewRelic::Agent::Instrumentation::BrowserMonitoringTimingsTest < Test::Unit::TestCase
4
-
5
- def setup
6
- Time.stubs(:now).returns(2000)
7
- @transaction = stub(
8
- :transaction_name => "Name",
9
- :start_time => 0
10
- )
11
- end
3
+ module NewRelic::Agent::Instrumentation
4
+ class BrowserMonitoringTimingsTest < Test::Unit::TestCase
12
5
 
13
- def test_queue_time
14
- t = NewRelic::Agent::Instrumentation::BrowserMonitoringTimings.new(1000.1234, @transaction)
15
- assert_equal 1_000_123, t.queue_time_in_millis
16
- end
6
+ def setup
7
+ Time.stubs(:now).returns(2000)
8
+ @transaction = stub(
9
+ :transaction_name => "Name",
10
+ :start_time => 0
11
+ )
12
+ end
17
13
 
18
- def test_queue_time_clamps_to_positive
19
- t = NewRelic::Agent::Instrumentation::BrowserMonitoringTimings.new(-1000, @transaction)
20
- assert_equal 0, t.queue_time_in_millis
21
- end
14
+ def test_queue_time_in_millis
15
+ t = BrowserMonitoringTimings.new(1000.1234, @transaction)
16
+ assert_equal 1_000_123, t.queue_time_in_millis
17
+ end
22
18
 
23
- def test_app_time
24
- t = NewRelic::Agent::Instrumentation::BrowserMonitoringTimings.new(nil, @transaction)
25
- assert_equal 2_000_000, t.app_time_in_millis
26
- end
19
+ def test_queue_time_in_seconds
20
+ t = BrowserMonitoringTimings.new(1000.1234, @transaction)
21
+ assert_equal 1_000.1234, t.queue_time_in_seconds
22
+ end
27
23
 
28
- def test_transaction_name
29
- t = NewRelic::Agent::Instrumentation::BrowserMonitoringTimings.new(nil, @transaction)
30
- assert_equal "Name", t.transaction_name
31
- end
24
+ def test_queue_time_clamps_to_positive
25
+ t = BrowserMonitoringTimings.new(-1000, @transaction)
26
+ assert_equal 0, t.queue_time_in_millis
27
+ end
32
28
 
33
- def test_defaults_to_transaction_info
34
- t = NewRelic::Agent::Instrumentation::BrowserMonitoringTimings.new(1000, nil)
35
- assert_equal nil, t.transaction_name
36
- assert_equal 0.0, t.start_time_in_millis
37
- end
29
+ def test_queue_time_clamps_to_positive_in_seconds
30
+ t = BrowserMonitoringTimings.new(-1000, @transaction)
31
+ assert_equal 0, t.queue_time_in_seconds
32
+ end
33
+
34
+ def test_app_time_in_millis
35
+ t = BrowserMonitoringTimings.new(nil, @transaction)
36
+ assert_equal 2_000_000, t.app_time_in_millis
37
+ end
38
38
 
39
+ def test_app_time_in_seconds
40
+ t = BrowserMonitoringTimings.new(nil, @transaction)
41
+ assert_equal 2_000, t.app_time_in_seconds
42
+ end
43
+
44
+ def test_locks_time_at_instantiation
45
+ t = BrowserMonitoringTimings.new(1000, @transaction)
46
+ original = t.app_time_in_seconds
47
+
48
+ Time.stubs(:now).returns(3000)
49
+ later = t.app_time_in_seconds
50
+
51
+ assert_equal original, later
52
+ end
53
+
54
+ def test_transaction_name
55
+ t = BrowserMonitoringTimings.new(nil, @transaction)
56
+ assert_equal "Name", t.transaction_name
57
+ end
58
+
59
+ def test_defaults_to_transaction_info
60
+ t = BrowserMonitoringTimings.new(1000, nil)
61
+ assert_equal nil, t.transaction_name
62
+ assert_equal 0.0, t.start_time_in_millis
63
+ end
64
+
65
+ end
39
66
  end
@@ -71,7 +71,7 @@ class NewRelic::Agent::WorkerLoopTest < Test::Unit::TestCase
71
71
  end
72
72
 
73
73
  def test_task_error__server
74
- expects_no_logging(:error, any_parameters)
74
+ expects_no_logging(:error)
75
75
  expects_logging(:debug, any_parameters)
76
76
  @worker_loop.run(0) do
77
77
  @worker_loop.stop
@@ -71,7 +71,19 @@ module NewRelic
71
71
  uri.query && uri.query.include?('marshal_format=json')
72
72
  end
73
73
 
74
- def run(port=30303)
74
+ # We generate a "unique" port for ourselves based off our pid
75
+ # If this logic changes, look for multiverse newrelic.yml files to update
76
+ # with it duplicated (since we can't easily pull this ruby into a yml)
77
+ def self.determine_port
78
+ 30_000 + ($$ % 10_000)
79
+ end
80
+
81
+ def determine_port
82
+ FakeCollector.determine_port
83
+ end
84
+
85
+ def run(port=nil)
86
+ port ||= determine_port
75
87
  return if @thread && @thread.alive?
76
88
  serve_on_port(port) do
77
89
  @thread = Thread.new do
@@ -85,6 +97,7 @@ module NewRelic
85
97
  end
86
98
 
87
99
  def serve_on_port(port)
100
+ port ||= determine_port
88
101
  if is_port_available?('127.0.0.1', port)
89
102
  yield
90
103
  loop do
@@ -127,7 +140,7 @@ module NewRelic
127
140
 
128
141
  # might we need this? I'll just leave it here for now
129
142
  class FakeCollectorProcess < FakeCollector
130
- def run(port=30303)
143
+ def run(port)
131
144
  serve_on_port(port) do
132
145
  @pid = Process.fork do
133
146
  ::Rack::Handler::WEBrick.run(self, :Port => port)
@@ -262,9 +275,9 @@ if $0 == __FILE__
262
275
  end
263
276
 
264
277
  def invoke(method, post={}, code=200)
265
- uri = URI.parse("http://127.0.0.1:30303/agent_listener/8/12345/#{method}")
278
+ uri = URI.parse("http://127.0.0.1:#{determine_port}/agent_listener/8/12345/#{method}")
266
279
  request = Net::HTTP::Post.new("#{uri.path}?#{uri.query}")
267
- if uri.query && uri.query.include?('marsha_format=json')
280
+ if uri.query && uri.query.include?('marshal_format=json')
268
281
  request.body = JSON.dump(post)
269
282
  else
270
283
  request.body = Marshal.dump(post)
@@ -0,0 +1,30 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper'))
2
+ require 'new_relic/rack/agent_hooks'
3
+
4
+ class AgentHooksTest < Test::Unit::TestCase
5
+
6
+ def setup
7
+ @app = stub_everything
8
+ @hooks = NewRelic::Rack::AgentHooks.new(@app)
9
+ @env = {:env => "env"}
10
+
11
+ NewRelic::Agent.instance.events.stubs(:notify)
12
+ end
13
+
14
+ def test_before_call
15
+ NewRelic::Agent.instance.events.expects(:notify).with(:before_call, @env)
16
+
17
+ @hooks.call(@env)
18
+ end
19
+
20
+ def test_after_call
21
+ result = stub
22
+ @app.stubs(:call).returns(result)
23
+
24
+ NewRelic::Agent.instance.events.expects(:notify).with(:after_call, @env, result)
25
+
26
+ @hooks.call(@env)
27
+ end
28
+
29
+ end
30
+
@@ -66,6 +66,22 @@ module NewRelic::Rack
66
66
  assert(NewRelic::Agent.instance.error_collector.errors.empty?,
67
67
  'noticed an error that should have been ignored')
68
68
  end
69
+
70
+ def test_handles_parameter_parsing_exceptions
71
+ bad_request = stub(:env => {}, :path => '/', :referer => '')
72
+ bad_request.stubs(:params).raises(TypeError, "can't convert nil into Hash")
73
+ Rack::Request.stubs(:new).returns(bad_request)
74
+
75
+ assert_raise RuntimeError do
76
+ get '/'
77
+ end
78
+
79
+ assert_equal('unhandled error',
80
+ NewRelic::Agent.instance.error_collector.errors[0].message)
81
+ assert_match(/failed to capture request parameters/i,
82
+ NewRelic::Agent.instance.error_collector.errors[0].params[:request_params]['error'])
83
+ end
84
+
69
85
  end
70
86
  end
71
87
 
@@ -82,40 +82,16 @@ class NewRelic::VersionNumberTest < Test::Unit::TestCase
82
82
  assert v0 < '1.2.0.1'
83
83
  assert v0 > '1.1.0.1'
84
84
  end
85
+
85
86
  def test_string
86
87
  assert_equal '1.2.0', NewRelic::VersionNumber.new('1.2.0').to_s
87
88
  assert_equal '1.2', NewRelic::VersionNumber.new('1.2').to_s
88
89
  end
89
90
 
90
- def test_gemspec_version_parsing
91
- gemspec_contents = File.read(File.join(File.dirname(__FILE__), '..', '..', 'newrelic_rpm.gemspec'))
92
- gemspec_contents =~ /s\.version\s*=\s*"(.*)"/
93
- real_version = $1
94
- assert_equal real_version, NewRelic::VERSION::STRING
95
- end
96
-
97
- def test_gemspec_parse_no_build
98
- version = NewRelic::VERSION.parse_build_from_gemspec(NewRelic.fixture_path('gemspec_no_build.rb'))
99
- assert_nil version
100
- end
101
-
102
- def test_gemspec_parse_with_build
103
- version = NewRelic::VERSION.parse_build_from_gemspec(NewRelic.fixture_path('gemspec_with_build.rb'))
104
- assert_equal '123', version
105
- end
106
-
107
- def test_gemspec_parse_with_build_and_stage
108
- version = NewRelic::VERSION.parse_build_from_gemspec(NewRelic.fixture_path('gemspec_with_build_and_stage.rb'))
109
- assert_equal '123.dev', version
110
- end
111
-
112
- def test_gemspec_parse_no_rubygems
113
- Kernel.stubs(:const_defined?).with(:Gem).returns(false)
114
- version = NewRelic::VERSION.parse_build_from_gemspec(NewRelic.fixture_path('gemspec_with_build_and_stage.rb'))
115
- assert_equal '123.dev', version
116
- end
117
-
118
- def test_gemspec_parse_nonexistent
119
- assert_nil NewRelic::VERSION.parse_build_from_gemspec('/really/not/a/real/path')
91
+ def test_build_version_string
92
+ version_string = NewRelic::VERSION.build_version_string(1, 2, 3, '4.beta')
93
+ assert_equal('1.2.3.4.beta', version_string)
94
+ version_string = NewRelic::VERSION.build_version_string(1, 2, 3, nil)
95
+ assert_equal('1.2.3', version_string)
120
96
  end
121
97
  end
data/test/script/ci.sh CHANGED
@@ -64,13 +64,10 @@ fi
64
64
 
65
65
  echo `which ruby`
66
66
  ruby -v
67
+ gem --version
67
68
 
68
69
  rake -h > /dev/null || gem install rake
69
70
 
70
- echo "generating gemspec"
71
- rake gemspec
72
-
73
-
74
71
  # make sure that we're in the project root
75
72
  script_dirname=`dirname $0`
76
73
  cd "$script_dirname/../../"
@@ -87,13 +84,17 @@ rpm_test_app_cache=~/workspace/.rpm_test_app_cache
87
84
  echo "updating local cache of rpm_test_app in $rpm_test_app_cache"
88
85
  git clone --mirror git://github.com/newrelic/rpm_test_app.git $rpm_test_app_cache || true
89
86
  cd $rpm_test_app_cache
87
+ git fetch || true
90
88
  )
91
89
 
92
90
  git clone $rpm_test_app_cache rpm_test_app
93
91
  cd rpm_test_app
94
92
 
93
+ git fetch || true
95
94
  git checkout -t origin/$BRANCH || git checkout $BRANCH
96
-
95
+ if [ -x $HOME/.rbenv/plugins/rbenv-gemsets ]; then
96
+ echo "$RUBY-$BRANCH" > .rbenv-gemsets
97
+ fi
97
98
 
98
99
  # Re-write database.yml to this here doc
99
100
  ( cat << "YAML" ) > config/database.yml
@@ -10,6 +10,7 @@ module TestContexts
10
10
  NewRelic::Agent::Agent.instance.service = NewRelic::FakeService.new
11
11
  NewRelic::Agent.manual_start :log => @log
12
12
  @agent = NewRelic::Agent.instance
13
+ @agent.metric_ids.clear
13
14
  @agent.transaction_sampler.send :clear_builder
14
15
  @agent.transaction_sampler.reset!
15
16
  @agent.stats_engine.clear_stats
data/test/test_helper.rb CHANGED
@@ -144,10 +144,8 @@ def expects_logging(level, *with_params)
144
144
  ::NewRelic::Agent.logger.expects(level).with(*with_params).once
145
145
  end
146
146
 
147
- # Similarly, have to be specific about the message we "never" expect...
148
- def expects_no_logging(level, *with_params)
149
- ::NewRelic::Agent.logger.stubs(level)
150
- ::NewRelic::Agent.logger.expects(level).with(*with_params).never
147
+ def expects_no_logging(level)
148
+ ::NewRelic::Agent.logger.expects(level).never
151
149
  end
152
150
 
153
151
  # Sometimes need to test cases where we muddle with the global logger
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: newrelic_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.5.5.540.dev
5
- prerelease: 10
4
+ version: 3.5.6.42.beta
5
+ prerelease: 9
6
6
  platform: ruby
7
7
  authors:
8
8
  - Jason Clark
@@ -12,7 +12,7 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2013-01-04 00:00:00.000000000 Z
15
+ date: 2013-01-16 00:00:00.000000000 Z
16
16
  dependencies: []
17
17
  description: ! 'New Relic is a performance management system, developed by New Relic,
18
18
 
@@ -79,6 +79,7 @@ files:
79
79
  - lib/new_relic/agent/cross_process_monitoring.rb
80
80
  - lib/new_relic/agent/database.rb
81
81
  - lib/new_relic/agent/error_collector.rb
82
+ - lib/new_relic/agent/event_listener.rb
82
83
  - lib/new_relic/agent/instrumentation.rb
83
84
  - lib/new_relic/agent/instrumentation/active_merchant.rb
84
85
  - lib/new_relic/agent/instrumentation/active_record.rb
@@ -156,6 +157,7 @@ files:
156
157
  - lib/new_relic/metrics.rb
157
158
  - lib/new_relic/noticed_error.rb
158
159
  - lib/new_relic/rack.rb
160
+ - lib/new_relic/rack/agent_hooks.rb
159
161
  - lib/new_relic/rack/browser_monitoring.rb
160
162
  - lib/new_relic/rack/developer_mode.rb
161
163
  - lib/new_relic/rack/error_collector.rb
@@ -176,14 +178,11 @@ files:
176
178
  - lib/tasks/install.rake
177
179
  - lib/tasks/tests.rake
178
180
  - newrelic.yml
179
- - newrelic_rpm.gemspec.erb
181
+ - newrelic_rpm.gemspec
180
182
  - recipes/newrelic.rb
181
183
  - test/active_record_fixtures.rb
182
184
  - test/config/newrelic.yml
183
185
  - test/config/test_control.rb
184
- - test/fixtures/gemspec_no_build.rb
185
- - test/fixtures/gemspec_with_build.rb
186
- - test/fixtures/gemspec_with_build_and_stage.rb
187
186
  - test/fixtures/proc_cpuinfo.txt
188
187
  - test/intentional_fail.rb
189
188
  - test/multiverse/.gitignore
@@ -203,56 +202,43 @@ files:
203
202
  - test/multiverse/suites/agent_only/Envfile
204
203
  - test/multiverse/suites/agent_only/audit_log_test.rb
205
204
  - test/multiverse/suites/agent_only/config/newrelic.yml
205
+ - test/multiverse/suites/agent_only/cross_process_test.rb
206
206
  - test/multiverse/suites/agent_only/http_response_code_test.rb
207
+ - test/multiverse/suites/agent_only/logging_test.rb
207
208
  - test/multiverse/suites/agent_only/marshaling_test.rb
208
209
  - test/multiverse/suites/agent_only/method_visibility_test.rb
210
+ - test/multiverse/suites/agent_only/no_dns_resolv.rb
209
211
  - test/multiverse/suites/agent_only/pipe_manager_test.rb
212
+ - test/multiverse/suites/agent_only/rum_instrumentation_test.rb
210
213
  - test/multiverse/suites/agent_only/service_timeout_test.rb
214
+ - test/multiverse/suites/agent_only/start_up_test.rb
211
215
  - test/multiverse/suites/agent_only/test_trace_method_with_punctuation.rb
212
216
  - test/multiverse/suites/agent_only/test_trace_transaction_with_punctuation.rb
217
+ - test/multiverse/suites/agent_only/testing_app.rb
213
218
  - test/multiverse/suites/agent_only/thread_profiling_test.rb
214
219
  - test/multiverse/suites/config_file_loading/Envfile
215
220
  - test/multiverse/suites/config_file_loading/config_file_loading_test.rb
216
221
  - test/multiverse/suites/datamapper/Envfile
217
222
  - test/multiverse/suites/datamapper/config/newrelic.yml
218
223
  - test/multiverse/suites/datamapper/encoding_test.rb
219
- - test/multiverse/suites/logging/Envfile
220
- - test/multiverse/suites/logging/config/newrelic.yml
221
- - test/multiverse/suites/logging/logging_test.rb
222
- - test/multiverse/suites/monitor_mode_false/Envfile
223
- - test/multiverse/suites/monitor_mode_false/config/newrelic.yml
224
- - test/multiverse/suites/monitor_mode_false/no_dns_resolv.rb
225
- - test/multiverse/suites/no_load/Envfile
226
- - test/multiverse/suites/no_load/config/newrelic.yml
227
- - test/multiverse/suites/no_load/start_up_test.rb
228
- - test/multiverse/suites/rails_3_error_tracing/Envfile
229
- - test/multiverse/suites/rails_3_error_tracing/config/newrelic.yml
230
- - test/multiverse/suites/rails_3_error_tracing/error_tracing_test.rb
231
- - test/multiverse/suites/rails_3_gc/Envfile
232
- - test/multiverse/suites/rails_3_gc/config/newrelic.yml
233
- - test/multiverse/suites/rails_3_gc/instrumentation_test.rb
234
- - test/multiverse/suites/rails_3_queue_time/Envfile
235
- - test/multiverse/suites/rails_3_queue_time/config/newrelic.yml
236
- - test/multiverse/suites/rails_3_queue_time/queue_time_test.rb
237
- - test/multiverse/suites/rails_3_views/.gitignore
238
- - test/multiverse/suites/rails_3_views/Envfile
239
- - test/multiverse/suites/rails_3_views/app/views/foos/_foo.html.haml
240
- - test/multiverse/suites/rails_3_views/app/views/test/_a_partial.html.erb
241
- - test/multiverse/suites/rails_3_views/app/views/test/_mid_partial.html.erb
242
- - test/multiverse/suites/rails_3_views/app/views/test/_top_partial.html.erb
243
- - test/multiverse/suites/rails_3_views/app/views/test/deep_partial.html.erb
244
- - test/multiverse/suites/rails_3_views/app/views/test/haml_view.html.haml
245
- - test/multiverse/suites/rails_3_views/app/views/test/index.html.erb
246
- - test/multiverse/suites/rails_3_views/config/newrelic.yml
247
- - test/multiverse/suites/rails_3_views/view_instrumentation_test.rb
224
+ - test/multiverse/suites/rails/Envfile
225
+ - test/multiverse/suites/rails/app.rb
226
+ - test/multiverse/suites/rails/app/views/foos/_foo.html.haml
227
+ - test/multiverse/suites/rails/app/views/views/_a_partial.html.erb
228
+ - test/multiverse/suites/rails/app/views/views/_mid_partial.html.erb
229
+ - test/multiverse/suites/rails/app/views/views/_top_partial.html.erb
230
+ - test/multiverse/suites/rails/app/views/views/deep_partial.html.erb
231
+ - test/multiverse/suites/rails/app/views/views/haml_view.html.haml
232
+ - test/multiverse/suites/rails/app/views/views/index.html.erb
233
+ - test/multiverse/suites/rails/config/newrelic.yml
234
+ - test/multiverse/suites/rails/error_tracing_test.rb
235
+ - test/multiverse/suites/rails/gc_instrumentation_test.rb
236
+ - test/multiverse/suites/rails/queue_time_test.rb
237
+ - test/multiverse/suites/rails/view_instrumentation_test.rb
248
238
  - test/multiverse/suites/resque/Envfile
249
239
  - test/multiverse/suites/resque/config/newrelic.yml
250
240
  - test/multiverse/suites/resque/dump.rdb
251
241
  - test/multiverse/suites/resque/instrumentation_test.rb
252
- - test/multiverse/suites/rum_auto_instrumentation/Envfile
253
- - test/multiverse/suites/rum_auto_instrumentation/config/newrelic.yml
254
- - test/multiverse/suites/rum_auto_instrumentation/responses/worst_case_small.html
255
- - test/multiverse/suites/rum_auto_instrumentation/sanity_test.rb
256
242
  - test/multiverse/suites/sinatra/Envfile
257
243
  - test/multiverse/suites/sinatra/config/newrelic.yml
258
244
  - test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb
@@ -291,6 +277,7 @@ files:
291
277
  - test/new_relic/agent/database_test.rb
292
278
  - test/new_relic/agent/error_collector/notice_error_test.rb
293
279
  - test/new_relic/agent/error_collector_test.rb
280
+ - test/new_relic/agent/event_listener_test.rb
294
281
  - test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb
295
282
  - test/new_relic/agent/instrumentation/browser_monitoring_timings_test.rb
296
283
  - test/new_relic/agent/instrumentation/controller_instrumentation_test.rb
@@ -343,6 +330,7 @@ files:
343
330
  - test/new_relic/metric_parser/metric_parser_test.rb
344
331
  - test/new_relic/metric_spec_test.rb
345
332
  - test/new_relic/noticed_error_test.rb
333
+ - test/new_relic/rack/agent_hooks_test.rb
346
334
  - test/new_relic/rack/all_test.rb
347
335
  - test/new_relic/rack/browser_monitoring_test.rb
348
336
  - test/new_relic/rack/developer_mode_helper_test.rb
@@ -444,10 +432,14 @@ files:
444
432
  - vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb
445
433
  - vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb
446
434
  - vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb
447
- - newrelic_rpm.gemspec
435
+ - lib/new_relic/build.rb
448
436
  homepage: http://www.github.com/newrelic/rpm
449
437
  licenses: []
450
438
  post_install_message: ! "\n# New Relic Ruby Agent Release Notes #\n\n## v3.5.5 ##\n\n
439
+ \ * Add thread profiling support\n\n Thread profiling performs statistical sampling
440
+ of backtraces of all threads\n within your Ruby processes. This feature requires
441
+ MRI >= 1.9.2, and is\n controlled via the New Relic web UI. JRuby support (in
442
+ 1.9.x compat mode) is\n considered experimental, due to issues with JRuby's Thread#backtrace.\n\n
451
443
  \ * Add audit logging capability\n\n The agent can now log all of the data it
452
444
  sends to the New Relic servers to\n a special log file for human inspection.
453
445
  This feature is off by default, and\n can be enabled by setting the audit_log.enabled
@@ -466,7 +458,7 @@ post_install_message: ! "\n# New Relic Ruby Agent Release Notes #\n\n## v3.5.5 #
466
458
  be used to specify which section of newrelic.yml is loaded.\n\n * Rails 4 support\n\n
467
459
  \ This release includes preliminary support for Rails 4 as of 4.0.0.beta.\n Rails
468
460
  4 is still in development, but the agent should work as expected for\n people
469
- who are experimenting with the beta.\n\n\nSee https://github.com/newrelic/rpm/blob/master/CHANGELOG
461
+ who are experimenting with the beta.\n\nSee https://github.com/newrelic/rpm/blob/master/CHANGELOG
470
462
  for a full list of\nchanges.\n"
471
463
  rdoc_options:
472
464
  - --line-numbers