newrelic_rpm 4.0.0.332 → 6.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (1193) hide show
  1. checksums.yaml +5 -5
  2. data/.github/ISSUE_TEMPLATE/bug_report.md +31 -0
  3. data/.github/ISSUE_TEMPLATE/config.yml +5 -0
  4. data/.github/ISSUE_TEMPLATE/feature_request.md +24 -0
  5. data/.github/actions/annotate/README.md +79 -0
  6. data/.github/actions/annotate/action.yml +6 -0
  7. data/.github/actions/annotate/dist/index.js +433 -0
  8. data/.github/actions/annotate/index.js +25 -0
  9. data/.github/actions/annotate/package-lock.json +172 -0
  10. data/.github/actions/annotate/package.json +30 -0
  11. data/.github/actions/annotate/pre-commit +5 -0
  12. data/.github/actions/build-ruby/README.md +79 -0
  13. data/.github/actions/build-ruby/action.yml +15 -0
  14. data/.github/actions/build-ruby/dist/index.js +52683 -0
  15. data/.github/actions/build-ruby/index.js +514 -0
  16. data/.github/actions/build-ruby/package-lock.json +581 -0
  17. data/.github/actions/build-ruby/package.json +32 -0
  18. data/.github/actions/build-ruby/pre-commit +5 -0
  19. data/.github/pull_request_template.md +16 -0
  20. data/.github/workflows/ci.yml +212 -0
  21. data/.github/workflows/pr_review_checklist.yml +22 -0
  22. data/.github/workflows/release.yml +78 -0
  23. data/.github/workflows/scripts/rubygems-authenticate.py +13 -0
  24. data/.github/workflows/scripts/rubygems-publish.rb +32 -0
  25. data/.github/workflows/snyk.yml +27 -0
  26. data/.github/workflows/stale.yml +21 -0
  27. data/.gitignore +9 -0
  28. data/.yardopts +7 -2
  29. data/CHANGELOG.md +1130 -0
  30. data/CONTRIBUTING.md +106 -19
  31. data/Gemfile +6 -2
  32. data/Guardfile +18 -1
  33. data/LICENSE +208 -64
  34. data/README.md +75 -135
  35. data/ROADMAP.md +24 -0
  36. data/Rakefile +2 -0
  37. data/THIRD_PARTY_NOTICES.md +213 -0
  38. data/bin/nrdebug +1 -1
  39. data/config.dot +3 -12
  40. data/init.rb +1 -1
  41. data/install.rb +1 -1
  42. data/lib/new_relic/agent.rb +189 -35
  43. data/lib/new_relic/agent/adaptive_sampler.rb +104 -0
  44. data/lib/new_relic/agent/agent.rb +204 -186
  45. data/lib/new_relic/agent/agent_logger.rb +5 -1
  46. data/lib/new_relic/agent/attribute_filter.rb +85 -28
  47. data/lib/new_relic/agent/attribute_processing.rb +1 -1
  48. data/lib/new_relic/agent/attributes.rb +152 -0
  49. data/lib/new_relic/agent/audit_logger.rb +1 -1
  50. data/lib/new_relic/agent/autostart.rb +20 -15
  51. data/lib/new_relic/agent/chained_call.rb +1 -1
  52. data/lib/new_relic/agent/commands/agent_command.rb +1 -1
  53. data/lib/new_relic/agent/commands/agent_command_router.rb +3 -22
  54. data/lib/new_relic/agent/commands/thread_profiler_session.rb +1 -1
  55. data/lib/new_relic/agent/configuration.rb +1 -1
  56. data/lib/new_relic/agent/configuration/default_source.rb +436 -96
  57. data/lib/new_relic/agent/configuration/dotted_hash.rb +1 -1
  58. data/lib/new_relic/agent/configuration/environment_source.rb +5 -3
  59. data/lib/new_relic/agent/configuration/event_harvest_config.rb +45 -0
  60. data/lib/new_relic/agent/configuration/high_security_source.rb +2 -3
  61. data/lib/new_relic/agent/configuration/manager.rb +54 -43
  62. data/lib/new_relic/agent/configuration/manual_source.rb +1 -1
  63. data/lib/new_relic/agent/configuration/mask_defaults.rb +1 -1
  64. data/lib/new_relic/agent/configuration/security_policy_source.rb +238 -0
  65. data/lib/new_relic/agent/configuration/server_source.rb +46 -5
  66. data/lib/new_relic/agent/configuration/yaml_source.rb +20 -17
  67. data/lib/new_relic/agent/connect/request_builder.rb +61 -0
  68. data/lib/new_relic/agent/connect/response_handler.rb +61 -0
  69. data/lib/new_relic/agent/custom_event_aggregator.rb +17 -6
  70. data/lib/new_relic/agent/database.rb +32 -7
  71. data/lib/new_relic/agent/database/explain_plan_helpers.rb +12 -1
  72. data/lib/new_relic/agent/database/obfuscation_helpers.rb +2 -2
  73. data/lib/new_relic/agent/database/obfuscator.rb +1 -1
  74. data/lib/new_relic/agent/database/postgres_explain_obfuscator.rb +1 -1
  75. data/lib/new_relic/agent/datastores.rb +32 -15
  76. data/lib/new_relic/agent/datastores/metric_helper.rb +2 -3
  77. data/lib/new_relic/agent/datastores/mongo.rb +2 -2
  78. data/lib/new_relic/agent/datastores/mongo/event_formatter.rb +3 -3
  79. data/lib/new_relic/agent/datastores/mongo/metric_translator.rb +1 -1
  80. data/lib/new_relic/agent/datastores/mongo/obfuscator.rb +9 -9
  81. data/lib/new_relic/agent/datastores/mongo/statement_formatter.rb +1 -1
  82. data/lib/new_relic/agent/datastores/redis.rb +1 -1
  83. data/lib/new_relic/agent/deprecator.rb +1 -1
  84. data/lib/new_relic/agent/distributed_tracing.rb +216 -0
  85. data/lib/new_relic/agent/distributed_tracing/cross_app_payload.rb +44 -0
  86. data/lib/new_relic/agent/distributed_tracing/cross_app_tracing.rb +248 -0
  87. data/lib/new_relic/agent/distributed_tracing/distributed_trace_attributes.rb +84 -0
  88. data/lib/new_relic/agent/distributed_tracing/distributed_trace_metrics.rb +75 -0
  89. data/lib/new_relic/agent/distributed_tracing/distributed_trace_payload.rb +165 -0
  90. data/lib/new_relic/agent/distributed_tracing/distributed_trace_transport_type.rb +39 -0
  91. data/lib/new_relic/agent/distributed_tracing/trace_context.rb +246 -0
  92. data/lib/new_relic/agent/distributed_tracing/trace_context_payload.rb +126 -0
  93. data/lib/new_relic/agent/encoding_normalizer.rb +1 -1
  94. data/lib/new_relic/agent/error_collector.rb +55 -24
  95. data/lib/new_relic/agent/error_event_aggregator.rb +14 -7
  96. data/lib/new_relic/agent/error_trace_aggregator.rb +2 -1
  97. data/lib/new_relic/agent/event_aggregator.rb +34 -15
  98. data/lib/new_relic/agent/event_buffer.rb +1 -1
  99. data/lib/new_relic/agent/event_listener.rb +1 -1
  100. data/lib/new_relic/agent/event_loop.rb +1 -1
  101. data/lib/new_relic/agent/external.rb +143 -0
  102. data/lib/new_relic/agent/guid_generator.rb +28 -0
  103. data/lib/new_relic/agent/harvester.rb +1 -1
  104. data/lib/new_relic/agent/heap.rb +140 -0
  105. data/lib/new_relic/agent/hostname.rb +16 -2
  106. data/lib/new_relic/agent/http_clients/abstract.rb +82 -0
  107. data/lib/new_relic/agent/http_clients/curb_wrappers.rb +26 -19
  108. data/lib/new_relic/agent/http_clients/excon_wrappers.rb +31 -12
  109. data/lib/new_relic/agent/http_clients/http_rb_wrappers.rb +20 -22
  110. data/lib/new_relic/agent/http_clients/httpclient_wrappers.rb +13 -12
  111. data/lib/new_relic/agent/http_clients/net_http_wrappers.rb +23 -7
  112. data/lib/new_relic/agent/http_clients/typhoeus_wrappers.rb +8 -8
  113. data/lib/new_relic/agent/http_clients/uri_util.rb +23 -17
  114. data/lib/new_relic/agent/instrumentation.rb +1 -1
  115. data/lib/new_relic/agent/instrumentation/action_cable_subscriber.rb +26 -43
  116. data/lib/new_relic/agent/instrumentation/action_controller_subscriber.rb +56 -75
  117. data/lib/new_relic/agent/instrumentation/action_view_subscriber.rb +82 -56
  118. data/lib/new_relic/agent/instrumentation/active_job.rb +21 -15
  119. data/lib/new_relic/agent/instrumentation/active_merchant.rb +1 -1
  120. data/lib/new_relic/agent/instrumentation/active_record.rb +94 -33
  121. data/lib/new_relic/agent/instrumentation/active_record_helper.rb +87 -25
  122. data/lib/new_relic/agent/instrumentation/active_record_notifications.rb +168 -0
  123. data/lib/new_relic/agent/instrumentation/active_record_prepend.rb +132 -0
  124. data/lib/new_relic/agent/instrumentation/active_record_subscriber.rb +70 -58
  125. data/lib/new_relic/agent/instrumentation/active_storage.rb +23 -0
  126. data/lib/new_relic/agent/instrumentation/active_storage_subscriber.rb +63 -0
  127. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +26 -8
  128. data/lib/new_relic/agent/instrumentation/authlogic.rb +1 -1
  129. data/lib/new_relic/agent/instrumentation/bunny.rb +219 -0
  130. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +27 -16
  131. data/lib/new_relic/agent/instrumentation/curb.rb +126 -37
  132. data/lib/new_relic/agent/instrumentation/data_mapper.rb +16 -7
  133. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +61 -25
  134. data/lib/new_relic/agent/instrumentation/excon.rb +2 -2
  135. data/lib/new_relic/agent/instrumentation/excon/connection.rb +13 -7
  136. data/lib/new_relic/agent/instrumentation/excon/middleware.rb +9 -5
  137. data/lib/new_relic/agent/instrumentation/grape.rb +46 -35
  138. data/lib/new_relic/agent/instrumentation/http.rb +12 -6
  139. data/lib/new_relic/agent/instrumentation/httpclient.rb +12 -7
  140. data/lib/new_relic/agent/instrumentation/ignore_actions.rb +1 -1
  141. data/lib/new_relic/agent/instrumentation/memcache.rb +9 -4
  142. data/lib/new_relic/agent/instrumentation/memcache/dalli.rb +15 -8
  143. data/lib/new_relic/agent/instrumentation/merb/controller.rb +1 -1
  144. data/lib/new_relic/agent/instrumentation/merb/errors.rb +1 -1
  145. data/lib/new_relic/agent/instrumentation/middleware_proxy.rb +13 -5
  146. data/lib/new_relic/agent/instrumentation/middleware_tracing.rb +20 -11
  147. data/lib/new_relic/agent/instrumentation/mongo.rb +21 -10
  148. data/lib/new_relic/agent/instrumentation/mongodb_command_subscriber.rb +43 -6
  149. data/lib/new_relic/agent/instrumentation/net.rb +60 -20
  150. data/lib/new_relic/agent/instrumentation/notifications_subscriber.rb +100 -0
  151. data/lib/new_relic/agent/instrumentation/padrino.rb +40 -16
  152. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +1 -1
  153. data/lib/new_relic/agent/instrumentation/queue_time.rb +1 -1
  154. data/lib/new_relic/agent/instrumentation/rack.rb +36 -13
  155. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +2 -2
  156. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +1 -1
  157. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +6 -4
  158. data/lib/new_relic/agent/instrumentation/rails_middleware.rb +2 -2
  159. data/lib/new_relic/agent/instrumentation/{rails5 → rails_notifications}/action_cable.rb +11 -5
  160. data/lib/new_relic/agent/instrumentation/rails_notifications/action_controller.rb +33 -0
  161. data/lib/new_relic/agent/instrumentation/{rails4 → rails_notifications}/action_view.rb +6 -4
  162. data/lib/new_relic/agent/instrumentation/rainbows_instrumentation.rb +1 -1
  163. data/lib/new_relic/agent/instrumentation/rake.rb +58 -22
  164. data/lib/new_relic/agent/instrumentation/redis.rb +141 -41
  165. data/lib/new_relic/agent/instrumentation/resque.rb +21 -37
  166. data/lib/new_relic/agent/instrumentation/sequel.rb +2 -3
  167. data/lib/new_relic/agent/instrumentation/sequel_helper.rb +1 -1
  168. data/lib/new_relic/agent/instrumentation/sidekiq.rb +48 -24
  169. data/lib/new_relic/agent/instrumentation/sinatra.rb +62 -23
  170. data/lib/new_relic/agent/instrumentation/sinatra/ignorer.rb +1 -1
  171. data/lib/new_relic/agent/instrumentation/sinatra/transaction_namer.rb +1 -1
  172. data/lib/new_relic/agent/instrumentation/sunspot.rb +1 -1
  173. data/lib/new_relic/agent/instrumentation/typhoeus.rb +67 -26
  174. data/lib/new_relic/agent/internal_agent_error.rb +1 -1
  175. data/lib/new_relic/agent/javascript_instrumentor.rb +19 -16
  176. data/lib/new_relic/agent/log_once.rb +1 -1
  177. data/lib/new_relic/agent/logging.rb +139 -0
  178. data/lib/new_relic/agent/memory_logger.rb +1 -1
  179. data/lib/new_relic/agent/messaging.rb +372 -0
  180. data/lib/new_relic/agent/method_tracer.rb +45 -24
  181. data/lib/new_relic/agent/method_tracer_helpers.rb +10 -63
  182. data/lib/new_relic/agent/monitors.rb +27 -0
  183. data/lib/new_relic/agent/monitors/cross_app_monitor.rb +110 -0
  184. data/lib/new_relic/agent/monitors/distributed_tracing_monitor.rb +27 -0
  185. data/lib/new_relic/agent/{inbound_request_monitor.rb → monitors/inbound_request_monitor.rb} +4 -4
  186. data/lib/new_relic/agent/monitors/synthetics_monitor.rb +56 -0
  187. data/lib/new_relic/agent/new_relic_service.rb +174 -63
  188. data/lib/new_relic/agent/new_relic_service/encoders.rb +1 -1
  189. data/lib/new_relic/agent/new_relic_service/json_marshaller.rb +1 -2
  190. data/lib/new_relic/agent/new_relic_service/marshaller.rb +6 -27
  191. data/lib/new_relic/agent/new_relic_service/security_policy_settings.rb +61 -0
  192. data/lib/new_relic/agent/noticible_error.rb +22 -0
  193. data/lib/new_relic/agent/null_logger.rb +1 -1
  194. data/lib/new_relic/agent/obfuscator.rb +1 -1
  195. data/lib/new_relic/agent/parameter_filtering.rb +19 -6
  196. data/lib/new_relic/agent/payload_metric_mapping.rb +1 -1
  197. data/lib/new_relic/agent/pipe_channel_manager.rb +1 -1
  198. data/lib/new_relic/agent/pipe_service.rb +5 -1
  199. data/lib/new_relic/agent/prepend_supportability.rb +16 -0
  200. data/lib/new_relic/agent/priority_sampled_buffer.rb +95 -0
  201. data/lib/new_relic/agent/range_extensions.rb +47 -0
  202. data/lib/new_relic/agent/rules_engine.rb +1 -1
  203. data/lib/new_relic/agent/rules_engine/replacement_rule.rb +1 -1
  204. data/lib/new_relic/agent/rules_engine/segment_terms_rule.rb +1 -1
  205. data/lib/new_relic/agent/sampler.rb +1 -1
  206. data/lib/new_relic/agent/sampler_collection.rb +1 -1
  207. data/lib/new_relic/agent/samplers/cpu_sampler.rb +4 -3
  208. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +1 -1
  209. data/lib/new_relic/agent/samplers/memory_sampler.rb +1 -1
  210. data/lib/new_relic/agent/samplers/object_sampler.rb +1 -1
  211. data/lib/new_relic/agent/samplers/vm_sampler.rb +1 -1
  212. data/lib/new_relic/agent/span_event_aggregator.rb +49 -0
  213. data/lib/new_relic/agent/span_event_primitive.rb +206 -0
  214. data/lib/new_relic/agent/sql_sampler.rb +25 -9
  215. data/lib/new_relic/agent/stats.rb +1 -15
  216. data/lib/new_relic/agent/stats_engine.rb +172 -4
  217. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +1 -1
  218. data/lib/new_relic/agent/stats_engine/stats_hash.rb +1 -1
  219. data/lib/new_relic/agent/supported_versions.rb +15 -14
  220. data/lib/new_relic/agent/synthetics_event_aggregator.rb +6 -13
  221. data/lib/new_relic/agent/system_info.rb +52 -8
  222. data/lib/new_relic/agent/threading/agent_thread.rb +6 -4
  223. data/lib/new_relic/agent/threading/backtrace_node.rb +1 -1
  224. data/lib/new_relic/agent/threading/backtrace_service.rb +4 -4
  225. data/lib/new_relic/agent/threading/thread_profile.rb +10 -24
  226. data/lib/new_relic/agent/timestamp_sampled_buffer.rb +19 -0
  227. data/lib/new_relic/agent/tracer.rb +509 -0
  228. data/lib/new_relic/agent/transaction.rb +270 -295
  229. data/lib/new_relic/agent/transaction/abstract_segment.rb +204 -20
  230. data/lib/new_relic/agent/transaction/datastore_segment.rb +55 -26
  231. data/lib/new_relic/agent/transaction/distributed_tracer.rb +171 -0
  232. data/lib/new_relic/agent/transaction/distributed_tracing.rb +173 -0
  233. data/lib/new_relic/agent/transaction/external_request_segment.rb +159 -36
  234. data/lib/new_relic/agent/transaction/message_broker_segment.rb +103 -0
  235. data/lib/new_relic/agent/transaction/request_attributes.rb +6 -14
  236. data/lib/new_relic/agent/transaction/segment.rb +67 -5
  237. data/lib/new_relic/agent/transaction/slowest_sample_buffer.rb +1 -1
  238. data/lib/new_relic/agent/transaction/synthetics_sample_buffer.rb +1 -1
  239. data/lib/new_relic/agent/transaction/trace.rb +35 -34
  240. data/lib/new_relic/agent/transaction/trace_builder.rb +56 -0
  241. data/lib/new_relic/agent/transaction/trace_context.rb +168 -0
  242. data/lib/new_relic/agent/transaction/trace_node.rb +39 -43
  243. data/lib/new_relic/agent/transaction/tracing.rb +42 -45
  244. data/lib/new_relic/agent/transaction/transaction_sample_buffer.rb +1 -1
  245. data/lib/new_relic/agent/transaction_error_primitive.rb +15 -4
  246. data/lib/new_relic/agent/transaction_event_aggregator.rb +9 -4
  247. data/lib/new_relic/agent/transaction_event_primitive.rb +32 -29
  248. data/lib/new_relic/agent/transaction_event_recorder.rb +7 -7
  249. data/lib/new_relic/agent/transaction_metrics.rb +1 -1
  250. data/lib/new_relic/agent/transaction_sampler.rb +16 -196
  251. data/lib/new_relic/agent/transaction_time_aggregator.rb +155 -0
  252. data/lib/new_relic/agent/utilization/aws.rb +18 -0
  253. data/lib/new_relic/agent/utilization/azure.rb +17 -0
  254. data/lib/new_relic/agent/utilization/gcp.rb +35 -0
  255. data/lib/new_relic/agent/utilization/pcf.rb +32 -0
  256. data/lib/new_relic/agent/utilization/vendor.rb +144 -0
  257. data/lib/new_relic/agent/utilization_data.rb +65 -11
  258. data/lib/new_relic/agent/vm.rb +1 -1
  259. data/lib/new_relic/agent/vm/jruby_vm.rb +1 -1
  260. data/lib/new_relic/agent/vm/monotonic_gc_profiler.rb +1 -1
  261. data/lib/new_relic/agent/vm/mri_vm.rb +1 -1
  262. data/lib/new_relic/agent/vm/snapshot.rb +1 -1
  263. data/lib/new_relic/agent/worker_loop.rb +1 -1
  264. data/lib/new_relic/cli/command.rb +1 -1
  265. data/lib/new_relic/cli/commands/deployments.rb +2 -2
  266. data/lib/new_relic/cli/commands/install.rb +4 -3
  267. data/lib/new_relic/coerce.rb +32 -7
  268. data/lib/new_relic/collection_helper.rb +1 -19
  269. data/lib/new_relic/constants.rb +38 -0
  270. data/lib/new_relic/control.rb +1 -1
  271. data/lib/new_relic/control/class_methods.rb +8 -2
  272. data/lib/new_relic/control/frameworks.rb +1 -1
  273. data/lib/new_relic/control/frameworks/external.rb +1 -1
  274. data/lib/new_relic/control/frameworks/merb.rb +1 -1
  275. data/lib/new_relic/control/frameworks/rails.rb +2 -22
  276. data/lib/new_relic/control/frameworks/rails3.rb +2 -2
  277. data/lib/new_relic/control/frameworks/rails4.rb +1 -1
  278. data/lib/new_relic/control/frameworks/{rails5.rb → rails_notifications.rb} +2 -2
  279. data/lib/new_relic/control/frameworks/ruby.rb +3 -3
  280. data/lib/new_relic/control/frameworks/sinatra.rb +1 -1
  281. data/lib/new_relic/control/instance_methods.rb +30 -4
  282. data/lib/new_relic/control/instrumentation.rb +1 -1
  283. data/lib/new_relic/control/server_methods.rb +1 -1
  284. data/lib/new_relic/delayed_job_injection.rb +1 -1
  285. data/lib/new_relic/dependency_detection.rb +5 -5
  286. data/lib/new_relic/environment_report.rb +6 -2
  287. data/lib/new_relic/helper.rb +1 -1
  288. data/lib/new_relic/language_support.rb +1 -1
  289. data/lib/new_relic/latest_changes.rb +4 -4
  290. data/lib/new_relic/local_environment.rb +1 -1
  291. data/lib/new_relic/metric_data.rb +1 -1
  292. data/lib/new_relic/metric_spec.rb +1 -1
  293. data/lib/new_relic/noticed_error.rb +63 -30
  294. data/lib/new_relic/rack.rb +1 -1
  295. data/lib/new_relic/rack/agent_hooks.rb +1 -1
  296. data/lib/new_relic/rack/agent_middleware.rb +2 -2
  297. data/lib/new_relic/rack/browser_monitoring.rb +16 -9
  298. data/lib/new_relic/recipes.rb +1 -1
  299. data/lib/new_relic/recipes/capistrano3.rb +6 -3
  300. data/lib/new_relic/recipes/capistrano_legacy.rb +1 -1
  301. data/lib/new_relic/supportability_helper.rb +82 -0
  302. data/lib/new_relic/version.rb +4 -4
  303. data/lib/newrelic_rpm.rb +2 -2
  304. data/lib/sequel/extensions/newrelic_instrumentation.rb +27 -12
  305. data/lib/sequel/plugins/newrelic_instrumentation.rb +7 -3
  306. data/lib/tasks/all.rb +1 -1
  307. data/lib/tasks/config.rake +1 -2
  308. data/lib/tasks/multiverse.rb +35 -1
  309. data/lib/tasks/newrelic.rb +1 -1
  310. data/lib/tasks/tests.rake +6 -1
  311. data/newrelic.yml +1 -5
  312. data/newrelic_rpm.gemspec +23 -17
  313. data/recipes/newrelic.rb +1 -1
  314. data/test/agent_helper.rb +395 -83
  315. metadata +169 -910
  316. data/.travis.yml +0 -149
  317. data/lib/conditional_vendored_metric_parser.rb +0 -9
  318. data/lib/new_relic/agent/aws_info.rb +0 -90
  319. data/lib/new_relic/agent/busy_calculator.rb +0 -117
  320. data/lib/new_relic/agent/commands/xray_session.rb +0 -55
  321. data/lib/new_relic/agent/commands/xray_session_collection.rb +0 -161
  322. data/lib/new_relic/agent/cross_app_monitor.rb +0 -179
  323. data/lib/new_relic/agent/cross_app_tracing.rb +0 -106
  324. data/lib/new_relic/agent/instrumentation/active_record_4.rb +0 -32
  325. data/lib/new_relic/agent/instrumentation/active_record_5.rb +0 -89
  326. data/lib/new_relic/agent/instrumentation/evented_subscriber.rb +0 -104
  327. data/lib/new_relic/agent/instrumentation/rails4/action_controller.rb +0 -29
  328. data/lib/new_relic/agent/instrumentation/rails5/action_controller.rb +0 -30
  329. data/lib/new_relic/agent/instrumentation/rails5/action_view.rb +0 -25
  330. data/lib/new_relic/agent/instrumentation/rubyprof.rb +0 -26
  331. data/lib/new_relic/agent/sampled_buffer.rb +0 -68
  332. data/lib/new_relic/agent/sized_buffer.rb +0 -23
  333. data/lib/new_relic/agent/stats_engine/metric_stats.rb +0 -188
  334. data/lib/new_relic/agent/synthetics_event_buffer.rb +0 -40
  335. data/lib/new_relic/agent/synthetics_monitor.rb +0 -50
  336. data/lib/new_relic/agent/traced_method_stack.rb +0 -109
  337. data/lib/new_relic/agent/transaction/attributes.rb +0 -155
  338. data/lib/new_relic/agent/transaction/developer_mode_sample_buffer.rb +0 -62
  339. data/lib/new_relic/agent/transaction/xray_sample_buffer.rb +0 -64
  340. data/lib/new_relic/agent/transaction_sample_builder.rb +0 -141
  341. data/lib/new_relic/agent/transaction_state.rb +0 -155
  342. data/lib/new_relic/agent/transaction_timings.rb +0 -57
  343. data/lib/new_relic/merbtasks.rb +0 -10
  344. data/lib/new_relic/metrics.rb +0 -13
  345. data/lib/new_relic/rack/developer_mode.rb +0 -321
  346. data/lib/new_relic/rack/developer_mode/segment_summary.rb +0 -56
  347. data/lib/tasks/versions.html.erb +0 -28
  348. data/lib/tasks/versions.postface.html +0 -8
  349. data/lib/tasks/versions.preface.html +0 -9
  350. data/lib/tasks/versions.rake +0 -65
  351. data/lib/tasks/versions.txt.erb +0 -14
  352. data/test/config/newrelic.yml +0 -46
  353. data/test/config/test.cert.crt +0 -18
  354. data/test/config/test.cert.key +0 -15
  355. data/test/config/test_control.rb +0 -54
  356. data/test/environments/.gitignore +0 -16
  357. data/test/environments/lib/environments/runner.rb +0 -111
  358. data/test/environments/norails/Gemfile +0 -19
  359. data/test/environments/norails/Rakefile +0 -9
  360. data/test/environments/rails21/Gemfile +0 -23
  361. data/test/environments/rails21/Rakefile +0 -16
  362. data/test/environments/rails21/app/controllers/application.rb +0 -20
  363. data/test/environments/rails21/config/boot.rb +0 -113
  364. data/test/environments/rails21/config/database.yml +0 -26
  365. data/test/environments/rails21/config/environment.rb +0 -26
  366. data/test/environments/rails21/config/environments/development.rb +0 -10
  367. data/test/environments/rails21/config/environments/production.rb +0 -8
  368. data/test/environments/rails21/config/environments/test.rb +0 -10
  369. data/test/environments/rails21/config/routes.rb +0 -5
  370. data/test/environments/rails21/db/schema.rb +0 -5
  371. data/test/environments/rails22/Gemfile +0 -24
  372. data/test/environments/rails22/Rakefile +0 -16
  373. data/test/environments/rails22/app/controllers/application.rb +0 -20
  374. data/test/environments/rails22/config/boot.rb +0 -113
  375. data/test/environments/rails22/config/database.yml +0 -26
  376. data/test/environments/rails22/config/environment.rb +0 -25
  377. data/test/environments/rails22/config/environments/development.rb +0 -10
  378. data/test/environments/rails22/config/environments/production.rb +0 -8
  379. data/test/environments/rails22/config/environments/test.rb +0 -10
  380. data/test/environments/rails22/config/routes.rb +0 -5
  381. data/test/environments/rails22/db/schema.rb +0 -5
  382. data/test/environments/rails23/Gemfile +0 -24
  383. data/test/environments/rails23/Rakefile +0 -16
  384. data/test/environments/rails23/app/controllers/application.rb +0 -20
  385. data/test/environments/rails23/config/boot.rb +0 -127
  386. data/test/environments/rails23/config/database.yml +0 -26
  387. data/test/environments/rails23/config/environment.rb +0 -16
  388. data/test/environments/rails23/config/environments/production.rb +0 -8
  389. data/test/environments/rails23/config/environments/test.rb +0 -10
  390. data/test/environments/rails23/config/preinitializer.rb +0 -25
  391. data/test/environments/rails23/config/routes.rb +0 -5
  392. data/test/environments/rails23/db/schema.rb +0 -5
  393. data/test/environments/rails30/Gemfile +0 -23
  394. data/test/environments/rails30/Rakefile +0 -11
  395. data/test/environments/rails30/config/application.rb +0 -17
  396. data/test/environments/rails30/config/boot.rb +0 -10
  397. data/test/environments/rails30/config/database.yml +0 -26
  398. data/test/environments/rails30/config/environment.rb +0 -6
  399. data/test/environments/rails30/config/initializers/new_rails_defaults.rb +0 -11
  400. data/test/environments/rails30/db/schema.rb +0 -5
  401. data/test/environments/rails31/Gemfile +0 -24
  402. data/test/environments/rails31/Rakefile +0 -11
  403. data/test/environments/rails31/config/application.rb +0 -18
  404. data/test/environments/rails31/config/boot.rb +0 -10
  405. data/test/environments/rails31/config/database.yml +0 -26
  406. data/test/environments/rails31/config/environment.rb +0 -6
  407. data/test/environments/rails31/config/initializers/new_rails_defaults.rb +0 -21
  408. data/test/environments/rails31/db/schema.rb +0 -5
  409. data/test/environments/rails32/Gemfile +0 -26
  410. data/test/environments/rails32/Rakefile +0 -12
  411. data/test/environments/rails32/config/application.rb +0 -19
  412. data/test/environments/rails32/config/boot.rb +0 -10
  413. data/test/environments/rails32/config/database.yml +0 -26
  414. data/test/environments/rails32/config/environment.rb +0 -6
  415. data/test/environments/rails32/db/schema.rb +0 -5
  416. data/test/environments/rails40/Gemfile +0 -26
  417. data/test/environments/rails40/Rakefile +0 -11
  418. data/test/environments/rails40/config/application.rb +0 -18
  419. data/test/environments/rails40/config/boot.rb +0 -10
  420. data/test/environments/rails40/config/database.yml +0 -26
  421. data/test/environments/rails40/config/environment.rb +0 -6
  422. data/test/environments/rails40/db/schema.rb +0 -5
  423. data/test/environments/rails41/Gemfile +0 -26
  424. data/test/environments/rails41/Rakefile +0 -11
  425. data/test/environments/rails41/config/application.rb +0 -18
  426. data/test/environments/rails41/config/boot.rb +0 -10
  427. data/test/environments/rails41/config/database.yml +0 -26
  428. data/test/environments/rails41/config/environment.rb +0 -6
  429. data/test/environments/rails41/db/schema.rb +0 -5
  430. data/test/environments/rails42/Gemfile +0 -27
  431. data/test/environments/rails42/Rakefile +0 -11
  432. data/test/environments/rails42/config/application.rb +0 -18
  433. data/test/environments/rails42/config/boot.rb +0 -10
  434. data/test/environments/rails42/config/database.yml +0 -26
  435. data/test/environments/rails42/config/environment.rb +0 -6
  436. data/test/environments/rails42/db/schema.rb +0 -5
  437. data/test/environments/rails50/Gemfile +0 -23
  438. data/test/environments/rails50/Rakefile +0 -11
  439. data/test/environments/rails50/config/application.rb +0 -18
  440. data/test/environments/rails50/config/boot.rb +0 -10
  441. data/test/environments/rails50/config/database.yml +0 -26
  442. data/test/environments/rails50/config/environment.rb +0 -6
  443. data/test/environments/rails50/db/schema.rb +0 -5
  444. data/test/fixtures/cross_agent_tests/README.md +0 -34
  445. data/test/fixtures/cross_agent_tests/attribute_configuration.json +0 -384
  446. data/test/fixtures/cross_agent_tests/aws.json +0 -312
  447. data/test/fixtures/cross_agent_tests/cat/README.md +0 -28
  448. data/test/fixtures/cross_agent_tests/cat/cat_map.json +0 -595
  449. data/test/fixtures/cross_agent_tests/cat/path_hashing.json +0 -51
  450. data/test/fixtures/cross_agent_tests/cat_map.json +0 -597
  451. data/test/fixtures/cross_agent_tests/data_transport/data_transport.json +0 -1441
  452. data/test/fixtures/cross_agent_tests/data_transport/data_transport.md +0 -35
  453. data/test/fixtures/cross_agent_tests/datastores/README.md +0 -16
  454. data/test/fixtures/cross_agent_tests/datastores/datastore_api.json +0 -443
  455. data/test/fixtures/cross_agent_tests/datastores/datastore_instances.json +0 -73
  456. data/test/fixtures/cross_agent_tests/docker_container_id/README.md +0 -6
  457. data/test/fixtures/cross_agent_tests/docker_container_id/cases.json +0 -75
  458. data/test/fixtures/cross_agent_tests/docker_container_id/docker-0.9.1.txt +0 -10
  459. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.0.0.txt +0 -10
  460. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-lxc-driver.txt +0 -10
  461. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-fs.txt +0 -10
  462. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-systemd.txt +0 -10
  463. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.3.txt +0 -9
  464. data/test/fixtures/cross_agent_tests/docker_container_id/empty.txt +0 -0
  465. data/test/fixtures/cross_agent_tests/docker_container_id/heroku.txt +0 -1
  466. data/test/fixtures/cross_agent_tests/docker_container_id/invalid-characters.txt +0 -9
  467. data/test/fixtures/cross_agent_tests/docker_container_id/invalid-length.txt +0 -9
  468. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-lxc-container.txt +0 -10
  469. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-no-container.txt +0 -10
  470. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.10-no-container.txt +0 -10
  471. data/test/fixtures/cross_agent_tests/labels.json +0 -195
  472. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/README.md +0 -16
  473. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.colon_obfuscated.txt +0 -3
  474. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.explain.txt +0 -3
  475. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.obfuscated.txt +0 -3
  476. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/basic_where.query.txt +0 -1
  477. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.colon_obfuscated.txt +0 -2
  478. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.explain.txt +0 -2
  479. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.obfuscated.txt +0 -2
  480. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/current_date.query.txt +0 -1
  481. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.colon_obfuscated.txt +0 -2
  482. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.explain.txt +0 -2
  483. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.obfuscated.txt +0 -2
  484. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/date.query.txt +0 -1
  485. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.colon_obfuscated.txt +0 -2
  486. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.explain.txt +0 -3
  487. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.obfuscated.txt +0 -2
  488. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_newline.query.txt +0 -1
  489. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.colon_obfuscated.txt +0 -2
  490. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.explain.txt +0 -2
  491. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.obfuscated.txt +0 -2
  492. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/embedded_quote.query.txt +0 -1
  493. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.colon_obfuscated.txt +0 -2
  494. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.explain.txt +0 -2
  495. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.obfuscated.txt +0 -2
  496. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/floating_point.query.txt +0 -1
  497. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.colon_obfuscated.txt +0 -5
  498. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.explain.txt +0 -5
  499. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.obfuscated.txt +0 -5
  500. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/function_with_strings.query.txt +0 -1
  501. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.colon_obfuscated.txt +0 -2
  502. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.explain.txt +0 -2
  503. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.obfuscated.txt +0 -2
  504. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/quote_in_table_name.query.txt +0 -1
  505. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.colon_obfuscated.txt +0 -5
  506. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.explain.txt +0 -5
  507. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.obfuscated.txt +0 -5
  508. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/subplan.query.txt +0 -1
  509. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.colon_obfuscated.txt +0 -2
  510. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.explain.txt +0 -2
  511. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.obfuscated.txt +0 -2
  512. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_integer.query.txt +0 -1
  513. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.colon_obfuscated.txt +0 -2
  514. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.explain.txt +0 -2
  515. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.obfuscated.txt +0 -2
  516. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_regex_chars.query.txt +0 -1
  517. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.colon_obfuscated.txt +0 -3
  518. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.explain.txt +0 -3
  519. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.obfuscated.txt +0 -3
  520. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/where_with_substring.query.txt +0 -1
  521. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.colon_obfuscated.txt +0 -2
  522. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.explain.txt +0 -2
  523. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.obfuscated.txt +0 -2
  524. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case1.query.txt +0 -1
  525. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.colon_obfuscated.txt +0 -2
  526. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.explain.txt +0 -3
  527. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.obfuscated.txt +0 -2
  528. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case2.query.txt +0 -1
  529. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.colon_obfuscated.txt +0 -2
  530. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.explain.txt +0 -2
  531. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.obfuscated.txt +0 -2
  532. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case3.query.txt +0 -1
  533. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.colon_obfuscated.txt +0 -2
  534. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.explain.txt +0 -2
  535. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.obfuscated.txt +0 -2
  536. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case4.query.txt +0 -1
  537. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.colon_obfuscated.txt +0 -2
  538. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.explain.txt +0 -2
  539. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.obfuscated.txt +0 -2
  540. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case5.query.txt +0 -1
  541. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.colon_obfuscated.txt +0 -2
  542. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.explain.txt +0 -2
  543. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.obfuscated.txt +0 -2
  544. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case6.query.txt +0 -1
  545. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.colon_obfuscated.txt +0 -2
  546. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.explain.txt +0 -2
  547. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.obfuscated.txt +0 -2
  548. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case7.query.txt +0 -1
  549. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.colon_obfuscated.txt +0 -2
  550. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.explain.txt +0 -2
  551. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.obfuscated.txt +0 -2
  552. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case8.query.txt +0 -1
  553. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.colon_obfuscated.txt +0 -2
  554. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.explain.txt +0 -2
  555. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.obfuscated.txt +0 -2
  556. data/test/fixtures/cross_agent_tests/postgres_explain_obfuscation/with_escape_case9.query.txt +0 -1
  557. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_1core_1logical.txt +0 -3
  558. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_1core_2logical.txt +0 -14
  559. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_2core_2logical.txt +0 -14
  560. data/test/fixtures/cross_agent_tests/proc_cpuinfo/1pack_4core_4logical.txt +0 -28
  561. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_12core_24logical.txt +0 -575
  562. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_20core_40logical.txt +0 -999
  563. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_2core_2logical.txt +0 -51
  564. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_2core_4logical.txt +0 -28
  565. data/test/fixtures/cross_agent_tests/proc_cpuinfo/2pack_4core_4logical.txt +0 -28
  566. data/test/fixtures/cross_agent_tests/proc_cpuinfo/4pack_4core_4logical.txt +0 -103
  567. data/test/fixtures/cross_agent_tests/proc_cpuinfo/8pack_8core_8logical.txt +0 -199
  568. data/test/fixtures/cross_agent_tests/proc_cpuinfo/README.md +0 -28
  569. data/test/fixtures/cross_agent_tests/proc_cpuinfo/Xpack_Xcore_2logical.txt +0 -43
  570. data/test/fixtures/cross_agent_tests/proc_cpuinfo/malformed_file.txt +0 -3
  571. data/test/fixtures/cross_agent_tests/proc_meminfo/README.md +0 -7
  572. data/test/fixtures/cross_agent_tests/proc_meminfo/meminfo_4096MB.txt +0 -47
  573. data/test/fixtures/cross_agent_tests/rules.json +0 -165
  574. data/test/fixtures/cross_agent_tests/rum_client_config.json +0 -91
  575. data/test/fixtures/cross_agent_tests/rum_footer_insertion_location/close-body-in-comment.html +0 -10
  576. data/test/fixtures/cross_agent_tests/rum_footer_insertion_location/dynamic-iframe.html +0 -19
  577. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/basic.html +0 -10
  578. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/body_with_attributes.html +0 -3
  579. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag.html +0 -11
  580. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_after_x_ua_tag.html +0 -11
  581. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_before_x_ua_tag.html +0 -11
  582. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/charset_tag_with_spaces.html +0 -11
  583. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/comments1.html +0 -24
  584. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/comments2.html +0 -24
  585. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag.html +0 -11
  586. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag_after_x_ua_tag.html +0 -11
  587. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/content_type_charset_tag_before_x_ua_tag.html +0 -11
  588. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/empty_head +0 -4
  589. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes1.html +0 -27
  590. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes2.html +0 -24
  591. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_quotes_mismatch.html +0 -24
  592. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_single_quotes1.html +0 -25
  593. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/gt_in_single_quotes_mismatch.html +0 -25
  594. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/head_with_attributes.html +0 -10
  595. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/incomplete_non_meta_tags.html +0 -10
  596. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_end_header.html +0 -6
  597. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_header.html +0 -7
  598. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_html_and_no_header.html +0 -3
  599. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/no_start_header.html +0 -9
  600. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/script1.html +0 -19
  601. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/script2.html +0 -17
  602. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag.html +0 -10
  603. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_multiline.html +0 -11
  604. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_multiple_tags.html +0 -12
  605. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_spaces_around_equals.html +0 -10
  606. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_with_others.html +0 -11
  607. data/test/fixtures/cross_agent_tests/rum_loader_insertion_location/x_ua_meta_tag_with_spaces.html +0 -10
  608. data/test/fixtures/cross_agent_tests/sql_obfuscation/README.md +0 -36
  609. data/test/fixtures/cross_agent_tests/sql_obfuscation/sql_obfuscation.json +0 -619
  610. data/test/fixtures/cross_agent_tests/sql_parsing.json +0 -55
  611. data/test/fixtures/cross_agent_tests/synthetics/README.md +0 -65
  612. data/test/fixtures/cross_agent_tests/synthetics/synthetics.json +0 -317
  613. data/test/fixtures/cross_agent_tests/transaction_segment_terms.json +0 -389
  614. data/test/fixtures/cross_agent_tests/url_clean.json +0 -15
  615. data/test/fixtures/cross_agent_tests/url_domain_extraction.json +0 -35
  616. data/test/fixtures/cross_agent_tests/utilization/README.md +0 -13
  617. data/test/fixtures/cross_agent_tests/utilization/utilization_json.json +0 -132
  618. data/test/helpers/exceptions.rb +0 -16
  619. data/test/helpers/file_searching.rb +0 -28
  620. data/test/helpers/logging.rb +0 -37
  621. data/test/helpers/minitest.rb +0 -50
  622. data/test/helpers/misc.rb +0 -87
  623. data/test/helpers/mongo_metric_builder.rb +0 -34
  624. data/test/helpers/transaction_sample.rb +0 -44
  625. data/test/intentional_fail.rb +0 -13
  626. data/test/multiverse/.gitignore +0 -13
  627. data/test/multiverse/README.md +0 -85
  628. data/test/multiverse/lib/multiverse.rb +0 -32
  629. data/test/multiverse/lib/multiverse/color.rb +0 -23
  630. data/test/multiverse/lib/multiverse/envfile.rb +0 -66
  631. data/test/multiverse/lib/multiverse/output_collector.rb +0 -82
  632. data/test/multiverse/lib/multiverse/runner.rb +0 -118
  633. data/test/multiverse/lib/multiverse/shell_utils.rb +0 -27
  634. data/test/multiverse/lib/multiverse/suite.rb +0 -536
  635. data/test/multiverse/script/runner +0 -5
  636. data/test/multiverse/suites/active_record/.gitignore +0 -1
  637. data/test/multiverse/suites/active_record/Envfile +0 -60
  638. data/test/multiverse/suites/active_record/Rakefile +0 -9
  639. data/test/multiverse/suites/active_record/active_record_test.rb +0 -618
  640. data/test/multiverse/suites/active_record/app/models/models.rb +0 -34
  641. data/test/multiverse/suites/active_record/ar_method_aliasing.rb +0 -43
  642. data/test/multiverse/suites/active_record/before_suite.rb +0 -23
  643. data/test/multiverse/suites/active_record/config/database.rb +0 -79
  644. data/test/multiverse/suites/active_record/config/database.yml +0 -20
  645. data/test/multiverse/suites/active_record/config/newrelic.yml +0 -18
  646. data/test/multiverse/suites/active_record/db/migrate/20141105131800_create_users_and_aliases.rb +0 -21
  647. data/test/multiverse/suites/active_record/db/migrate/20141106082200_create_orders_and_shipments.rb +0 -25
  648. data/test/multiverse/suites/active_record/db/migrate/20150413011200_add_timestamps_to_orders.rb +0 -16
  649. data/test/multiverse/suites/active_record/db/migrate/20150414084400_create_groups.rb +0 -21
  650. data/test/multiverse/suites/activemerchant/Envfile +0 -26
  651. data/test/multiverse/suites/activemerchant/activemerchant_test.rb +0 -62
  652. data/test/multiverse/suites/agent_only/Envfile +0 -5
  653. data/test/multiverse/suites/agent_only/agent_attributes_test.rb +0 -351
  654. data/test/multiverse/suites/agent_only/agent_run_id_handling_test.rb +0 -39
  655. data/test/multiverse/suites/agent_only/audit_log_test.rb +0 -57
  656. data/test/multiverse/suites/agent_only/collector_exception_handling_test.rb +0 -87
  657. data/test/multiverse/suites/agent_only/config/newrelic.yml +0 -27
  658. data/test/multiverse/suites/agent_only/cross_application_tracing_test.rb +0 -94
  659. data/test/multiverse/suites/agent_only/custom_analytics_events_test.rb +0 -82
  660. data/test/multiverse/suites/agent_only/custom_queue_time_test.rb +0 -60
  661. data/test/multiverse/suites/agent_only/encoding_handling_test.rb +0 -122
  662. data/test/multiverse/suites/agent_only/error_events_test.rb +0 -98
  663. data/test/multiverse/suites/agent_only/exclusive_time_test.rb +0 -176
  664. data/test/multiverse/suites/agent_only/harvest_timestamps_test.rb +0 -61
  665. data/test/multiverse/suites/agent_only/http_response_code_test.rb +0 -38
  666. data/test/multiverse/suites/agent_only/keepalive_test.rb +0 -24
  667. data/test/multiverse/suites/agent_only/key_transactions_test.rb +0 -118
  668. data/test/multiverse/suites/agent_only/labels_test.rb +0 -83
  669. data/test/multiverse/suites/agent_only/logging_test.rb +0 -162
  670. data/test/multiverse/suites/agent_only/marshaling_test.rb +0 -89
  671. data/test/multiverse/suites/agent_only/pipe_manager_test.rb +0 -41
  672. data/test/multiverse/suites/agent_only/rename_rule_test.rb +0 -91
  673. data/test/multiverse/suites/agent_only/rum_instrumentation_test.rb +0 -97
  674. data/test/multiverse/suites/agent_only/script/env_change.rb +0 -10
  675. data/test/multiverse/suites/agent_only/script/loading.rb +0 -20
  676. data/test/multiverse/suites/agent_only/script/public_api_when_disabled.rb +0 -57
  677. data/test/multiverse/suites/agent_only/script/symbol_env.rb +0 -10
  678. data/test/multiverse/suites/agent_only/script/warnings.rb +0 -15
  679. data/test/multiverse/suites/agent_only/service_timeout_test.rb +0 -39
  680. data/test/multiverse/suites/agent_only/set_transaction_name_test.rb +0 -118
  681. data/test/multiverse/suites/agent_only/ssl_test.rb +0 -21
  682. data/test/multiverse/suites/agent_only/start_up_test.rb +0 -107
  683. data/test/multiverse/suites/agent_only/synthetics_test.rb +0 -131
  684. data/test/multiverse/suites/agent_only/testing_app.rb +0 -58
  685. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +0 -137
  686. data/test/multiverse/suites/agent_only/transaction_events_test.rb +0 -31
  687. data/test/multiverse/suites/agent_only/transaction_ignoring_test.rb +0 -42
  688. data/test/multiverse/suites/agent_only/utilization_data_collection_test.rb +0 -105
  689. data/test/multiverse/suites/agent_only/xray_sessions_test.rb +0 -196
  690. data/test/multiverse/suites/bare/Envfile +0 -3
  691. data/test/multiverse/suites/bare/standalone_instrumentation_test.rb +0 -43
  692. data/test/multiverse/suites/capistrano/Capfile +0 -26
  693. data/test/multiverse/suites/capistrano/Envfile +0 -23
  694. data/test/multiverse/suites/capistrano/config/deploy.rb +0 -14
  695. data/test/multiverse/suites/capistrano/config/deploy/production.rb +0 -9
  696. data/test/multiverse/suites/capistrano/config/newrelic.yml +0 -21
  697. data/test/multiverse/suites/capistrano/deployment_test.rb +0 -51
  698. data/test/multiverse/suites/capistrano2/Capfile +0 -4
  699. data/test/multiverse/suites/capistrano2/Envfile +0 -8
  700. data/test/multiverse/suites/capistrano2/config/deploy.rb +0 -19
  701. data/test/multiverse/suites/capistrano2/config/newrelic.yml +0 -21
  702. data/test/multiverse/suites/capistrano2/deployment_test.rb +0 -37
  703. data/test/multiverse/suites/config_file_loading/Envfile +0 -13
  704. data/test/multiverse/suites/config_file_loading/config_file_loading_test.rb +0 -213
  705. data/test/multiverse/suites/curb/Envfile +0 -27
  706. data/test/multiverse/suites/curb/config/newrelic.yml +0 -18
  707. data/test/multiverse/suites/curb/curb_test.rb +0 -212
  708. data/test/multiverse/suites/datamapper/Envfile +0 -36
  709. data/test/multiverse/suites/datamapper/config/newrelic.yml +0 -20
  710. data/test/multiverse/suites/datamapper/datamapper_test.rb +0 -429
  711. data/test/multiverse/suites/deferred_instrumentation/Envfile +0 -15
  712. data/test/multiverse/suites/deferred_instrumentation/config/newrelic.yml +0 -20
  713. data/test/multiverse/suites/deferred_instrumentation/sinatra_test.rb +0 -110
  714. data/test/multiverse/suites/delayed_job/Envfile +0 -101
  715. data/test/multiverse/suites/delayed_job/before_suite.rb +0 -43
  716. data/test/multiverse/suites/delayed_job/config/newrelic.yml +0 -18
  717. data/test/multiverse/suites/delayed_job/delayed_job_instrumentation_test.rb +0 -106
  718. data/test/multiverse/suites/delayed_job/delayed_job_sampler_test.rb +0 -128
  719. data/test/multiverse/suites/delayed_job/unsupported_backend_test.rb +0 -21
  720. data/test/multiverse/suites/excon/Envfile +0 -18
  721. data/test/multiverse/suites/excon/config/newrelic.yml +0 -18
  722. data/test/multiverse/suites/excon/excon_test.rb +0 -81
  723. data/test/multiverse/suites/grape/Envfile +0 -9
  724. data/test/multiverse/suites/grape/config/newrelic.yml +0 -19
  725. data/test/multiverse/suites/grape/grape_test.rb +0 -219
  726. data/test/multiverse/suites/grape/grape_test_api.rb +0 -64
  727. data/test/multiverse/suites/grape/grape_versioning_test.rb +0 -118
  728. data/test/multiverse/suites/grape/grape_versioning_test_api.rb +0 -130
  729. data/test/multiverse/suites/grape/unsupported_version_test.rb +0 -28
  730. data/test/multiverse/suites/high_security/Envfile +0 -3
  731. data/test/multiverse/suites/high_security/config/newrelic.yml +0 -70
  732. data/test/multiverse/suites/high_security/high_security_test.rb +0 -214
  733. data/test/multiverse/suites/httpclient/Envfile +0 -15
  734. data/test/multiverse/suites/httpclient/config/newrelic.yml +0 -18
  735. data/test/multiverse/suites/httpclient/httpclient_test.rb +0 -75
  736. data/test/multiverse/suites/httprb/Envfile +0 -21
  737. data/test/multiverse/suites/httprb/config/newrelic.yml +0 -18
  738. data/test/multiverse/suites/httprb/httprb_test.rb +0 -78
  739. data/test/multiverse/suites/json/Envfile +0 -22
  740. data/test/multiverse/suites/json/config/newrelic.yml +0 -22
  741. data/test/multiverse/suites/json/json_test.rb +0 -16
  742. data/test/multiverse/suites/marshalling/Envfile +0 -3
  743. data/test/multiverse/suites/marshalling/config/newrelic.yml +0 -20
  744. data/test/multiverse/suites/marshalling/marshalling_test.rb +0 -16
  745. data/test/multiverse/suites/memcached/Envfile +0 -36
  746. data/test/multiverse/suites/memcached/dalli_test.rb +0 -163
  747. data/test/multiverse/suites/memcached/memcache_client_test.rb +0 -25
  748. data/test/multiverse/suites/memcached/memcache_test_cases.rb +0 -315
  749. data/test/multiverse/suites/memcached/memcached_test.rb +0 -179
  750. data/test/multiverse/suites/mongo/Envfile +0 -74
  751. data/test/multiverse/suites/mongo/config/newrelic.yml +0 -18
  752. data/test/multiverse/suites/mongo/helpers/mongo_operation_tests.rb +0 -551
  753. data/test/multiverse/suites/mongo/helpers/mongo_replica_set.rb +0 -97
  754. data/test/multiverse/suites/mongo/helpers/mongo_replica_set_test.rb +0 -82
  755. data/test/multiverse/suites/mongo/helpers/mongo_server.rb +0 -241
  756. data/test/multiverse/suites/mongo/helpers/mongo_server_test.rb +0 -176
  757. data/test/multiverse/suites/mongo/mongo2_instrumentation_test.rb +0 -493
  758. data/test/multiverse/suites/mongo/mongo_connection_test.rb +0 -40
  759. data/test/multiverse/suites/mongo/mongo_instrumentation_test.rb +0 -58
  760. data/test/multiverse/suites/mongo/mongo_unsupported_version_test.rb +0 -72
  761. data/test/multiverse/suites/net_http/Envfile +0 -6
  762. data/test/multiverse/suites/net_http/config/newrelic.yml +0 -18
  763. data/test/multiverse/suites/net_http/net_http_test.rb +0 -115
  764. data/test/multiverse/suites/padrino/Envfile +0 -19
  765. data/test/multiverse/suites/padrino/config/newrelic.yml +0 -22
  766. data/test/multiverse/suites/padrino/padrino_test.rb +0 -52
  767. data/test/multiverse/suites/rack/Envfile +0 -64
  768. data/test/multiverse/suites/rack/before_suite.rb +0 -12
  769. data/test/multiverse/suites/rack/builder_map_test.rb +0 -128
  770. data/test/multiverse/suites/rack/config/newrelic.yml +0 -18
  771. data/test/multiverse/suites/rack/example_app.rb +0 -119
  772. data/test/multiverse/suites/rack/http_response_code_test.rb +0 -49
  773. data/test/multiverse/suites/rack/nested_non_rack_app_test.rb +0 -66
  774. data/test/multiverse/suites/rack/puma_rack_builder_test.rb +0 -84
  775. data/test/multiverse/suites/rack/rack_auto_instrumentation_test.rb +0 -151
  776. data/test/multiverse/suites/rack/rack_cascade_test.rb +0 -44
  777. data/test/multiverse/suites/rack/rack_env_mutation_test.rb +0 -52
  778. data/test/multiverse/suites/rack/rack_parameter_filtering_test.rb +0 -49
  779. data/test/multiverse/suites/rack/rack_unsupported_version_test.rb +0 -43
  780. data/test/multiverse/suites/rack/response_content_type_test.rb +0 -49
  781. data/test/multiverse/suites/rack/url_map_test.rb +0 -155
  782. data/test/multiverse/suites/rails/Envfile +0 -61
  783. data/test/multiverse/suites/rails/action_cable_test.rb +0 -81
  784. data/test/multiverse/suites/rails/action_controller_live_rum_test.rb +0 -39
  785. data/test/multiverse/suites/rails/activejob_test.rb +0 -151
  786. data/test/multiverse/suites/rails/app.rb +0 -44
  787. data/test/multiverse/suites/rails/app/views/foos/_foo.html.haml +0 -1
  788. data/test/multiverse/suites/rails/app/views/views/_a_partial.html.erb +0 -2
  789. data/test/multiverse/suites/rails/app/views/views/_mid_partial.html.erb +0 -1
  790. data/test/multiverse/suites/rails/app/views/views/_top_partial.html.erb +0 -3
  791. data/test/multiverse/suites/rails/app/views/views/deep_partial.html.erb +0 -3
  792. data/test/multiverse/suites/rails/app/views/views/haml_view.html.haml +0 -6
  793. data/test/multiverse/suites/rails/app/views/views/index.html.erb +0 -4
  794. data/test/multiverse/suites/rails/bad_instrumentation_test.rb +0 -29
  795. data/test/multiverse/suites/rails/config/newrelic.yml +0 -30
  796. data/test/multiverse/suites/rails/dummy.txt +0 -1
  797. data/test/multiverse/suites/rails/error_tracing_test.rb +0 -346
  798. data/test/multiverse/suites/rails/gc_instrumentation_test.rb +0 -73
  799. data/test/multiverse/suites/rails/ignore_test.rb +0 -79
  800. data/test/multiverse/suites/rails/middleware_instrumentation_test.rb +0 -41
  801. data/test/multiverse/suites/rails/middlewares.rb +0 -19
  802. data/test/multiverse/suites/rails/parameter_capture_test.rb +0 -328
  803. data/test/multiverse/suites/rails/queue_time_test.rb +0 -89
  804. data/test/multiverse/suites/rails/rails2_app/app/controllers/application.rb +0 -7
  805. data/test/multiverse/suites/rails/rails2_app/config/boot.rb +0 -127
  806. data/test/multiverse/suites/rails/rails2_app/config/database.yml +0 -18
  807. data/test/multiverse/suites/rails/rails2_app/config/environment.rb +0 -16
  808. data/test/multiverse/suites/rails/rails2_app/config/environments/development.rb +0 -10
  809. data/test/multiverse/suites/rails/rails2_app/config/initializers/load_newrelic_rpm.rb +0 -9
  810. data/test/multiverse/suites/rails/rails2_app/config/preinitializer.rb +0 -25
  811. data/test/multiverse/suites/rails/rails2_app/config/routes.rb +0 -19
  812. data/test/multiverse/suites/rails/rails2_app/db/schema.rb +0 -5
  813. data/test/multiverse/suites/rails/rails3_app/app_rails3_plus.rb +0 -99
  814. data/test/multiverse/suites/rails/request_statistics_test.rb +0 -192
  815. data/test/multiverse/suites/rails/transaction_ignoring_test.rb +0 -41
  816. data/test/multiverse/suites/rails/view_instrumentation_test.rb +0 -254
  817. data/test/multiverse/suites/rake/Envfile +0 -43
  818. data/test/multiverse/suites/rake/Rakefile +0 -54
  819. data/test/multiverse/suites/rake/config/newrelic.yml +0 -18
  820. data/test/multiverse/suites/rake/multitask_test.rb +0 -40
  821. data/test/multiverse/suites/rake/rake_test.rb +0 -209
  822. data/test/multiverse/suites/rake/rake_test_helper.rb +0 -66
  823. data/test/multiverse/suites/rake/unsupported_rake_test.rb +0 -19
  824. data/test/multiverse/suites/redis/Envfile +0 -23
  825. data/test/multiverse/suites/redis/config/newrelic.yml +0 -19
  826. data/test/multiverse/suites/redis/redis_instrumentation_test.rb +0 -331
  827. data/test/multiverse/suites/redis/redis_unsupported_version_test.rb +0 -20
  828. data/test/multiverse/suites/resque/Envfile +0 -9
  829. data/test/multiverse/suites/resque/Rakefile +0 -3
  830. data/test/multiverse/suites/resque/config/newrelic.yml +0 -19
  831. data/test/multiverse/suites/resque/instrumentation_test.rb +0 -159
  832. data/test/multiverse/suites/resque/resque_marshalling_test.rb +0 -61
  833. data/test/multiverse/suites/sequel/Envfile +0 -41
  834. data/test/multiverse/suites/sequel/config/newrelic.yml +0 -18
  835. data/test/multiverse/suites/sequel/database.rb +0 -54
  836. data/test/multiverse/suites/sequel/sequel_extension_test.rb +0 -142
  837. data/test/multiverse/suites/sequel/sequel_helpers.rb +0 -62
  838. data/test/multiverse/suites/sequel/sequel_plugin_test.rb +0 -230
  839. data/test/multiverse/suites/sequel/sequel_safety_test.rb +0 -30
  840. data/test/multiverse/suites/sidekiq/Envfile +0 -43
  841. data/test/multiverse/suites/sidekiq/after_suite.rb +0 -16
  842. data/test/multiverse/suites/sidekiq/config/newrelic.yml +0 -20
  843. data/test/multiverse/suites/sidekiq/log/.gitkeep +0 -0
  844. data/test/multiverse/suites/sidekiq/sidekiq_instrumentation_test.rb +0 -220
  845. data/test/multiverse/suites/sidekiq/sidekiq_server.rb +0 -35
  846. data/test/multiverse/suites/sidekiq/test_model.rb +0 -12
  847. data/test/multiverse/suites/sidekiq/test_worker.rb +0 -71
  848. data/test/multiverse/suites/sinatra/Envfile +0 -27
  849. data/test/multiverse/suites/sinatra/config/newrelic.yml +0 -21
  850. data/test/multiverse/suites/sinatra/ignoring_test.rb +0 -226
  851. data/test/multiverse/suites/sinatra/nested_middleware_test.rb +0 -47
  852. data/test/multiverse/suites/sinatra/sinatra_classic_test.rb +0 -103
  853. data/test/multiverse/suites/sinatra/sinatra_error_tracing_test.rb +0 -48
  854. data/test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb +0 -102
  855. data/test/multiverse/suites/sinatra/sinatra_modular_test.rb +0 -93
  856. data/test/multiverse/suites/sinatra/sinatra_parameter_capture_test.rb +0 -82
  857. data/test/multiverse/suites/sinatra/sinatra_routes_test.rb +0 -49
  858. data/test/multiverse/suites/sinatra/sinatra_test_cases.rb +0 -226
  859. data/test/multiverse/suites/typhoeus/Envfile +0 -68
  860. data/test/multiverse/suites/typhoeus/config/newrelic.yml +0 -18
  861. data/test/multiverse/suites/typhoeus/typhoeus_test.rb +0 -145
  862. data/test/multiverse/suites/yajl/Envfile +0 -20
  863. data/test/multiverse/suites/yajl/config/newrelic.yml +0 -21
  864. data/test/multiverse/suites/yajl/yajl_test.rb +0 -16
  865. data/test/multiverse/test/multiverse_test.rb +0 -59
  866. data/test/multiverse/test/suite_examples/one/a/Envfile +0 -3
  867. data/test/multiverse/test/suite_examples/one/a/a_test.rb +0 -14
  868. data/test/multiverse/test/suite_examples/one/a/config/newrelic.yml +0 -22
  869. data/test/multiverse/test/suite_examples/one/b/Envfile +0 -3
  870. data/test/multiverse/test/suite_examples/one/b/b_test.rb +0 -14
  871. data/test/multiverse/test/suite_examples/one/b/config/newrelic.yml +0 -22
  872. data/test/multiverse/test/suite_examples/three/a/Envfile +0 -2
  873. data/test/multiverse/test/suite_examples/three/a/fail_test.rb +0 -10
  874. data/test/multiverse/test/suite_examples/three/b/Envfile +0 -2
  875. data/test/multiverse/test/suite_examples/three/b/win_test.rb +0 -10
  876. data/test/multiverse/test/suite_examples/two/a/Envfile +0 -1
  877. data/test/multiverse/test/suite_examples/two/a/fail_test.rb +0 -10
  878. data/test/new_relic/FAKECHANGELOG +0 -21
  879. data/test/new_relic/agent/agent/connect_test.rb +0 -308
  880. data/test/new_relic/agent/agent/start_test.rb +0 -186
  881. data/test/new_relic/agent/agent/start_worker_thread_test.rb +0 -74
  882. data/test/new_relic/agent/agent_logger_test.rb +0 -389
  883. data/test/new_relic/agent/agent_test.rb +0 -710
  884. data/test/new_relic/agent/agent_test_controller.rb +0 -84
  885. data/test/new_relic/agent/apdex_from_server_test.rb +0 -13
  886. data/test/new_relic/agent/api_tests/datastore_api_test.rb +0 -64
  887. data/test/new_relic/agent/attribute_filter_test.rb +0 -218
  888. data/test/new_relic/agent/attribute_processing_test.rb +0 -164
  889. data/test/new_relic/agent/audit_logger_test.rb +0 -208
  890. data/test/new_relic/agent/autostart_test.rb +0 -79
  891. data/test/new_relic/agent/aws_info_test.rb +0 -76
  892. data/test/new_relic/agent/busy_calculator_test.rb +0 -96
  893. data/test/new_relic/agent/commands/agent_command_router_test.rb +0 -256
  894. data/test/new_relic/agent/commands/agent_command_test.rb +0 -37
  895. data/test/new_relic/agent/commands/thread_profiler_session_test.rb +0 -216
  896. data/test/new_relic/agent/commands/xray_session_collection_test.rb +0 -332
  897. data/test/new_relic/agent/commands/xray_session_test.rb +0 -42
  898. data/test/new_relic/agent/configuration/default_source_test.rb +0 -229
  899. data/test/new_relic/agent/configuration/dotted_hash_test.rb +0 -53
  900. data/test/new_relic/agent/configuration/environment_source_test.rb +0 -201
  901. data/test/new_relic/agent/configuration/high_security_source_test.rb +0 -92
  902. data/test/new_relic/agent/configuration/manager_test.rb +0 -455
  903. data/test/new_relic/agent/configuration/manual_source_test.rb +0 -18
  904. data/test/new_relic/agent/configuration/orphan_configuration_test.rb +0 -91
  905. data/test/new_relic/agent/configuration/server_source_test.rb +0 -202
  906. data/test/new_relic/agent/configuration/yaml_source_test.rb +0 -117
  907. data/test/new_relic/agent/cross_app_monitor_test.rb +0 -248
  908. data/test/new_relic/agent/custom_event_aggregator_test.rb +0 -127
  909. data/test/new_relic/agent/database/postgres_explain_obfuscator_test.rb +0 -34
  910. data/test/new_relic/agent/database/sql_obfuscation_test.rb +0 -52
  911. data/test/new_relic/agent/database_test.rb +0 -482
  912. data/test/new_relic/agent/datastores/metric_helper_test.rb +0 -203
  913. data/test/new_relic/agent/datastores/mongo/event_formatter_test.rb +0 -175
  914. data/test/new_relic/agent/datastores/mongo/metric_translator_test.rb +0 -270
  915. data/test/new_relic/agent/datastores/mongo/obfuscator_test.rb +0 -99
  916. data/test/new_relic/agent/datastores/mongo/statement_formatter_test.rb +0 -72
  917. data/test/new_relic/agent/datastores/redis_test.rb +0 -126
  918. data/test/new_relic/agent/datastores_test.rb +0 -202
  919. data/test/new_relic/agent/deprecator_test.rb +0 -52
  920. data/test/new_relic/agent/encoding_normalizer_test.rb +0 -69
  921. data/test/new_relic/agent/error_collector_test.rb +0 -407
  922. data/test/new_relic/agent/error_event_aggregator_test.rb +0 -237
  923. data/test/new_relic/agent/error_trace_aggregator_test.rb +0 -298
  924. data/test/new_relic/agent/event_aggregator_test.rb +0 -178
  925. data/test/new_relic/agent/event_buffer_test_cases.rb +0 -168
  926. data/test/new_relic/agent/event_listener_test.rb +0 -70
  927. data/test/new_relic/agent/event_loop_test.rb +0 -202
  928. data/test/new_relic/agent/harvester_test.rb +0 -79
  929. data/test/new_relic/agent/hostname_test.rb +0 -121
  930. data/test/new_relic/agent/http_clients/uri_util_test.rb +0 -64
  931. data/test/new_relic/agent/inbound_request_monitor_test.rb +0 -49
  932. data/test/new_relic/agent/instrumentation/action_cable_subscriber_test.rb +0 -124
  933. data/test/new_relic/agent/instrumentation/action_controller_subscriber_test.rb +0 -299
  934. data/test/new_relic/agent/instrumentation/action_view_subscriber_test.rb +0 -249
  935. data/test/new_relic/agent/instrumentation/active_job_test.rb +0 -20
  936. data/test/new_relic/agent/instrumentation/active_record_helper_test.rb +0 -66
  937. data/test/new_relic/agent/instrumentation/active_record_subscriber_test.rb +0 -210
  938. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +0 -328
  939. data/test/new_relic/agent/instrumentation/delayed_job_instrumentation_test.rb +0 -23
  940. data/test/new_relic/agent/instrumentation/instance_identification_test.rb +0 -169
  941. data/test/new_relic/agent/instrumentation/instrumentation_test.rb +0 -14
  942. data/test/new_relic/agent/instrumentation/middleware_proxy_test.rb +0 -256
  943. data/test/new_relic/agent/instrumentation/middleware_tracing_test.rb +0 -49
  944. data/test/new_relic/agent/instrumentation/mongodb_command_subscriber_test.rb +0 -112
  945. data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +0 -41
  946. data/test/new_relic/agent/instrumentation/queue_time_test.rb +0 -103
  947. data/test/new_relic/agent/instrumentation/rack_test.rb +0 -44
  948. data/test/new_relic/agent/instrumentation/sequel_helper_test.rb +0 -36
  949. data/test/new_relic/agent/instrumentation/sinatra/transaction_namer_test.rb +0 -62
  950. data/test/new_relic/agent/instrumentation/sinatra_test.rb +0 -80
  951. data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +0 -186
  952. data/test/new_relic/agent/javascript_instrumentor_test.rb +0 -340
  953. data/test/new_relic/agent/memory_logger_test.rb +0 -85
  954. data/test/new_relic/agent/method_interrobang_test.rb +0 -31
  955. data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +0 -112
  956. data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +0 -215
  957. data/test/new_relic/agent/method_tracer_test.rb +0 -480
  958. data/test/new_relic/agent/method_visibility_test.rb +0 -90
  959. data/test/new_relic/agent/mock_scope_listener.rb +0 -30
  960. data/test/new_relic/agent/new_relic_service/json_marshaller_test.rb +0 -27
  961. data/test/new_relic/agent/new_relic_service_test.rb +0 -972
  962. data/test/new_relic/agent/obfuscator_test.rb +0 -77
  963. data/test/new_relic/agent/parameter_filtering_test.rb +0 -39
  964. data/test/new_relic/agent/payload_metric_mapping_test.rb +0 -74
  965. data/test/new_relic/agent/pipe_channel_manager_test.rb +0 -316
  966. data/test/new_relic/agent/pipe_service_test.rb +0 -151
  967. data/test/new_relic/agent/rpm_agent_test.rb +0 -91
  968. data/test/new_relic/agent/rules_engine_test.rb +0 -136
  969. data/test/new_relic/agent/sampled_buffer_test.rb +0 -142
  970. data/test/new_relic/agent/sampler_collection_test.rb +0 -90
  971. data/test/new_relic/agent/sampler_test.rb +0 -66
  972. data/test/new_relic/agent/samplers/cpu_sampler_test.rb +0 -79
  973. data/test/new_relic/agent/samplers/memory_sampler_test.rb +0 -66
  974. data/test/new_relic/agent/samplers/vm_sampler_test.rb +0 -349
  975. data/test/new_relic/agent/sized_buffer_test.rb +0 -29
  976. data/test/new_relic/agent/sql_sampler_test.rb +0 -463
  977. data/test/new_relic/agent/stats_engine/gc_profiler_test.rb +0 -176
  978. data/test/new_relic/agent/stats_engine/metric_stats_test.rb +0 -328
  979. data/test/new_relic/agent/stats_engine/stats_hash_test.rb +0 -195
  980. data/test/new_relic/agent/stats_engine_test.rb +0 -32
  981. data/test/new_relic/agent/stats_test.rb +0 -187
  982. data/test/new_relic/agent/synthetics_event_aggregator_test.rb +0 -180
  983. data/test/new_relic/agent/synthetics_event_buffer_test.rb +0 -54
  984. data/test/new_relic/agent/synthetics_monitor_test.rb +0 -93
  985. data/test/new_relic/agent/system_info_test.rb +0 -133
  986. data/test/new_relic/agent/threading/agent_thread_test.rb +0 -149
  987. data/test/new_relic/agent/threading/backtrace_node_test.rb +0 -184
  988. data/test/new_relic/agent/threading/backtrace_service_test.rb +0 -603
  989. data/test/new_relic/agent/threading/fake_thread.rb +0 -43
  990. data/test/new_relic/agent/threading/thread_profile_test.rb +0 -271
  991. data/test/new_relic/agent/threading/threaded_test_case.rb +0 -18
  992. data/test/new_relic/agent/traced_method_stack_test.rb +0 -187
  993. data/test/new_relic/agent/transaction/abstract_segment_test.rb +0 -103
  994. data/test/new_relic/agent/transaction/attributes_test.rb +0 -268
  995. data/test/new_relic/agent/transaction/datastore_segment_test.rb +0 -336
  996. data/test/new_relic/agent/transaction/developer_mode_sample_buffer_test.rb +0 -75
  997. data/test/new_relic/agent/transaction/external_request_segment_test.rb +0 -330
  998. data/test/new_relic/agent/transaction/request_attributes_test.rb +0 -84
  999. data/test/new_relic/agent/transaction/segment_test.rb +0 -77
  1000. data/test/new_relic/agent/transaction/slowest_sample_buffer_test.rb +0 -67
  1001. data/test/new_relic/agent/transaction/synthetics_sample_buffer_test.rb +0 -38
  1002. data/test/new_relic/agent/transaction/trace_node_test.rb +0 -361
  1003. data/test/new_relic/agent/transaction/trace_test.rb +0 -394
  1004. data/test/new_relic/agent/transaction/tracing_test.rb +0 -176
  1005. data/test/new_relic/agent/transaction/xray_sample_buffer_test.rb +0 -71
  1006. data/test/new_relic/agent/transaction_error_primitive_test.rb +0 -117
  1007. data/test/new_relic/agent/transaction_event_aggregator_test.rb +0 -211
  1008. data/test/new_relic/agent/transaction_event_primitive_test.rb +0 -195
  1009. data/test/new_relic/agent/transaction_event_recorder_test.rb +0 -80
  1010. data/test/new_relic/agent/transaction_interrobang_test.rb +0 -33
  1011. data/test/new_relic/agent/transaction_metrics_test.rb +0 -113
  1012. data/test/new_relic/agent/transaction_sample_builder_test.rb +0 -215
  1013. data/test/new_relic/agent/transaction_sampler_test.rb +0 -860
  1014. data/test/new_relic/agent/transaction_state_test.rb +0 -122
  1015. data/test/new_relic/agent/transaction_test.rb +0 -1476
  1016. data/test/new_relic/agent/transaction_timings_test.rb +0 -91
  1017. data/test/new_relic/agent/utilization_data_test.rb +0 -258
  1018. data/test/new_relic/agent/vm/monotonic_gc_profiler_test.rb +0 -42
  1019. data/test/new_relic/agent/vm/mri_vm_test.rb +0 -40
  1020. data/test/new_relic/agent/vm/snapshot_test.rb +0 -13
  1021. data/test/new_relic/agent/vm_test.rb +0 -48
  1022. data/test/new_relic/agent/worker_loop_test.rb +0 -98
  1023. data/test/new_relic/agent_test.rb +0 -461
  1024. data/test/new_relic/cli/commands/deployments_test.rb +0 -136
  1025. data/test/new_relic/cli/commands/install_test.rb +0 -27
  1026. data/test/new_relic/coerce_test.rb +0 -93
  1027. data/test/new_relic/collection_helper_test.rb +0 -152
  1028. data/test/new_relic/control/class_methods_test.rb +0 -52
  1029. data/test/new_relic/control/frameworks/rails_test.rb +0 -29
  1030. data/test/new_relic/control/instance_methods_test.rb +0 -50
  1031. data/test/new_relic/control/instrumentation_test.rb +0 -41
  1032. data/test/new_relic/control_test.rb +0 -169
  1033. data/test/new_relic/data_container_tests.rb +0 -87
  1034. data/test/new_relic/dependency_detection_test.rb +0 -155
  1035. data/test/new_relic/dispatcher_test.rb +0 -60
  1036. data/test/new_relic/environment_report_test.rb +0 -107
  1037. data/test/new_relic/evil_server.rb +0 -55
  1038. data/test/new_relic/fake_collector.rb +0 -390
  1039. data/test/new_relic/fake_external_server.rb +0 -65
  1040. data/test/new_relic/fake_instance_metadata_service.rb +0 -45
  1041. data/test/new_relic/fake_rpm_site.rb +0 -35
  1042. data/test/new_relic/fake_server.rb +0 -104
  1043. data/test/new_relic/filtering_test_app.rb +0 -19
  1044. data/test/new_relic/framework_test.rb +0 -58
  1045. data/test/new_relic/http_client_test_cases.rb +0 -639
  1046. data/test/new_relic/language_support_test.rb +0 -98
  1047. data/test/new_relic/latest_changes_test.rb +0 -34
  1048. data/test/new_relic/license_test.rb +0 -125
  1049. data/test/new_relic/load_test.rb +0 -15
  1050. data/test/new_relic/local_environment_test.rb +0 -103
  1051. data/test/new_relic/marshalling_test_cases.rb +0 -183
  1052. data/test/new_relic/metric_data_test.rb +0 -144
  1053. data/test/new_relic/metric_parser/metric_parser_test.rb +0 -17
  1054. data/test/new_relic/metric_spec_test.rb +0 -144
  1055. data/test/new_relic/multiverse_helpers.rb +0 -289
  1056. data/test/new_relic/noticed_error_test.rb +0 -267
  1057. data/test/new_relic/rack/agent_hooks_test.rb +0 -44
  1058. data/test/new_relic/rack/agent_middleware_test.rb +0 -32
  1059. data/test/new_relic/rack/browser_monitoring_test.rb +0 -195
  1060. data/test/new_relic/rack/developer_mode/segment_summary_test.rb +0 -96
  1061. data/test/new_relic/rack/developer_mode_helper_test.rb +0 -136
  1062. data/test/new_relic/rack/developer_mode_test.rb +0 -96
  1063. data/test/new_relic/transaction_ignoring_test_cases.rb +0 -102
  1064. data/test/nullverse/default_source_require_test.rb +0 -21
  1065. data/test/nullverse/nullverse_helper.rb +0 -10
  1066. data/test/performance/README.md +0 -175
  1067. data/test/performance/lib/performance.rb +0 -38
  1068. data/test/performance/lib/performance/baseline.rb +0 -36
  1069. data/test/performance/lib/performance/baseline_compare_reporter.rb +0 -103
  1070. data/test/performance/lib/performance/baseline_save_reporter.rb +0 -24
  1071. data/test/performance/lib/performance/console_reporter.rb +0 -66
  1072. data/test/performance/lib/performance/formatting_helpers.rb +0 -22
  1073. data/test/performance/lib/performance/hako_client.rb +0 -31
  1074. data/test/performance/lib/performance/hako_reporter.rb +0 -26
  1075. data/test/performance/lib/performance/instrumentation/cpu_usage.rb +0 -26
  1076. data/test/performance/lib/performance/instrumentation/gc_stats.rb +0 -56
  1077. data/test/performance/lib/performance/instrumentation/perf_tools.rb +0 -30
  1078. data/test/performance/lib/performance/instrumentation/stackprof.rb +0 -46
  1079. data/test/performance/lib/performance/instrumentor.rb +0 -96
  1080. data/test/performance/lib/performance/json_reporter.rb +0 -15
  1081. data/test/performance/lib/performance/platform.rb +0 -31
  1082. data/test/performance/lib/performance/reporting.rb +0 -36
  1083. data/test/performance/lib/performance/result.rb +0 -104
  1084. data/test/performance/lib/performance/runner.rb +0 -221
  1085. data/test/performance/lib/performance/table.rb +0 -105
  1086. data/test/performance/lib/performance/test_case.rb +0 -152
  1087. data/test/performance/lib/performance/timer.rb +0 -40
  1088. data/test/performance/script/baselines +0 -102
  1089. data/test/performance/script/mega-runner +0 -37
  1090. data/test/performance/script/runner +0 -131
  1091. data/test/performance/suites/active_record.rb +0 -26
  1092. data/test/performance/suites/active_record_subscriber.rb +0 -100
  1093. data/test/performance/suites/agent_attributes.rb +0 -62
  1094. data/test/performance/suites/config.rb +0 -35
  1095. data/test/performance/suites/datastores.rb +0 -59
  1096. data/test/performance/suites/error_collector.rb +0 -28
  1097. data/test/performance/suites/external_segment.rb +0 -82
  1098. data/test/performance/suites/marshalling.rb +0 -148
  1099. data/test/performance/suites/queue_time.rb +0 -21
  1100. data/test/performance/suites/rack_middleware.rb +0 -136
  1101. data/test/performance/suites/redis.rb +0 -45
  1102. data/test/performance/suites/rules_engine.rb +0 -35
  1103. data/test/performance/suites/rum_autoinsertion.rb +0 -75
  1104. data/test/performance/suites/segment_terms_rule.rb +0 -27
  1105. data/test/performance/suites/sql_obfuscation.rb +0 -50
  1106. data/test/performance/suites/startup.rb +0 -12
  1107. data/test/performance/suites/stats_hash.rb +0 -31
  1108. data/test/performance/suites/thread_profiling.rb +0 -116
  1109. data/test/performance/suites/trace_execution_scoped.rb +0 -31
  1110. data/test/performance/suites/transaction_tracing.rb +0 -106
  1111. data/test/script/before_install/gemstash_mirror.sh +0 -10
  1112. data/test/script/before_script/install_mongodb.sh +0 -12
  1113. data/test/script/ci.sh +0 -15
  1114. data/test/script/external_server.rb +0 -31
  1115. data/test/script/path_hash.rb +0 -49
  1116. data/test/test_helper.rb +0 -59
  1117. data/ui/helpers/developer_mode_helper.rb +0 -325
  1118. data/ui/helpers/google_pie_chart.rb +0 -54
  1119. data/ui/views/layouts/newrelic_default.rhtml +0 -48
  1120. data/ui/views/newrelic/_explain_plans.rhtml +0 -27
  1121. data/ui/views/newrelic/_sample.rhtml +0 -20
  1122. data/ui/views/newrelic/_segment.rhtml +0 -28
  1123. data/ui/views/newrelic/_segment_limit_message.rhtml +0 -1
  1124. data/ui/views/newrelic/_segment_row.rhtml +0 -12
  1125. data/ui/views/newrelic/_show_sample_detail.rhtml +0 -24
  1126. data/ui/views/newrelic/_show_sample_sql.rhtml +0 -24
  1127. data/ui/views/newrelic/_show_sample_summary.rhtml +0 -3
  1128. data/ui/views/newrelic/_sql_row.rhtml +0 -16
  1129. data/ui/views/newrelic/_stack_trace.rhtml +0 -15
  1130. data/ui/views/newrelic/_table.rhtml +0 -12
  1131. data/ui/views/newrelic/explain_sql.rhtml +0 -43
  1132. data/ui/views/newrelic/file/images/arrow-close.png +0 -0
  1133. data/ui/views/newrelic/file/images/arrow-open.png +0 -0
  1134. data/ui/views/newrelic/file/images/blue_bar.gif +0 -0
  1135. data/ui/views/newrelic/file/images/file_icon.png +0 -0
  1136. data/ui/views/newrelic/file/images/gray_bar.gif +0 -0
  1137. data/ui/views/newrelic/file/images/new-relic-rpm-desktop.gif +0 -0
  1138. data/ui/views/newrelic/file/images/new_relic_rpm_desktop.gif +0 -0
  1139. data/ui/views/newrelic/file/images/textmate.png +0 -0
  1140. data/ui/views/newrelic/file/javascript/jquery-1.4.2.js +0 -6243
  1141. data/ui/views/newrelic/file/javascript/transaction_sample.js +0 -123
  1142. data/ui/views/newrelic/file/stylesheets/style.css +0 -490
  1143. data/ui/views/newrelic/index.rhtml +0 -70
  1144. data/ui/views/newrelic/sample_not_found.rhtml +0 -2
  1145. data/ui/views/newrelic/show_sample.rhtml +0 -81
  1146. data/ui/views/newrelic/threads.rhtml +0 -45
  1147. data/vendor/gems/metric_parser-0.1.0.pre1/.specification +0 -116
  1148. data/vendor/gems/metric_parser-0.1.0.pre1/lib/metric_parser.rb +0 -5
  1149. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser.rb +0 -70
  1150. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +0 -18
  1151. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +0 -35
  1152. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +0 -37
  1153. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +0 -93
  1154. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +0 -11
  1155. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +0 -50
  1156. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +0 -71
  1157. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +0 -47
  1158. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +0 -21
  1159. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +0 -52
  1160. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +0 -28
  1161. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +0 -32
  1162. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +0 -21
  1163. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/errors.rb +0 -15
  1164. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +0 -59
  1165. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +0 -44
  1166. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +0 -24
  1167. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +0 -11
  1168. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +0 -35
  1169. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +0 -21
  1170. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +0 -38
  1171. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +0 -11
  1172. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +0 -56
  1173. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +0 -138
  1174. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/middleware.rb +0 -33
  1175. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/nested.rb +0 -23
  1176. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +0 -31
  1177. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +0 -44
  1178. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +0 -11
  1179. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +0 -11
  1180. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +0 -11
  1181. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_init.rb +0 -11
  1182. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +0 -31
  1183. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +0 -19
  1184. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +0 -58
  1185. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_controller.rb +0 -10
  1186. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_view.rb +0 -10
  1187. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +0 -24
  1188. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +0 -24
  1189. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/version.rb +0 -9
  1190. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +0 -74
  1191. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb +0 -22
  1192. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb +0 -18
  1193. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +0 -137
