newrelic_rpm 3.5.7.59 → 3.5.8.64.beta
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +3 -2
- data/CHANGELOG +34 -3
- data/LICENSE +23 -0
- data/lib/new_relic/agent.rb +50 -3
- data/lib/new_relic/agent/agent.rb +40 -60
- data/lib/new_relic/agent/configuration/defaults.rb +9 -3
- data/lib/new_relic/agent/configuration/server_source.rb +4 -0
- data/lib/new_relic/agent/cross_app_monitor.rb +230 -0
- data/lib/new_relic/agent/cross_app_tracing.rb +274 -0
- data/lib/new_relic/agent/database.rb +28 -10
- data/lib/new_relic/agent/error_collector.rb +5 -0
- data/lib/new_relic/agent/event_listener.rb +4 -0
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +53 -34
- data/lib/new_relic/agent/instrumentation/metric_frame.rb +16 -3
- data/lib/new_relic/agent/instrumentation/net.rb +13 -11
- data/lib/new_relic/agent/instrumentation/resque.rb +10 -10
- data/lib/new_relic/agent/instrumentation/sinatra.rb +19 -9
- data/lib/new_relic/agent/new_relic_service.rb +63 -9
- data/lib/new_relic/agent/pipe_service.rb +8 -12
- data/lib/new_relic/agent/rules_engine.rb +72 -0
- data/lib/new_relic/agent/shim_agent.rb +0 -1
- data/lib/new_relic/agent/sql_sampler.rb +3 -2
- data/lib/new_relic/agent/stats.rb +149 -0
- data/lib/new_relic/agent/stats_engine.rb +9 -0
- data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -24
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +84 -185
- data/lib/new_relic/agent/stats_engine/stats_hash.rb +58 -0
- data/lib/new_relic/agent/stats_engine/transactions.rb +10 -2
- data/lib/new_relic/agent/transaction_info.rb +31 -6
- data/lib/new_relic/agent/transaction_sample_builder.rb +19 -8
- data/lib/new_relic/agent/transaction_sampler.rb +17 -10
- data/lib/new_relic/helper.rb +32 -0
- data/lib/new_relic/local_environment.rb +24 -32
- data/lib/new_relic/okjson.rb +599 -0
- data/lib/new_relic/transaction_sample.rb +2 -1
- data/lib/new_relic/transaction_sample/segment.rb +2 -1
- data/lib/new_relic/version.rb +1 -1
- data/newrelic.yml +27 -41
- data/test/multiverse/suites/agent_only/audit_log_test.rb +2 -4
- data/test/multiverse/suites/agent_only/config/newrelic.yml +1 -2
- data/test/multiverse/suites/agent_only/{cross_process_test.rb → cross_application_tracing_test.rb} +3 -3
- data/test/multiverse/suites/agent_only/key_transactions_test.rb +66 -0
- data/test/multiverse/suites/agent_only/marshaling_test.rb +9 -22
- data/test/multiverse/suites/agent_only/rename_rule_test.rb +57 -0
- data/test/multiverse/suites/agent_only/start_up_test.rb +1 -1
- data/test/multiverse/suites/agent_only/thread_profiling_test.rb +17 -6
- data/test/multiverse/suites/rails/error_tracing_test.rb +20 -8
- data/test/multiverse/suites/resque/instrumentation_test.rb +2 -2
- data/test/multiverse/suites/sinatra/Envfile +2 -0
- data/test/multiverse/suites/sinatra/config/newrelic.yml +1 -0
- data/test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb +5 -5
- data/test/multiverse/suites/sinatra/sinatra_test.rb +75 -4
- data/test/new_relic/agent/agent/connect_test.rb +45 -1
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +0 -3
- data/test/new_relic/agent/agent_test.rb +20 -40
- data/test/new_relic/agent/agent_test_controller_test.rb +24 -19
- data/test/new_relic/agent/busy_calculator_test.rb +1 -1
- data/test/new_relic/agent/configuration/server_source_test.rb +8 -3
- data/test/new_relic/agent/cross_app_monitor_test.rb +237 -0
- data/test/new_relic/agent/database_test.rb +60 -16
- data/test/new_relic/agent/error_collector_test.rb +28 -4
- data/test/new_relic/agent/event_listener_test.rb +23 -2
- data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +53 -0
- data/test/new_relic/agent/instrumentation/metric_frame_test.rb +95 -0
- data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +414 -59
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +2 -5
- data/test/new_relic/agent/method_tracer_test.rb +4 -2
- data/test/new_relic/agent/new_relic_service_test.rb +108 -6
- data/test/new_relic/agent/pipe_channel_manager_test.rb +1 -1
- data/test/new_relic/agent/pipe_service_test.rb +9 -9
- data/test/new_relic/agent/rpm_agent_test.rb +0 -11
- data/test/new_relic/agent/rules_engine_test.rb +82 -0
- data/test/new_relic/agent/shim_agent_test.rb +0 -4
- data/test/new_relic/agent/sql_sampler_test.rb +7 -0
- data/test/new_relic/agent/stats_engine/gc_profiler_test.rb +85 -0
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +110 -23
- data/test/new_relic/agent/stats_engine_test.rb +1 -46
- data/test/new_relic/agent/stats_hash_test.rb +93 -0
- data/test/new_relic/agent/stats_test.rb +197 -0
- data/test/new_relic/agent/transaction_info_test.rb +63 -11
- data/test/new_relic/agent/transaction_sample_builder_test.rb +10 -3
- data/test/new_relic/agent/transaction_sampler_test.rb +92 -80
- data/test/new_relic/agent_test.rb +35 -5
- data/test/new_relic/control_test.rb +1 -1
- data/test/new_relic/fake_collector.rb +87 -9
- data/test/new_relic/helper_test.rb +24 -0
- data/test/new_relic/metric_data_test.rb +11 -11
- data/test/new_relic/metric_spec_test.rb +1 -1
- data/test/script/ci.sh +1 -1
- data/test/test_contexts.rb +0 -1
- data/test/test_helper.rb +21 -3
- metadata +32 -16
- metadata.gz.sig +0 -0
- data/lib/new_relic/agent/cross_process_monitoring.rb +0 -187
- data/lib/new_relic/stats.rb +0 -337
- data/test/new_relic/agent/cross_process_monitoring_test.rb +0 -190
- data/test/new_relic/agent/stats_engine/metric_stats/harvest_test.rb +0 -133
- data/test/new_relic/fakes_sending_data.rb +0 -30
- data/test/new_relic/stats_test.rb +0 -421
@@ -168,7 +168,7 @@ class NewRelic::ControlTest < Test::Unit::TestCase
|
|
168
168
|
def test_sql_tracer_disabled_when_tt_disabled_by_server
|
169
169
|
with_config({:'slow_sql.enabled' => true,
|
170
170
|
:'transaction_tracer.enabled' => true,
|
171
|
-
:monitor_mode => true}, 2) do
|
171
|
+
:monitor_mode => true}, :level => 2) do
|
172
172
|
NewRelic::Agent.instance.finish_setup('collect_traces' => false)
|
173
173
|
|
174
174
|
assert(!NewRelic::Agent::Agent.instance.sql_sampler.enabled?,
|
@@ -4,7 +4,6 @@ require 'uri'
|
|
4
4
|
require 'socket'
|
5
5
|
require 'timeout'
|
6
6
|
require 'ostruct'
|
7
|
-
require File.join(File.dirname(__FILE__), 'fakes_sending_data')
|
8
7
|
|
9
8
|
require 'json' if RUBY_VERSION >= '1.9'
|
10
9
|
|
@@ -12,8 +11,6 @@ module NewRelic
|
|
12
11
|
class FakeCollector
|
13
12
|
attr_accessor :agent_data, :mock
|
14
13
|
|
15
|
-
include FakesSendingData
|
16
|
-
|
17
14
|
def initialize
|
18
15
|
@id_counter = 0
|
19
16
|
@base_expectations = {
|
@@ -53,16 +50,16 @@ module NewRelic
|
|
53
50
|
end
|
54
51
|
run_id = uri.query =~ /run_id=(\d+)/ ? $1 : nil
|
55
52
|
req.body.rewind
|
56
|
-
|
53
|
+
|
57
54
|
body = if format == :json
|
58
55
|
body = JSON.load(req.body.read)
|
59
56
|
else
|
60
57
|
body = Marshal.load(req.body.read)
|
61
58
|
end
|
62
|
-
@agent_data <<
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
@agent_data << AgentPost.create(:action => method,
|
60
|
+
:body => body,
|
61
|
+
:run_id => run_id,
|
62
|
+
:format => format)
|
66
63
|
end
|
67
64
|
res.finish
|
68
65
|
end
|
@@ -151,6 +148,87 @@ module NewRelic
|
|
151
148
|
|
152
149
|
return true
|
153
150
|
end
|
151
|
+
|
152
|
+
def calls_for(method)
|
153
|
+
@agent_data.select {|d| d.action == method }
|
154
|
+
end
|
155
|
+
|
156
|
+
def reported_stats_for_metric(name, scope=nil)
|
157
|
+
calls_for('metric_data').map do |post|
|
158
|
+
post.body[3].find do |metric_record|
|
159
|
+
metric_record[0]['name'] == name &&
|
160
|
+
(!scope || metric_record[0]['scope'] == scope)
|
161
|
+
end
|
162
|
+
end.compact.map{|m| m[1]}
|
163
|
+
end
|
164
|
+
|
165
|
+
class AgentPost
|
166
|
+
attr_accessor :action, :body, :run_id, :format
|
167
|
+
def initialize(opts={})
|
168
|
+
@action = opts[:action]
|
169
|
+
@body = opts[:body]
|
170
|
+
@run_id = opts[:run_id]
|
171
|
+
@format = opts[:format]
|
172
|
+
end
|
173
|
+
|
174
|
+
def self.create(opts={})
|
175
|
+
case opts[:action]
|
176
|
+
when 'connect'
|
177
|
+
ConnectPost.new(opts)
|
178
|
+
when 'metric_data'
|
179
|
+
AgentPost.new(opts)
|
180
|
+
when 'profile_data'
|
181
|
+
ProfileDataPost.new(opts)
|
182
|
+
when 'sql_trace_data'
|
183
|
+
SqlTraceDataPost.new(opts)
|
184
|
+
when 'transaction_sample_data'
|
185
|
+
TransactionSampleDataPost.new(opts)
|
186
|
+
else
|
187
|
+
new(opts)
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
def [](key)
|
192
|
+
@body[key]
|
193
|
+
end
|
194
|
+
|
195
|
+
def unblob(blob)
|
196
|
+
return unless blob
|
197
|
+
JSON.load(Zlib::Inflate.inflate(Base64.decode64(blob)))
|
198
|
+
end
|
199
|
+
end
|
200
|
+
|
201
|
+
class ConnectPost < AgentPost
|
202
|
+
def initialize(opts={})
|
203
|
+
super
|
204
|
+
@body = @body[0]
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
class ProfileDataPost < AgentPost
|
209
|
+
def initialize(opts={})
|
210
|
+
super
|
211
|
+
@body[1][0][4] = unblob(@body[1][0][4]) if @format == :json
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
class SqlTraceDataPost < AgentPost
|
216
|
+
def initialize(opts={})
|
217
|
+
super
|
218
|
+
@body[0][0][9] = unblob(@body[0][0][9]) if @format == :json
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
class TransactionSampleDataPost < AgentPost
|
223
|
+
def initialize(opts={})
|
224
|
+
super
|
225
|
+
@body[4] = unblob(@body[4]) if @format == :json
|
226
|
+
end
|
227
|
+
|
228
|
+
def metric_name
|
229
|
+
@body[1][0][2]
|
230
|
+
end
|
231
|
+
end
|
154
232
|
end
|
155
233
|
|
156
234
|
# might we need this? I'll just leave it here for now
|
@@ -290,7 +368,7 @@ if $0 == __FILE__
|
|
290
368
|
end
|
291
369
|
|
292
370
|
def invoke(method, post={}, code=200)
|
293
|
-
uri = URI.parse("http://127.0.0.1:#{determine_port}/agent_listener/8/12345/#{method}")
|
371
|
+
uri = URI.parse("http://127.0.0.1:#{@collector.determine_port}/agent_listener/8/12345/#{method}")
|
294
372
|
request = Net::HTTP::Post.new("#{uri.path}?#{uri.query}")
|
295
373
|
if uri.query && uri.query.include?('marshal_format=json')
|
296
374
|
request.body = JSON.dump(post)
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#encoding: utf-8
|
2
|
+
|
3
|
+
#require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
4
|
+
require 'test/unit'
|
5
|
+
require 'newrelic_rpm'
|
6
|
+
|
7
|
+
class HelperTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
def test_json_serializer_method
|
10
|
+
obj = [
|
11
|
+
99, 'luftballons',
|
12
|
+
{
|
13
|
+
'Hast du etwas' => 'Zeit für mich',
|
14
|
+
'Dann singe ich' => {
|
15
|
+
'ein lied' => 'für dich'
|
16
|
+
}
|
17
|
+
}
|
18
|
+
]
|
19
|
+
copy = NewRelic.json_load( NewRelic.json_dump(obj) )
|
20
|
+
|
21
|
+
assert( obj == copy )
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
@@ -101,29 +101,29 @@ class NewRelic::MetricDataTest < Test::Unit::TestCase
|
|
101
101
|
end
|
102
102
|
|
103
103
|
def test_to_json_no_metric_id
|
104
|
-
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::
|
104
|
+
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::Agent::Stats.new, nil)
|
105
105
|
json = md.to_json
|
106
106
|
assert(json.include?('"Custom/test/method"'), "should include the metric spec in the json")
|
107
107
|
assert(json.include?('"metric_id":null}'), "should have a null metric_id")
|
108
108
|
end
|
109
109
|
|
110
110
|
def test_to_json_with_metric_id
|
111
|
-
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::
|
111
|
+
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::Agent::Stats.new, 12345)
|
112
112
|
assert_equal('{"metric_spec":null,"stats":{"total_exclusive_time":0.0,"min_call_time":0.0,"call_count":0,"sum_of_squares":0.0,"total_call_time":0.0,"max_call_time":0.0},"metric_id":12345}', md.to_json, "should not include the metric spec and should have a metric_id")
|
113
113
|
end
|
114
114
|
|
115
115
|
def test_to_s_with_metric_spec
|
116
|
-
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::
|
117
|
-
assert_equal('Custom/test/method(): [
|
116
|
+
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', ''), NewRelic::Agent::Stats.new, 12345)
|
117
|
+
assert_equal('Custom/test/method(): [ 0 calls 0.0000s]', md.to_s, "should not include the metric id and should include the metric spec")
|
118
118
|
end
|
119
119
|
|
120
120
|
def test_to_s_without_metric_spec
|
121
|
-
md = NewRelic::MetricData.new(nil, NewRelic::
|
122
|
-
assert_equal('12345: [
|
121
|
+
md = NewRelic::MetricData.new(nil, NewRelic::Agent::Stats.new, 12345)
|
122
|
+
assert_equal('12345: [ 0 calls 0.0000s]', md.to_s, "should include the metric id and not have a metric spec")
|
123
123
|
end
|
124
124
|
|
125
125
|
def test_to_collector_array_with_spec
|
126
|
-
stats = NewRelic::
|
126
|
+
stats = NewRelic::Agent::Stats.new
|
127
127
|
stats.record_data_point(1.0)
|
128
128
|
stats.record_data_point(2.0, 1.0)
|
129
129
|
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', 'scope'),
|
@@ -134,7 +134,7 @@ class NewRelic::MetricDataTest < Test::Unit::TestCase
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def test_to_collector_array_with_spec_and_id
|
137
|
-
stats = NewRelic::
|
137
|
+
stats = NewRelic::Agent::Stats.new
|
138
138
|
stats.record_data_point(1.0)
|
139
139
|
stats.record_data_point(2.0, 1.0)
|
140
140
|
md = NewRelic::MetricData.new(NewRelic::MetricSpec.new('Custom/test/method', 'scope'),
|
@@ -144,7 +144,7 @@ class NewRelic::MetricDataTest < Test::Unit::TestCase
|
|
144
144
|
end
|
145
145
|
|
146
146
|
def test_to_collector_array_with_id
|
147
|
-
stats = NewRelic::
|
147
|
+
stats = NewRelic::Agent::Stats.new
|
148
148
|
stats.record_data_point(1.0)
|
149
149
|
stats.record_data_point(2.0, 1.0)
|
150
150
|
md = NewRelic::MetricData.new(nil, stats, 1234)
|
@@ -154,7 +154,7 @@ class NewRelic::MetricDataTest < Test::Unit::TestCase
|
|
154
154
|
|
155
155
|
# Rationals in metric data? -- https://support.newrelic.com/tickets/28053
|
156
156
|
def test_to_collector_array_with_rationals
|
157
|
-
stats = NewRelic::
|
157
|
+
stats = NewRelic::Agent::Stats.new
|
158
158
|
stats.call_count = Rational(1, 1)
|
159
159
|
stats.total_call_time = Rational(2, 1)
|
160
160
|
stats.total_exclusive_time = Rational(3, 1)
|
@@ -168,7 +168,7 @@ class NewRelic::MetricDataTest < Test::Unit::TestCase
|
|
168
168
|
end
|
169
169
|
|
170
170
|
def test_to_collector_array_with_bad_values
|
171
|
-
stats = NewRelic::
|
171
|
+
stats = NewRelic::Agent::Stats.new
|
172
172
|
stats.call_count = nil
|
173
173
|
stats.total_call_time = "junk"
|
174
174
|
stats.total_exclusive_time = Object.new
|
data/test/script/ci.sh
CHANGED
data/test/test_contexts.rb
CHANGED
@@ -10,7 +10,6 @@ module TestContexts
|
|
10
10
|
NewRelic::Agent::Agent.instance.service = default_service
|
11
11
|
NewRelic::Agent.manual_start :log => @log
|
12
12
|
@agent = NewRelic::Agent.instance
|
13
|
-
@agent.metric_ids.clear
|
14
13
|
@agent.transaction_sampler.send :clear_builder
|
15
14
|
@agent.transaction_sampler.reset!
|
16
15
|
@agent.stats_engine.clear_stats
|
data/test/test_helper.rb
CHANGED
@@ -140,15 +140,33 @@ def assert_calls_unscoped_metrics(*metrics)
|
|
140
140
|
assert_not_equal first_metrics, last_metrics, "should have changed these metrics"
|
141
141
|
end
|
142
142
|
|
143
|
+
unless defined?( assert_includes )
|
144
|
+
def assert_includes( collection, member, msg=nil )
|
145
|
+
msg = build_message( msg, "Expected ? to include ?", collection, member )
|
146
|
+
assert_block( msg ) { collection.include?(member) }
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
unless defined?( assert_not_includes )
|
151
|
+
def assert_not_includes( collection, member, msg=nil )
|
152
|
+
msg = build_message( msg, "Expected ? not to include ?", collection, member )
|
153
|
+
assert_block( msg ) { !collection.include?(member) }
|
154
|
+
end
|
155
|
+
end
|
143
156
|
|
144
157
|
def compare_metrics(expected, actual)
|
145
158
|
actual.delete_if {|a| a.include?('GC/cumulative') } # in case we are in REE
|
146
159
|
assert_equal(expected.to_a.sort, actual.to_a.sort, "extra: #{(actual - expected).to_a.inspect}; missing: #{(expected - actual).to_a.inspect}")
|
147
160
|
end
|
148
161
|
|
149
|
-
def with_config(config_hash,
|
150
|
-
|
151
|
-
|
162
|
+
def with_config(config_hash, opts={})
|
163
|
+
opts = { :level => 0, :do_not_cast => false }.merge(opts)
|
164
|
+
if opts[:do_not_cast]
|
165
|
+
config = config_hash
|
166
|
+
else
|
167
|
+
config = NewRelic::Agent::Configuration::DottedHash.new(config_hash)
|
168
|
+
end
|
169
|
+
NewRelic::Agent.config.apply_config(config, opts[:level])
|
152
170
|
begin
|
153
171
|
yield
|
154
172
|
ensure
|
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.8.64.beta
|
5
|
+
prerelease: 9
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jason Clark
|
@@ -41,7 +41,7 @@ cert_chain:
|
|
41
41
|
cHUySWFQWE92bTNUOEc0TzZxWnZobkxoL1VpZW4rK0RqOGVGQmVjVFBvTThw
|
42
42
|
VmpLM3BoNQpuL0V3dVpDY0U2Z2h0Q0NNCi0tLS0tRU5EIENFUlRJRklDQVRF
|
43
43
|
LS0tLS0K
|
44
|
-
date: 2013-02-
|
44
|
+
date: 2013-02-26 00:00:00.000000000 Z
|
45
45
|
dependencies: []
|
46
46
|
description: ! 'New Relic is a performance management system, developed by New Relic,
|
47
47
|
|
@@ -106,7 +106,8 @@ files:
|
|
106
106
|
- lib/new_relic/agent/configuration/mask_defaults.rb
|
107
107
|
- lib/new_relic/agent/configuration/server_source.rb
|
108
108
|
- lib/new_relic/agent/configuration/yaml_source.rb
|
109
|
-
- lib/new_relic/agent/
|
109
|
+
- lib/new_relic/agent/cross_app_monitor.rb
|
110
|
+
- lib/new_relic/agent/cross_app_tracing.rb
|
110
111
|
- lib/new_relic/agent/database.rb
|
111
112
|
- lib/new_relic/agent/error_collector.rb
|
112
113
|
- lib/new_relic/agent/event_listener.rb
|
@@ -141,6 +142,7 @@ files:
|
|
141
142
|
- lib/new_relic/agent/new_relic_service.rb
|
142
143
|
- lib/new_relic/agent/pipe_channel_manager.rb
|
143
144
|
- lib/new_relic/agent/pipe_service.rb
|
145
|
+
- lib/new_relic/agent/rules_engine.rb
|
144
146
|
- lib/new_relic/agent/sampler.rb
|
145
147
|
- lib/new_relic/agent/samplers/cpu_sampler.rb
|
146
148
|
- lib/new_relic/agent/samplers/delayed_job_sampler.rb
|
@@ -148,10 +150,12 @@ files:
|
|
148
150
|
- lib/new_relic/agent/samplers/object_sampler.rb
|
149
151
|
- lib/new_relic/agent/shim_agent.rb
|
150
152
|
- lib/new_relic/agent/sql_sampler.rb
|
153
|
+
- lib/new_relic/agent/stats.rb
|
151
154
|
- lib/new_relic/agent/stats_engine.rb
|
152
155
|
- lib/new_relic/agent/stats_engine/gc_profiler.rb
|
153
156
|
- lib/new_relic/agent/stats_engine/metric_stats.rb
|
154
157
|
- lib/new_relic/agent/stats_engine/samplers.rb
|
158
|
+
- lib/new_relic/agent/stats_engine/stats_hash.rb
|
155
159
|
- lib/new_relic/agent/stats_engine/transactions.rb
|
156
160
|
- lib/new_relic/agent/thread.rb
|
157
161
|
- lib/new_relic/agent/thread_profiler.rb
|
@@ -188,13 +192,13 @@ files:
|
|
188
192
|
- lib/new_relic/metric_spec.rb
|
189
193
|
- lib/new_relic/metrics.rb
|
190
194
|
- lib/new_relic/noticed_error.rb
|
195
|
+
- lib/new_relic/okjson.rb
|
191
196
|
- lib/new_relic/rack.rb
|
192
197
|
- lib/new_relic/rack/agent_hooks.rb
|
193
198
|
- lib/new_relic/rack/browser_monitoring.rb
|
194
199
|
- lib/new_relic/rack/developer_mode.rb
|
195
200
|
- lib/new_relic/rack/error_collector.rb
|
196
201
|
- lib/new_relic/recipes.rb
|
197
|
-
- lib/new_relic/stats.rb
|
198
202
|
- lib/new_relic/timer_lib.rb
|
199
203
|
- lib/new_relic/transaction_analysis.rb
|
200
204
|
- lib/new_relic/transaction_analysis/segment_summary.rb
|
@@ -234,13 +238,15 @@ files:
|
|
234
238
|
- test/multiverse/suites/agent_only/Envfile
|
235
239
|
- test/multiverse/suites/agent_only/audit_log_test.rb
|
236
240
|
- test/multiverse/suites/agent_only/config/newrelic.yml
|
237
|
-
- test/multiverse/suites/agent_only/
|
241
|
+
- test/multiverse/suites/agent_only/cross_application_tracing_test.rb
|
238
242
|
- test/multiverse/suites/agent_only/http_response_code_test.rb
|
243
|
+
- test/multiverse/suites/agent_only/key_transactions_test.rb
|
239
244
|
- test/multiverse/suites/agent_only/logging_test.rb
|
240
245
|
- test/multiverse/suites/agent_only/marshaling_test.rb
|
241
246
|
- test/multiverse/suites/agent_only/method_visibility_test.rb
|
242
247
|
- test/multiverse/suites/agent_only/no_dns_resolv.rb
|
243
248
|
- test/multiverse/suites/agent_only/pipe_manager_test.rb
|
249
|
+
- test/multiverse/suites/agent_only/rename_rule_test.rb
|
244
250
|
- test/multiverse/suites/agent_only/rum_instrumentation_test.rb
|
245
251
|
- test/multiverse/suites/agent_only/service_timeout_test.rb
|
246
252
|
- test/multiverse/suites/agent_only/ssl_test.rb
|
@@ -308,7 +314,7 @@ files:
|
|
308
314
|
- test/new_relic/agent/configuration/manager_test.rb
|
309
315
|
- test/new_relic/agent/configuration/server_source_test.rb
|
310
316
|
- test/new_relic/agent/configuration/yaml_source_test.rb
|
311
|
-
- test/new_relic/agent/
|
317
|
+
- test/new_relic/agent/cross_app_monitor_test.rb
|
312
318
|
- test/new_relic/agent/database_test.rb
|
313
319
|
- test/new_relic/agent/error_collector/notice_error_test.rb
|
314
320
|
- test/new_relic/agent/error_collector_test.rb
|
@@ -333,13 +339,16 @@ files:
|
|
333
339
|
- test/new_relic/agent/pipe_channel_manager_test.rb
|
334
340
|
- test/new_relic/agent/pipe_service_test.rb
|
335
341
|
- test/new_relic/agent/rpm_agent_test.rb
|
342
|
+
- test/new_relic/agent/rules_engine_test.rb
|
336
343
|
- test/new_relic/agent/sampler_test.rb
|
337
344
|
- test/new_relic/agent/shim_agent_test.rb
|
338
345
|
- test/new_relic/agent/sql_sampler_test.rb
|
339
|
-
- test/new_relic/agent/stats_engine/
|
346
|
+
- test/new_relic/agent/stats_engine/gc_profiler_test.rb
|
340
347
|
- test/new_relic/agent/stats_engine/metric_stats_test.rb
|
341
348
|
- test/new_relic/agent/stats_engine/samplers_test.rb
|
342
349
|
- test/new_relic/agent/stats_engine_test.rb
|
350
|
+
- test/new_relic/agent/stats_hash_test.rb
|
351
|
+
- test/new_relic/agent/stats_test.rb
|
343
352
|
- test/new_relic/agent/thread_profiler_test.rb
|
344
353
|
- test/new_relic/agent/thread_test.rb
|
345
354
|
- test/new_relic/agent/threaded_test.rb
|
@@ -357,8 +366,8 @@ files:
|
|
357
366
|
- test/new_relic/delayed_job_injection_test.rb
|
358
367
|
- test/new_relic/dispatcher_test.rb
|
359
368
|
- test/new_relic/fake_collector.rb
|
360
|
-
- test/new_relic/fakes_sending_data.rb
|
361
369
|
- test/new_relic/framework_test.rb
|
370
|
+
- test/new_relic/helper_test.rb
|
362
371
|
- test/new_relic/load_test.rb
|
363
372
|
- test/new_relic/local_environment_test.rb
|
364
373
|
- test/new_relic/metric_data_test.rb
|
@@ -371,7 +380,6 @@ files:
|
|
371
380
|
- test/new_relic/rack/developer_mode_helper_test.rb
|
372
381
|
- test/new_relic/rack/developer_mode_test.rb
|
373
382
|
- test/new_relic/rack/error_collector_test.rb
|
374
|
-
- test/new_relic/stats_test.rb
|
375
383
|
- test/new_relic/transaction_analysis/segment_summary_test.rb
|
376
384
|
- test/new_relic/transaction_analysis_test.rb
|
377
385
|
- test/new_relic/transaction_sample/composite_segment_test.rb
|
@@ -470,12 +478,20 @@ files:
|
|
470
478
|
- lib/new_relic/build.rb
|
471
479
|
homepage: http://www.github.com/newrelic/rpm
|
472
480
|
licenses: []
|
473
|
-
post_install_message: ! "\n# New Relic Ruby Agent Release Notes #\n\n## v3.5.
|
474
|
-
\ *
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
481
|
+
post_install_message: ! "\n# New Relic Ruby Agent Release Notes #\n\n## v3.5.8 ##\n\n
|
482
|
+
\ * Key Transactions\n\n The Ruby agent now supports Key Transactions! Check
|
483
|
+
out more details on the\n feature at https://newrelic.com/docs/site/key-transactions\n\n
|
484
|
+
\ * Ruby 2.0\n\n The Ruby agent is compatible with Ruby 2.0.0 which was just
|
485
|
+
released.\n\n * Improved Sinatra instrumentation\n\n Several cases around the
|
486
|
+
use of conditions and pass in Sinatra are now\n better supported by the Ruby
|
487
|
+
agent. Thanks Konstantin for the help!\n\n * Outbound HTTP headers\n\n Adds
|
488
|
+
a 'X-NewRelic-ID' header to outbound Net::HTTP requests. This change\n helps
|
489
|
+
improve the correlation of performance between services in a service-\n oriented
|
490
|
+
architecture for a forthcoming feature. In the meantime, to disable\n the header,
|
491
|
+
set this in your newrelic.yml:\n\n cross_application_tracer:\n enabled:
|
492
|
+
false\n\n * Automatically detect Resque dispatcher\n\n The agent does better
|
493
|
+
auto-detection for the Resque worker process.\n This should reduce the need to
|
494
|
+
set NEW_RELIC_DISPATCHER=resque directly.\n\nSee https://github.com/newrelic/rpm/blob/master/CHANGELOG
|
479
495
|
for a full list of\nchanges.\n"
|
480
496
|
rdoc_options:
|
481
497
|
- --line-numbers
|