newrelic_rpm 3.6.2.96 → 3.6.3.103.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. data/.gitignore +3 -0
  2. data/CHANGELOG +33 -1
  3. data/README.md +7 -7
  4. data/lib/new_relic/agent/agent.rb +51 -22
  5. data/lib/new_relic/agent/agent_logger.rb +22 -11
  6. data/lib/new_relic/agent/configuration/defaults.rb +6 -1
  7. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +1 -6
  8. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +1 -1
  9. data/lib/new_relic/agent/instrumentation/active_record.rb +8 -48
  10. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +9 -1
  11. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +4 -3
  12. data/lib/new_relic/agent/instrumentation/data_mapper.rb +4 -4
  13. data/lib/new_relic/agent/instrumentation/metric_frame.rb +10 -8
  14. data/lib/new_relic/agent/instrumentation/padrino.rb +32 -0
  15. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +52 -0
  16. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +56 -0
  17. data/lib/new_relic/agent/instrumentation/sinatra.rb +113 -48
  18. data/lib/new_relic/agent/new_relic_service.rb +6 -0
  19. data/lib/new_relic/agent/pipe_channel_manager.rb +13 -8
  20. data/lib/new_relic/agent/request_sampler.rb +205 -0
  21. data/lib/new_relic/agent/sampler.rb +0 -1
  22. data/lib/new_relic/agent/stats_engine/samplers.rb +0 -1
  23. data/lib/new_relic/agent/stats_engine/transactions.rb +12 -16
  24. data/lib/new_relic/agent/transaction.rb +27 -4
  25. data/lib/new_relic/agent/transaction_sample_builder.rb +47 -6
  26. data/lib/new_relic/agent/transaction_sampler.rb +0 -5
  27. data/lib/new_relic/agent.rb +17 -0
  28. data/lib/new_relic/build.rb +2 -2
  29. data/lib/new_relic/coerce.rb +3 -1
  30. data/lib/new_relic/rack/agent_hooks.rb +17 -3
  31. data/lib/new_relic/rack/browser_monitoring.rb +8 -3
  32. data/lib/new_relic/rack/error_collector.rb +2 -0
  33. data/lib/new_relic/transaction_sample/segment.rb +0 -23
  34. data/lib/new_relic/transaction_sample.rb +0 -9
  35. data/lib/new_relic/version.rb +1 -1
  36. data/test/agent_helper.rb +204 -0
  37. data/test/config/newrelic.yml +0 -1
  38. data/test/config/test_control.rb +3 -1
  39. data/test/multiverse/suites/agent_only/key_transactions_test.rb +8 -5
  40. data/test/multiverse/suites/agent_only/logging_test.rb +1 -1
  41. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +7 -8
  42. data/test/multiverse/suites/datamapper/Envfile +7 -0
  43. data/test/multiverse/suites/datamapper/datamapper_test.rb +105 -0
  44. data/test/multiverse/suites/padrino/Envfile +16 -0
  45. data/test/multiverse/suites/padrino/config/newrelic.yml +24 -0
  46. data/test/multiverse/suites/padrino/padrino_test.rb +54 -0
  47. data/test/multiverse/suites/rails/Envfile +5 -5
  48. data/test/multiverse/suites/rails/app.rb +1 -0
  49. data/test/multiverse/suites/rails/request_statistics_test.rb +118 -0
  50. data/test/multiverse/suites/sinatra/Envfile +8 -2
  51. data/test/multiverse/suites/sinatra/ignoring_test.rb +185 -0
  52. data/test/multiverse/suites/sinatra/sinatra_classic_test.rb +92 -0
  53. data/test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb +0 -3
  54. data/test/multiverse/suites/sinatra/sinatra_modular_test.rb +89 -0
  55. data/test/multiverse/suites/sinatra/sinatra_test_cases.rb +120 -0
  56. data/test/new_relic/agent/agent_logger_test.rb +149 -56
  57. data/test/new_relic/agent/agent_test.rb +23 -0
  58. data/test/new_relic/agent/agent_test_controller_test.rb +8 -1
  59. data/test/new_relic/agent/autostart_test.rb +10 -6
  60. data/test/new_relic/agent/instrumentation/action_controller_subscriber_test.rb +36 -31
  61. data/test/new_relic/agent/instrumentation/action_view_subscriber_test.rb +7 -0
  62. data/test/new_relic/agent/instrumentation/active_record_helper_test.rb +20 -4
  63. data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +20 -9
  64. data/test/new_relic/agent/instrumentation/active_record_subscriber_test.rb +23 -19
  65. data/test/new_relic/agent/instrumentation/sequel_test.rb +118 -79
  66. data/test/new_relic/agent/instrumentation/sinatra/transaction_namer_test.rb +55 -0
  67. data/test/new_relic/agent/instrumentation/sinatra_test.rb +60 -11
  68. data/test/new_relic/agent/method_tracer_test.rb +7 -4
  69. data/test/new_relic/agent/new_relic_service_test.rb +6 -0
  70. data/test/new_relic/agent/pipe_channel_manager_test.rb +6 -2
  71. data/test/new_relic/agent/request_sampler_test.rb +159 -0
  72. data/test/new_relic/agent/stats_engine/samplers_test.rb +1 -5
  73. data/test/new_relic/agent/stats_engine_test.rb +14 -0
  74. data/test/new_relic/agent/transaction_sample_builder_test.rb +43 -6
  75. data/test/new_relic/agent/transaction_sampler_test.rb +31 -1
  76. data/test/new_relic/agent/transaction_test.rb +29 -0
  77. data/test/new_relic/agent_test.rb +7 -0
  78. data/test/new_relic/coerce_test.rb +13 -0
  79. data/test/new_relic/fake_collector.rb +31 -1
  80. data/test/new_relic/metric_spec_test.rb +14 -10
  81. data/test/new_relic/rack/agent_hooks_test.rb +9 -2
  82. data/test/new_relic/rack/browser_monitoring_test.rb +16 -7
  83. data/test/new_relic/rack/developer_mode_test.rb +7 -0
  84. data/test/new_relic/rack/error_collector_test.rb +10 -6
  85. data/test/new_relic/transaction_sample/segment_test.rb +0 -61
  86. data/test/new_relic/transaction_sample_subtest_test.rb +0 -19
  87. data/test/script/ci.sh +14 -0
  88. data/test/test_helper.rb +79 -203
  89. data.tar.gz.sig +0 -0
  90. metadata +50 -18
  91. metadata.gz.sig +0 -0
  92. data/test/multiverse/suites/datamapper/encoding_test.rb +0 -40
  93. data/test/multiverse/suites/sinatra/sinatra_test.rb +0 -143