@@ -1,14 +1,18 @@
1
1
  # encoding: utf-8
2
2
  # This file is distributed under New Relic's license terms.
3
- # See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
3
+ # See https://github.com/newrelic/newrelic-ruby-agent/blob/main/LICENSE for complete details.
4
+ # frozen_string_literal: true
4
5
 
5
- require 'new_relic/agent/transaction_timings'
6
6
  require 'new_relic/agent/instrumentation/queue_time'
7
7
  require 'new_relic/agent/transaction_metrics'
8
8
  require 'new_relic/agent/method_tracer_helpers'
9
- require 'new_relic/agent/transaction/attributes'
9
+ require 'new_relic/agent/attributes'
10
10
  require 'new_relic/agent/transaction/request_attributes'
11
11
  require 'new_relic/agent/transaction/tracing'
12
+ require 'new_relic/agent/transaction/distributed_tracer'
13
+ require 'new_relic/agent/transaction_time_aggregator'
14
+ require 'new_relic/agent/deprecator'
15
+ require 'new_relic/agent/guid_generator'
12
16
 
13
17
  module NewRelic
14
18
  module Agent
@@ -20,28 +24,36 @@ module NewRelic
20
24
  include Tracing
21
25
 
22
26
  # for nested transactions
23
- SUBTRANSACTION_PREFIX = 'Nested/'.freeze
24
- CONTROLLER_PREFIX = 'Controller/'.freeze
25
- MIDDLEWARE_PREFIX = 'Middleware/Rack/'.freeze
26
- TASK_PREFIX = 'OtherTransaction/Background/'.freeze
27
- RAKE_PREFIX = 'OtherTransaction/Rake/'.freeze
28
- RACK_PREFIX = 'Controller/Rack/'.freeze
29
- SINATRA_PREFIX = 'Controller/Sinatra/'.freeze
30
- GRAPE_PREFIX = 'Controller/Grape/'.freeze
31
- ACTION_CABLE_PREFIX = 'Controller/ActionCable/'.freeze
32
- OTHER_TRANSACTION_PREFIX = 'OtherTransaction/'.freeze
33
-
34
- CONTROLLER_MIDDLEWARE_PREFIX = 'Controller/Middleware/Rack'.freeze
35
-
36
- NESTED_TRACE_STOP_OPTIONS = { :metric => true }.freeze
37
- WEB_TRANSACTION_CATEGORIES = [:controller, :uri, :rack, :sinatra, :grape, :middleware, :action_cable].freeze
27
+ NESTED_TRANSACTION_PREFIX = "Nested/"
28
+ CONTROLLER_PREFIX = "Controller/"
29
+ MIDDLEWARE_PREFIX = "Middleware/Rack/"
30
+ OTHER_TRANSACTION_PREFIX = "OtherTransaction/"
31
+ TASK_PREFIX = "#{OTHER_TRANSACTION_PREFIX}Background/"
32
+ RAKE_PREFIX = "#{OTHER_TRANSACTION_PREFIX}Rake/"
33
+ MESSAGE_PREFIX = "#{OTHER_TRANSACTION_PREFIX}Message/"
34
+ RACK_PREFIX = "#{CONTROLLER_PREFIX}Rack/"
35
+ SINATRA_PREFIX = "#{CONTROLLER_PREFIX}Sinatra/"
36
+ GRAPE_PREFIX = "#{CONTROLLER_PREFIX}Grape/"
37
+ ACTION_CABLE_PREFIX = "#{CONTROLLER_PREFIX}ActionCable/"
38
+
39
+ WEB_TRANSACTION_CATEGORIES = [:web, :controller, :uri, :rack, :sinatra, :grape, :middleware, :action_cable].freeze
38
40
  TRANSACTION_NAMING_SOURCES = [:child, :api].freeze
