seanwalbran-rpm_contrib 2.1.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +133 -0
- data/Gemfile +13 -0
- data/LICENSE +20 -0
- data/README.md +293 -0
- data/Rakefile +79 -0
- data/lib/new_relic/control/camping.rb +14 -0
- data/lib/rpm_contrib/agent_compatibility.rb +11 -0
- data/lib/rpm_contrib/detection/camping.rb +24 -0
- data/lib/rpm_contrib/detection.rb +5 -0
- data/lib/rpm_contrib/instrumentation/active_messaging.rb +22 -0
- data/lib/rpm_contrib/instrumentation/aws.rb +68 -0
- data/lib/rpm_contrib/instrumentation/camping.rb +50 -0
- data/lib/rpm_contrib/instrumentation/cassandra.rb +30 -0
- data/lib/rpm_contrib/instrumentation/crack.rb +41 -0
- data/lib/rpm_contrib/instrumentation/curb.rb +52 -0
- data/lib/rpm_contrib/instrumentation/elastic_search.rb +26 -0
- data/lib/rpm_contrib/instrumentation/kyototycoon.rb +28 -0
- data/lib/rpm_contrib/instrumentation/mongo.rb +50 -0
- data/lib/rpm_contrib/instrumentation/paperclip.rb +29 -0
- data/lib/rpm_contrib/instrumentation/picky.rb +41 -0
- data/lib/rpm_contrib/instrumentation/redis.rb +42 -0
- data/lib/rpm_contrib/instrumentation/resque.rb +83 -0
- data/lib/rpm_contrib/instrumentation/riak_client.rb +48 -0
- data/lib/rpm_contrib/instrumentation/ripple.rb +37 -0
- data/lib/rpm_contrib/instrumentation/sinatra.rb +30 -0
- data/lib/rpm_contrib/instrumentation/thinking_sphinx.rb +22 -0
- data/lib/rpm_contrib/instrumentation/typhoeus.rb +33 -0
- data/lib/rpm_contrib/instrumentation/ultrasphinx.rb +22 -0
- data/lib/rpm_contrib/instrumentation/workling.rb +27 -0
- data/lib/rpm_contrib/instrumentation/yajl.rb +41 -0
- data/lib/rpm_contrib/instrumentation.rb +16 -0
- data/lib/rpm_contrib/language_support.rb +31 -0
- data/lib/rpm_contrib/samplers.rb +17 -0
- data/lib/rpm_contrib.rb +36 -0
- data/test/helper.rb +9 -0
- data/test/schema.rb +19 -0
- data/test/test_curb.rb +69 -0
- data/test/test_picky.rb +55 -0
- data/test/test_redis.rb +34 -0
- data/test/test_resque.rb +74 -0
- data/test/test_workling.rb +34 -0
- metadata +148 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
# Workling instrumentation contributed by Chad Ingram of Aurora Feint
|
2
|
+
#
|
3
|
+
DependencyDetection.defer do
|
4
|
+
@name = :workling
|
5
|
+
|
6
|
+
depends_on do
|
7
|
+
defined?(::Workling) and not ::NewRelic::Control.instance['disable_workling']
|
8
|
+
end
|
9
|
+
|
10
|
+
executes do
|
11
|
+
NewRelic::Agent.logger.debug 'Installing Workling instrumentation'
|
12
|
+
end
|
13
|
+
|
14
|
+
executes do
|
15
|
+
::Workling::Base.class_eval do
|
16
|
+
include ::NewRelic::Agent::Instrumentation::ControllerInstrumentation
|
17
|
+
end
|
18
|
+
|
19
|
+
::Workling::Discovery.discovered.each do |clazz|
|
20
|
+
(clazz.public_instance_methods - ::Workling::Base.public_instance_methods).each do |method|
|
21
|
+
puts "added method tracer Workling/#{clazz.name}/#{method}"
|
22
|
+
clazz.send(:add_method_tracer, method, "Workling/#{clazz.name}/#{method}", :category => :task)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
@@ -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,16 @@
|
|
1
|
+
require 'newrelic_rpm'
|
2
|
+
module RpmContrib
|
3
|
+
# Contributed instrumentation files for use with newrelic_rpm gem
|
4
|
+
module Instrumentation
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
pattern = File.expand_path "../instrumentation/**/*.rb", __FILE__
|
9
|
+
Dir.glob pattern do |file|
|
10
|
+
begin
|
11
|
+
require file.to_s
|
12
|
+
rescue Exception => e
|
13
|
+
NewRelic::Agent.logger.error "Skipping instrumentation file '#{file}': #{e}"
|
14
|
+
NewRelic::Agent.logger.debug e.backtrace.join("\n")
|
15
|
+
end
|
16
|
+
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
|
data/lib/rpm_contrib.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
RPM_CONTRIB_LIB = File.dirname(__FILE__)
|
2
|
+
|
3
|
+
module RPMContrib; end
|
4
|
+
|
5
|
+
require 'rpm_contrib/detection'
|
6
|
+
|
7
|
+
require 'newrelic_rpm'
|
8
|
+
require 'rpm_contrib/agent_compatibility'
|
9
|
+
require 'rpm_contrib/instrumentation'
|
10
|
+
|
11
|
+
# Load all the Sampler class definitions. These will register
|
12
|
+
# automatically with the agent.
|
13
|
+
require 'rpm_contrib/samplers'
|
14
|
+
|
15
|
+
if defined? Rails
|
16
|
+
# Rails 3.x+
|
17
|
+
if Rails.respond_to?(:version) && Rails.version =~ /^3/
|
18
|
+
module NewRelic
|
19
|
+
class Railtie < Rails::Railtie
|
20
|
+
initializer("rpm_contrib.start_plugin"){ NewRelic::Control.instance.init_plugin }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
# Rails 2.x
|
24
|
+
elsif defined?(Rails) && Rails.respond_to?(:configuration)
|
25
|
+
Rails.configuration.after_initialize { NewRelic::Control.instance.init_plugin }
|
26
|
+
else
|
27
|
+
raise "The rpm_contrib gem supports Rails 2.2+ only."
|
28
|
+
end
|
29
|
+
else
|
30
|
+
# If not running Rails, it is important that you load the contrib gem as late
|
31
|
+
# as possible so the agent initializes after everything else. Either that
|
32
|
+
# or make the following call yourself at the end of your startup sequence
|
33
|
+
# (it is idempotent).
|
34
|
+
NewRelic::Control.instance.init_plugin
|
35
|
+
end
|
36
|
+
|
data/test/helper.rb
ADDED
data/test/schema.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Use this file to add tables you need to do testing
|
2
|
+
# These are created in a sqllite memory DB
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'sqlite3'
|
6
|
+
require 'active_record'
|
7
|
+
|
8
|
+
ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
|
9
|
+
ActiveRecord::Migration.verbose = false
|
10
|
+
|
11
|
+
ActiveRecord::Schema.define do
|
12
|
+
|
13
|
+
create_table :stories, :force => true do |table|
|
14
|
+
table.string :text
|
15
|
+
end
|
16
|
+
end
|
17
|
+
rescue LoadError
|
18
|
+
# Skip AR tests
|
19
|
+
end
|
data/test/test_curb.rb
ADDED
@@ -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
|
data/test/test_picky.rb
ADDED
@@ -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
|
data/test/test_redis.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/helper"
|
2
|
+
begin
|
3
|
+
require 'redis'
|
4
|
+
require 'ruby-debug'
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
|
8
|
+
require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/redis"
|
9
|
+
|
10
|
+
if defined?(::Redis)
|
11
|
+
|
12
|
+
|
13
|
+
class RedisTest < Test::Unit::TestCase
|
14
|
+
|
15
|
+
# Called before every test method runs. Can be used
|
16
|
+
# to set up fixture information.
|
17
|
+
def setup
|
18
|
+
# Do nothing
|
19
|
+
end
|
20
|
+
|
21
|
+
# Called after every test method runs. Can be used to tear
|
22
|
+
# down fixture information.
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
# Do nothing
|
26
|
+
end
|
27
|
+
|
28
|
+
# Fake test
|
29
|
+
def test_fail
|
30
|
+
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
data/test/test_resque.rb
ADDED
@@ -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
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require "#{File.dirname(__FILE__)}/helper"
|
2
|
+
begin
|
3
|
+
require 'redis'
|
4
|
+
require 'ruby-debug'
|
5
|
+
rescue LoadError
|
6
|
+
end
|
7
|
+
|
8
|
+
require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/workling"
|
9
|
+
|
10
|
+
if defined?(::Workling)
|
11
|
+
|
12
|
+
|
13
|
+
class WorklingTest < Test::Unit::TestCase
|
14
|
+
|
15
|
+
# Called before every test method runs. Can be used
|
16
|
+
# to set up fixture information.
|
17
|
+
def setup
|
18
|
+
# Do nothing
|
19
|
+
end
|
20
|
+
|
21
|
+
# Called after every test method runs. Can be used to tear
|
22
|
+
# down fixture information.
|
23
|
+
|
24
|
+
def teardown
|
25
|
+
# Do nothing
|
26
|
+
end
|
27
|
+
|
28
|
+
# Fake test
|
29
|
+
def test_fail
|
30
|
+
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
metadata
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: seanwalbran-rpm_contrib
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 125
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 2
|
8
|
+
- 1
|
9
|
+
- 6
|
10
|
+
- 1
|
11
|
+
version: 2.1.6.1
|
12
|
+
platform: ruby
|
13
|
+
authors:
|
14
|
+
- Bill Kayser
|
15
|
+
- Jon Guymon
|
16
|
+
autorequire:
|
17
|
+
bindir: bin
|
18
|
+
cert_chain: []
|
19
|
+
|
20
|
+
date: 2012-02-18 00:00:00 Z
|
21
|
+
dependencies:
|
22
|
+
- !ruby/object:Gem::Dependency
|
23
|
+
name: newrelic_rpm
|
24
|
+
prerelease: false
|
25
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 1
|
31
|
+
segments:
|
32
|
+
- 3
|
33
|
+
- 1
|
34
|
+
- 1
|
35
|
+
version: 3.1.1
|
36
|
+
type: :runtime
|
37
|
+
version_requirements: *id001
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: newrelic_rpm
|
40
|
+
prerelease: false
|
41
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
42
|
+
none: false
|
43
|
+
requirements:
|
44
|
+
- - ">="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
hash: 1
|
47
|
+
segments:
|
48
|
+
- 3
|
49
|
+
- 1
|
50
|
+
- 1
|
51
|
+
version: 3.1.1
|
52
|
+
type: :runtime
|
53
|
+
version_requirements: *id002
|
54
|
+
description: |
|
55
|
+
Community contributed instrumentation for various frameworks based on
|
56
|
+
the New Relic Ruby monitoring gem newrelic_rpm.
|
57
|
+
|
58
|
+
email: support@newrelic.com
|
59
|
+
executables: []
|
60
|
+
|
61
|
+
extensions: []
|
62
|
+
|
63
|
+
extra_rdoc_files:
|
64
|
+
- CHANGELOG
|
65
|
+
- LICENSE
|
66
|
+
- README.md
|
67
|
+
files:
|
68
|
+
- CHANGELOG
|
69
|
+
- Gemfile
|
70
|
+
- LICENSE
|
71
|
+
- README.md
|
72
|
+
- Rakefile
|
73
|
+
- lib/new_relic/control/camping.rb
|
74
|
+
- lib/rpm_contrib.rb
|
75
|
+
- lib/rpm_contrib/agent_compatibility.rb
|
76
|
+
- lib/rpm_contrib/detection.rb
|
77
|
+
- lib/rpm_contrib/detection/camping.rb
|
78
|
+
- lib/rpm_contrib/instrumentation.rb
|
79
|
+
- lib/rpm_contrib/instrumentation/active_messaging.rb
|
80
|
+
- lib/rpm_contrib/instrumentation/aws.rb
|
81
|
+
- lib/rpm_contrib/instrumentation/camping.rb
|
82
|
+
- lib/rpm_contrib/instrumentation/cassandra.rb
|
83
|
+
- lib/rpm_contrib/instrumentation/crack.rb
|
84
|
+
- lib/rpm_contrib/instrumentation/curb.rb
|
85
|
+
- lib/rpm_contrib/instrumentation/elastic_search.rb
|
86
|
+
- lib/rpm_contrib/instrumentation/kyototycoon.rb
|
87
|
+
- lib/rpm_contrib/instrumentation/mongo.rb
|
88
|
+
- lib/rpm_contrib/instrumentation/paperclip.rb
|
89
|
+
- lib/rpm_contrib/instrumentation/picky.rb
|
90
|
+
- lib/rpm_contrib/instrumentation/redis.rb
|
91
|
+
- lib/rpm_contrib/instrumentation/resque.rb
|
92
|
+
- lib/rpm_contrib/instrumentation/riak_client.rb
|
93
|
+
- lib/rpm_contrib/instrumentation/ripple.rb
|
94
|
+
- lib/rpm_contrib/instrumentation/sinatra.rb
|
95
|
+
- lib/rpm_contrib/instrumentation/thinking_sphinx.rb
|
96
|
+
- lib/rpm_contrib/instrumentation/typhoeus.rb
|
97
|
+
- lib/rpm_contrib/instrumentation/ultrasphinx.rb
|
98
|
+
- lib/rpm_contrib/instrumentation/workling.rb
|
99
|
+
- lib/rpm_contrib/instrumentation/yajl.rb
|
100
|
+
- lib/rpm_contrib/language_support.rb
|
101
|
+
- lib/rpm_contrib/samplers.rb
|
102
|
+
- test/helper.rb
|
103
|
+
- test/schema.rb
|
104
|
+
- test/test_curb.rb
|
105
|
+
- test/test_picky.rb
|
106
|
+
- test/test_redis.rb
|
107
|
+
- test/test_resque.rb
|
108
|
+
- test/test_workling.rb
|
109
|
+
homepage: http://github.com/newrelic/rpm_contrib
|
110
|
+
licenses: []
|
111
|
+
|
112
|
+
post_install_message:
|
113
|
+
rdoc_options:
|
114
|
+
- --line-numbers
|
115
|
+
- --inline-source
|
116
|
+
- --title
|
117
|
+
- Contributed Instrumentation for New Relic RPM
|
118
|
+
- -m
|
119
|
+
- README.md
|
120
|
+
require_paths:
|
121
|
+
- lib
|
122
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
version: "0"
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ">="
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
hash: 3
|
137
|
+
segments:
|
138
|
+
- 0
|
139
|
+
version: "0"
|
140
|
+
requirements: []
|
141
|
+
|
142
|
+
rubyforge_project:
|
143
|
+
rubygems_version: 1.8.15
|
144
|
+
signing_key:
|
145
|
+
specification_version: 3
|
146
|
+
summary: Contributed Instrumentation for New Relic RPM
|
147
|
+
test_files: []
|
148
|
+
|