data/test/test_helper.rb CHANGED
@@ -14,44 +14,48 @@ $LOAD_PATH.uniq!
14
14
 
15
15
  require 'rubygems'
16
16
  require 'rake'
17
+
17
18
  # We can speed things up in tests that don't need to load rails.
18
19
  # You can also run the tests in a mode without rails. Many tests
19
20
  # will be skipped.
20
-
21
- begin
22
- require 'config/environment'
23
- # require File.join(File.dirname(__FILE__),'..','..','rpm_test_app','config','environment')
24
-
25
- # we need 'rails/test_help' for Rails 4
26
- # we need 'test_help' for Rails 2
27
- # we need neither for Rails 3
21
+ if ENV["NO_RAILS"]
22
+ puts "Running tests in standalone mode without Rails."
23
+ require 'newrelic_rpm'
24
+ else
28
25
  begin
29
- require 'rails/test_help'
30
- rescue LoadError
26
+ require 'config/environment'
27
+ # require File.join(File.dirname(__FILE__),'..','..','rpm_test_app','config','environment')
28
+
29
+ # we need 'rails/test_help' for Rails 4
30
+ # we need 'test_help' for Rails 2
31
+ # we need neither for Rails 3
31
32
  begin
32
- require 'test_help'
33
+ require 'rails/test_help'
33
34
  rescue LoadError
34
- # ignore load problems on test help - it doesn't exist in rails 3
35
+ begin
36
+ require 'test_help'
37
+ rescue LoadError
38
+ # ignore load problems on test help - it doesn't exist in rails 3
39
+ end
35
40
  end