39
41
 
40
- MIDDLEWARE_SUMMARY_METRICS = ['Middleware/all'.freeze].freeze
41
- EMPTY_SUMMARY_METRICS = [].freeze
42
+ MIDDLEWARE_SUMMARY_METRICS = ["Middleware/all"].freeze
43
+ WEB_SUMMARY_METRIC = "HttpDispatcher"
44
+ OTHER_SUMMARY_METRIC = "#{OTHER_TRANSACTION_PREFIX}all"
45
+ QUEUE_TIME_METRIC = "WebFrontend/QueueTime"
42
46
 
43
- TRACE_OPTIONS_SCOPED = { :metric => true, :scoped_metric => true }.freeze
44
- TRACE_OPTIONS_UNSCOPED = { :metric => true, :scoped_metric => false }.freeze
47
+ APDEX_S = "S"
48
+ APDEX_T = "T"
49
+ APDEX_F = "F"
50
+ APDEX_ALL_METRIC = "ApdexAll"
51
+ APDEX_METRIC = "Apdex"
52
+ APDEX_OTHER_METRIC = "ApdexOther"
53
+ APDEX_TXN_METRIC_PREFIX = "Apdex/"
54
+ APDEX_OTHER_TXN_METRIC_PREFIX = "ApdexOther/Transaction/"
55
+
56
+ JRUBY_CPU_TIME_ERROR = "Error calculating JRuby CPU Time"
45
57
 
