Skip to content
Browse files

added basic test which doesn't currently test much

  • Loading branch information...
1 parent 8e6fafe commit 93db12d43c4e7cf7d28ceb42976d10973a57beee Karl committed May 14, 2010
Showing with 187 additions and 4 deletions.
  1. +3 −1 lib/rpm_contrib/instrumentation/mongoid.rb
  2. +175 −0 newrelic.yml
  3. +2 −1 test/helper.rb
  4. +7 −2 test/mongoid_test.rb
View
4 lib/rpm_contrib/instrumentation/mongoid.rb
@@ -1,4 +1,5 @@
-if defined?(::MongoMapper) && !NewRelic::Control.instance['disable_mongodb']
+debugger
+if defined?(::Mongoid) && !NewRelic::Control.instance['disable_mongodb']
module Mongoid #:nodoc:
module Document
@@ -20,6 +21,7 @@ module RPMContrib::Instrumentation
module Mongoid
def included(model)
model.metaclass.class_eval do
+ puts "adding mongoid method tracers for #{model.name}"
add_method_tracer :create, 'Database/#{self.name}/create'
add_method_tracer :create!, 'Database/#{self.name}/create!'
add_method_tracer :delete_all, 'Database/#{self.name}/delete_all'
View
175 newrelic.yml
@@ -0,0 +1,175 @@
+#
+# This file configures the NewRelic RPM Agent, NewRelic RPM monitors Rails
+# applications with deep visibility and low overhead. For more information,
+# visit www.newrelic.com.
+#
+# This configuration file is custom generated for rpm_config
+#
+# here are the settings that are common to all environments
+common: &default_settings
+ # ============================== LICENSE KEY ===============================
+ # You must specify the licence key associated with your New Relic account.
+ # This key binds your Agent's data to your account in the New Relic RPM service.
+ license_key: 'test'
+
+ # Application Name
+ # Set this to be the name of your application as you'd like it show up in RPM.
+ # RPM will then auto-map instances of your application into a RPM "application"
+ # on your home dashboard page. This setting does not prevent you from manually
+ # defining applications.
+ app_name: rpm_config
+
+ # When 'enabled' is turned on, the agent collects performance data
+ # by inserting lightweight tracers on key methods inside the rails
+ # framework and asynchronously aggregating and reporting this
+ # performance data to the NewRelic RPM service at newrelic.com.
+ enabled: false
+
+ # The newrelic agent generates its own log file to keep its logging
+ # information separate from that of your application. Specify its
+ # log level here.
+ log_level: info
+
+ # The newrelic agent communicates with the RPM service via http by
+ # default. If you want to communicate via https to increase
+ # security, then turn on SSL by setting this value to true. Note,
+ # this will result in increased CPU overhead to perform the
+ # encryption involved in SSL communication, but this work is done
+ # asynchronously to the threads that process your application code,
+ # so it should not impact response times.
+ ssl: false
+
+ # EXPERIMENTAL: enable verification of the SSL certificate sent by
+ # the server. This setting has no effect unless SSL is enabled
+ # above. This may block your application. Only enable it if the data
+ # you send us needs end-to-end verified certificates.
+ #
+ # This means we cannot cache the DNS lookup, so each request to the
+ # RPM service will perform a lookup. It also means that we cannot
+ # use a non-blocking lookup, so in a worst case, if you have DNS
+ # problems, your app may block indefinitely.
+ # verify_certificate: true
+
+ # Set your application's Apdex threshold value with the 'apdex_t'
+ # setting, in seconds. The apdex_t value determines the buckets used
+ # to compute your overall Apdex score.
+ # Requests that take less than apdex_t seconds to process will be
+ # classified as Satisfying transactions; more than apdex_t seconds
+ # as Tolerating transactions; and more than four times the apdex_t
+ # value as Frustrating transactions.
+ # For more about the Apdex standard, see
+ # http://support.newrelic.com/faqs/general/apdex
+
+ apdex_t: 0.5
+
+ # Proxy settings for connecting to the RPM server.
+ #
+ # If a proxy is used, the host setting is required. Other settings
+ # are optional. Default port is 8080.
+ #
+ # proxy_host: hostname
+ # proxy_port: 8080
+ # proxy_user:
+ # proxy_pass:
+
+
+ # Tells transaction tracer and error collector (when enabled)
+ # whether or not to capture HTTP params. When true, the RoR
+ # filter_parameter_logging mechanism is used so that sensitive
+ # parameters are not recorded
+ capture_params: false
+
+
+ # Transaction tracer captures deep information about slow
+ # transactions and sends this to the RPM service once a
+ # minute. Included in the transaction is the exact call sequence of
+ # the transactions including any SQL statements issued.
+ transaction_tracer:
+
+ # Transaction tracer is enabled by default. Set this to false to
+ # turn it off. This feature is only available at the Silver and
+ # above product levels.
+ enabled: true
+
+ # Threshold in seconds for when to collect a transaction
+ # trace. When the response time of a controller action exceeds
+ # this threshold, a transaction trace will be recorded and sent to
+ # RPM. Valid values are any float value, or (default) "apdex_f",
+ # which will use the threshold for an dissatisfying Apdex
+ # controller action - four times the Apdex T value.
+ transaction_threshold: apdex_f
+
+ # When transaction tracer is on, SQL statements can optionally be
+ # recorded. The recorder has three modes, "off" which sends no
+ # SQL, "raw" which sends the SQL statement in its original form,
+ # and "obfuscated", which strips out numeric and string literals
+ record_sql: obfuscated
+
+ # Threshold in seconds for when to collect stack trace for a SQL
+ # call. In other words, when SQL statements exceed this threshold,
+ # then capture and send to RPM the current stack trace. This is
+ # helpful for pinpointing where long SQL calls originate from
+ stack_trace_threshold: 0.500
+
+ # Error collector captures information about uncaught exceptions and
+ # sends them to RPM for viewing
+ error_collector:
+
+ # Error collector is enabled by default. Set this to false to turn
+ # it off. This feature is only available at the Silver and above
+ # product levels
+ enabled: true
+
+ # Tells error collector whether or not to capture a source snippet
+ # around the place of the error when errors are View related.
+ capture_source: true
+
+ # To stop specific errors from reporting to RPM, set this property
+ # to comma separated values
+ #
+ #ignore_errors: ActionController::RoutingError, ...
+
+ # (Advanced) Uncomment this to ensure the cpu and memory samplers
+ # won't run. Useful when you are using the agent to monitor an
+ # external resource
+ # disable_samplers: true
+
+# override default settings based on your application's environment
+
+# NOTE if your application has other named environments, you should
+# provide newrelic conifguration settings for these enviromnents here.
+
+development:
+ <<: *default_settings
+ # Turn off communication to RPM service in development mode.
+ # NOTE: for initial evaluation purposes, you may want to temporarily
+ # turn the agent on in development mode.
+ enabled: false
+
+ # When running in Developer Mode, the New Relic Agent will present
+ # performance information on the last 100 transactions you have
+ # executed since starting the mongrel. to view this data, go to
+ # http://localhost:3000/newrelic
+ developer: true
+
+test:
+ <<: *default_settings
+ # it almost never makes sense to turn on the agent when running
+ # unit, functional or integration tests or the like.
+ enabled: false
+
+# Turn on the agent in production for 24x7 monitoring. NewRelic
+# testing shows an average performance impact of < 5 ms per
+# transaction, you you can leave this on all the time without
+# incurring any user-visible performance degredation.
+production:
+ <<: *default_settings
+ enabled: true
+
+# many applications have a staging environment which behaves
+# identically to production. Support for that environment is provided
+# here. By default, the staging environment has the agent turned on.
+staging:
+ <<: *default_settings
+ enabled: true
+ app_name: rpm_config
View
3 test/helper.rb
@@ -3,8 +3,9 @@
$LOAD_PATH.unshift(File.dirname(__FILE__))
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
-require 'newrelic_rpm'
require 'rpm_contrib'
+require 'newrelic_rpm'
+
class Test::Unit::TestCase
end
View
9 test/mongoid_test.rb
@@ -1,5 +1,11 @@
require "#{File.dirname(__FILE__)}/helper"
require 'mongoid'
+require "#{File.dirname(__FILE__)}/../lib/rpm_contrib/instrumentation/mongoid"
+
+
+Mongoid.configure do |config|
+ config.master = Mongo::Connection.new.db('animals')
+end
class Dog
include Mongoid::Document
@@ -24,8 +30,7 @@ def teardown
# Fake test
def test_fail
+ Dog.create!(:name=>'rover')
- # To change this template use File | Settings | File Templates.
- fail("Not implemented")
end
end

0 comments on commit 93db12d

Please sign in to comment.
Something went wrong with that request. Please try again.