wireframe-rpm_contrib 1.0.12.7 → 2.1.6.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. data/CHANGELOG +69 -3
  2. data/Gemfile +13 -0
  3. data/README.md +137 -14
  4. data/Rakefile +5 -3
  5. data/lib/rpm_contrib.rb +17 -24
  6. data/lib/rpm_contrib/agent_compatibility.rb +11 -0
  7. data/lib/rpm_contrib/detection.rb +5 -0
  8. data/lib/rpm_contrib/detection/camping.rb +1 -1
  9. data/lib/rpm_contrib/instrumentation.rb +16 -0
  10. data/lib/rpm_contrib/instrumentation/active_messaging.rb +22 -0
  11. data/lib/rpm_contrib/instrumentation/aws.rb +68 -0
  12. data/lib/rpm_contrib/instrumentation/camping.rb +7 -10
  13. data/lib/rpm_contrib/instrumentation/cassandra.rb +26 -19
  14. data/lib/rpm_contrib/instrumentation/crack.rb +41 -0
  15. data/lib/rpm_contrib/instrumentation/curb.rb +52 -0
  16. data/lib/rpm_contrib/instrumentation/elastic_search.rb +26 -0
  17. data/lib/rpm_contrib/instrumentation/kyototycoon.rb +28 -0
  18. data/lib/rpm_contrib/instrumentation/mongo.rb +54 -0
  19. data/lib/rpm_contrib/instrumentation/mongoid.rb +12 -44
  20. data/lib/rpm_contrib/instrumentation/paperclip.rb +25 -18
  21. data/lib/rpm_contrib/instrumentation/picky.rb +41 -0
  22. data/lib/rpm_contrib/instrumentation/redis.rb +29 -20
  23. data/lib/rpm_contrib/instrumentation/resque.rb +78 -42
  24. data/lib/rpm_contrib/instrumentation/riak_client.rb +48 -0
  25. data/lib/rpm_contrib/instrumentation/ripple.rb +37 -0
  26. data/lib/rpm_contrib/instrumentation/sinatra.rb +30 -0
  27. data/lib/rpm_contrib/instrumentation/thinking_sphinx.rb +22 -0
  28. data/lib/rpm_contrib/instrumentation/typhoeus.rb +33 -0
  29. data/lib/rpm_contrib/instrumentation/ultrasphinx.rb +22 -0
  30. data/lib/rpm_contrib/instrumentation/workling.rb +27 -0
  31. data/lib/rpm_contrib/instrumentation/yajl.rb +41 -0
  32. data/lib/rpm_contrib/language_support.rb +31 -0
  33. data/lib/rpm_contrib/samplers.rb +17 -0
  34. data/test/helper.rb +1 -1
  35. data/test/schema.rb +1 -1
  36. data/test/test_curb.rb +69 -0
  37. data/test/test_picky.rb +55 -0
  38. data/test/test_redis.rb +2 -2
  39. data/test/test_resque.rb +74 -0
  40. data/test/{test_mongoid.rb → test_workling.rb} +6 -14
  41. metadata +74 -64
  42. data/lib/rpm_contrib/detection/resque.rb +0 -15
  43. data/lib/rpm_contrib/instrumentation/aws/s3.rb +0 -56
  44. data/lib/rpm_contrib/instrumentation/mongo_mapper.rb +0 -44