46
58
  # reference to the transaction state managing this transaction
47
59
  attr_accessor :state
@@ -60,16 +72,22 @@ module NewRelic
60
72
  :process_cpu_start,
61
73
  :http_response_code,
62
74
  :response_content_length,
63
- :response_content_type
75
+ :response_content_type,
76
+ :parent_span_id
64
77
 
65
78
  attr_reader :guid,
66
79
  :metrics,
67
80
  :gc_start_snapshot,
68
81
  :category,
69
- :frame_stack,
70
- :cat_path_hashes,
71
82
  :attributes,
72
- :payload
83
+ :payload,
84
+ :nesting_max_depth,
85
+ :segments,
86
+ :end_time,
87
+ :duration
88
+
89
+ attr_writer :sampled,
90
+ :priority
73
91
 
74
92
  # Populated with the trace sample once this transaction is completed.
75
93
  attr_reader :transaction_trace
@@ -79,28 +97,37 @@ module NewRelic
79
97
 
80
98
  # Return the currently active transaction, or nil.
81
99
  def self.tl_current
82
- TransactionState.tl_get.current_transaction
100
+ Tracer.current_transaction
83
101
  end
84
102
 
85
- def self.set_default_transaction_name(name, category = nil, node_name = nil) #THREAD_LOCAL_ACCESS
103
+ def self.set_default_transaction_name(partial_name, category = nil) #THREAD_LOCAL_ACCESS
86
104
  txn = tl_current