36
- end
37
- require 'newrelic_rpm'
38
- rescue LoadError => e
39
- puts "Running tests in standalone mode."
40
- require 'bundler'
41
- Bundler.require
42
- require 'rails/all'
43
- require 'newrelic_rpm'
44
-
45
- # Bootstrap a basic rails environment for the agent to run in.
46
- class MyApp < Rails::Application
47
- config.active_support.deprecation = :log
48
- config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
49
- config.after_initialize do
50
- NewRelic::Agent.manual_start
41
+ require 'newrelic_rpm'
42
+ rescue LoadError => e
43
+ puts "Running tests in standalone mode."
44
+ require 'bundler'
45
+ Bundler.require
46
+ require 'rails/all'
47
+ require 'newrelic_rpm'
48
+
49
+ # Bootstrap a basic rails environment for the agent to run in.
50
+ class MyApp < Rails::Application
51
+ config.active_support.deprecation = :log
52
+ config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
53
+ config.after_initialize do
54
+ NewRelic::Agent.manual_start
55
+ end
51
56
  end
57
+ MyApp.initialize!
52
58
  end
53
- MyApp.initialize!
54
-
55
59
  end
56
60
 
57
61
  require 'test/unit'
@@ -67,6 +71,8 @@ begin # 1.8.6
67
71
  rescue LoadError
68
72
  end
69
73
 
74
+ require 'agent_helper'
75
+
70
76
  def default_service(stubbed_method_overrides = {})
71
77
  service = stub
