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.
- data/.gitignore +1 -1
- data/CHANGELOG +7 -0
- data/Rakefile +9 -18
- data/lib/new_relic/agent/agent.rb +51 -83
- data/lib/new_relic/agent/configuration/manager.rb +12 -0
- data/lib/new_relic/agent/configuration/yaml_source.rb +5 -1
- data/lib/new_relic/agent/cross_process_monitoring.rb +164 -20
- data/lib/new_relic/agent/error_collector.rb +2 -0
- data/lib/new_relic/agent/event_listener.rb +39 -0
- data/lib/new_relic/agent/instrumentation/browser_monitoring_timings.rb +17 -7
- data/lib/new_relic/agent/stats_engine/transactions.rb +1 -0
- data/lib/new_relic/build.rb +1 -0
- data/lib/new_relic/control/frameworks/rails.rb +17 -3
- data/lib/new_relic/rack/agent_hooks.rb +20 -0
- data/lib/new_relic/rack/error_collector.rb +11 -1
- data/lib/new_relic/recipes.rb +32 -10
- data/lib/new_relic/version.rb +10 -15
- data/newrelic.yml +6 -0
- data/newrelic_rpm.gemspec +23 -454
- data/test/multiverse/lib/multiverse/suite.rb +2 -0
- data/test/multiverse/suites/active_record/Envfile +1 -1
- data/test/multiverse/suites/active_record/config/newrelic.yml +2 -2
- data/test/multiverse/suites/agent_only/Envfile +2 -1
- data/test/multiverse/suites/agent_only/config/newrelic.yml +3 -1
- data/test/multiverse/suites/agent_only/cross_process_test.rb +56 -0
- data/test/multiverse/suites/{logging → agent_only}/logging_test.rb +24 -23
- data/test/multiverse/suites/agent_only/no_dns_resolv.rb +17 -0
- data/test/multiverse/suites/{rum_auto_instrumentation/sanity_test.rb → agent_only/rum_instrumentation_test.rb} +25 -46
- data/test/multiverse/suites/{no_load → agent_only}/start_up_test.rb +0 -0
- data/test/multiverse/suites/agent_only/testing_app.rb +17 -0
- data/test/multiverse/suites/agent_only/thread_profiling_test.rb +6 -5
- data/test/multiverse/suites/datamapper/config/newrelic.yml +1 -1
- data/test/multiverse/suites/{rails_3_queue_time → rails}/Envfile +3 -0
- data/test/multiverse/suites/{rails_3_views → rails}/app/views/foos/_foo.html.haml +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_a_partial.html.erb +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_mid_partial.html.erb +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/_top_partial.html.erb +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/deep_partial.html.erb +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/haml_view.html.haml +0 -0
- data/test/multiverse/suites/{rails_3_views/app/views/test → rails/app/views/views}/index.html.erb +0 -0
- data/test/multiverse/suites/rails/app.rb +49 -0
- data/test/multiverse/suites/{rails_3_error_tracing → rails}/config/newrelic.yml +0 -0
- data/test/multiverse/suites/{rails_3_error_tracing → rails}/error_tracing_test.rb +13 -68
- data/test/multiverse/suites/{rails_3_gc/instrumentation_test.rb → rails/gc_instrumentation_test.rb} +14 -35
- data/test/multiverse/suites/{rails_3_queue_time → rails}/queue_time_test.rb +3 -23
- data/test/multiverse/suites/{rails_3_views → rails}/view_instrumentation_test.rb +21 -61
- data/test/multiverse/suites/resque/config/newrelic.yml +1 -1
- data/test/multiverse/suites/sinatra/config/newrelic.yml +1 -2
- data/test/multiverse/test/suite_examples/one/a/config/newrelic.yml +1 -1
- data/test/multiverse/test/suite_examples/one/b/config/newrelic.yml +1 -1
- data/test/new_relic/agent/agent/connect_test.rb +17 -74
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +3 -3
- data/test/new_relic/agent/agent_test.rb +59 -2
- data/test/new_relic/agent/configuration/manager_test.rb +28 -0
- data/test/new_relic/agent/configuration/yaml_source_test.rb +12 -2
- data/test/new_relic/agent/cross_process_monitoring_test.rb +144 -31
- data/test/new_relic/agent/event_listener_test.rb +46 -0
- data/test/new_relic/agent/instrumentation/browser_monitoring_timings_test.rb +57 -30
- data/test/new_relic/agent/worker_loop_test.rb +1 -1
- data/test/new_relic/fake_collector.rb +17 -4
- data/test/new_relic/rack/agent_hooks_test.rb +30 -0
- data/test/new_relic/rack/error_collector_test.rb +16 -0
- data/test/new_relic/version_number_test.rb +6 -30
- data/test/script/ci.sh +6 -5
- data/test/test_contexts.rb +1 -0
- data/test/test_helper.rb +2 -4
- metadata +34 -42
- data/newrelic_rpm.gemspec.erb +0 -53
- data/test/fixtures/gemspec_no_build.rb +0 -442
- data/test/fixtures/gemspec_with_build.rb +0 -442
- data/test/fixtures/gemspec_with_build_and_stage.rb +0 -442
- data/test/multiverse/suites/logging/Envfile +0 -4
- data/test/multiverse/suites/logging/config/newrelic.yml +0 -22
- data/test/multiverse/suites/monitor_mode_false/Envfile +0 -2
- data/test/multiverse/suites/monitor_mode_false/config/newrelic.yml +0 -25
- data/test/multiverse/suites/monitor_mode_false/no_dns_resolv.rb +0 -29
- data/test/multiverse/suites/no_load/Envfile +0 -2
- data/test/multiverse/suites/no_load/config/newrelic.yml +0 -22
- data/test/multiverse/suites/rails_3_error_tracing/Envfile +0 -15
- data/test/multiverse/suites/rails_3_gc/Envfile +0 -8
- data/test/multiverse/suites/rails_3_gc/config/newrelic.yml +0 -167
- data/test/multiverse/suites/rails_3_queue_time/config/newrelic.yml +0 -165
- data/test/multiverse/suites/rails_3_views/.gitignore +0 -3
- data/test/multiverse/suites/rails_3_views/Envfile +0 -16
- data/test/multiverse/suites/rails_3_views/config/newrelic.yml +0 -164
- data/test/multiverse/suites/rum_auto_instrumentation/Envfile +0 -4
- data/test/multiverse/suites/rum_auto_instrumentation/config/newrelic.yml +0 -24
- 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
|
-
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
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
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
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
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
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
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
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
|
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
|
-
|
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
|
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
|
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?('
|
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
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
assert_equal
|
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
|
data/test/test_contexts.rb
CHANGED
@@ -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
|
-
|
148
|
-
|
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
|
-
prerelease:
|
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-
|
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
|
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/
|
220
|
-
- test/multiverse/suites/
|
221
|
-
- test/multiverse/suites/
|
222
|
-
- test/multiverse/suites/
|
223
|
-
- test/multiverse/suites/
|
224
|
-
- test/multiverse/suites/
|
225
|
-
- test/multiverse/suites/
|
226
|
-
- test/multiverse/suites/
|
227
|
-
- test/multiverse/suites/
|
228
|
-
- test/multiverse/suites/
|
229
|
-
- test/multiverse/suites/
|
230
|
-
- test/multiverse/suites/
|
231
|
-
- test/multiverse/suites/
|
232
|
-
- test/multiverse/suites/
|
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
|
-
-
|
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\
|
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
|