87
- name = txn.make_transaction_name(name, category)
88
- txn.name_last_frame(node_name || name)
105
+ name = name_from_partial(partial_name, category || txn.category)
89
106
  txn.set_default_transaction_name(name, category)
90
107
  end
91
108
 
92
- def self.set_overriding_transaction_name(name, category = nil) #THREAD_LOCAL_ACCESS
109
+ def self.set_overriding_transaction_name(partial_name, category = nil) #THREAD_LOCAL_ACCESS
93
110
  txn = tl_current
94
111
  return unless txn
95
112
 
96
- name = txn.make_transaction_name(name, category)
97
-
98
- txn.name_last_frame(name)
113
+ name = name_from_partial(partial_name, category || txn.category)
99
114
  txn.set_overriding_transaction_name(name, category)
100
115
  end
101
116
 
117
+ def self.name_from_partial(partial_name, category)
118
+ namer = Instrumentation::ControllerInstrumentation::TransactionNamer
119
+ "#{namer.prefix_for_category(self, category)}#{partial_name}"
120
+ end
121
+
102
122
  def self.wrap(state, name, category, options = {})
103
- Transaction.start(state, category, options.merge(:transaction_name => name))
123
+ Deprecator.deprecate 'Transaction.wrap',
124
+ 'Tracer#in_transaction'
125
+
126
+ finishable = Tracer.start_transaction_or_segment(
127
+ name: name,
128
+ category: category,
129
+ options: options
130
+ )
104
131
 