@@ -0,0 +1,41 @@
1
+ DependencyDetection.defer do
2
+ @name = :yajl_parser
3
+
4
+ depends_on do
5
+ defined?(::Yajl::Parser) && !NewRelic::Control.instance['disable_yajl_instrumentation']
6
+ end
7
+
8
+ executes do
9
+ NewRelic::Agent.logger.debug 'Installing Yajl::Parser instrumentation'
10
+ end
11
+
12
+ executes do
13
+ ::Yajl::Parser.class_eval do
14
+ class << self
15
+ include ::NewRelic::Agent::MethodTracer
16
+ add_method_tracer :parse, 'Parser/Yajl/parse'
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ DependencyDetection.defer do
23
+ @name = :yajl_encoder
24
+
25
+ depends_on do
26
+ defined?(::Yajl::Encoder) && !NewRelic::Control.instance['disable_yajl_instrumentation']
27
+ end
28
+
29
+ executes do
30
+ NewRelic::Agent.logger.debug 'Installing Yajl::Encoder instrumentation'
31
+ end
32
+
33
+ executes do
34
+ ::Yajl::Encoder.class_eval do
35
+ class << self
36
+ include ::NewRelic::Agent::MethodTracer
37
+ add_method_tracer :encode, 'Encoder/Yajl/encode'
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,31 @@
1
+ module RPMContrib::LanguageSupport
2
+ extend self
3
+
4
+ @@forkable = nil
5
+
6
+ def can_fork?
7
+ # this is expensive to check, so we should only check once
8
+ return @@forkable if @@forkable != nil
9
+
10
+ if Process.respond_to?(:fork)
11
+ # if this is not 1.9.2 or higher, we have to make sure
12
+ @@forkable = ::RUBY_VERSION < '1.9.2' ? test_forkability : true
13
+ else
14
+ @@forkable = false
15
+ end
16
+
17
+ @@forkable
18
+ end
19
+
20
+ private
21
+
22
+ def test_forkability
23
+ child = Process.fork { exit! }
24
+ # calling wait here doesn't seem like it should necessary, but it seems to
25
+ # resolve some weird edge cases with resque forking.
26
+ Process.wait child
27
+ true
28
+ rescue NotImplementedError
29
+ false
30
+ end
31
+ end
@@ -0,0 +1,17 @@
1
+ module RpmContrib
2
+ # Samplers are subclasses of NewRelic::Agent::Sampler which periodically collect metric data in a
3
+ # background thread. Sampler classes belong in the sampler subdirectory and must be loaded before
4
+ # the agent starts.
5
+ module Samplers
6
+ end
7
+ end
8
+
9
+ pattern = File.expand_path "../samplers/**/*.rb", __FILE__
10
+ Dir.glob pattern do |file|
11
+ begin
12
+ require file.to_s
13
+ rescue Exception => e
14
+ NewRelic::Agent.logger.error "Skipping instrumentation file '#{file}': #{e}"
15
+ NewRelic::Agent.logger.debug e.backtrace.join("\n")
16
+ end
17
+ end
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
  require 'test/unit'
3
3
 
4
4
  $LOAD_PATH.unshift(File.dirname(__FILE__))
5
- #$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
6
 
7
7
  require File.expand_path("../../lib/rpm_contrib.rb", __FILE__)
8
8
 
@@ -4,7 +4,7 @@
4
4
  begin
5
5
  require 'sqlite3'
6
6
  require 'active_record'
7
-
7
+
8
8
  ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
9
9
  ActiveRecord::Migration.verbose = false
10
10
 
