dolores_rpm 3.2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (257) hide show
  1. data/CHANGELOG +559 -0
  2. data/LICENSE +64 -0
  3. data/README.rdoc +179 -0
  4. data/bin/mongrel_rpm +33 -0
  5. data/bin/newrelic +13 -0
  6. data/bin/newrelic_cmd +5 -0
  7. data/cert/cacert.pem +118 -0
  8. data/cert/oldsite.pem +28 -0
  9. data/cert/site.pem +27 -0
  10. data/dolores_rpm-3.3.4.fork.gem +0 -0
  11. data/install.rb +9 -0
  12. data/lib/conditional_vendored_dependency_detection.rb +3 -0
  13. data/lib/conditional_vendored_metric_parser.rb +5 -0
  14. data/lib/new_relic/agent/agent.rb +1311 -0
  15. data/lib/new_relic/agent/beacon_configuration.rb +110 -0
  16. data/lib/new_relic/agent/browser_monitoring.rb +102 -0
  17. data/lib/new_relic/agent/busy_calculator.rb +99 -0
  18. data/lib/new_relic/agent/chained_call.rb +13 -0
  19. data/lib/new_relic/agent/database.rb +203 -0
  20. data/lib/new_relic/agent/error_collector.rb +251 -0
  21. data/lib/new_relic/agent/instrumentation/active_merchant.rb +27 -0
  22. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +68 -0
  23. data/lib/new_relic/agent/instrumentation/authlogic.rb +19 -0
  24. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +424 -0
  25. data/lib/new_relic/agent/instrumentation/data_mapper.rb +57 -0
  26. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +52 -0
  27. data/lib/new_relic/agent/instrumentation/memcache.rb +80 -0
  28. data/lib/new_relic/agent/instrumentation/merb/controller.rb +41 -0
  29. data/lib/new_relic/agent/instrumentation/merb/errors.rb +29 -0
  30. data/lib/new_relic/agent/instrumentation/metric_frame/pop.rb +80 -0
  31. data/lib/new_relic/agent/instrumentation/metric_frame.rb +332 -0
  32. data/lib/new_relic/agent/instrumentation/net.rb +29 -0
  33. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +36 -0
  34. data/lib/new_relic/agent/instrumentation/queue_time.rb +210 -0
  35. data/lib/new_relic/agent/instrumentation/rack.rb +98 -0
  36. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +114 -0
  37. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +42 -0
  38. data/lib/new_relic/agent/instrumentation/rails/active_record_instrumentation.rb +115 -0
  39. data/lib/new_relic/agent/instrumentation/rails/errors.rb +42 -0
  40. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +118 -0
  41. data/lib/new_relic/agent/instrumentation/rails3/active_record_instrumentation.rb +122 -0
  42. data/lib/new_relic/agent/instrumentation/rails3/errors.rb +37 -0
  43. data/lib/new_relic/agent/instrumentation/sinatra.rb +58 -0
  44. data/lib/new_relic/agent/instrumentation/sunspot.rb +29 -0
  45. data/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb +21 -0
  46. data/lib/new_relic/agent/instrumentation.rb +9 -0
  47. data/lib/new_relic/agent/method_tracer.rb +528 -0
  48. data/lib/new_relic/agent/sampler.rb +50 -0
  49. data/lib/new_relic/agent/samplers/cpu_sampler.rb +58 -0
  50. data/lib/new_relic/agent/samplers/delayed_job_lock_sampler.rb +40 -0
  51. data/lib/new_relic/agent/samplers/memory_sampler.rb +144 -0
  52. data/lib/new_relic/agent/samplers/object_sampler.rb +26 -0
  53. data/lib/new_relic/agent/shim_agent.rb +29 -0
  54. data/lib/new_relic/agent/sql_sampler.rb +267 -0
  55. data/lib/new_relic/agent/stats_engine/metric_stats.rb +187 -0
  56. data/lib/new_relic/agent/stats_engine/samplers.rb +95 -0
  57. data/lib/new_relic/agent/stats_engine/transactions.rb +208 -0
  58. data/lib/new_relic/agent/stats_engine.rb +25 -0
  59. data/lib/new_relic/agent/transaction_sample_builder.rb +101 -0
  60. data/lib/new_relic/agent/transaction_sampler.rb +397 -0
  61. data/lib/new_relic/agent/worker_loop.rb +89 -0
  62. data/lib/new_relic/agent.rb +454 -0
  63. data/lib/new_relic/collection_helper.rb +75 -0
  64. data/lib/new_relic/command.rb +85 -0
  65. data/lib/new_relic/commands/deployments.rb +105 -0
  66. data/lib/new_relic/commands/install.rb +80 -0
  67. data/lib/new_relic/control/class_methods.rb +53 -0
  68. data/lib/new_relic/control/configuration.rb +202 -0
  69. data/lib/new_relic/control/frameworks/external.rb +16 -0
  70. data/lib/new_relic/control/frameworks/merb.rb +31 -0
  71. data/lib/new_relic/control/frameworks/rails.rb +164 -0
  72. data/lib/new_relic/control/frameworks/rails3.rb +75 -0
  73. data/lib/new_relic/control/frameworks/ruby.rb +42 -0
  74. data/lib/new_relic/control/frameworks/sinatra.rb +20 -0
  75. data/lib/new_relic/control/frameworks.rb +10 -0
  76. data/lib/new_relic/control/instance_methods.rb +179 -0
  77. data/lib/new_relic/control/instrumentation.rb +100 -0
  78. data/lib/new_relic/control/logging_methods.rb +143 -0
  79. data/lib/new_relic/control/profiling.rb +25 -0
  80. data/lib/new_relic/control/server_methods.rb +114 -0
  81. data/lib/new_relic/control.rb +46 -0
  82. data/lib/new_relic/data_serialization.rb +157 -0
  83. data/lib/new_relic/delayed_job_injection.rb +46 -0
  84. data/lib/new_relic/language_support.rb +69 -0
  85. data/lib/new_relic/local_environment.rb +414 -0
  86. data/lib/new_relic/merbtasks.rb +6 -0
  87. data/lib/new_relic/metric_data.rb +51 -0
  88. data/lib/new_relic/metric_spec.rb +75 -0
  89. data/lib/new_relic/metrics.rb +9 -0
  90. data/lib/new_relic/noticed_error.rb +24 -0
  91. data/lib/new_relic/rack/browser_monitoring.rb +68 -0
  92. data/lib/new_relic/rack/developer_mode.rb +268 -0
  93. data/lib/new_relic/recipes.rb +73 -0
  94. data/lib/new_relic/stats.rb +388 -0
  95. data/lib/new_relic/timer_lib.rb +27 -0
  96. data/lib/new_relic/transaction_analysis/segment_summary.rb +49 -0
  97. data/lib/new_relic/transaction_analysis.rb +77 -0
  98. data/lib/new_relic/transaction_sample/composite_segment.rb +27 -0
  99. data/lib/new_relic/transaction_sample/fake_segment.rb +9 -0
  100. data/lib/new_relic/transaction_sample/segment.rb +201 -0
  101. data/lib/new_relic/transaction_sample/summary_segment.rb +21 -0
  102. data/lib/new_relic/transaction_sample.rb +245 -0
  103. data/lib/new_relic/url_rule.rb +14 -0
  104. data/lib/new_relic/version.rb +55 -0
  105. data/lib/newrelic_rpm.rb +49 -0
  106. data/lib/tasks/all.rb +4 -0
  107. data/lib/tasks/install.rake +7 -0
  108. data/lib/tasks/tests.rake +19 -0
  109. data/newrelic.yml +265 -0
  110. data/recipes/newrelic.rb +6 -0
  111. data/test/active_record_fixtures.rb +77 -0
  112. data/test/config/newrelic.yml +48 -0
  113. data/test/config/test_control.rb +48 -0
  114. data/test/new_relic/agent/agent/connect_test.rb +410 -0
  115. data/test/new_relic/agent/agent/start_test.rb +255 -0
  116. data/test/new_relic/agent/agent/start_worker_thread_test.rb +153 -0
  117. data/test/new_relic/agent/agent_test.rb +139 -0
  118. data/test/new_relic/agent/agent_test_controller.rb +77 -0
  119. data/test/new_relic/agent/agent_test_controller_test.rb +363 -0
  120. data/test/new_relic/agent/apdex_from_server_test.rb +9 -0
  121. data/test/new_relic/agent/beacon_configuration_test.rb +108 -0
  122. data/test/new_relic/agent/browser_monitoring_test.rb +278 -0
  123. data/test/new_relic/agent/busy_calculator_test.rb +81 -0
  124. data/test/new_relic/agent/database_test.rb +162 -0
  125. data/test/new_relic/agent/error_collector/notice_error_test.rb +257 -0
  126. data/test/new_relic/agent/error_collector_test.rb +175 -0
  127. data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +538 -0
  128. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +36 -0
  129. data/test/new_relic/agent/instrumentation/instrumentation_test.rb +11 -0
  130. data/test/new_relic/agent/instrumentation/metric_frame/pop_test.rb +172 -0
  131. data/test/new_relic/agent/instrumentation/metric_frame_test.rb +50 -0
  132. data/test/new_relic/agent/instrumentation/net_instrumentation_test.rb +84 -0
  133. data/test/new_relic/agent/instrumentation/queue_time_test.rb +387 -0
  134. data/test/new_relic/agent/instrumentation/rack_test.rb +35 -0
  135. data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +184 -0
  136. data/test/new_relic/agent/memcache_instrumentation_test.rb +143 -0
  137. data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +164 -0
  138. data/test/new_relic/agent/method_tracer/instance_methods/trace_execution_scoped_test.rb +234 -0
  139. data/test/new_relic/agent/method_tracer_test.rb +386 -0
  140. data/test/new_relic/agent/mock_scope_listener.rb +23 -0
  141. data/test/new_relic/agent/rpm_agent_test.rb +149 -0
  142. data/test/new_relic/agent/sampler_test.rb +19 -0
  143. data/test/new_relic/agent/shim_agent_test.rb +20 -0
  144. data/test/new_relic/agent/sql_sampler_test.rb +160 -0
  145. data/test/new_relic/agent/stats_engine/metric_stats/harvest_test.rb +150 -0
  146. data/test/new_relic/agent/stats_engine/metric_stats_test.rb +82 -0
  147. data/test/new_relic/agent/stats_engine/samplers_test.rb +99 -0
  148. data/test/new_relic/agent/stats_engine_test.rb +185 -0
  149. data/test/new_relic/agent/transaction_sample_builder_test.rb +195 -0
  150. data/test/new_relic/agent/transaction_sampler_test.rb +955 -0
  151. data/test/new_relic/agent/worker_loop_test.rb +66 -0
  152. data/test/new_relic/agent_test.rb +175 -0
  153. data/test/new_relic/collection_helper_test.rb +149 -0
  154. data/test/new_relic/command/deployments_test.rb +68 -0
  155. data/test/new_relic/control/class_methods_test.rb +62 -0
  156. data/test/new_relic/control/configuration_test.rb +72 -0
  157. data/test/new_relic/control/logging_methods_test.rb +185 -0
  158. data/test/new_relic/control_test.rb +254 -0
  159. data/test/new_relic/data_serialization_test.rb +208 -0
  160. data/test/new_relic/delayed_job_injection_test.rb +16 -0
  161. data/test/new_relic/local_environment_test.rb +72 -0
  162. data/test/new_relic/metric_data_test.rb +125 -0
  163. data/test/new_relic/metric_spec_test.rb +95 -0
  164. data/test/new_relic/rack/all_test.rb +11 -0
  165. data/test/new_relic/rack/browser_monitoring_test.rb +84 -0
  166. data/test/new_relic/rack/developer_mode_helper_test.rb +141 -0
  167. data/test/new_relic/rack/developer_mode_test.rb +43 -0
  168. data/test/new_relic/stats_test.rb +426 -0
  169. data/test/new_relic/transaction_analysis/segment_summary_test.rb +91 -0
  170. data/test/new_relic/transaction_analysis_test.rb +121 -0
  171. data/test/new_relic/transaction_sample/composite_segment_test.rb +35 -0
  172. data/test/new_relic/transaction_sample/fake_segment_test.rb +17 -0
  173. data/test/new_relic/transaction_sample/segment_test.rb +389 -0
  174. data/test/new_relic/transaction_sample/summary_segment_test.rb +31 -0
  175. data/test/new_relic/transaction_sample_subtest_test.rb +56 -0
  176. data/test/new_relic/transaction_sample_test.rb +164 -0
  177. data/test/new_relic/version_number_test.rb +89 -0
  178. data/test/test_contexts.rb +29 -0
  179. data/test/test_helper.rb +154 -0
  180. data/ui/helpers/developer_mode_helper.rb +357 -0
  181. data/ui/helpers/google_pie_chart.rb +48 -0
  182. data/ui/views/layouts/newrelic_default.rhtml +47 -0
  183. data/ui/views/newrelic/_explain_plans.rhtml +27 -0
  184. data/ui/views/newrelic/_sample.rhtml +20 -0
  185. data/ui/views/newrelic/_segment.rhtml +28 -0
  186. data/ui/views/newrelic/_segment_limit_message.rhtml +1 -0
  187. data/ui/views/newrelic/_segment_row.rhtml +12 -0
  188. data/ui/views/newrelic/_show_sample_detail.rhtml +24 -0
  189. data/ui/views/newrelic/_show_sample_sql.rhtml +24 -0
  190. data/ui/views/newrelic/_show_sample_summary.rhtml +3 -0
  191. data/ui/views/newrelic/_sql_row.rhtml +16 -0
  192. data/ui/views/newrelic/_stack_trace.rhtml +15 -0
  193. data/ui/views/newrelic/_table.rhtml +12 -0
  194. data/ui/views/newrelic/explain_sql.rhtml +43 -0
  195. data/ui/views/newrelic/file/images/arrow-close.png +0 -0
  196. data/ui/views/newrelic/file/images/arrow-open.png +0 -0
  197. data/ui/views/newrelic/file/images/blue_bar.gif +0 -0
  198. data/ui/views/newrelic/file/images/file_icon.png +0 -0
  199. data/ui/views/newrelic/file/images/gray_bar.gif +0 -0
  200. data/ui/views/newrelic/file/images/new-relic-rpm-desktop.gif +0 -0
  201. data/ui/views/newrelic/file/images/new_relic_rpm_desktop.gif +0 -0
  202. data/ui/views/newrelic/file/images/textmate.png +0 -0
  203. data/ui/views/newrelic/file/javascript/jquery-1.4.2.js +6240 -0
  204. data/ui/views/newrelic/file/javascript/transaction_sample.js +120 -0
  205. data/ui/views/newrelic/file/stylesheets/style.css +490 -0
  206. data/ui/views/newrelic/index.rhtml +71 -0
  207. data/ui/views/newrelic/sample_not_found.rhtml +2 -0
  208. data/ui/views/newrelic/show_sample.rhtml +80 -0
  209. data/ui/views/newrelic/show_source.rhtml +3 -0
  210. data/ui/views/newrelic/threads.rhtml +53 -0
  211. data/vendor/gems/dependency_detection-0.0.1.build/LICENSE +5 -0
  212. data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection/version.rb +3 -0
  213. data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +62 -0
  214. data/vendor/gems/metric_parser-0.1.0.pre1/lib/metric_parser.rb +1 -0
  215. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/action_mailer.rb +14 -0
  216. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_merchant.rb +31 -0
  217. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/active_record.rb +33 -0
  218. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/apdex.rb +89 -0
  219. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/background_transaction.rb +7 -0
  220. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/client.rb +46 -0
  221. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller.rb +67 -0
  222. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_cpu.rb +43 -0
  223. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/controller_ext.rb +17 -0
  224. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database.rb +48 -0
  225. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/database_pool.rb +24 -0
  226. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net.rb +28 -0
  227. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/dot_net_parser.rb +17 -0
  228. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/errors.rb +11 -0
  229. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/external.rb +55 -0
  230. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/frontend.rb +40 -0
  231. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/gc.rb +20 -0
  232. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/hibernate_session.rb +7 -0
  233. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java.rb +31 -0
  234. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/java_parser.rb +17 -0
  235. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp.rb +34 -0
  236. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/jsp_tag.rb +7 -0
  237. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +55 -0
  238. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/metric_parser.rb +122 -0
  239. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/orm.rb +27 -0
  240. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/other_transaction.rb +40 -0
  241. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet.rb +7 -0
  242. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_context_listener.rb +7 -0
  243. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_filter.rb +7 -0
  244. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr.rb +27 -0
  245. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb +15 -0
  246. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring.rb +54 -0
  247. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_controller.rb +6 -0
  248. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/spring_view.rb +6 -0
  249. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_action.rb +20 -0
  250. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/struts_result.rb +20 -0
  251. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/version.rb +5 -0
  252. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +70 -0
  253. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_frontend.rb +18 -0
  254. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_service.rb +14 -0
  255. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/web_transaction.rb +133 -0
  256. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser.rb +64 -0
  257. metadata +398 -0