105
132
  begin
106
133
  # We shouldn't raise from Transaction.start, but only wrap the yield
@@ -110,96 +137,36 @@ module NewRelic
110
137
  Transaction.notice_error(e)
111
138
  raise e
112
139
  ensure
113
- Transaction.stop(state)
140
+ finishable.finish if finishable
114
141
  end
115
142
  end
116
143
 
117
- def self.start(state, category, options)
118
- category ||= :controller
119
- txn = state.current_transaction
120
-
121
- if txn
122
- txn.create_nested_frame(state, category, options)
123
- else
124
- txn = start_new_transaction(state, category, options)
125
- end
126
-
127
- txn
128
- rescue => e
129
- NewRelic::Agent.logger.error("Exception during Transaction.start", e)
130
- nil
131
- end
132
-
133
144
  def self.start_new_transaction(state, category, options)
134
145
  txn = Transaction.new(category, options)
135
146
  state.reset(txn)
136
147
  txn.state = state
137
- txn.start(state)
148
+ txn.start
138
149
  txn
139
150
  end
140
151
 
141
- FAILED_TO_STOP_MESSAGE = "Failed during Transaction.stop because there is no current transaction"
142
-
143
- def self.stop(state, end_time=Time.now)
144
- txn = state.current_transaction
145
-
146
- if txn.nil?
147
- NewRelic::Agent.logger.error(FAILED_TO_STOP_MESSAGE)
148
- return
149
- end
150
-
151
- nested_frame = txn.frame_stack.pop
152
-
153
- if txn.frame_stack.empty?
154
- txn.stop(state, end_time, nested_frame)
155
- state.reset
156
- else
157
- nested_name = nested_transaction_name(nested_frame.name)
158
-
159
- if nested_name.start_with?(MIDDLEWARE_PREFIX)
160
- summary_metrics = MIDDLEWARE_SUMMARY_METRICS
161
- else
162
- summary_metrics = EMPTY_SUMMARY_METRICS
163
- end
164
-
165
- NewRelic::Agent::MethodTracerHelpers.trace_execution_scoped_footer(
166
- state,
167
- nested_frame.start_time.to_f,
168
- nested_name,
169
- summary_metrics,
170
- nested_frame,
171
- NESTED_TRACE_STOP_OPTIONS,
172
- end_time.to_f)
173
- end
174
-
175
- :transaction_stopped
176
- rescue => e
177
- state.reset
178
- NewRelic::Agent.logger.error("Exception during Transaction.stop", e)
179
- nil
180
- end
181
-
182
152
  def self.nested_transaction_name(name)