@@ -0,0 +1,69 @@
1
+ require "#{File.dirname(__FILE__)}/helper"
2
+ begin
3
+ require 'curb'
4
+ rescue LoadError
5
+ end
6
+
7
+ class NewRelic::Agent::NetInstrumentationTest < Test::Unit::TestCase
8
+ include NewRelic::Agent::Instrumentation::ControllerInstrumentation
9
+ def setup
10
+ NewRelic::Agent.manual_start
11
+ @engine = NewRelic::Agent.instance.stats_engine
12
+ @engine.clear_stats
13
+ end
14
+ def test_get
15
+ curl = Curl::Easy.new('http://www.google.com/index.html')
16
+ curl.perform
17
+ assert_match /<head>/, curl.body_str
18
+ assert_equal %w[External/www.google.com/Curl::Easy External/Curl::Multi
19
+ External/allOther External/www.google.com/all].sort,
20
+ @engine.metrics.sort
21
+ end
22
+
23
+ def test_multi
24
+ multi = Curl::Multi.new
25
+ curl1 = Curl::Easy.new('http://www.google.com/index.html')
26
+ multi.add curl1
27
+ curl2 = Curl::Easy.new('http://www.yahoo.com/')
28
+ multi.add curl2
29
+ multi.perform
30
+ assert_match /<head>/, curl1.body_str
31
+ assert_match /<head>/, curl2.body_str
32
+ assert_equal %w[External/Curl::Multi External/allOther].sort,
33
+ @engine.metrics.sort
34
+ end
35
+
36
+ def test_background
37
+ perform_action_with_newrelic_trace("task", :category => :task) do
38
+ curl = Curl::Easy.new('http://www.google.com/index.html')
39
+ curl.perform
40
+ assert_match /<head>/, curl.body_str
41
+ end
42
+ assert_equal %w[External/Curl::Multi
43
+ External/Curl::Multi:OtherTransaction/Background/NewRelic::Agent::NetInstrumentationTest/task
44
+ External/www.google.com/Curl::Easy External/allOther External/www.google.com/all
45
+ External/www.google.com/Curl::Easy:OtherTransaction/Background/NewRelic::Agent::NetInstrumentationTest/task].sort,
46
+ @engine.metrics.select{|m| m =~ /^External/}.sort
47
+ end
48
+
49
+ def test_transactional
50
+ perform_action_with_newrelic_trace("task") do
51
+ curl = Curl::Easy.new('http://www.google.com/index.html')
52
+ curl.perform
53
+ assert_match /<head>/, curl.body_str
54
+ end
55
+ assert_equal %w[External/Curl::Multi
56
+ External/Curl::Multi:Controller/NewRelic::Agent::NetInstrumentationTest/task
57
+ External/www.google.com/Curl::Easy External/allWeb External/www.google.com/all
58
+ External/www.google.com/Curl::Easy:Controller/NewRelic::Agent::NetInstrumentationTest/task].sort,
59
+ @engine.metrics.select{|m| m =~ /^External/}.sort
60
+ end
61
+ def test_ignore
62
+ NewRelic::Agent.disable_all_tracing do
63
+ curl = Curl::Easy.new('http://www.google.com/index.html')
64
+ curl.http_post('data')
65
+ end
66
+ assert_equal 0, @engine.metrics.size
67
+ end
68
+
69
+ end if defined? ::Curl::Easy
@@ -0,0 +1,55 @@
1
+ require 'picky'
2
+
3
+ require "#{File.dirname(__FILE__)}/helper"
4
+
5
+ class NewRelic::Agent::PickyIntrumentationTest < Test::Unit::TestCase
6
+
7
+ def tokens_for *tokens
8
+ tokens.map{|t|
9
+ token = 'whatever'
10
+
11
+ token.extend Module.new{
12
+ define_method(:'partial?'){ t[:partial] }
13
+ define_method(:'similar?'){ t[:similar] }
14
+ define_method(:'qualifiers'){ t[:qualifiers] }
15
+ }
16
+
17
+ token
18
+ }
19
+ end
20
+
21
+ def test_obfuscate_tokens
22
+ tokens = tokens_for({})
23
+ assert_equal 'xxx', Picky::NewRelic.obfuscate_tokens(tokens)
24
+
25
+ tokens = tokens_for({:similar => true})
26
+ assert_equal 'xxx~', Picky::NewRelic.obfuscate_tokens(tokens)
27
+
28
+ tokens = tokens_for({:partial => true})
29
+ assert_equal 'xxx*', Picky::NewRelic.obfuscate_tokens(tokens)
30
+
31
+ tokens = tokens_for({:qualifiers => [:haha]})
32
+ assert_equal 'haha:xxx', Picky::NewRelic.obfuscate_tokens(tokens)
33
+
34
+ tokens = tokens_for( {:partial => true}, {:similar => true} )
35
+ assert_equal 'xxx* xxx~', Picky::NewRelic.obfuscate_tokens(tokens)
36
+
37
+ tokens = tokens_for( {:similar => true}, {:partial => true} )
38
+ assert_equal 'xxx* xxx~', Picky::NewRelic.obfuscate_tokens(tokens)
39
+
40
+ tokens = tokens_for( {:partial => true}, {:partial => true} )
41
+ assert_equal 'xxx* xxx*', Picky::NewRelic.obfuscate_tokens(tokens)
42
+
43
+ tokens = tokens_for(
44
+ {:similar => true, :qualifiers => [:bla]},
45
+ {:partial => true, :qualifiers => [:bla, :blub]}
46
+ )
47
+ assert_equal 'bla,blub:xxx* bla:xxx~', Picky::NewRelic.obfuscate_tokens(tokens)
48
+
49
+ tokens = tokens_for(
50
+ {:similar => true, :qualifiers => [:bla]},
51
+ {:partial => true, :qualifiers => [:blub, :bla]}
52
+ )
53
+ assert_equal 'bla,blub:xxx* bla:xxx~', Picky::NewRelic.obfuscate_tokens(tokens)
54
+ end
55
+ end
@@ -8,7 +8,7 @@ end
8
8
  require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/redis"
