dolores_rpm 3.2.0.2
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 +559 -0
- data/LICENSE +64 -0
- data/README.rdoc +179 -0
- data/bin/mongrel_rpm +33 -0
- data/bin/newrelic +13 -0
- data/bin/newrelic_cmd +5 -0
- data/cert/cacert.pem +118 -0
- data/cert/oldsite.pem +28 -0
- data/cert/site.pem +27 -0
- data/dolores_rpm-3.3.4.fork.gem +0 -0
- data/install.rb +9 -0
- data/lib/conditional_vendored_dependency_detection.rb +3 -0
- data/lib/conditional_vendored_metric_parser.rb +5 -0
- data/lib/new_relic/agent/agent.rb +1311 -0
- data/lib/new_relic/agent/beacon_configuration.rb +110 -0
- data/lib/new_relic/agent/browser_monitoring.rb +102 -0
- data/lib/new_relic/agent/busy_calculator.rb +99 -0
- data/lib/new_relic/agent/chained_call.rb +13 -0
- data/lib/new_relic/agent/database.rb +203 -0
- data/lib/new_relic/agent/error_collector.rb +251 -0
- data/lib/new_relic/agent/instrumentation/active_merchant.rb +27 -0
- data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +68 -0
- data/lib/new_relic/agent/instrumentation/authlogic.rb +19 -0
- data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +424 -0
- data/lib/new_relic/agent/instrumentation/data_mapper.rb +57 -0
- data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +52 -0
- data/lib/new_relic/agent/instrumentation/memcache.rb +80 -0
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +41 -0
- data/lib/new_relic/agent/instrumentation/merb/errors.rb +29 -0
- data/lib/new_relic/agent/instrumentation/metric_frame/pop.rb +80 -0
- data/lib/new_relic/agent/instrumentation/metric_frame.rb +332 -0
- data/lib/new_relic/agent/instrumentation/net.rb +29 -0
- data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +36 -0
- data/lib/new_relic/agent/instrumentation/queue_time.rb +210 -0
- data/lib/new_relic/agent/instrumentation/rack.rb +98 -0
- data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +114 -0
- data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +42 -0
- data/lib/new_relic/agent/instrumentation/rails/active_record_instrumentation.rb +115 -0
- data/lib/new_relic/agent/instrumentation/rails/errors.rb +42 -0
- data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +118 -0
- data/lib/new_relic/agent/instrumentation/rails3/active_record_instrumentation.rb +122 -0
- data/lib/new_relic/agent/instrumentation/rails3/errors.rb +37 -0
- data/lib/new_relic/agent/instrumentation/sinatra.rb +58 -0
- data/lib/new_relic/agent/instrumentation/sunspot.rb +29 -0
- data/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb +21 -0
- data/lib/new_relic/agent/instrumentation.rb +9 -0
- data/lib/new_relic/agent/method_tracer.rb +528 -0
- data/lib/new_relic/agent/sampler.rb +50 -0
- data/lib/new_relic/agent/samplers/cpu_sampler.rb +58 -0
- data/lib/new_relic/agent/samplers/delayed_job_lock_sampler.rb +40 -0
- data/lib/new_relic/agent/samplers/memory_sampler.rb +144 -0
- data/lib/new_relic/agent/samplers/object_sampler.rb +26 -0
- data/lib/new_relic/agent/shim_agent.rb +29 -0
- data/lib/new_relic/agent/sql_sampler.rb +267 -0
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +187 -0
- data/lib/new_relic/agent/stats_engine/samplers.rb +95 -0
- data/lib/new_relic/agent/stats_engine/transactions.rb +208 -0
- data/lib/new_relic/agent/stats_engine.rb +25 -0
- data/lib/new_relic/agent/transaction_sample_builder.rb +101 -0
- data/lib/new_relic/agent/transaction_sampler.rb +397 -0
- data/lib/new_relic/agent/worker_loop.rb +89 -0
- data/lib/new_relic/agent.rb +454 -0
- data/lib/new_relic/collection_helper.rb +75 -0
- data/lib/new_relic/command.rb +85 -0
- data/lib/new_relic/commands/deployments.rb +105 -0
- data/lib/new_relic/commands/install.rb +80 -0
- data/lib/new_relic/control/class_methods.rb +53 -0
- data/lib/new_relic/control/configuration.rb +202 -0
- data/lib/new_relic/control/frameworks/external.rb +16 -0
- data/lib/new_relic/control/frameworks/merb.rb +31 -0
- data/lib/new_relic/control/frameworks/rails.rb +164 -0
- data/lib/new_relic/control/frameworks/rails3.rb +75 -0
- data/lib/new_relic/control/frameworks/ruby.rb +42 -0
- data/lib/new_relic/control/frameworks/sinatra.rb +20 -0
- data/lib/new_relic/control/frameworks.rb +10 -0
- data/lib/new_relic/control/instance_methods.rb +179 -0
- data/lib/new_relic/control/instrumentation.rb +100 -0
- data/lib/new_relic/control/logging_methods.rb +143 -0
- data/lib/new_relic/control/profiling.rb +25 -0
- data/lib/new_relic/control/server_methods.rb +114 -0
- data/lib/new_relic/control.rb +46 -0
- data/lib/new_relic/data_serialization.rb +157 -0
- data/lib/new_relic/delayed_job_injection.rb +46 -0
- data/lib/new_relic/language_support.rb +69 -0
- data/lib/new_relic/local_environment.rb +414 -0
- data/lib/new_relic/merbtasks.rb +6 -0
- data/lib/new_relic/metric_data.rb +51 -0
- data/lib/new_relic/metric_spec.rb +75 -0
- data/lib/new_relic/metrics.rb +9 -0
- data/lib/new_relic/noticed_error.rb +24 -0
- data/lib/new_relic/rack/browser_monitoring.rb +68 -0
- data/lib/new_relic/rack/developer_mode.rb +268 -0
- data/lib/new_relic/recipes.rb +73 -0
- data/lib/new_relic/stats.rb +388 -0
- data/lib/new_relic/timer_lib.rb +27 -0
- data/lib/new_relic/transaction_analysis/segment_summary.rb +49 -0
- data/lib/new_relic/transaction_analysis.rb +77 -0
- data/lib/new_relic/transaction_sample/composite_segment.rb +27 -0
- data/lib/new_relic/transaction_sample/fake_segment.rb +9 -0
- data/lib/new_relic/transaction_sample/segment.rb +201 -0
- data/lib/new_relic/transaction_sample/summary_segment.rb +21 -0
- data/lib/new_relic/transaction_sample.rb +245 -0
- data/lib/new_relic/url_rule.rb +14 -0
- data/lib/new_relic/version.rb +55 -0
- data/lib/newrelic_rpm.rb +49 -0
- data/lib/tasks/all.rb +4 -0
- data/lib/tasks/install.rake +7 -0
- data/lib/tasks/tests.rake +19 -0
- data/newrelic.yml +265 -0
- data/recipes/newrelic.rb +6 -0
- data/test/active_record_fixtures.rb +77 -0
- data/test/config/newrelic.yml +48 -0
- data/test/config/test_control.rb +48 -0
- data/test/new_relic/agent/agent/connect_test.rb +410 -0
- data/test/new_relic/agent/agent/start_test.rb +255 -0
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +153 -0
- data/test/new_relic/agent/agent_test.rb +139 -0
- data/test/new_relic/agent/agent_test_controller.rb +77 -0
- data/test/new_relic/agent/agent_test_controller_test.rb +363 -0
- data/test/new_relic/agent/apdex_from_server_test.rb +9 -0
- data/test/new_relic/agent/beacon_configuration_test.rb +108 -0
- data/test/new_relic/agent/browser_monitoring_test.rb +278 -0
- data/test/new_relic/agent/busy_calculator_test.rb +81 -0
- data/test/new_relic/agent/database_test.rb +162 -0
- data/test/new_relic/agent/error_collector/notice_error_test.rb +257 -0
- data/test/new_relic/agent/error_collector_test.rb +175 -0
- data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +538 -0
- data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +36 -0
- data/test/new_relic/agent/instrumentation/instrumentation_test.rb +11 -0
- data/test/new_relic/agent/instrumentation/metric_frame/pop_test.rb +172 -0
- data/test/new_relic/agent/instrumentation/metric_frame_test.rb +50 -0
- data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +84 -0
- data/test/new_relic/agent/instrumentation/queue_time_test.rb +387 -0
- data/test/new_relic/agent/instrumentation/rack_test.rb +35 -0
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +184 -0
- data/test/new_relic/agent/memcache_instrumentation_test.rb +143 -0
- data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +164 -0
- data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +234 -0
- data/test/new_relic/agent/method_tracer_test.rb +386 -0
- data/test/new_relic/agent/mock_scope_listener.rb +23 -0
- data/test/new_relic/agent/rpm_agent_test.rb +149 -0
- data/test/new_relic/agent/sampler_test.rb +19 -0
- data/test/new_relic/agent/shim_agent_test.rb +20 -0
- data/test/new_relic/agent/sql_sampler_test.rb +160 -0
- data/test/new_relic/agent/stats_engine/metric_stats/harvest_test.rb +150 -0
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +82 -0
- data/test/new_relic/agent/stats_engine/samplers_test.rb +99 -0
- data/test/new_relic/agent/stats_engine_test.rb +185 -0
- data/test/new_relic/agent/transaction_sample_builder_test.rb +195 -0
- data/test/new_relic/agent/transaction_sampler_test.rb +955 -0
- data/test/new_relic/agent/worker_loop_test.rb +66 -0
- data/test/new_relic/agent_test.rb +175 -0
- data/test/new_relic/collection_helper_test.rb +149 -0
- data/test/new_relic/command/deployments_test.rb +68 -0
- data/test/new_relic/control/class_methods_test.rb +62 -0
- data/test/new_relic/control/configuration_test.rb +72 -0
- data/test/new_relic/control/logging_methods_test.rb +185 -0
- data/test/new_relic/control_test.rb +254 -0
- data/test/new_relic/data_serialization_test.rb +208 -0
- data/test/new_relic/delayed_job_injection_test.rb +16 -0
- data/test/new_relic/local_environment_test.rb +72 -0
- data/test/new_relic/metric_data_test.rb +125 -0
- data/test/new_relic/metric_spec_test.rb +95 -0
- data/test/new_relic/rack/all_test.rb +11 -0
- data/test/new_relic/rack/browser_monitoring_test.rb +84 -0
- data/test/new_relic/rack/developer_mode_helper_test.rb +141 -0
- data/test/new_relic/rack/developer_mode_test.rb +43 -0
- data/test/new_relic/stats_test.rb +426 -0
- data/test/new_relic/transaction_analysis/segment_summary_test.rb +91 -0
- data/test/new_relic/transaction_analysis_test.rb +121 -0
- data/test/new_relic/transaction_sample/composite_segment_test.rb +35 -0
- data/test/new_relic/transaction_sample/fake_segment_test.rb +17 -0
- data/test/new_relic/transaction_sample/segment_test.rb +389 -0
- data/test/new_relic/transaction_sample/summary_segment_test.rb +31 -0
- data/test/new_relic/transaction_sample_subtest_test.rb +56 -0
- data/test/new_relic/transaction_sample_test.rb +164 -0
- data/test/new_relic/version_number_test.rb +89 -0
- data/test/test_contexts.rb +29 -0
- data/test/test_helper.rb +154 -0
- data/ui/helpers/developer_mode_helper.rb +357 -0
- data/ui/helpers/google_pie_chart.rb +48 -0
- data/ui/views/layouts/newrelic_default.rhtml +47 -0
- data/ui/views/newrelic/_explain_plans.rhtml +27 -0
- data/ui/views/newrelic/_sample.rhtml +20 -0
- data/ui/views/newrelic/_segment.rhtml +28 -0
- data/ui/views/newrelic/_segment_limit_message.rhtml +1 -0
- data/ui/views/newrelic/_segment_row.rhtml +12 -0
- data/ui/views/newrelic/_show_sample_detail.rhtml +24 -0
- data/ui/views/newrelic/_show_sample_sql.rhtml +24 -0
- data/ui/views/newrelic/_show_sample_summary.rhtml +3 -0
- data/ui/views/newrelic/_sql_row.rhtml +16 -0
- data/ui/views/newrelic/_stack_trace.rhtml +15 -0
- data/ui/views/newrelic/_table.rhtml +12 -0
- data/ui/views/newrelic/explain_sql.rhtml +43 -0
- data/ui/views/newrelic/file/images/arrow-close.png +0 -0
- data/ui/views/newrelic/file/images/arrow-open.png +0 -0
- data/ui/views/newrelic/file/images/blue_bar.gif +0 -0
- data/ui/views/newrelic/file/images/file_icon.png +0 -0
- data/ui/views/newrelic/file/images/gray_bar.gif +0 -0
- data/ui/views/newrelic/file/images/new-relic-rpm-desktop.gif +0 -0
- data/ui/views/newrelic/file/images/new_relic_rpm_desktop.gif +0 -0
- data/ui/views/newrelic/file/images/textmate.png +0 -0
- data/ui/views/newrelic/file/javascript/jquery-1.4.2.js +6240 -0
- data/ui/views/newrelic/file/javascript/transaction_sample.js +120 -0
- data/ui/views/newrelic/file/stylesheets/style.css +490 -0
- data/ui/views/newrelic/index.rhtml +71 -0
- data/ui/views/newrelic/sample_not_found.rhtml +2 -0
- data/ui/views/newrelic/show_sample.rhtml +80 -0
- data/ui/views/newrelic/show_source.rhtml +3 -0
- data/ui/views/newrelic/threads.rhtml +53 -0
- data/vendor/gems/dependency_detection-0.0.1.build/LICENSE +5 -0
- data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection/version.rb +3 -0
- data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +62 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/metric_parser.rb +1 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +14 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +31 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +33 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +89 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +46 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +67 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +43 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +48 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +24 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +28 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/errors.rb +11 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +55 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +40 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +31 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +17 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +34 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +55 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +122 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +27 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +40 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +7 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +27 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +15 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +54 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_controller.rb +6 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_view.rb +6 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +20 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/version.rb +5 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +70 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb +18 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb +14 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +133 -0
- data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser.rb +64 -0
- metadata +398 -0
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper'))
|
|
2
|
+
require 'action_controller/test_case'
|
|
3
|
+
class NewRelic::Agent::AgentTestControllerTest < ActionController::TestCase
|
|
4
|
+
require 'action_controller/base'
|
|
5
|
+
require 'new_relic/agent/agent_test_controller'
|
|
6
|
+
|
|
7
|
+
self.controller_class = NewRelic::Agent::AgentTestController
|
|
8
|
+
|
|
9
|
+
attr_accessor :agent, :engine
|
|
10
|
+
|
|
11
|
+
def test_initialization
|
|
12
|
+
# Suggested by cee-dub for merb tests. I'm actually amazed if our tests work with merb.
|
|
13
|
+
if defined?(Merb::Router)
|
|
14
|
+
Merb::Router.prepare do |r|
|
|
15
|
+
match('/:controller(/:action)(.:format)').register
|
|
16
|
+
end
|
|
17
|
+
elsif NewRelic::Control.instance.rails_version < NewRelic::VersionNumber.new("3.0")
|
|
18
|
+
ActionController::Routing::Routes.draw do |map|
|
|
19
|
+
map.connect '/:controller/:action.:format'
|
|
20
|
+
map.connect '/:controller/:action'
|
|
21
|
+
end
|
|
22
|
+
else
|
|
23
|
+
Rails.application.routes.draw do
|
|
24
|
+
match '/:controller/:action.:format'
|
|
25
|
+
match '/:controller/:action'
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
if defined?(Rails) && Rails.respond_to?(:application) && Rails.application.respond_to?(:routes)
|
|
30
|
+
@routes = Rails.application.routes
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
Thread.current[:newrelic_ignore_controller] = nil
|
|
34
|
+
NewRelic::Agent.manual_start
|
|
35
|
+
@agent = NewRelic::Agent.instance
|
|
36
|
+
# @agent.instrument_app
|
|
37
|
+
agent.transaction_sampler.harvest
|
|
38
|
+
NewRelic::Agent::AgentTestController.class_eval do
|
|
39
|
+
newrelic_ignore :only => [:action_to_ignore, :entry_action, :base_action]
|
|
40
|
+
newrelic_ignore_apdex :only => :action_to_ignore_apdex
|
|
41
|
+
end
|
|
42
|
+
@engine = @agent.stats_engine
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# Normally you can do this with #setup but for some reason in rails 2.0.2
|
|
46
|
+
# setup is not called.
|
|
47
|
+
if NewRelic::Control.instance.rails_version <= '2.1.0'
|
|
48
|
+
def initialize name
|
|
49
|
+
super name
|
|
50
|
+
test_initialization
|
|
51
|
+
end
|
|
52
|
+
else
|
|
53
|
+
alias_method :setup, :test_initialization
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def teardown
|
|
57
|
+
Thread.current[:newrelic_ignore_controller] = nil
|
|
58
|
+
NewRelic::Agent.shutdown
|
|
59
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
60
|
+
super
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_mongrel_queue
|
|
64
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
65
|
+
engine.clear_stats
|
|
66
|
+
NewRelic::Control.instance.local_env.stubs(:mongrel).returns( stub('mongrel', :workers => stub('workers', :list => stub('list', :length => '10'))))
|
|
67
|
+
|
|
68
|
+
get :index
|
|
69
|
+
assert_equal 1, stats('HttpDispatcher').call_count
|
|
70
|
+
assert_equal 1, engine.get_stats_no_scope('Mongrel/Queue Length').call_count
|
|
71
|
+
assert_equal 9, engine.get_stats_no_scope('Mongrel/Queue Length').total_call_time
|
|
72
|
+
assert_equal 0, engine.get_stats_no_scope('WebFrontend/Mongrel/Average Queue Time').call_count
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def test_heroku_queue
|
|
76
|
+
engine.clear_stats
|
|
77
|
+
NewRelic::Agent::AgentTestController.set_some_headers 'HTTP_X_HEROKU_QUEUE_DEPTH'=>'15'
|
|
78
|
+
get :index
|
|
79
|
+
assert_equal 1, stats('HttpDispatcher').call_count
|
|
80
|
+
assert_equal 1, engine.get_stats_no_scope('Mongrel/Queue Length').call_count
|
|
81
|
+
assert_equal 15, engine.get_stats_no_scope('Mongrel/Queue Length').total_call_time
|
|
82
|
+
assert_equal 0, engine.get_stats_no_scope('WebFrontend/Mongrel/Average Queue Time').call_count
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def test_new_queue_integration
|
|
86
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
87
|
+
engine.clear_stats
|
|
88
|
+
start = ((Time.now - 1).to_f * 1_000_000).to_i
|
|
89
|
+
NewRelic::Agent::AgentTestController.set_some_headers 'HTTP_X_QUEUE_START'=> "t=#{start}"
|
|
90
|
+
get :index
|
|
91
|
+
|
|
92
|
+
check_metric_time('WebFrontend/QueueTime', 1, 0.1)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def test_new_middleware_integration
|
|
97
|
+
engine.clear_stats
|
|
98
|
+
start = ((Time.now - 1).to_f * 1_000_000).to_i
|
|
99
|
+
NewRelic::Agent::AgentTestController.set_some_headers 'HTTP_X_MIDDLEWARE_START'=> "t=#{start}"
|
|
100
|
+
get :index
|
|
101
|
+
|
|
102
|
+
check_metric_time('Middleware/all', 1, 0.1)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_new_server_time_integration
|
|
106
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
107
|
+
engine.clear_stats
|
|
108
|
+
start = ((Time.now - 1).to_f * 1_000_000).to_i
|
|
109
|
+
NewRelic::Agent::AgentTestController.set_some_headers 'HTTP_X_REQUEST_START'=> "t=#{start}"
|
|
110
|
+
get :index
|
|
111
|
+
|
|
112
|
+
check_metric_time('WebFrontend/WebServer/all', 1, 0.1)
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
def test_new_frontend_work_integration
|
|
116
|
+
engine.clear_stats
|
|
117
|
+
times = [Time.now - 3, Time.now - 2, Time.now - 1]
|
|
118
|
+
times.map! {|t| (t.to_f * 1_000_000).to_i }
|
|
119
|
+
NewRelic::Agent::AgentTestController.set_some_headers({
|
|
120
|
+
'HTTP_X_REQUEST_START'=> "t=#{times[0]}", 'HTTP_X_QUEUE_START' => "t=#{times[1]}", 'HTTP_X_MIDDLEWARE_START' => "t=#{times[2]}"})
|
|
121
|
+
get :index
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
check_metric_time('WebFrontend/WebServer/all', 1, 0.1)
|
|
125
|
+
check_metric_time('Middleware/all', 1, 0.1)
|
|
126
|
+
check_metric_time('WebFrontend/QueueTime', 1, 0.1)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_render_inline
|
|
130
|
+
engine.clear_stats
|
|
131
|
+
get :action_inline
|
|
132
|
+
assert_equal 'foofah', @response.body
|
|
133
|
+
compare_metrics %w[Controller/new_relic/agent/agent_test/action_inline], engine.metrics.grep(/^Controller/)
|
|
134
|
+
end
|
|
135
|
+
def test_metric__ignore
|
|
136
|
+
engine.clear_stats
|
|
137
|
+
compare_metrics [], engine.metrics
|
|
138
|
+
get :action_to_ignore
|
|
139
|
+
compare_metrics [], engine.metrics
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
def test_controller_rescued_error
|
|
143
|
+
engine.clear_stats
|
|
144
|
+
assert_raise RuntimeError do
|
|
145
|
+
get :action_with_error
|
|
146
|
+
end
|
|
147
|
+
metrics = ['Apdex',
|
|
148
|
+
'Apdex/new_relic/agent/agent_test/action_with_error',
|
|
149
|
+
'HttpDispatcher',
|
|
150
|
+
'Controller/new_relic/agent/agent_test/action_with_error',
|
|
151
|
+
'Errors/all',
|
|
152
|
+
'Middleware/all',
|
|
153
|
+
'WebFrontend/WebServer/all',
|
|
154
|
+
'WebFrontend/QueueTime']
|
|
155
|
+
|
|
156
|
+
compare_metrics metrics, engine.metrics.reject{|m| m.index('Response')==0 || m.index('CPU')==0}
|
|
157
|
+
assert_equal 1, engine.get_stats_no_scope("Controller/new_relic/agent/agent_test/action_with_error").call_count
|
|
158
|
+
assert_equal 1, engine.get_stats_no_scope("Errors/all").call_count
|
|
159
|
+
apdex = engine.get_stats_no_scope("Apdex")
|
|
160
|
+
score = apdex.get_apdex
|
|
161
|
+
assert_equal 1, score[2], 'failing'
|
|
162
|
+
assert_equal 0, score[1], 'tol'
|
|
163
|
+
assert_equal 0, score[0], 'satisfied'
|
|
164
|
+
|
|
165
|
+
end
|
|
166
|
+
def test_controller_error
|
|
167
|
+
engine.clear_stats
|
|
168
|
+
assert_raise RuntimeError do
|
|
169
|
+
get :action_with_error
|
|
170
|
+
end
|
|
171
|
+
metrics = ['Apdex',
|
|
172
|
+
'Apdex/new_relic/agent/agent_test/action_with_error',
|
|
173
|
+
'HttpDispatcher',
|
|
174
|
+
'Controller/new_relic/agent/agent_test/action_with_error',
|
|
175
|
+
'Errors/all',
|
|
176
|
+
'WebFrontend/QueueTime',
|
|
177
|
+
'Middleware/all',
|
|
178
|
+
'WebFrontend/WebServer/all']
|
|
179
|
+
|
|
180
|
+
compare_metrics metrics, engine.metrics.reject{|m| m.index('Response')==0 || m.index('CPU')==0}
|
|
181
|
+
assert_equal 1, engine.get_stats_no_scope("Controller/new_relic/agent/agent_test/action_with_error").call_count
|
|
182
|
+
assert_equal 1, engine.get_stats_no_scope("Errors/all").call_count
|
|
183
|
+
apdex = engine.get_stats_no_scope("Apdex")
|
|
184
|
+
score = apdex.get_apdex
|
|
185
|
+
assert_equal 1, score[2], 'failing'
|
|
186
|
+
assert_equal 0, score[1], 'tol'
|
|
187
|
+
assert_equal 0, score[0], 'satisfied'
|
|
188
|
+
|
|
189
|
+
end
|
|
190
|
+
def test_filter_error
|
|
191
|
+
engine.clear_stats
|
|
192
|
+
assert_raise RuntimeError do
|
|
193
|
+
get :action_with_before_filter_error
|
|
194
|
+
end
|
|
195
|
+
metrics = ['Apdex',
|
|
196
|
+
'Apdex/new_relic/agent/agent_test/action_with_before_filter_error',
|
|
197
|
+
'HttpDispatcher',
|
|
198
|
+
'Controller/new_relic/agent/agent_test/action_with_before_filter_error',
|
|
199
|
+
'Errors/all',
|
|
200
|
+
'WebFrontend/QueueTime',
|
|
201
|
+
'Middleware/all',
|
|
202
|
+
'WebFrontend/WebServer/all']
|
|
203
|
+
|
|
204
|
+
compare_metrics metrics, engine.metrics.reject{|m| m.index('Response')==0 || m.index('CPU')==0 || m.index('GC')==0}
|
|
205
|
+
assert_equal 1, engine.get_stats_no_scope("Controller/new_relic/agent/agent_test/action_with_before_filter_error").call_count
|
|
206
|
+
assert_equal 1, engine.get_stats_no_scope("Errors/all").call_count
|
|
207
|
+
apdex = engine.get_stats_no_scope("Apdex")
|
|
208
|
+
score = apdex.get_apdex
|
|
209
|
+
assert_equal 1, score[2], 'failing'
|
|
210
|
+
assert_equal 0, score[1], 'tol'
|
|
211
|
+
assert_equal 0, score[0], 'satisfied'
|
|
212
|
+
end
|
|
213
|
+
def test_metric__ignore_base
|
|
214
|
+
engine.clear_stats
|
|
215
|
+
get :base_action
|
|
216
|
+
compare_metrics [], engine.metrics
|
|
217
|
+
end
|
|
218
|
+
def test_metric__no_ignore
|
|
219
|
+
path = 'new_relic/agent/agent_test/index'
|
|
220
|
+
index_stats = stats("Controller/#{path}")
|
|
221
|
+
index_apdex_stats = engine.get_custom_stats("Apdex/#{path}", NewRelic::ApdexStats)
|
|
222
|
+
assert_difference 'index_stats.call_count' do
|
|
223
|
+
assert_difference 'index_apdex_stats.call_count' do
|
|
224
|
+
get :index
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
assert_nil Thread.current[:newrelic_ignore_controller]
|
|
228
|
+
end
|
|
229
|
+
def test_metric__ignore_apdex
|
|
230
|
+
engine = @agent.stats_engine
|
|
231
|
+
path = 'new_relic/agent/agent_test/action_to_ignore_apdex'
|
|
232
|
+
cpu_stats = stats("ControllerCPU/#{path}")
|
|
233
|
+
index_stats = stats("Controller/#{path}")
|
|
234
|
+
index_apdex_stats = engine.get_custom_stats("Apdex/#{path}", NewRelic::ApdexStats)
|
|
235
|
+
assert_difference 'index_stats.call_count' do
|
|
236
|
+
assert_no_difference 'index_apdex_stats.call_count' do
|
|
237
|
+
get :action_to_ignore_apdex
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
assert_nil Thread.current[:newrelic_ignore_controller]
|
|
241
|
+
|
|
242
|
+
end
|
|
243
|
+
def test_metric__dispatched
|
|
244
|
+
engine = @agent.stats_engine
|
|
245
|
+
get :entry_action
|
|
246
|
+
assert_nil Thread.current[:newrelic_ignore_controller]
|
|
247
|
+
assert_nil engine.lookup_stats('Controller/agent_test/entry_action')
|
|
248
|
+
assert_nil engine.lookup_stats('Controller/agent_test_controller/entry_action')
|
|
249
|
+
assert_nil engine.lookup_stats('Controller/AgentTestController/entry_action')
|
|
250
|
+
assert_nil engine.lookup_stats('Controller/NewRelic::Agent::AgentTestController/internal_action')
|
|
251
|
+
assert_nil engine.lookup_stats('Controller/NewRelic::Agent::AgentTestController_controller/internal_action')
|
|
252
|
+
assert_not_nil engine.lookup_stats('Controller/NewRelic::Agent::AgentTestController/internal_traced_action')
|
|
253
|
+
end
|
|
254
|
+
def test_action_instrumentation
|
|
255
|
+
get :index, :foo => 'bar'
|
|
256
|
+
assert_match /bar/, @response.body
|
|
257
|
+
end
|
|
258
|
+
|
|
259
|
+
def test_controller_params
|
|
260
|
+
assert agent.transaction_sampler
|
|
261
|
+
num_samples = NewRelic::Agent.instance.transaction_sampler.samples.length
|
|
262
|
+
assert_equal "[FILTERED]", @controller._filter_parameters({'social_security_number' => 'test'})['social_security_number']
|
|
263
|
+
get :index, 'social_security_number' => "001-555-1212"
|
|
264
|
+
samples = agent.transaction_sampler.samples
|
|
265
|
+
assert_equal num_samples + 1, samples.length
|
|
266
|
+
assert_equal "[FILTERED]", samples.last.params[:request_params]["social_security_number"]
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
def test_controller_params
|
|
270
|
+
agent.transaction_sampler.reset!
|
|
271
|
+
get :index, 'number' => "001-555-1212"
|
|
272
|
+
s = agent.transaction_sampler.harvest(nil, 0.0)
|
|
273
|
+
assert_equal 1, s.size
|
|
274
|
+
assert_equal 5, s.first.params.size
|
|
275
|
+
end
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
def test_busycalculation
|
|
279
|
+
engine.clear_stats
|
|
280
|
+
assert_equal 0, NewRelic::Agent::BusyCalculator.busy_count
|
|
281
|
+
get :index, 'social_security_number' => "001-555-1212", 'wait' => '0.05'
|
|
282
|
+
NewRelic::Agent::BusyCalculator.harvest_busy
|
|
283
|
+
|
|
284
|
+
assert_equal 1, stats('Instance/Busy').call_count
|
|
285
|
+
assert_equal 1, stats('HttpDispatcher').call_count
|
|
286
|
+
# We are probably busy about 99% of the time, but lets make sure it's at least 50
|
|
287
|
+
assert stats('Instance/Busy').total_call_time > (0.5 * 0.05), stats('Instance/Busy').inspect
|
|
288
|
+
assert_equal 0, stats('WebFrontend/Mongrel/Average Queue Time').call_count
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
def test_queue_headers_no_header
|
|
292
|
+
engine.clear_stats
|
|
293
|
+
queue_length_stat = stats('Mongrel/Queue Length')
|
|
294
|
+
queue_time_stat = stats('WebFrontend/QueueTime')
|
|
295
|
+
|
|
296
|
+
# no request start header
|
|
297
|
+
get 'index'
|
|
298
|
+
assert_equal 0, queue_length_stat.call_count
|
|
299
|
+
end
|
|
300
|
+
|
|
301
|
+
def test_queue_headers_apache
|
|
302
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
303
|
+
engine.clear_stats
|
|
304
|
+
queue_length_stat = stats('Mongrel/Queue Length')
|
|
305
|
+
queue_time_stat = stats('WebFrontend/QueueTime')
|
|
306
|
+
|
|
307
|
+
# apache version of header
|
|
308
|
+
request_start = ((Time.now.to_f - 0.5) * 1e6).to_i.to_s
|
|
309
|
+
NewRelic::Agent::AgentTestController.set_some_headers({'HTTP_X_QUEUE_START' => "t=#{request_start}"})
|
|
310
|
+
get :index
|
|
311
|
+
assert_equal(0, queue_length_stat.call_count, 'We should not be seeing a queue length yet')
|
|
312
|
+
assert_equal(1, queue_time_stat.call_count, 'We should have seen the queue header once')
|
|
313
|
+
assert(queue_time_stat.total_call_time > 0.1, "Queue time should be longer than 100ms")
|
|
314
|
+
assert(queue_time_stat.total_call_time < 10, "Queue time should be under 10 seconds (sanity check)")
|
|
315
|
+
|
|
316
|
+
end
|
|
317
|
+
def test_queue_headers_heroku
|
|
318
|
+
|
|
319
|
+
engine.clear_stats
|
|
320
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
321
|
+
|
|
322
|
+
queue_length_stat = stats('Mongrel/Queue Length')
|
|
323
|
+
queue_time_stat = stats('WebFrontend/QueueTime')
|
|
324
|
+
|
|
325
|
+
# heroku version
|
|
326
|
+
request_start = ((Time.now.to_f - 0.5) * 1e6).to_i.to_s
|
|
327
|
+
NewRelic::Agent::AgentTestController.set_some_headers({'HTTP_X_QUEUE_START' => "t=#{request_start}", 'HTTP_X_HEROKU_QUEUE_DEPTH' => '0'})
|
|
328
|
+
get :index
|
|
329
|
+
assert_equal(0, queue_length_stat.total_call_time, 'queue should be empty')
|
|
330
|
+
assert_equal(1, queue_time_stat.call_count, 'should have seen the queue header once')
|
|
331
|
+
assert(queue_time_stat.total_call_time > 0.1, "Queue time should be longer than 100ms")
|
|
332
|
+
assert(queue_time_stat.total_call_time < 10, "Queue time should be under 10 seconds (sanity check)")
|
|
333
|
+
end
|
|
334
|
+
|
|
335
|
+
def test_queue_headers_heroku_queue_length
|
|
336
|
+
|
|
337
|
+
engine.clear_stats
|
|
338
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
339
|
+
|
|
340
|
+
queue_length_stat = stats('Mongrel/Queue Length')
|
|
341
|
+
queue_time_stat = stats('WebFrontend/QueueTime')
|
|
342
|
+
|
|
343
|
+
# heroku version with queue length > 0
|
|
344
|
+
request_start = ((Time.now.to_f - 0.5) * 1e6).to_i.to_s
|
|
345
|
+
NewRelic::Agent::AgentTestController.set_some_headers({'HTTP_X_QUEUE_START' => "t=#{request_start}", 'HTTP_X_HEROKU_QUEUE_DEPTH' => '3'})
|
|
346
|
+
get :index
|
|
347
|
+
|
|
348
|
+
assert_equal(1, queue_length_stat.call_count, 'queue should have been seen once')
|
|
349
|
+
assert_equal(1, queue_time_stat.call_count, 'should have seen the queue header once')
|
|
350
|
+
assert(queue_time_stat.total_call_time > 0.1, "Queue time should be longer than 100ms")
|
|
351
|
+
assert(queue_time_stat.total_call_time < 10, "Queue time should be under 10 seconds (sanity check)")
|
|
352
|
+
assert_equal(3, queue_length_stat.total_call_time, 'queue should be 3 long')
|
|
353
|
+
|
|
354
|
+
NewRelic::Agent::AgentTestController.clear_headers
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
private
|
|
358
|
+
def stats(name)
|
|
359
|
+
engine.get_stats_no_scope(name)
|
|
360
|
+
end
|
|
361
|
+
|
|
362
|
+
end if defined? Rails
|
|
363
|
+
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper'))
|
|
2
|
+
require "new_relic/agent/beacon_configuration"
|
|
3
|
+
class NewRelic::Agent::BeaconConfigurationTest < Test::Unit::TestCase
|
|
4
|
+
def test_initialize_basic
|
|
5
|
+
connect_data = {}
|
|
6
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
7
|
+
assert_equal true, bc.rum_enabled
|
|
8
|
+
assert_equal '', bc.browser_timing_header
|
|
9
|
+
%w[application_id browser_monitoring_key beacon].each do |method|
|
|
10
|
+
value = bc.send(method.to_sym)
|
|
11
|
+
assert_equal nil, value, "Expected #{method} to be nil, but was #{value.inspect}"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_initialize_with_real_data
|
|
16
|
+
connect_data = {'browser_key' => 'a browser monitoring key', 'application_id' => 'an application id', 'beacon' => 'a beacon', 'rum_enabled' => true}
|
|
17
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
18
|
+
assert_equal(true, bc.rum_enabled)
|
|
19
|
+
assert_equal('a browser monitoring key', bc.browser_monitoring_key)
|
|
20
|
+
assert_equal('an application id', bc.application_id)
|
|
21
|
+
assert_equal('a beacon', bc.beacon)
|
|
22
|
+
assert_equal(117, bc.browser_timing_header.size, "should output the javascript with all the data available")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_license_bytes_nil
|
|
26
|
+
connect_data = {}
|
|
27
|
+
NewRelic::Control.instance.expects(:license_key).returns('a' * 40).once
|
|
28
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
29
|
+
assert_equal([97] * 40, bc.license_bytes, 'should return the bytes of the license key')
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_license_bytes_existing_bytes
|
|
33
|
+
connect_data = {}
|
|
34
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
35
|
+
bc.instance_eval { @license_bytes = [97] * 40 }
|
|
36
|
+
NewRelic::Control.instance.expects(:license_key).never
|
|
37
|
+
assert_equal([97] * 40, bc.license_bytes, "should return the cached value if it exists")
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_license_bytes_should_set_instance_cache
|
|
41
|
+
connect_data = {}
|
|
42
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
43
|
+
NewRelic::Control.instance.expects(:license_key).returns('a' * 40)
|
|
44
|
+
bc.instance_eval { @license_bytes = nil }
|
|
45
|
+
bc.license_bytes
|
|
46
|
+
assert_equal([97] * 40, bc.instance_variable_get('@license_bytes'), "should cache the license bytes for later")
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def test_build_browser_timing_header_disabled
|
|
50
|
+
connect_data = {}
|
|
51
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
52
|
+
bc.instance_eval { @rum_enabled = false }
|
|
53
|
+
assert_equal '', bc.build_browser_timing_header, "should not return a header when rum enabled is false"
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_build_browser_timing_header_enabled_but_no_key
|
|
57
|
+
connect_data = {}
|
|
58
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
59
|
+
bc.instance_eval { @rum_enabled = true; @browser_monitoring_key = nil }
|
|
60
|
+
assert_equal '', bc.build_browser_timing_header, "should not return a header when browser_monitoring_key is nil"
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_build_browser_timing_header_enabled_with_key
|
|
64
|
+
connect_data = {}
|
|
65
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
66
|
+
bc.instance_eval { @browser_monitoring_key = 'a browser monitoring key' }
|
|
67
|
+
assert(bc.build_browser_timing_header.include?('NREUMQ'), "header should be generated when rum is enabled and browser monitoring key is set")
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_build_browser_timing_header_should_html_safe_header
|
|
71
|
+
mock_javascript = mock('javascript')
|
|
72
|
+
connect_data = {'browser_key' => 'a' * 40}
|
|
73
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
74
|
+
assert_equal('a' * 40, bc.instance_variable_get('@browser_monitoring_key'), "should save the key from the config")
|
|
75
|
+
bc.expects(:javascript_header).returns(mock_javascript)
|
|
76
|
+
mock_javascript.expects(:respond_to?).with(:html_safe).returns(true)
|
|
77
|
+
mock_javascript.expects(:html_safe)
|
|
78
|
+
bc.build_browser_timing_header
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_build_load_file_js_load_episodes_file_false
|
|
82
|
+
connect_data = {'rum.load_episodes_file' => false}
|
|
83
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
84
|
+
assert_equal(160, bc.build_load_file_js(connect_data).size,
|
|
85
|
+
"should include timing footer but not rum.js load")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_build_load_file_js_load_episodes_file_missing
|
|
89
|
+
connect_data = {}
|
|
90
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
91
|
+
assert_equal(278, bc.build_load_file_js(connect_data).size,
|
|
92
|
+
"should output the javascript when there is no configuration")
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def test_build_load_file_js_load_episodes_file_present
|
|
96
|
+
connect_data = {'rum.load_episodes_file' => true}
|
|
97
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
98
|
+
assert_equal(278, bc.build_load_file_js(connect_data).size,
|
|
99
|
+
"should output the javascript when rum.load_episodes_file is true")
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def test_build_load_file_js_load_episodes_file_with_episodes_url
|
|
103
|
+
connect_data = {'episodes_url' => 'an episodes url'}
|
|
104
|
+
bc = NewRelic::Agent::BeaconConfiguration.new(connect_data)
|
|
105
|
+
assert(bc.build_load_file_js(connect_data).include?('an episodes url'),
|
|
106
|
+
"should include the episodes url by default")
|
|
107
|
+
end
|
|
108
|
+
end
|