72
78
  stubbed_method_defaults = {
@@ -102,153 +108,6 @@ class Test::Unit::TestCase
102
108
  end
103
109
  end
104
110
 
105
- def assert_between(floor, ceiling, value, message="expected #{floor} <= #{value} <= #{ceiling}")
106
- assert((floor <= value && value <= ceiling), message)
107
- end
108
-
109
- def assert_in_delta(expected, actual, delta)
110
- assert_between((expected - delta), (expected + delta), actual)
111
- end
112
-
113
- def check_metric_time(metric, value, delta)
114
- time = NewRelic::Agent.get_stats(metric).total_call_time
115
- assert_in_delta(value, time, delta)
116
- end
117
-
118
- def check_metric_count(metric, value)
119
- count = NewRelic::Agent.get_stats(metric).call_count
120
- assert_equal(value, count, "should have the correct number of calls")
121
- end
122
-
123
- def check_unscoped_metric_count(metric, value)
124
- count = NewRelic::Agent.get_stats_unscoped(metric).call_count
125
- assert_equal(value, count, "should have the correct number of calls")
126
- end
127
-
128
- def generate_unscoped_metric_counts(*metrics)
129
- metrics.inject({}) do |sum, metric|
130
- sum[metric] = NewRelic::Agent.get_stats_no_scope(metric).call_count
131
- sum
132
- end
133
- end
134
-
135
- def generate_metric_counts(*metrics)
136
- metrics.inject({}) do |sum, metric|
137
- sum[metric] = NewRelic::Agent.get_stats(metric).call_count
138
- sum
139
- end
140
- end
141
-
142
- def assert_does_not_call_metrics(*metrics)
143
- first_metrics = generate_metric_counts(*metrics)
144
- yield
145
- last_metrics = generate_metric_counts(*metrics)
146
- assert_equal first_metrics, last_metrics, "should not have changed these metrics"
147
- end
148
-
149
- def assert_calls_metrics(*metrics)
150
- first_metrics = generate_metric_counts(*metrics)
151
- yield
152
- last_metrics = generate_metric_counts(*metrics)
153
- assert_not_equal first_metrics, last_metrics, "should have changed these metrics"
154
- end
155
-
156
- def assert_calls_unscoped_metrics(*metrics)
157
- first_metrics = generate_unscoped_metric_counts(*metrics)
158
- yield
159
- last_metrics = generate_unscoped_metric_counts(*metrics)
160
- assert_not_equal first_metrics, last_metrics, "should have changed these metrics"
161
- end
162
-
163
- unless defined?( assert_includes )
164
- def assert_includes( collection, member, msg=nil )
165
- msg = build_message( msg, "Expected ? to include ?", collection, member )
166
- assert_block( msg ) { collection.include?(member) }
167
- end
168
- end
169
-
170
- unless defined?( assert_not_includes )
171
- def assert_not_includes( collection, member, msg=nil )
172
- msg = build_message( msg, "Expected ? not to include ?", collection, member )
173
- assert_block( msg ) { !collection.include?(member) }
174
- end
175
- end
176
-
177
- def compare_metrics(expected, actual)
178
- actual.delete_if {|a| a.include?('GC/cumulative') } # in case we are in REE
179
- assert_equal(expected.to_a.sort, actual.to_a.sort, "extra: #{(actual - expected).to_a.inspect}; missing: #{(expected - actual).to_a.inspect}")
180
- end
181
-
182
- def metric_spec_from_specish(specish)
183
- spec = case specish
184
- when String then NewRelic::MetricSpec.new(specish)
185
- when Array then NewRelic::MetricSpec.new(*specish)
186
- end
187
- spec
188
- end
189
-
190
- def _normalize_metric_expectations(expectations)
191
- case expectations
192
- when Array
193
- hash = {}
194
- expectations.each { |k| hash[k] = { :call_count => 1 } }
195
- hash
196
- else
197
- expectations
198
- end
199
- end
200
-
201
- def assert_metrics_recorded(expected)
202
- expected = _normalize_metric_expectations(expected)
203
- expected.each do |specish, expected_attrs|
204
- expected_spec = metric_spec_from_specish(specish)
205
- actual_stats = NewRelic::Agent.instance.stats_engine.lookup_stats(*Array(specish))
206
- if !actual_stats
207
- all_specs = NewRelic::Agent.instance.stats_engine.metric_specs
208
- matches = all_specs.select { |spec| spec.name == expected_spec.name }
209
- matches.map! { |m| " #{m.inspect}" }
210
- msg = "Did not find stats for spec #{expected_spec.inspect}."
211
- msg += "\nDid find specs: [\n#{matches.join(",\n")}\n]" unless matches.empty?
212
- assert(actual_stats, msg)
213
- end
214
- expected_attrs.each do |attr, expected_value|
215
- actual_value = actual_stats.send(attr)
216
- if attr == :call_count
217
- assert_equal(expected_value, actual_value,
218
- "Expected #{attr} for #{expected_spec} to be #{expected_value}, got #{actual_value}")
219
- else
220
- assert_in_delta(expected_value, actual_value, 0.0001,
221
- "Expected #{attr} for #{expected_spec} to be ~#{expected_value}, got #{actual_value}")
222
- end
223
- end
224
- end
225
- end
226
-
227
- def assert_metrics_recorded_exclusive(expected, options={})
228
- expected = _normalize_metric_expectations(expected)
229
- assert_metrics_recorded(expected)
230
- recorded_metrics = NewRelic::Agent.instance.stats_engine.metrics
231
- if options[:filter]
232
- recorded_metrics = recorded_metrics.select { |m| m.match(options[:filter]) }
233
- end
234
- expected_metrics = expected.keys.map { |s| metric_spec_from_specish(s).to_s }
235
- unexpected_metrics = recorded_metrics.select{|m| m !~ /GC\/cumulative/}
236
- unexpected_metrics -= expected_metrics
237
- assert_equal(0, unexpected_metrics.size, "Found unexpected metrics: [#{unexpected_metrics.join(', ')}]")
238
- end
239
-
240
- def assert_metrics_not_recorded(not_expected)
241
- not_expected = _normalize_metric_expectations(not_expected)
242
- found_but_not_expected = []
243
- not_expected.each do |specish, _|
244
- spec = metric_spec_from_specish(specish)
245
- if NewRelic::Agent.instance.stats_engine.lookup_stats(*Array(specish))
246
- found_but_not_expected << spec
247
- end
248
- end
249
- assert_equal([], found_but_not_expected, "Found unexpected metrics: [#{found_but_not_expected.join(', ')}]")
250
- end
251
-
252
111
  def with_config(config_hash, opts={})
253
112
  opts = { :level => 0, :do_not_cast => false }.merge(opts)
254
113
  if opts[:do_not_cast]
@@ -264,7 +123,6 @@ def with_config(config_hash, opts={})
264
123
  end
265
124
  end
266
125
 
267
-
268
126
  def with_verbose_logging
269
127
  orig_logger = NewRelic::Agent.logger
270
128
  $stderr.puts '', '---', ''
@@ -277,7 +135,6 @@ ensure
277
135
  NewRelic::Agent.logger = orig_logger
278
136
  end
279
137
 
280
-
281
138
  # Need to be a bit sloppy when testing against the logging--let everything
282
139
  # through, but check we (at least) get our particular message we care about
283
140
  def expects_logging(level, *with_params)
@@ -299,31 +156,6 @@ ensure
299
156
  ::NewRelic::Agent.logger = logger
300
157
  end
301
158
 
302
- def in_transaction(name='dummy')
303
- NewRelic::Agent.instance.instance_variable_set(:@transaction_sampler,
304
- NewRelic::Agent::TransactionSampler.new)
305
- NewRelic::Agent.instance.stats_engine.transaction_sampler = \
306
- NewRelic::Agent.instance.transaction_sampler
307
- NewRelic::Agent::Transaction.start(:other)
308
- val = yield
309
- NewRelic::Agent::Transaction.stop(name)
310
- val
311
- end
312
-
313
- def freeze_time(now=Time.now)
314
- Time.stubs(:now).returns(now)
315
- end
316
-
317
- def advance_time(seconds)
318
- freeze_time(Time.now + seconds)
319
- end
320
-
321
- module NewRelic
322
- def self.fixture_path(name)
323
- File.join(File.dirname(__FILE__), 'fixtures', name)
324
- end
325
- end
326
-
327
159
  def fixture_tcp_socket( response )
328
160
  # Don't actually talk to Google.
329
161
  socket = stub("socket") do
@@ -363,6 +195,50 @@ def fixture_tcp_socket( response )
363
195
  return socket
364
196
  end
365
197
 
198
+
199
+ class ArrayLogDevice
200
+ def initialize( array=[] )
201
+ @array = array
202
+ end
203
+ attr_reader :array
204
+
205
+ def write( message )
206
+ @array << message
207
+ end
208
+
209
+ def close; end
210
+ end
211
+
212
+ def with_array_logger( level=:info )
213
+ orig_logger = NewRelic::Agent.logger
214
+ config = {
215
+ :log_file_path => nil,
216
+ :log_file_name => nil,
217
+ :log_level => level,
218
+ }
219
+ logdev = ArrayLogDevice.new
220
+ override_logger = Logger.new( logdev )
221
+ NewRelic::Agent.logger = NewRelic::Agent::AgentLogger.new(config, "", override_logger)
222
+
223
+ yield
224
+
225
+ return logdev
226
+ ensure
227
+ NewRelic::Agent.logger = orig_logger
228
+ end
229
+
230
+
231
+ def with_debug_logging
232
+ orig_logger = NewRelic::Agent.logger
233
+ $stderr.puts '', '---', ''
234
+ NewRelic::Agent.logger =
235
+ NewRelic::Agent::AgentLogger.new( {:log_level => 'debug'}, '', Logger.new($stderr) )
236
+ yield
237
+ ensure
238
+ NewRelic::Agent.logger = orig_logger
239
+ end
240
+
241
+
366
242
  module TransactionSampleTestHelper
367
243
  module_function
368
244
  def make_sql_transaction(*sql)
data.tar.gz.sig CHANGED
Binary file
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.6.2.96
5
- prerelease:
4
+ version: 3.6.3.103.beta
5
+ prerelease: 10
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-05-09 00:00:00.000000000 Z
44
+ date: 2013-05-29 00:00:00.000000000 Z
45
45
  dependencies: []
46
46
  description: ! 'New Relic is a performance management system, developed by New Relic,
47
47
 
@@ -131,6 +131,7 @@ files:
131
131
  - lib/new_relic/agent/instrumentation/merb/errors.rb
132
132
  - lib/new_relic/agent/instrumentation/metric_frame.rb
133
133
  - lib/new_relic/agent/instrumentation/net.rb
134
+ - lib/new_relic/agent/instrumentation/padrino.rb
134
135
  - lib/new_relic/agent/instrumentation/passenger_instrumentation.rb
135
136
  - lib/new_relic/agent/instrumentation/queue_time.rb
136
137
  - lib/new_relic/agent/instrumentation/rack.rb
@@ -148,6 +149,8 @@ files:
148
149
  - lib/new_relic/agent/instrumentation/sequel.rb
149
150
  - lib/new_relic/agent/instrumentation/sidekiq.rb
150
151
  - lib/new_relic/agent/instrumentation/sinatra.rb
152
+ - lib/new_relic/agent/instrumentation/sinatra/ignorer.rb
153
+ - lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb
151
154
  - lib/new_relic/agent/instrumentation/sunspot.rb
152
155
  - lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb
153
156
  - lib/new_relic/agent/method_tracer.rb
@@ -155,6 +158,7 @@ files:
155
158
  - lib/new_relic/agent/null_logger.rb
156
159
  - lib/new_relic/agent/pipe_channel_manager.rb
157
160
  - lib/new_relic/agent/pipe_service.rb
161
+ - lib/new_relic/agent/request_sampler.rb
158
162
  - lib/new_relic/agent/rules_engine.rb
159
163
  - lib/new_relic/agent/sampler.rb
160
164
  - lib/new_relic/agent/samplers/cpu_sampler.rb
@@ -237,6 +241,7 @@ files:
237
241
  - newrelic_rpm.gemspec
238
242
  - recipes/newrelic.rb
239
243
  - test/active_record_fixtures.rb
244
+ - test/agent_helper.rb
240
245
  - test/config/newrelic.yml
241
246
  - test/config/test_control.rb
242
247
  - test/fixtures/proc_cpuinfo.txt
@@ -280,7 +285,10 @@ files:
280
285
  - test/multiverse/suites/config_file_loading/config_file_loading_test.rb
281
286
  - test/multiverse/suites/datamapper/Envfile
282
287
  - test/multiverse/suites/datamapper/config/newrelic.yml
283
- - test/multiverse/suites/datamapper/encoding_test.rb
288
+ - test/multiverse/suites/datamapper/datamapper_test.rb
289
+ - test/multiverse/suites/padrino/Envfile
290
+ - test/multiverse/suites/padrino/config/newrelic.yml
291
+ - test/multiverse/suites/padrino/padrino_test.rb
284
292
  - test/multiverse/suites/rails/Envfile
285
293
  - test/multiverse/suites/rails/app.rb
286
294
  - test/multiverse/suites/rails/app/views/foos/_foo.html.haml
@@ -294,6 +302,7 @@ files:
294
302
  - test/multiverse/suites/rails/error_tracing_test.rb
295
303
  - test/multiverse/suites/rails/gc_instrumentation_test.rb
296
304
  - test/multiverse/suites/rails/queue_time_test.rb
305
+ - test/multiverse/suites/rails/request_statistics_test.rb
297
306
  - test/multiverse/suites/rails/view_instrumentation_test.rb
298
307
  - test/multiverse/suites/resque/Envfile
299
308
  - test/multiverse/suites/resque/Rakefile
@@ -307,10 +316,13 @@ files:
307
316
  - test/multiverse/suites/sidekiq/sidekiq_instrumentation_test.rb
308
317
  - test/multiverse/suites/sinatra/Envfile
309
318
  - test/multiverse/suites/sinatra/config/newrelic.yml
319
+ - test/multiverse/suites/sinatra/ignoring_test.rb
320
+ - test/multiverse/suites/sinatra/sinatra_classic_test.rb
310
321
  - test/multiverse/suites/sinatra/sinatra_error_tracing_test.rb
311
322
  - test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb
323
+ - test/multiverse/suites/sinatra/sinatra_modular_test.rb
312
324
  - test/multiverse/suites/sinatra/sinatra_routes_test.rb
313
- - test/multiverse/suites/sinatra/sinatra_test.rb
325
+ - test/multiverse/suites/sinatra/sinatra_test_cases.rb
314
326
  - test/multiverse/test/multiverse_test.rb
315
327
  - test/multiverse/test/suite_examples/one/a/Envfile
316
328
  - test/multiverse/test/suite_examples/one/a/a_test.rb
@@ -359,6 +371,7 @@ files:
359
371
  - test/new_relic/agent/instrumentation/queue_time_test.rb
360
372
  - test/new_relic/agent/instrumentation/rack_test.rb
361
373
  - test/new_relic/agent/instrumentation/sequel_test.rb
374
+ - test/new_relic/agent/instrumentation/sinatra/transaction_namer_test.rb
362
375
  - test/new_relic/agent/instrumentation/sinatra_test.rb
363
376
  - test/new_relic/agent/instrumentation/task_instrumentation_test.rb
364
377
  - test/new_relic/agent/memcache_instrumentation_test.rb
@@ -369,6 +382,7 @@ files:
369
382
  - test/new_relic/agent/new_relic_service_test.rb
370
383
  - test/new_relic/agent/pipe_channel_manager_test.rb
371
384
  - test/new_relic/agent/pipe_service_test.rb
385
+ - test/new_relic/agent/request_sampler_test.rb
372
386
  - test/new_relic/agent/rpm_agent_test.rb
373
387
  - test/new_relic/agent/rules_engine_test.rb
374
388
  - test/new_relic/agent/sampler_test.rb
@@ -512,19 +526,37 @@ files:
512
526
  - lib/new_relic/build.rb
513
527
  homepage: http://www.github.com/newrelic/rpm
514
528
  licenses: []
515
- post_install_message: ! "\n# New Relic Ruby Agent Release Notes #\n\n## v3.6.2 ##\n\n*
516
- Sequel support\n\n The Ruby agent now supports Sequel, a database toolkit for Ruby.
517
- This\n includes capturing SQL calls and model operations in transaction traces,
518
- and\n recording slow SQL calls. See https://newrelic.com/docs/ruby/sequel-instrumentation\n
519
- \ for full details.\n\n* Thread profiling fix\n\n The prior release of the agent
520
- (version 3.6.1) broke thread profiling. A\n profile would appear to run, but return
521
- no data. This has been fixed.\n\n* Fix for over-counted Net::HTTP calls\n\n Under
522
- some circumstances, calls into Net::HTTP were being counted twice in\n metrics
523
- and transaction traces. This has been fixed.\n\n* Missing traced errors for Resque
524
- applications\n\n Traced errors weren't displaying for some Resque workers, although
525
- the errors\n were factored into the overall count graphs. This has been fixed,
526
- and traced\n errors should be available again after upgrading the agent.\n\nSee
527
- https://github.com/newrelic/rpm/blob/master/CHANGELOG for a full list of\nchanges.\n"
529
+ post_install_message: ! "# New Relic Ruby Agent Release Notes #\n\n## 3.6.3 ##\n\n*
530
+ Better Sinatra Support\n\n A number of improvements have been made to our Sinatra
531
+ instrumentation.\n More details: https://newrelic.com/docs/ruby/sinatra-support-in-the-ruby-agent\n\n
532
+ \ Sinatra instrumentation has been updated to more accurately reflect the final\n
533
+ \ route that was actually executed, taking pass and conditions into account.\n \n
534
+ \ New Relic middlewares for error collection, real user monitoring, and cross\n
535
+ \ application tracing are automatically inserted into the middleware stack.\n \n
536
+ \ Ignoring routes, similar to functionality available to Rails controllers, is\n
537
+ \ now available in Sinatra as well.\n \n Routes in 1.4 are properly formatting
538
+ in transaction names. Thanks Zachary\n Anker for the contribution!\n\n* Padrino
539
+ Support\n\n Along with improving our support of Sinatra, we've also extended that
540
+ to\n supporting Padrino, a framework that builds on Sinatra. Web transactions\n
541
+ \ should show up in New Relic now for Padrino apps automatically. The agent has\n
542
+ \ been tested against the latest Padrino in versions 0.11.x and 0.10.x.\n \n* Main
543
+ overview graph only shows web transactions\n \n In the past database times from
544
+ background jobs mixed with other web transaction\n metrics in the main overview
545
+ graph. This often skewed graphs. A common workaround\n was to send background jobs
546
+ to a separate application, but that should no longer\n be necessary as the overview
547
+ graphs now only represent web transactions.\n\n## v3.6.2 ##\n\n* Sequel support\n\n
548
+ \ The Ruby agent now supports Sequel, a database toolkit for Ruby. This\n includes
549
+ capturing SQL calls and model operations in transaction traces, and\n recording
550
+ slow SQL calls. See https://newrelic.com/docs/ruby/sequel-instrumentation\n for
551
+ full details.\n\n* Thread profiling fix\n\n The prior release of the agent (version
552
+ 3.6.1) broke thread profiling. A\n profile would appear to run, but return no data.
553
+ This has been fixed.\n\n* Fix for over-counted Net::HTTP calls\n\n Under some circumstances,
554
+ calls into Net::HTTP were being counted twice in\n metrics and transaction traces.
555
+ This has been fixed.\n\n* Missing traced errors for Resque applications\n\n Traced
556
+ errors weren't displaying for some Resque workers, although the errors\n were factored
557
+ into the overall count graphs. This has been fixed, and traced\n errors should
558
+ be available again after upgrading the agent.\n\nSee https://github.com/newrelic/rpm/blob/master/CHANGELOG
559
+ for a full list of\nchanges.\n"
528
560
  rdoc_options:
529
561
  - --line-numbers
530
562
  - --inline-source