9
9
 
10
10
  if defined?(::Redis)
11
-
11
+
12
12
 
13
13
  class RedisTest < Test::Unit::TestCase
14
14
 
@@ -27,7 +27,7 @@ if defined?(::Redis)
27
27
 
28
28
  # Fake test
29
29
  def test_fail
30
-
30
+
31
31
 
32
32
  end
33
33
  end
@@ -0,0 +1,74 @@
1
+ require 'resque'
2
+ require 'mocha'
3
+ require File.expand_path(File.dirname(__FILE__) + "/helper")
4
+ require File.expand_path(File.dirname(__FILE__) + "/../lib/rpm_contrib")
5
+
6
+ class ResqueTest < Test::Unit::TestCase
7
+ class ExtendoJorb < ::Resque::Job
8
+ def self.perform
9
+ true
10
+ end
11
+ end
12
+
13
+ class GoodJorb
14
+ def self.perform
15
+ true
16
+ end
17
+ end
18
+
19
+ class BadJorb
20
+ def self.perform
21
+ raise "I'm doing a bad jorb"
22
+ end
23
+ end
24
+
25
+ def setup
26
+ @worker = Resque::Worker.new(:test)
27
+ NewRelic::Agent.manual_start
28
+ @engine = NewRelic::Agent.instance.stats_engine
29
+ end
30
+
31
+ def teardown
32
+ @engine.clear_stats
33
+ end
34
+
35
+ def test_should_instrument_job_extending_from_resque_job
36
+ @worker.perform(Resque::Job.new(:test,
37
+ 'class' => 'ResqueTest::ExtendoJorb'))
38
+
39
+ metrics = [ 'OtherTransaction/all', 'OtherTransaction/ResqueJob/all',
40
+ 'OtherTransaction/ResqueJob/ResqueTest::ExtendoJorb/perform' ]
41
+ metrics.each do |metric|
42
+ assert(@engine.metrics.include?(metric),
43
+ "#{@engine.metrics.inspect} missing #{metric}")
44
+ end
45
+ assert !@engine.metrics.include?('Errors/all')
46
+ end
47
+
48
+ def test_should_instrument_poro_job
49
+ @worker.perform(Resque::Job.new(:test, 'class' => 'ResqueTest::GoodJorb'))
50
+
51
+ metrics = [ 'OtherTransaction/all', 'OtherTransaction/ResqueJob/all',
52
+ 'OtherTransaction/ResqueJob/ResqueTest::GoodJorb/perform' ]
53
+ metrics.each do |metric|
54
+ assert(@engine.metrics.include?(metric),
55
+ "#{@engine.metrics.inspect} missing #{metric}")
56
+ end
57
+ assert !@engine.metrics.include?('Errors/all')
58
+ end
59
+
60
+ def test_should_collect_job_errors
61
+ begin
62
+ @worker.perform(Resque::Job.new(:test, 'class' => 'ResqueTest::BadJorb'))
63
+ rescue
64
+ end
65
+
66
+ metrics = [ 'OtherTransaction/all', 'OtherTransaction/ResqueJob/all',
67
+ 'OtherTransaction/ResqueJob/ResqueTest::BadJorb/perform',
68
+ 'Errors/all' ]
69
+ metrics.each do |metric|
70
+ assert(@engine.metrics.include?(metric),
71
+ "#{@engine.metrics.inspect} missing #{metric}")
72
+ end
73
+ end
74
+ end
@@ -1,24 +1,16 @@
1
1
  require "#{File.dirname(__FILE__)}/helper"