@@ -0,0 +1,120 @@
1
+ function show_request_params()
2
+ {
3
+ $('#params_link').hide();
4
+ $('#request_params').show();
5
+ }
6
+
7
+ function show_view(page_id){
8
+ $('#show_sample_summary, #show_sample_sql, #show_sample_detail').hide();
9
+ $('#' + page_id).show();
10
+ }
11
+
12
+ function toggle_row_class(theLink)
13
+ {
14
+ var image = $('img', theLink).first();
15
+ var visible = toggle_row_class_for_image(image);
16
+ image.attr('src', (visible ? EXPANDED_IMAGE : COLLAPSED_IMAGE));
17
+ }
18
+
19
+ function toggle_row_class_for_image(image)
20
+ {
21
+ var clazz = image.attr('class_for_children');
22
+ var elements = $('#trace_detail_table').find('tr.' + clazz);
23
+ if (elements.size() == 0) return;
24
+ var visible = !elements.first().is(':visible');
25
+ show_or_hide_elements(elements, visible);
26
+ return visible;
27
+ }
28
+
29
+ function stack_trace_ids(unique_id) {
30
+ return {'show': 'show_rails_link' + unique_id, 'hide': 'hide_rails_link' + unique_id,
31
+ 'app': 'application_stack_trace' + unique_id, 'full': 'full_stack_trace' + unique_id};
32
+ }
33
+
34
+ function show_rails(unique_id) {
35
+ traces = stack_trace_ids(unique_id);
36
+ $('#' + traces.full).show();
37
+ $('#' + traces.app).hide();
38
+ $('#' + traces.show).hide();
39
+ $('#' + traces.hide).show();
40
+ }
41
+
42
+ function hide_rails(unique_id) {
43
+ traces = stack_trace_ids(unique_id);
44
+ $('#' + traces.full).hide();
45
+ $('#' + traces.app).show();
46
+ $('#' + traces.show).show();
47
+ $('#' + traces.hide).hide();
48
+ }
49
+
50
+ function show_or_hide_class_elements(clazz, visible)
51
+ {
52
+ var elements = $('#trace_detail_table').find('tr.' + clazz);
53
+ show_or_hide_elements(elements, visible);
54
+ }
55
+
56
+ function show_or_hide_elements(elements, visible)
57
+ {
58
+ if(visible) {
59
+ elements.show();
60
+ } else {
61
+ elements.hide();
62
+ }
63
+ }
64
+
65
+ function mouse_over_row(element)
66
+ {
67
+ clazz = $(element).attr('child_row_class')
68
+ $(element).css('cssText', 'background-color: lightyellow');
69
+ }
70
+
71
+ var g_style_element;
72
+ function get_cleared_highlight_styles()
73
+ {
74
+ if (!g_style_element)
75
+ {
76
+ $('head', document).first().append('<style id="highlight_styles" />');
77
+ g_style_element = $('#highlight_styles');
78
+ }
79
+ else {
80
+ g_style_element.empty();
81
+ }
82
+ return g_style_element;
83
+ }
84
+
85
+ function mouse_out_row(element)
86
+ {
87
+ $(element).css('cssText', '')
88
+ }
89
+
90
+ function get_parent_segments()
91
+ {
92
+ return $('#trace_detail_table').find('img.parent_segment_image');
93
+ }
94
+
95
+ function expand_or_contract_segments(expand_or_contract) {
96
+ var parent_segments = get_parent_segments();
97
+ parent_segments.attr('src', (expand_or_contract ? EXPANDED_IMAGE : COLLAPSED_IMAGE))
98
+ parent_segments.each(function (index, element) {
99
+ show_or_hide_class_elements($(element).attr('class_for_children'), expand_or_contract);
100
+ });
101
+ }
102
+
103
+ function expand_all_segments()
104
+ {
105
+ expand_or_contract_segments(true);
106
+ }
107
+
108
+ function collapse_all_segments()
109
+ {
110
+ expand_or_contract_segments(false);
111
+ }
112
+
113
+ function jump_to_metric(metric_name)
114
+ {
115
+ highlight($('tr.' + metric_name, '#trace_detail_table'))
116
+ expand_all_segments();
117
+ }
118
+ function highlight(elements) {
119
+ elements.css('background-color', 'lightyellow');
120
+ }
@@ -0,0 +1,490 @@
1
+
2
+
3
+ /*
4
+ Originally based on the theme credited below.
5
+ Tweaks by Lew Cirne and Victoria Wesson for New Relic
6
+
7
+ Theme Name: Simpla
8
+ Theme URI: http://ifelse.co.uk/simpla/
9
+ Description: A clean, minimalist theme
10
+ Version: 1.01
11
+ Author: Phu Ly
12
+ Author URI: http://ifelse.co.uk/
13
+ */
14
+
15
+ /*****************************
16
+ * Profile
17
+ *****************************/
18
+
19
+ table.profile {
20
+ border-collapse: collapse;
21
+ border: 1px solid #CCC;
22
+ font-size: 9pt;
23
+ line-height: normal;
24
+ padding: 0.3em;
25
+ width: 100%;
26
+ }
27
+
28
+ table.profile th {
29
+ text-align: left;
30
+ border-top: 1px solid #aaaaaa;
31
+ border-bottom: 1px solid #aaaaaa;
32
+ background: #dddddd;
33
+ border-left: 1px solid silver;
34
+ }
35
+
36
+ table.profile tr.break td {
37
+ border: 0;
38
+ border-top: 1px solid #aaaaaa;
39
+ border-bottom: 1px solid #aaaaaa;
40
+ padding: 4px;
41
+ margin: 0;
42
+ }
43
+
44
+ table.profile tr.method td {
45
+ font-weight: bold;
46
+ }
47
+
48
+
49
+ table.profile td:first-child {
50
+ width: 190px;
51
+ }
52
+
53
+ table.profile td
54
+ {
55
+ border-left: 1px solid #CCC;
56
+ text-align: left;
57
+ vertical-align: top;
58
+ }
59
+
60
+ table.profile .method_name {
61
+ text-align: left;
62
+ }
63
+
64
+
65
+
66
+ /*************************************
67
+ +Containers
68
+ *************************************/
69
+ body{
70
+ color:#333;
71
+ min-width: 1004px;
72
+ font-family: "Lucida Grande","Lucida Sans Unicode", Verdana, Tahoma, Arial, Helvetica, sans-serif;
73
+ font-size:12px;
74
+ margin:0;
75
+ padding:0;
76
+ text-align:center;
77
+ }
78
+ #wrap{
79
+ margin:0 auto;
80
+ text-align:left;
81
+ width:76em;
82
+ }
83
+ #content{
84
+ width: 984px;
85
+ margin: 10px auto;
86
+ text-align:left;
87
+ }
88
+ #header{
89
+ padding: 0px;
90
+ }
91
+ #footer
92
+ {
93
+ color:#888;
94
+ clear:both;
95
+ font-size:smaller;
96
+ padding-top: 15px;
97
+ text-align: left;
98
+ }
99
+ #footer p
100
+ {
101
+ margin-left: 15px;
102
+ margin-top: 10px;
103
+ }
104
+
105
+ /*************************************
106
+ Navigation Bar (horizontal at top)
107
+ *************************************/
108
+ #navbar{
109
+ color:#00A;
110
+ font-size:1.2em;
111
+ }
112
+
113
+ /*************************************
114
+ +Hn and p
115
+ *************************************/
116
+ h1, h2, h3, p
117
+ {
118
+ color:#333333;
119
+ }
120
+
121
+ h1, h2, h3
122
+ {
123
+ margin: 10px 0px 10px 0px;
124
+ font-weight: normal;
125
+ letter-spacing: 0px;
126
+ }
127
+
128
+ p
129
+ {
130
+ margin: 7px 0px 7px 0px;
131
+ }
132
+
133
+
134
+ #header h1{
135
+ font-size:1.2em;
136
+ font-weight:normal;
137
+ }
138
+ #header h1 a{
139
+ color:#E87830;
140
+ }
141
+ #header h1 a:hover{
142
+ color:#CC0000;
143
+ }
144
+ #header p{
145
+ font-size:1.1em;
146
+ margin:0;
147
+ margin-top:-0.1em;
148
+ margin-bottom:0.3em;
149
+ }
150
+ #header table
151
+ {
152
+ padding: 0px 0px 0px 0px;
153
+ }
154
+
155
+ /*************************************
156
+ +Misc
157
+ *************************************/
158
+ a:link, a:visited, a:active {
159
+ color:#116677;
160
+ text-decoration:none;
161
+ }
162
+ a:hover{
163
+ color:#0055aa;
164
+ text-decoration:underline;
165
+ }
166
+ img{
167
+ border-style:none;
168
+ }
169
+ var{
170
+ font-family: Courier;
171
+ font-style: normal;
172
+ font-size: 1.1em;
173
+ }
174
+
175
+ /* regular tables use thead instead of th. th is only used by name/value table layouts */
176
+ th
177
+ {
178
+ padding: 5px 5px 5px 5px;
179
+ text-align: right;
180
+ }
181
+ th.left
182
+ {
183
+ text-align: left;
184
+ }
185
+ th.title
186
+ {
187
+ font-size: 1.2em;
188
+ text-align: left;
189
+ padding: 6px 5px 8px 5px;
190
+ color: #EEEEEE;
191
+ }
192
+ td.locals
193
+ {
194
+ font-size: 0.9em;
195
+ text-align: left;
196
+ font-family: monospace;
197
+ }
198
+
199
+ /*************************************
200
+ +New Relic Specific - need to preserve
201
+ *************************************/
202
+ .light_background
203
+ {
204
+ background-color: #FAFEFE;
205
+ }
206
+ div.flash, #errorExplanation
207
+ {
208
+ margin: 8px 10px 8px 10px;
209
+ border: 2px;
210
+ border-style: solid;
211
+ }
212
+
213
+ div.flash
214
+ {
215
+ padding: 10px 5px 10px 20px;
216
+ }
217
+
218
+ #errorExplanation
219
+ {
220
+ padding: 5px 5px 5px 20px;
221
+ color: #bb0011;
222
+ }
223
+
224
+ div.flash.error
225
+ {
226
+ border-color: #bb0011;
227
+ color: #bb0011;
228
+ }
229
+
230
+ div.flash.notice
231
+ {
232
+ border-color: #eeaa33;
233
+ color: #eeaa33;
234
+ }
235
+
236
+ #metricsummary{
237
+ background:#ddd;
238
+ border-top:1px solid #777;
239
+ clear:both;
240
+ font-size:0.9em;
241
+ padding:0.5em;
242
+ }
243
+
244
+ .application_title
245
+ {
246
+ font-size: larger;
247
+ }
248
+
249
+ #navlist
250
+ {
251
+ font-size: smaller;
252
+ margin: 0px;
253
+ padding: 0px 10px 15px 0px;
254
+ white-space: nowrap;
255
+ color: #333333;
256
+ }
257
+
258
+ #navlist li
259
+ {
260
+ display: inline;
261
+ list-style-type: none;
262
+ padding: 0px 0px 0px 20px;
263
+ font-size: 12px;
264
+ color: #333333;
265
+ }
266
+
267
+ #navlist li a
268
+ {
269
+ color: #333333;
270
+ }
271
+
272
+ #secondary_nav
273
+ {
274
+ margin: 0px;
275
+ padding: 5px 5px 5px 5px;
276
+ }
277
+
278
+ #secondary_nav li
279
+ {
280
+ display: inline;
281
+ list-style-type: none;
282
+ padding: 0px 20px 0px 0px;
283
+ font-size: .9em;
284
+ }
285
+
286
+ #pie_chart_image
287
+ {
288
+ margin: 15px 0px 15px 0px;
289
+ }
290
+
291
+ #reset_transactions, #reset_transactions a
292
+ {
293
+ color:red;
294
+ text-align:right;
295
+ }
296
+
297
+
298
+ .transaction_list_table
299
+ {
300
+ width: 600px;
301
+ margin-right: 15px;
302
+ }
303
+ .transaction_list_table thead a:visited
304
+ {
305
+ color: white;
306
+ }
307
+ .transaction_list_table thead a
308
+ {
309
+ color: white;
310
+ text-decoration: underline;
311
+ }
312
+
313
+ .segment_list_table thead a
314
+ {
315
+ color: white;
316
+ text-decoration: underline;
317
+ }
318
+
319
+ .application_stack_trace, .full_stack_trace
320
+ {
321
+ font-family: monospace;
322
+ margin-top: 10px;
323
+ margin-left: 20px;
324
+ max-width: 950px;
325
+ overflow: auto;
326
+ }
327
+
328
+ #summary_table
329
+ {
330
+ }
331
+
332
+ .sql_statement
333
+ {
334
+ width: 800px;
335
+ overflow: auto;
336
+ }
337
+
338
+ .plan
339
+ {
340
+ font-family: monospace;
341
+ font-size: 0.8em;
342
+ white-space: pre;
343
+ }
344
+ #page_nav
345
+ {
346
+ height: 42px;
347
+ }
348
+
349
+ #page_nav tr
350
+ {
351
+ vertical-align: middle;
352
+ }
353
+
354
+ #page_nav td
355
+ {
356
+ padding-left: 20px;
357
+ color:#333;
358
+ white-space: nowrap;
359
+ }
360
+
361
+
362
+ table
363
+ {
364
+ font-size: 12px;
365
+ border-collapse: collapse;
366
+ border-spacing: 0px;
367
+ padding: 5px 5px 5px 5px;
368
+ }
369
+
370
+
371
+ thead
372
+ {
373
+ text-align:left;
374
+ font-weight: normal;
375
+ line-height:100%;
376
+ background-color: #6688aa;
377
+ color: white;
378
+ padding: 5px 5px 5px 5px;
379
+ }
380
+
381
+ thead a, thead a:hover
382
+ {
383
+ color: white;
384
+ }
385
+
386
+ tfoot
387
+ {
388
+ background-color: #6688aa;
389
+ color: #333;
390
+ }
391
+
392
+ tfoot td
393
+ {
394
+ font-size: smaller;
395
+ text-align:right;
396
+ }
397
+
398
+ td.title_bar_right
399
+ {
400
+ text-align:right;
401
+ font-size: 11px;
402
+ }
403
+
404
+
405
+
406
+ td.top_nav
407
+ {
408
+ text-align: right;
409
+ vertical-align: bottom;
410
+ padding: 0px 0px 0px 0px;
411
+ }
412
+
413
+ td.time_nav
414
+ {
415
+ text-align: right;
416
+ }
417
+
418
+ td
419
+ {
420
+ text-align: left;
421
+ padding: 5px 5px 5px 5px;
422
+ }
423
+
424
+ ul.tab_list {
425
+ list-style-type: none;
426
+ padding: 0;
427
+ }
428
+
429
+ ul.tab_list li {
430
+ padding-left: 1em;
431
+ }
432
+ .selected {
433
+ background: url(/newrelic/image?file=arrow-close.png) no-repeat;
434
+ }
435
+
436
+ .expand {
437
+ background-image:url(/newrelic/image?file=arrow-open.png);
438
+ width:16px;
439
+ background-position: top left;
440
+ padding-left: 20px;
441
+ background-repeat:no-repeat;
442
+ text-decoration: none;
443
+ }
444
+
445
+ .collapse {
446
+ background-image:url(/newrelic/image?file=arrow-close.png);
447
+ text-decoration: none;
448
+ width:16px;
449
+ padding-left: 20px;
450
+ background-position: top left;
451
+ background-repeat:no-repeat;
452
+ }
453
+
454
+
455
+ .clock {
456
+ margin-bottom: -5px;
457
+ }
458
+
459
+ .selected_source_line {
460
+ background: #bdf
461
+ }
462
+
463
+ .scrolling_container {
464
+ overflow: auto;
465
+ padding-left: 5px;
466
+ max-height: 150px;
467
+ border: 1px solid #898989;
468
+ }
469
+
470
+ .odd_row {
471
+ background-color: #eeeeee;
472
+ }
473
+
474
+ .even_row {
475
+ background-color: #ffffff;
476
+ }
477
+
478
+ .leaf_segment
479
+ {
480
+ padding-left: 20px;
481
+ }
482
+
483
+ .help
484
+ {
485
+ padding: 10px 5px 5px 5px;
486
+ }
487
+
488
+ .help p
489
+ {
490
+ }
@@ -0,0 +1,71 @@
1
+ <table>
2
+ <tr>
3
+ <td valign=top>
4
+ <table class="transaction_list_table">
5
+ <thead>
6
+ <tr>
7
+ <td>
8
+ <%= link_to_if (params[:h] ||params[:u]), 'Timestamp' %>
9
+ </td>
10
+ <td>
11
+ <%= link_to_unless_current('Resp. Time', :h => 'y') %>
12
+ </td>
13
+ <td>
14
+ <%= link_to_unless_current('URL', :u =>'y') %>
15
+ </td>
16
+ <td/>
17
+ </tr>
18
+ </thead><% @samples.each do |sample| %>
19
+ <%= render :partial => :sample, :object => sample %>
20
+ <% end %>
21
+ </table>
22
+ </td>
23
+ <td valign=top>
24
+ <% if defined?(Unicorn) || defined?(Passenger) %>
25
+ <div class="flash">
26
+ <p id="errorExplanation">
27
+ We've noticed you're running a forking web server, like Unicorn or Passenger. See Below</p><p> Developer mode may be unpredictable,
28
+ since those servers run many processes and developer mode is entirely in the process.</p><p> We suggest you try Thin,
29
+ Mongrel, or another single-process web server for development mode.</p><p>
30
+ (You can ignore this message if you're sure that you're running only one process, and it's not being reaped when inactive.)
31
+ </p>
32
+ </div>
33
+ <% end %>
34
+
35
+
36
+ <%= link_to_if @samples.size > 0, "Clear Transactions (#{@samples.size})", 'reset' %><br/>
37
+ <%= link_to "List Threads", 'threads' %><br/>
38
+ <% if NewRelic::Control.instance.profiling_available? %>
39
+ <p><b>Profiling available:</b>
40
+ <% if NewRelic::Control.instance.profiling? %>
41
+ <%= link_to "Stop Profiling", 'profile?stop=true'%>
42
+ <% else %>
43
+ <%= link_to "Start Profiling", 'profile?start=true' %>
44
+ <% end %>
45
+ </p>
46
+ <% else %>
47
+ <p>You can use the ruby-prof gem to display profiles of your actions with Developer Mode. Just
48
+ install the ruby-prof gem and restart your app.</p>
49
+ <% end %>
50
+ <h3>Welcome</h3>
51
+ <p>
52
+ Welcome to <b>New Relic Developer Mode</b>. This Rails extension traces the performance activity
53
+ of your 100 most recent controller actions in your rails application, and presents the performance
54
+ information for your analysis.
55
+ </p>
56
+ <p>
57
+ The url's of the most recent transactions are presented to the left, most-recent first. Click
58
+ on any one of these to drill down and inspect its performance information.
59
+ </p>
60
+ <p>
61
+ The identical agent technology that provides this data is also capable of monitoring your application as it
62
+ runs in production. For more information, visit <a href="http://www.newrelic.com">http://www.newrelic.com</a>.
63
+ </p>
64
+ <p>
65
+ Note, to increase the accuracy of our performance measurement, we automatically "strip out" any
66
+ time spent in application code loading, which will not happen when your application runs in
67
+ production mode.
68
+ </p>
69
+ </td>
70
+ </tr>
71
+ </table>
@@ -0,0 +1,2 @@
1
+ <p>No sample found with this id. Did you restart your application? </p>
2
+ <%= link_to "Back", ''%>