183
153
  if name.start_with?(CONTROLLER_PREFIX) || name.start_with?(OTHER_TRANSACTION_PREFIX)
184
- "#{SUBTRANSACTION_PREFIX}#{name}"
154
+ "#{NESTED_TRANSACTION_PREFIX}#{name}"
185
155
  else
186
156
  name
187
157
  end
188
158
  end
189
159
 
190
- # Indicate that you don't want to keep the currently saved transaction
191
- # information
192
- def self.abort_transaction! #THREAD_LOCAL_ACCESS
193
- state = NewRelic::Agent::TransactionState.tl_get
194
- txn = state.current_transaction
195
- txn.abort_transaction!(state) if txn
160
+ # discards the currently saved transaction information
161
+ def self.abort_transaction!
162
+ if txn = Tracer.current_transaction
163
+ txn.abort_transaction!
164
+ end
196
165
  end
197
166
 
198
167
  # See NewRelic::Agent.notice_error for options and commentary
199
- def self.notice_error(e, options={}) #THREAD_LOCAL_ACCESS
200
- state = NewRelic::Agent::TransactionState.tl_get
201
- txn = state.current_transaction
202
- if txn
168
+ def self.notice_error(e, options={})
169
+ if txn = Tracer.current_transaction
203
170
  txn.notice_error(e, options)
204
171
  elsif NewRelic::Agent.instance
205
172
  NewRelic::Agent.instance.error_collector.notice_error(e, options)
@@ -212,6 +179,8 @@ module NewRelic
212
179
  # @api public
213
180
  #
214
181
  def self.recording_web_transaction? #THREAD_LOCAL_ACCESS
182
+ NewRelic::Agent.record_api_supportability_metric(:recording_web_transaction?)
183
+
215
184
  txn = tl_current
216
185
  txn && txn.recording_web_transaction?
217
186
  end
@@ -239,6 +208,7 @@ module NewRelic
239
208
 
240
209
  def add_agent_attribute(key, value, default_destinations)
241
210
  @attributes.add_agent_attribute(key, value, default_destinations)
211
+ current_segment.add_agent_attribute(key, value) if current_segment
242
212
  end
243
213
 
244
214
  def self.merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
@@ -251,6 +221,7 @@ module NewRelic
251
221
 
252
222
  def merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
253
223
  @attributes.merge_untrusted_agent_attributes(attributes, prefix, default_destinations)
224
+ current_segment.merge_untrusted_agent_attributes(attributes, prefix, default_destinations) if current_segment
254
225
  end
255
226
 
256
227
  @@java_classes_loaded = false
@@ -266,8 +237,9 @@ module NewRelic
266
237
  end
267
238
 
268
239
  def initialize(category, options)
269
- @frame_stack = []
270
- @has_children = false
240
+ @nesting_max_depth = 0
241
+ @current_segment = nil
242
+ @segments = []
271
243
 
272
244
  self.default_name = options[:transaction_name]
273
245
  @overridden_name = nil
@@ -275,6 +247,8 @@ module NewRelic
275
247
 
276
248
  @category = category
277
249
  @start_time = Time.now
250
+ @end_time = nil
251
+ @duration = nil
278
252
  @apdex_start = options[:apdex_start_time] || @start_time
279
253
  @jruby_cpu_start = jruby_cpu_time
280
254
  @process_cpu_start = process_cpu
@@ -283,14 +257,18 @@ module NewRelic
283
257
 
284
258
  @exceptions = {}
285
259
  @metrics = TransactionMetrics.new
286
- @guid = generate_guid
287
- @cat_path_hashes = nil
260
+ @guid = NewRelic::Agent::GuidGenerator.generate_guid
288
261
 
289
262
  @ignore_this_transaction = false
290
- @ignore_apdex = false
291
- @ignore_enduser = false
263
+ @ignore_apdex = options.fetch(:ignore_apdex, false)
264
+ @ignore_enduser = options.fetch(:ignore_enduser, false)
292
265
  @ignore_trace = false
293
266
 
267
+ @sampled = nil
268
+ @priority = nil
269
+
270
+ @starting_thread_id = Thread.current.object_id
271
+
294
272
  @attributes = Attributes.new(NewRelic::Agent.instance.attribute_filter)
295
273
 
296
274
  merge_request_parameters(@filtered_params)
@@ -302,6 +280,30 @@ module NewRelic
302
280
  end
303
281
  end
304
282
 
283
+ def distributed_tracer
284
+ @distributed_tracer ||= DistributedTracer.new(self)
285
+ end
286
+
287
+ def sampled?
288
+ return unless Agent.config[:'distributed_tracing.enabled']
289
+ if @sampled.nil?
290
+ @sampled = NewRelic::Agent.instance.adaptive_sampler.sampled?
291
+ end
292
+ @sampled
293
+ end
294
+
295
+ def trace_id
296
+ @trace_id ||= NewRelic::Agent::GuidGenerator.generate_guid 32
297
+ end
298
+
299
+ def trace_id=(value)
300
+ @trace_id = value
301
+ end
302
+
303
+ def priority
304
+ @priority ||= (sampled? ? 1.0 + rand : rand).round(NewRelic::PRIORITY_PRECISION)
305
+ end
306
+
305
307
  def referer
306
308
  @request_attributes && @request_attributes.referer
307
309
  end
@@ -340,28 +342,10 @@ module NewRelic
340
342
  @default_name = Helper.correctly_encoded(name)
341
343
  end
342
344
 
343
- def create_nested_frame(state, category, options)
344
- @has_children = true
345
- if options[:filtered_params] && !options[:filtered_params].empty?
346
- @filtered_params = options[:filtered_params]
347
- merge_request_parameters(options[:filtered_params])
348
- end
349
-
350
- frame_stack.push NewRelic::Agent::MethodTracerHelpers.trace_execution_scoped_header(state, Time.now.to_f)
351
- name_last_frame(options[:transaction_name])
352
-
353
- set_default_transaction_name(options[:transaction_name], category)
354
- end
355
-
356
345
  def merge_request_parameters(params)
357
346
  merge_untrusted_agent_attributes(params, :'request.parameters', AttributeFilter::DST_NONE)
358
347
  end
359
348
 
360
- def make_transaction_name(name, category=nil)
361
- namer = Instrumentation::ControllerInstrumentation::TransactionNamer
362
- "#{namer.prefix_for_category(self, category)}#{name}"
363
- end
364
-
365
349
  def set_default_transaction_name(name, category)
366
350
  return log_frozen_name(name) if name_frozen?
367
351
  if influences_transaction_name?(category)
@@ -378,27 +362,25 @@ module NewRelic
378
362
  end
379
363
  end
380
364
 
381
- def name_last_frame(name)
382
- frame_stack.last.name = name
383
- end
384
-
385
365
  def log_frozen_name(name)
386
366
  NewRelic::Agent.logger.warn("Attempted to rename transaction to '#{name}' after transaction name was already frozen as '#{@frozen_name}'.")
387
367
  nil
388
368
  end
389
369
 
390
370
  def influences_transaction_name?(category)
391
- !category || frame_stack.size == 1 || similar_category?(category)
371
+ !category || nesting_max_depth == 1 || similar_category?(category)
392
372
  end
393
373
 
394
374
  def best_name
395
- @frozen_name || @overridden_name ||
396
- @default_name || NewRelic::Agent::UNKNOWN_METRIC
375
+ @frozen_name ||
376
+ @overridden_name ||
377
+ @default_name ||
378
+ NewRelic::Agent::UNKNOWN_METRIC
397
379
  end
398
380
 
399
- def name_set?
400
- (@overridden_name || @default_name) ? true : false
401
- end
381
+ # For common interface with Trace
382
+ alias_method :transaction_name, :best_name
383
+ # End common interface
402
384
 
403
385
  def promoted_transaction_name(name)
404
386
  if name.start_with?(MIDDLEWARE_PREFIX)
@@ -431,27 +413,75 @@ module NewRelic
431
413
  @frozen_name ? true : false
432
414
  end
433
415
 
434
- def start(state)
416
+ def start
435
417
  return if !state.is_execution_traced?
436
418
 
437
- transaction_sampler.on_start_transaction(state, start_time)
438
419
  sql_sampler.on_start_transaction(state, start_time, request_path)
439
420
  NewRelic::Agent.instance.events.notify(:start_transaction)
440
- NewRelic::Agent::BusyCalculator.dispatcher_start(start_time)
421
+ NewRelic::Agent::TransactionTimeAggregator.transaction_start(start_time)
422
+
423
+ ignore! if user_defined_rules_ignore?
424
+
425
+ create_initial_segment
426
+ Segment.merge_untrusted_agent_attributes \
427
+ @filtered_params,
428
+ :'request.parameters',
429
+ AttributeFilter::DST_SPAN_EVENTS
430
+ end
431
+
432
+ def initial_segment
433
+ segments.first
434
+ end
435
+
436
+ def create_initial_segment
437
+ segment = create_segment @default_name
438
+ segment.record_scoped_metric = false
439
+ end
440
+
441
+ def create_segment(name)
442
+ summary_metrics = nil
443
+
444
+ if name.start_with?(MIDDLEWARE_PREFIX)
445
+ summary_metrics = MIDDLEWARE_SUMMARY_METRICS
446
+ end
447
+
448
+ @nesting_max_depth += 1
449
+
450
+ segment = Tracer.start_segment(
451
+ name: name,
452
+ unscoped_metrics: summary_metrics
453
+ )
441
454
 
442
- frame_stack.push NewRelic::Agent::MethodTracerHelpers.trace_execution_scoped_header(state, start_time.to_f)
443
- name_last_frame @default_name
455
+ segment
456
+ end
457
+
458
+ def create_nested_segment(category, options)
459
+ if options[:filtered_params] && !options[:filtered_params].empty?
460
+ @filtered_params = options[:filtered_params]
461
+ merge_request_parameters(options[:filtered_params])
462
+ end
463
+
464
+ @ignore_apdex = options[:ignore_apdex] if options.key? :ignore_apdex
465
+ @ignore_enduser = options[:ignore_enduser] if options.key? :ignore_enduser
466
+
467
+ nest_initial_segment if nesting_max_depth == 1
468
+ nested_name = self.class.nested_transaction_name options[:transaction_name]
469
+ segment = create_segment nested_name
470
+ set_default_transaction_name(options[:transaction_name], category)
471
+ segment
472
+ end
473
+
474
+ def nest_initial_segment
475
+ self.initial_segment.name = self.class.nested_transaction_name initial_segment.name
476
+ initial_segment.record_scoped_metric = true
444
477
  end
445
478
 
446
479
  # Call this to ensure that the current transaction trace is not saved
447
480
  # To fully ignore all metrics and errors, use ignore! instead.
448
- def abort_transaction!(state)
481
+ def abort_transaction!
449
482
  @ignore_trace = true
450
483
  end
451
484
 
452
- WEB_SUMMARY_METRIC = 'HttpDispatcher'.freeze
453
- OTHER_SUMMARY_METRIC = 'OtherTransaction/all'.freeze
454
-
455
485
  def summary_metrics
456
486
  if @frozen_name.start_with?(CONTROLLER_PREFIX)
457
487
  [WEB_SUMMARY_METRIC]
@@ -473,40 +503,29 @@ module NewRelic
473
503
  name.start_with?(MIDDLEWARE_PREFIX)
474
504
  end
475
505
 
476
- def stop(state, end_time, outermost_frame)
477
- return if !state.is_execution_traced?
506
+ def finish
507
+ return unless state.is_execution_traced?
508
+ @end_time = Time.now
509
+ @duration = @end_time.to_f - @start_time.to_f
478
510
  freeze_name_and_execute_if_not_ignored
479
- ignore! if user_defined_rules_ignore?
480
511
 
481
- if @has_children
482
- name = Transaction.nested_transaction_name(outermost_frame.name)
483
- trace_options = TRACE_OPTIONS_SCOPED
484
- else
485
- name = @frozen_name
486
- trace_options = TRACE_OPTIONS_UNSCOPED
512
+ if nesting_max_depth == 1
513
+ initial_segment.name = @frozen_name
487
514
  end
488
515
 
489
- # These metrics are recorded here instead of in record_summary_metrics
490
- # in order to capture the exclusive time associated with the outer-most
491
- # TT node.
492
- if needs_middleware_summary_metrics?(name)
493
- summary_metrics_with_exclusive_time = MIDDLEWARE_SUMMARY_METRICS
494
- else
495
- summary_metrics_with_exclusive_time = EMPTY_SUMMARY_METRICS
496
- end
497
-
498
- NewRelic::Agent::MethodTracerHelpers.trace_execution_scoped_footer(
499
- state,
500
- start_time.to_f,
501
- name,
502
- summary_metrics_with_exclusive_time,
503
- outermost_frame,
504
- trace_options,
505
- end_time.to_f)
516
+ initial_segment.transaction_name = @frozen_name
517
+ assign_segment_dt_attributes
518
+ assign_agent_attributes
519
+ initial_segment.finish
506
520
 