2
2
  begin
3
- require 'mongoid'
3
+ require 'redis'
4
+ require 'ruby-debug'
4
5
  rescue LoadError
5
6
  end
6
7
 
7
- require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/mongoid"
8
+ require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/workling"
8
9
 
9
- if defined?(::Mongoid)
10
-
11
- Mongoid.configure do |config|
12
- config.master = Mongo::Connection.new.db('animals')
13
- end
14
-
15
- class Dog
16
- include Mongoid::Document
10
+ if defined?(::Workling)
17
11
 
18
- field :name
19
- end
20
12
 
21
- class MongoidTest < Test::Unit::TestCase
13
+ class WorklingTest < Test::Unit::TestCase
22
14
 
23
15
  # Called before every test method runs. Can be used
24
16
  # to set up fixture information.
@@ -35,7 +27,7 @@ if defined?(::Mongoid)
35
27
 
36
28
  # Fake test
37
29
  def test_fail
38
- Dog.create!(:name=>'rover')
30
+
39
31
 
40
32
  end
41
33
  end
metadata CHANGED
@@ -1,116 +1,126 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: wireframe-rpm_contrib
3
- version: !ruby/object:Gem::Version
4
- hash: 97
5
- prerelease: false
6
- segments:
7
- - 1
8
- - 0
9
- - 12
10
- - 7
11
- version: 1.0.12.7
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.6.1
5
+ prerelease:
12
6
  platform: ruby
13
- authors:
7
+ authors:
14
8
  - Bill Kayser
9
+ - Jon Guymon
15
10
  autorequire:
16
11
  bindir: bin
17
12
  cert_chain: []
18
-
19
- date: 2010-10-04 00:00:00 -05:00
20
- default_executable:
21
- dependencies:
22
- - !ruby/object:Gem::Dependency
13
+ date: 2012-03-06 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
23
16
  name: newrelic_rpm
17
+ requirement: &2164674940 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: 3.1.1
23
+ type: :runtime
24
24
  prerelease: false
25
- requirement: &id001 !ruby/object:Gem::Requirement
25
+ version_requirements: *2164674940
26
+ - !ruby/object:Gem::Dependency
27
+ name: newrelic_rpm
28
+ requirement: &2164674200 !ruby/object:Gem::Requirement
26
29
  none: false
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- hash: 57
31
- segments:
32
- - 2
33
- - 13
34
- - 1
35
- version: 2.13.1
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.1.1
36
34
  type: :runtime
37
- version_requirements: *id001
38
- description: |
39
- Community contributed instrumentation for various frameworks based on
35
+ prerelease: false
36
+ version_requirements: *2164674200
37
+ description: ! 'Community contributed instrumentation for various frameworks based
38
+ on
39
+
40
40
  the New Relic Ruby monitoring gem newrelic_rpm.
41
41
 
42
+ '
42
43
  email: support@newrelic.com
43
44
  executables: []
44
-
45
45
  extensions: []
46
-
47
- extra_rdoc_files:
46
+ extra_rdoc_files:
48
47
  - CHANGELOG
49
48
  - LICENSE
50
49
  - README.md
51
- files:
50
+ files:
52
51
  - CHANGELOG
52
+ - Gemfile
53
53
  - LICENSE
54
54
  - README.md
55
55
  - Rakefile
56
56
  - lib/new_relic/control/camping.rb
57
57
  - lib/rpm_contrib.rb
58
+ - lib/rpm_contrib/agent_compatibility.rb
59
+ - lib/rpm_contrib/detection.rb
58
60
  - lib/rpm_contrib/detection/camping.rb
59
- - lib/rpm_contrib/detection/resque.rb
60
- - lib/rpm_contrib/instrumentation/aws/s3.rb
61
+ - lib/rpm_contrib/instrumentation.rb
62
+ - lib/rpm_contrib/instrumentation/active_messaging.rb
63
+ - lib/rpm_contrib/instrumentation/aws.rb
61
64
  - lib/rpm_contrib/instrumentation/camping.rb
62
65
  - lib/rpm_contrib/instrumentation/cassandra.rb
63
- - lib/rpm_contrib/instrumentation/mongo_mapper.rb
66
+ - lib/rpm_contrib/instrumentation/crack.rb
67
+ - lib/rpm_contrib/instrumentation/curb.rb
68
+ - lib/rpm_contrib/instrumentation/elastic_search.rb
69
+ - lib/rpm_contrib/instrumentation/kyototycoon.rb
70
+ - lib/rpm_contrib/instrumentation/mongo.rb
64
71
  - lib/rpm_contrib/instrumentation/mongoid.rb
65
72
  - lib/rpm_contrib/instrumentation/paperclip.rb
73
+ - lib/rpm_contrib/instrumentation/picky.rb
66
74
  - lib/rpm_contrib/instrumentation/redis.rb
67
75
  - lib/rpm_contrib/instrumentation/resque.rb
76
+ - lib/rpm_contrib/instrumentation/riak_client.rb
77
+ - lib/rpm_contrib/instrumentation/ripple.rb
78
+ - lib/rpm_contrib/instrumentation/sinatra.rb
79
+ - lib/rpm_contrib/instrumentation/thinking_sphinx.rb
80
+ - lib/rpm_contrib/instrumentation/typhoeus.rb
81
+ - lib/rpm_contrib/instrumentation/ultrasphinx.rb
82
+ - lib/rpm_contrib/instrumentation/workling.rb
83
+ - lib/rpm_contrib/instrumentation/yajl.rb
84
+ - lib/rpm_contrib/language_support.rb
85
+ - lib/rpm_contrib/samplers.rb
68
86
  - test/helper.rb
69
87
  - test/schema.rb
70
- - test/test_mongoid.rb
88
+ - test/test_curb.rb
89
+ - test/test_picky.rb
71
90
  - test/test_redis.rb
72
- has_rdoc: true
91
+ - test/test_resque.rb
92
+ - test/test_workling.rb
73
93
  homepage: http://github.com/newrelic/rpm_contrib
74
94
  licenses: []
75
-
76
95
  post_install_message:
77
- rdoc_options:
78
- - --charset=UTF-8
96
+ rdoc_options:
79
97
  - --line-numbers
80
98
  - --inline-source
81
99
  - --title
82
100
  - Contributed Instrumentation for New Relic RPM
83
101
  - -m
84
102
  - README.md
85
- require_paths:
103
+ require_paths:
86
104
  - lib
87
- required_ruby_version: !ruby/object:Gem::Requirement
105
+ required_ruby_version: !ruby/object:Gem::Requirement
88
106
  none: false
89
- requirements:
90
- - - ">="
91
- - !ruby/object:Gem::Version
92
- hash: 3
93
- segments:
107
+ requirements:
108
+ - - ! '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ segments:
94
112
  - 0
95
- version: "0"
96
- required_rubygems_version: !ruby/object:Gem::Requirement
113
+ hash: 173223078226701245
114
+ required_rubygems_version: !ruby/object:Gem::Requirement
97
115
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- hash: 3
102
- segments:
103
- - 0
104
- version: "0"
116
+ requirements:
117
+ - - ! '>='
118
+ - !ruby/object:Gem::Version
119
+ version: '0'
105
120
  requirements: []
106
-
107
121
  rubyforge_project:
108
- rubygems_version: 1.3.7
122
+ rubygems_version: 1.8.15
109
123
  signing_key:
110
124
  specification_version: 3
111
125
  summary: Contributed Instrumentation for New Relic RPM
112
- test_files:
113
- - test/helper.rb
114
- - test/schema.rb
115
- - test/test_mongoid.rb
116
- - test/test_redis.rb
126
+ test_files: []