507
- NewRelic::Agent::BusyCalculator.dispatcher_finish(end_time)
521
+ NewRelic::Agent::TransactionTimeAggregator.transaction_stop(@end_time, @starting_thread_id)
508
522
 
509
- commit!(state, end_time, name) unless @ignore_this_transaction
523
+ commit!(initial_segment.name) unless @ignore_this_transaction
524
+ rescue => e
525
+ NewRelic::Agent.logger.error("Exception during Transaction#finish", e)
526
+ nil
527
+ ensure
528
+ state.reset
510
529
  end
511
530
 
512
531
  def user_defined_rules_ignore?
@@ -518,26 +537,34 @@ module NewRelic
518
537
  end
519
538
  end
520
539
 
521
- def commit!(state, end_time, outermost_node_name)
522
- assign_agent_attributes
523
- assign_intrinsics(state)
540
+ def commit!(outermost_node_name)
541
+ generate_payload
542
+ assign_intrinsics
524
543
 
525
- @transaction_trace = transaction_sampler.on_finishing_transaction(state, self, end_time)
544
+ finalize_segments
545
+
546
+ @transaction_trace = transaction_sampler.on_finishing_transaction(self)
526
547
  sql_sampler.on_finishing_transaction(state, @frozen_name)
527
548
 
528
- record_summary_metrics(outermost_node_name, end_time)
529
- record_apdex(state, end_time) unless ignore_apdex?
549
+ record_summary_metrics(outermost_node_name)
550
+ record_total_time_metrics
551
+ record_apdex unless ignore_apdex?
530
552
  record_queue_time
531
-
532
- generate_payload(state, start_time, end_time)
553
+ distributed_tracer.record_metrics
533
554
 
534
555
  record_exceptions
535
556
  record_transaction_event
536
-
537
557
  merge_metrics
538
558
  send_transaction_finished_event
539
559
  end
540
560
 
561
+ def assign_segment_dt_attributes
562
+ dt_payload = distributed_tracer.trace_state_payload || distributed_tracer.distributed_trace_payload
563
+ parent_attributes = {}
564
+ DistributedTraceAttributes.copy_parent_attributes self, dt_payload, parent_attributes
565
+ parent_attributes.each { |k, v| initial_segment.add_agent_attribute k, v }
566
+ end
567
+
541
568
  def assign_agent_attributes
542
569
  default_destinations = AttributeFilter::DST_TRANSACTION_TRACER |
543
570
  AttributeFilter::DST_TRANSACTION_EVENTS |
@@ -545,6 +572,9 @@ module NewRelic
545
572
 
546
573
  if http_response_code
547
574
  add_agent_attribute(:httpResponseCode, http_response_code.to_s, default_destinations)
575
+ # Sending status code as an int with http.statusCode key is correct
576
+ # The above attribute is deprecated and should be removed in agent version 7.0.0
577
+ add_agent_attribute(:'http.statusCode', http_response_code, default_destinations)
548
578
  end
549
579
 
550
580
  if response_content_length
@@ -565,7 +595,9 @@ module NewRelic
565
595
  end
566
596
  end
567
597
 
568
- def assign_intrinsics(state)
598
+ def assign_intrinsics
599
+ attributes.add_intrinsic_attribute(:priority, priority)
600
+
569
601
  if gc_time = calculate_gc_time
570
602
  attributes.add_intrinsic_attribute(:gc_time, gc_time)
571
603
  end
@@ -580,10 +612,7 @@ module NewRelic
580
612
  attributes.add_intrinsic_attribute(:synthetics_monitor_id, synthetics_monitor_id)
581
613
  end
582
614
 
583
- if state.is_cross_app?
584
- attributes.add_intrinsic_attribute(:trip_id, cat_trip_id(state))
585
- attributes.add_intrinsic_attribute(:path_hash, cat_path_hash(state))
586
- end
615
+ distributed_tracer.assign_intrinsics
587
616
  end
588
617
 
589
618
  def calculate_gc_time
@@ -591,12 +620,22 @@ module NewRelic
591
620
  NewRelic::Agent::StatsEngine::GCProfiler.record_delta(gc_start_snapshot, gc_stop_snapshot)
592
621
  end
593
622
 
623
+ # This method returns transport_duration in seconds. Transport duration
624
+ # is stored in milliseconds on the payload, but it's needed in seconds
625
+ # for metrics and intrinsics.
626
+ def calculate_transport_duration distributed_trace_payload
627
+ return unless distributed_trace_payload
628
+
629
+ duration = (start_time.to_f * 1000 - distributed_trace_payload.timestamp) / 1000
630
+ duration < 0 ? 0 : duration
631
+ end
632
+
594
633
  # The summary metrics recorded by this method all end up with a duration
595
634
  # equal to the transaction itself, and an exclusive time of zero.
596
- def record_summary_metrics(outermost_node_name, end_time)
635
+ def record_summary_metrics(outermost_node_name)
597
636
  metrics = summary_metrics
598
637
  metrics << @frozen_name unless @frozen_name == outermost_node_name
599
- @metrics.record_unscoped(metrics, end_time.to_f - start_time.to_f, 0)
638
+ @metrics.record_unscoped(metrics, duration, 0)
600
639
  end
601
640
 
602
641
  # This event is fired when the transaction is fully completed. The metric
@@ -605,8 +644,7 @@ module NewRelic
605
644
  agent.events.notify(:transaction_finished, payload)
606
645
  end
607
646
 
608
- def generate_payload(state, start_time, end_time)
609
- duration = end_time.to_f - start_time.to_f
647
+ def generate_payload
610
648
  @payload = {
611
649
  :name => @frozen_name,
612
650
  :bucket => recording_web_transaction? ? :request : :background,
@@ -614,39 +652,17 @@ module NewRelic
614
652
  :duration => duration,
615
653
  :metrics => @metrics,
616
654
  :attributes => @attributes,
617
- :error => false
655
+ :error => false,
656
+ :priority => priority
618
657
  }
619
- append_cat_info(state, duration, @payload)
620
- append_apdex_perf_zone(duration, @payload)
621
- append_synthetics_to(state, @payload)
622
- append_referring_transaction_guid_to(state, @payload)
623
- end
624
-
625
- def include_guid?(state, duration)
626
- state.is_cross_app? || is_synthetics_request?
627
- end
628
-
629
- def cat_trip_id(state)
630
- NewRelic::Agent.instance.cross_app_monitor.client_referring_transaction_trip_id(state) || guid
631
- end
632
658
 
633
- def cat_path_hash(state)
634
- referring_path_hash = cat_referring_path_hash(state) || '0'
635
- seed = referring_path_hash.to_i(16)
636
- result = NewRelic::Agent.instance.cross_app_monitor.path_hash(best_name, seed)
637
- record_cat_path_hash(result)
638
- result
659
+ distributed_tracer.append_payload(@payload)
660
+ append_apdex_perf_zone(@payload)
661
+ append_synthetics_to(@payload)
639
662
  end
640
663
 
641
- def record_cat_path_hash(hash)
642
- @cat_path_hashes ||= []
643
- if @cat_path_hashes.size < 10 && !@cat_path_hashes.include?(hash)
644
- @cat_path_hashes << hash
645
- end
646
- end
647
-
648
- def cat_referring_path_hash(state)
649
- NewRelic::Agent.instance.cross_app_monitor.client_referring_transaction_path_hash(state)
664
+ def include_guid?
665
+ distributed_tracer.is_cross_app? || is_synthetics_request?
650
666
  end
651
667
 
652
668
  def is_synthetics_request?
@@ -678,11 +694,7 @@ module NewRelic
678
694
  info[4]
679
695
  end
680
696
 
681
- APDEX_S = 'S'.freeze
682
- APDEX_T = 'T'.freeze
683
- APDEX_F = 'F'.freeze
684
-
685
- def append_apdex_perf_zone(duration, payload)
697
+ def append_apdex_perf_zone(payload)
686
698
  if recording_web_transaction?
687
699
  bucket = apdex_bucket(duration, apdex_t)
688
700
  elsif background_apdex_t = transaction_specific_apdex_t
@@ -700,29 +712,7 @@ module NewRelic
700
712
  payload[:apdex_perf_zone] = bucket_str if bucket_str
701
713
  end
702
714
 
703
- def append_cat_info(state, duration, payload)
704
- return unless include_guid?(state, duration)
705
- payload[:guid] = guid
706
-
707
- return unless state.is_cross_app?
708
- trip_id = cat_trip_id(state)
709
- path_hash = cat_path_hash(state)
710
- referring_path_hash = cat_referring_path_hash(state)
711
-
712
- payload[:cat_trip_id] = trip_id if trip_id
713
- payload[:cat_referring_path_hash] = referring_path_hash if referring_path_hash
714
-
715
- if path_hash
716
- payload[:cat_path_hash] = path_hash
717
-
718
- alternate_path_hashes = cat_path_hashes - [path_hash]
719
- unless alternate_path_hashes.empty?
720
- payload[:cat_alternate_path_hashes] = alternate_path_hashes
721
- end
722
- end
723
- end
724
-
725
- def append_synthetics_to(state, payload)
715
+ def append_synthetics_to(payload)
726
716
  return unless is_synthetics_request?
727
717
 
728
718
  payload[:synthetics_resource_id] = synthetics_resource_id
@@ -730,13 +720,6 @@ module NewRelic
730
720
  payload[:synthetics_monitor_id] = synthetics_monitor_id
731
721
  end
732
722
 
733
- def append_referring_transaction_guid_to(state, payload)
734
- referring_guid = NewRelic::Agent.instance.cross_app_monitor.client_referring_transaction_guid(state)
735
- if referring_guid
736
- payload[:referring_transaction_guid] = referring_guid
737
- end
738
- end
739
-
740
723
  def merge_metrics
741
724
  NewRelic::Agent.instance.stats_engine.merge_transaction_metrics!(@metrics, best_name)
742
725
  end
@@ -749,13 +732,21 @@ module NewRelic
749
732
  options[:metric] = best_name
750
733
  options[:attributes] = @attributes
751
734
 
752
- error_recorded = !!agent.error_collector.notice_error(exception, options) || error_recorded
735
+ span_id = options.delete :span_id
736
+ error_recorded = !!agent.error_collector.notice_error(exception, options, span_id) || error_recorded
753
737
  end
754
738
  payload[:error] = error_recorded if payload
755
739
  end
756
740
 
757
741
  # Do not call this. Invoke the class method instead.
758
742
  def notice_error(error, options={}) # :nodoc:
743
+
744
+ # Only the last error is kept
745
+ if @current_segment
746
+ @current_segment.notice_error error, expected: options[:expected]
747
+ options[:span_id] = @current_segment.guid
748
+ end
749
+
759
750
  if @exceptions[error]
760
751
  @exceptions[error].merge! options
761
752
  else
@@ -767,8 +758,6 @@ module NewRelic
767
758
  agent.transaction_event_recorder.record payload
768
759
  end
769
760
 
770
- QUEUE_TIME_METRIC = 'WebFrontend/QueueTime'.freeze
771
-
772
761
  def queue_time
773
762
  @apdex_start ? @start_time - @apdex_start : 0
774
763
  end
@@ -784,20 +773,12 @@ module NewRelic
784
773
  end
785
774
  end
786
775
 
787
- APDEX_ALL_METRIC = 'ApdexAll'.freeze
788
-
789
- APDEX_METRIC = 'Apdex'.freeze
790
- APDEX_OTHER_METRIC = 'ApdexOther'.freeze
791
-
792
- APDEX_TXN_METRIC_PREFIX = 'Apdex/'.freeze
793
- APDEX_OTHER_TXN_METRIC_PREFIX = 'ApdexOther/Transaction/'.freeze
794
-
795
776
  def had_error_affecting_apdex?
796
777
  @exceptions.each do |exception, options|
797
- ignored = NewRelic::Agent.instance.error_collector.error_is_ignored?(exception)
798
- trace_only = options[:trace_only]
778
+ ignored = NewRelic::Agent.instance.error_collector.error_is_ignored?(exception)
779
+ expected = options[:expected]
799
780
 
800
- return true unless ignored || trace_only
781
+ return true unless ignored || expected
801
782
  end
802
783
  false
803
784
  end
@@ -806,28 +787,26 @@ module NewRelic
806
787
  self.class.apdex_bucket(duration, had_error_affecting_apdex?, current_apdex_t)
807
788
  end
808
789
 
809
- def record_apdex(state, end_time=Time.now)
790
+ def record_apdex
810
791
  return unless state.is_execution_traced?
811
792
 
812
793
  freeze_name_and_execute_if_not_ignored do
813
- total_duration = end_time - apdex_start
814
- action_duration = end_time - start_time
815
-
816
794
  if recording_web_transaction?
817
- record_apdex_metrics(APDEX_METRIC, APDEX_TXN_METRIC_PREFIX,
818
- total_duration, action_duration, apdex_t)
795
+ record_apdex_metrics(APDEX_METRIC, APDEX_TXN_METRIC_PREFIX, apdex_t)
819
796
  else
820
- record_apdex_metrics(APDEX_OTHER_METRIC, APDEX_OTHER_TXN_METRIC_PREFIX,
821
- total_duration, action_duration, transaction_specific_apdex_t)
797
+ record_apdex_metrics(APDEX_OTHER_METRIC,
798
+ APDEX_OTHER_TXN_METRIC_PREFIX,
799
+ transaction_specific_apdex_t)
822
800
  end
823
801
  end
824
802
  end
825
803
 
826
- def record_apdex_metrics(rollup_metric, transaction_prefix, total_duration, action_duration, current_apdex_t)
804
+ def record_apdex_metrics(rollup_metric, transaction_prefix, current_apdex_t)
827
805
  return unless current_apdex_t
828
806
 
807
+ total_duration = end_time - apdex_start
829
808
  apdex_bucket_global = apdex_bucket(total_duration, current_apdex_t)
830
- apdex_bucket_txn = apdex_bucket(action_duration, current_apdex_t)
809
+ apdex_bucket_txn = apdex_bucket(duration, current_apdex_t)
831
810
 
832
811
  @metrics.record_unscoped(rollup_metric, apdex_bucket_global, current_apdex_t)
833
812
  @metrics.record_unscoped(APDEX_ALL_METRIC, apdex_bucket_global, current_apdex_t)
@@ -844,6 +823,15 @@ module NewRelic
844
823
  Agent.config[key] && Agent.config[key][best_name]
845
824
  end
846
825
 
826
+ def threshold
827
+ source_class = Agent.config.source(:'transaction_tracer.transaction_threshold').class
828
+ if source_class == Configuration::DefaultSource
829
+ apdex_t * 4
830
+ else
831
+ Agent.config[:'transaction_tracer.transaction_threshold']
832
+ end
833
+ end
834
+
847
835
  def with_database_metric_name(model, method, product=nil)
848
836
  previous = self.instrumentation_state[:datastore_override]
849
837
  model_name = case model
@@ -926,7 +914,6 @@ module NewRelic
926
914
  p.stime + p.utime
927
915
  end
928
916
 
929
- JRUBY_CPU_TIME_ERROR = "Error calculating JRuby CPU Time".freeze
930
917
  def jruby_cpu_time
931
918
  return nil unless @@java_classes_loaded
932
919
  threadMBean = Java::JavaLangManagement::ManagementFactory.getThreadMXBean()
@@ -952,18 +939,6 @@ module NewRelic
952
939
  def sql_sampler
953
940
  agent.sql_sampler
954
941
  end
955
-
956
- HEX_DIGITS = (0..15).map{|i| i.to_s(16)}
957
- GUID_LENGTH = 16
958
-
959
- # generate a random 64 bit uuid
960
- def generate_guid
961
- guid = ''
962
- GUID_LENGTH.times do |a|
963
- guid << HEX_DIGITS[rand(16)]
964
- end
965
- guid
966
- end
967
942
  end
968
943
  end
969
944
  end