ghazel-newrelic_rpm 3.4.0.2 → 3.5.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (231) hide show
  1. data/.gitignore +21 -0
  2. data/.project +23 -0
  3. data/.travis.yml +9 -0
  4. data/CHANGELOG +180 -1
  5. data/GUIDELINES_FOR_CONTRIBUTING.md +73 -0
  6. data/Gemfile +16 -0
  7. data/InstallationNotes.md +15 -0
  8. data/LICENSE +1 -1
  9. data/{README.rdoc → README.md} +71 -55
  10. data/Rakefile +54 -0
  11. data/config.dot +290 -0
  12. data/config/database.yml +5 -0
  13. data/init.rb +38 -0
  14. data/lib/new_relic/agent.rb +9 -4
  15. data/lib/new_relic/agent/agent.rb +189 -230
  16. data/lib/new_relic/agent/beacon_configuration.rb +34 -48
  17. data/lib/new_relic/agent/browser_monitoring.rb +108 -61
  18. data/lib/new_relic/agent/busy_calculator.rb +12 -4
  19. data/lib/new_relic/agent/configuration.rb +49 -0
  20. data/lib/new_relic/agent/configuration/defaults.rb +89 -0
  21. data/lib/new_relic/agent/configuration/environment_source.rb +56 -0
  22. data/lib/new_relic/agent/configuration/manager.rb +116 -0
  23. data/lib/new_relic/agent/configuration/server_source.rb +27 -0
  24. data/lib/new_relic/agent/configuration/yaml_source.rb +61 -0
  25. data/lib/new_relic/agent/database.rb +37 -22
  26. data/lib/new_relic/agent/error_collector.rb +47 -43
  27. data/lib/new_relic/agent/instrumentation/active_record.rb +1 -5
  28. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +27 -6
  29. data/lib/new_relic/agent/instrumentation/data_mapper.rb +2 -10
  30. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +1 -1
  31. data/lib/new_relic/agent/instrumentation/memcache.rb +2 -2
  32. data/lib/new_relic/agent/instrumentation/metric_frame.rb +4 -14
  33. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +4 -18
  34. data/lib/new_relic/agent/instrumentation/rack.rb +1 -1
  35. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +3 -3
  36. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +2 -2
  37. data/lib/new_relic/agent/instrumentation/rails3/errors.rb +5 -1
  38. data/lib/new_relic/agent/instrumentation/resque.rb +1 -1
  39. data/lib/new_relic/agent/instrumentation/sinatra.rb +14 -10
  40. data/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb +4 -3
  41. data/lib/new_relic/agent/method_tracer.rb +5 -1
  42. data/lib/new_relic/agent/new_relic_service.rb +231 -61
  43. data/lib/new_relic/agent/pipe_channel_manager.rb +37 -23
  44. data/lib/new_relic/agent/pipe_service.rb +5 -1
  45. data/lib/new_relic/agent/samplers/delayed_job_sampler.rb +2 -5
  46. data/lib/new_relic/agent/samplers/memory_sampler.rb +2 -2
  47. data/lib/new_relic/agent/sql_sampler.rb +44 -68
  48. data/lib/new_relic/agent/stats_engine/gc_profiler.rb +40 -24
  49. data/lib/new_relic/agent/stats_engine/metric_stats.rb +89 -14
  50. data/lib/new_relic/agent/stats_engine/samplers.rb +7 -3
  51. data/lib/new_relic/agent/stats_engine/transactions.rb +19 -11
  52. data/lib/new_relic/agent/thread.rb +27 -0
  53. data/lib/new_relic/agent/thread_profiler.rb +295 -0
  54. data/lib/new_relic/agent/transaction_info.rb +24 -4
  55. data/lib/new_relic/agent/transaction_sample_builder.rb +11 -11
  56. data/lib/new_relic/agent/transaction_sampler.rb +51 -61
  57. data/lib/new_relic/agent/worker_loop.rb +29 -15
  58. data/lib/new_relic/collection_helper.rb +1 -1
  59. data/lib/new_relic/commands/deployments.rb +19 -10
  60. data/lib/new_relic/control.rb +0 -1
  61. data/lib/new_relic/control/class_methods.rb +2 -3
  62. data/lib/new_relic/control/frameworks/rails.rb +24 -18
  63. data/lib/new_relic/control/frameworks/rails3.rb +18 -1
  64. data/lib/new_relic/control/frameworks/ruby.rb +2 -2
  65. data/lib/new_relic/control/instance_methods.rb +36 -53
  66. data/lib/new_relic/control/logging_methods.rb +5 -23
  67. data/lib/new_relic/control/server_methods.rb +11 -13
  68. data/lib/new_relic/delayed_job_injection.rb +1 -1
  69. data/lib/new_relic/helper.rb +13 -0
  70. data/lib/new_relic/language_support.rb +19 -22
  71. data/lib/new_relic/local_environment.rb +2 -3
  72. data/lib/new_relic/metric_data.rb +10 -2
  73. data/lib/new_relic/metric_spec.rb +6 -2
  74. data/lib/new_relic/noticed_error.rb +24 -9
  75. data/lib/new_relic/rack.rb +4 -0
  76. data/lib/new_relic/rack/browser_monitoring.rb +28 -10
  77. data/lib/new_relic/rack/developer_mode.rb +3 -0
  78. data/lib/new_relic/rack/error_collector.rb +56 -0
  79. data/lib/new_relic/transaction_sample.rb +23 -13
  80. data/lib/new_relic/transaction_sample/segment.rb +13 -15
  81. data/lib/new_relic/version.rb +3 -3
  82. data/lib/tasks/tests.rake +8 -8
  83. data/newrelic.yml +15 -32
  84. data/newrelic_rpm.gemspec +158 -38
  85. data/newrelic_rpm.gemspec.erb +55 -0
  86. data/test/config/newrelic.yml +3 -2
  87. data/test/intentional_fail.rb +10 -0
  88. data/test/multiverse/.gitignore +10 -0
  89. data/test/multiverse/README.md +90 -0
  90. data/test/multiverse/Rakefile +17 -0
  91. data/test/multiverse/lib/multiverse/color.rb +13 -0
  92. data/test/multiverse/lib/multiverse/envfile.rb +66 -0
  93. data/test/multiverse/lib/multiverse/environment.rb +16 -0
  94. data/test/multiverse/lib/multiverse/output_collector.rb +29 -0
  95. data/test/multiverse/lib/multiverse/runner.rb +44 -0
  96. data/test/multiverse/lib/multiverse/suite.rb +162 -0
  97. data/test/multiverse/script/run_one +3 -0
  98. data/test/multiverse/script/runner +9 -0
  99. data/test/multiverse/suites/active_record/Envfile +13 -0
  100. data/test/multiverse/suites/active_record/ar_method_aliasing.rb +94 -0
  101. data/test/multiverse/suites/active_record/config/newrelic.yml +22 -0
  102. data/test/multiverse/suites/active_record/encoding_test.rb +26 -0
  103. data/test/multiverse/suites/agent_only/Envfile +3 -0
  104. data/test/multiverse/suites/agent_only/config/newrelic.yml +22 -0
  105. data/test/multiverse/suites/agent_only/http_response_code_test.rb +53 -0
  106. data/test/multiverse/suites/agent_only/marshaling_test.rb +109 -0
  107. data/test/multiverse/suites/agent_only/method_visibility_test.rb +98 -0
  108. data/test/multiverse/suites/agent_only/pipe_manager_test.rb +33 -0
  109. data/test/multiverse/suites/agent_only/service_timeout_test.rb +29 -0
  110. data/test/multiverse/suites/agent_only/test_trace_method_with_punctuation.rb +30 -0
  111. data/test/multiverse/suites/agent_only/test_trace_transaction_with_punctuation.rb +32 -0
  112. data/test/multiverse/suites/agent_only/thread_profiling_test.rb +80 -0
  113. data/test/multiverse/suites/datamapper/Envfile +8 -0
  114. data/test/multiverse/suites/datamapper/config/newrelic.yml +22 -0
  115. data/test/multiverse/suites/datamapper/encoding_test.rb +36 -0
  116. data/test/multiverse/suites/monitor_mode_false/Envfile +2 -0
  117. data/test/multiverse/suites/monitor_mode_false/config/newrelic.yml +25 -0
  118. data/test/multiverse/suites/monitor_mode_false/no_dns_resolv.rb +29 -0
  119. data/test/multiverse/suites/no_load/Envfile +2 -0
  120. data/test/multiverse/suites/no_load/config/newrelic.yml +23 -0
  121. data/test/multiverse/suites/no_load/start_up_test.rb +14 -0
  122. data/test/multiverse/suites/rails_3_error_tracing/Envfile +15 -0
  123. data/test/multiverse/suites/rails_3_error_tracing/config/newrelic.yml +165 -0
  124. data/test/multiverse/suites/rails_3_error_tracing/error_tracing_test.rb +236 -0
  125. data/test/multiverse/suites/rails_3_gc/Envfile +8 -0
  126. data/test/multiverse/suites/rails_3_gc/config/newrelic.yml +167 -0
  127. data/test/multiverse/suites/rails_3_gc/instrumentation_test.rb +92 -0
  128. data/test/multiverse/suites/rails_3_queue_time/Envfile +15 -0
  129. data/test/multiverse/suites/rails_3_queue_time/config/newrelic.yml +165 -0
  130. data/test/multiverse/suites/rails_3_queue_time/queue_time_test.rb +75 -0
  131. data/test/multiverse/suites/rails_3_views/.gitignore +3 -0
  132. data/test/multiverse/suites/rails_3_views/Envfile +16 -0
  133. data/test/multiverse/suites/rails_3_views/app/views/foos/_foo.html.haml +1 -0
  134. data/test/multiverse/suites/rails_3_views/app/views/test/_a_partial.html.erb +1 -0
  135. data/test/multiverse/suites/rails_3_views/app/views/test/_mid_partial.html.erb +1 -0
  136. data/test/multiverse/suites/rails_3_views/app/views/test/_top_partial.html.erb +3 -0
  137. data/test/multiverse/suites/rails_3_views/app/views/test/deep_partial.html.erb +3 -0
  138. data/test/multiverse/suites/rails_3_views/app/views/test/haml_view.html.haml +6 -0
  139. data/test/multiverse/suites/rails_3_views/app/views/test/index.html.erb +4 -0
  140. data/test/multiverse/suites/rails_3_views/config/newrelic.yml +164 -0
  141. data/test/multiverse/suites/rails_3_views/view_instrumentation_test.rb +245 -0
  142. data/test/multiverse/suites/resque/Envfile +21 -0
  143. data/test/multiverse/suites/resque/config/newrelic.yml +22 -0
  144. data/test/multiverse/suites/resque/dump.rdb +0 -0
  145. data/test/multiverse/suites/resque/instrumentation_test.rb +73 -0
  146. data/test/multiverse/suites/rum_auto_instrumentation/Envfile +4 -0
  147. data/test/multiverse/suites/rum_auto_instrumentation/config/newrelic.yml +24 -0
  148. data/test/multiverse/suites/rum_auto_instrumentation/problem_response.html +422 -0
  149. data/test/multiverse/suites/rum_auto_instrumentation/responses/worst_case_small.html +5000 -0
  150. data/test/multiverse/suites/rum_auto_instrumentation/sanity_test.rb +115 -0
  151. data/test/multiverse/suites/sinatra/Envfile +13 -0
  152. data/test/multiverse/suites/sinatra/config/newrelic.yml +24 -0
  153. data/test/multiverse/suites/sinatra/sinatra_metric_explosion_test.rb +76 -0
  154. data/test/multiverse/suites/sinatra/sinatra_routes_test.rb +46 -0
  155. data/test/multiverse/test/multiverse_test.rb +55 -0
  156. data/test/multiverse/test/suite_examples/one/a/Envfile +3 -0
  157. data/test/multiverse/test/suite_examples/one/a/a_test.rb +11 -0
  158. data/test/multiverse/test/suite_examples/one/a/config/newrelic.yml +24 -0
  159. data/test/multiverse/test/suite_examples/one/b/Envfile +3 -0
  160. data/test/multiverse/test/suite_examples/one/b/b_test.rb +11 -0
  161. data/test/multiverse/test/suite_examples/one/b/config/newrelic.yml +24 -0
  162. data/test/multiverse/test/suite_examples/three/a/Envfile +2 -0
  163. data/test/multiverse/test/suite_examples/three/a/fail_test.rb +6 -0
  164. data/test/multiverse/test/suite_examples/three/b/Envfile +2 -0
  165. data/test/multiverse/test/suite_examples/three/b/win_test.rb +6 -0
  166. data/test/multiverse/test/suite_examples/two/a/Envfile +1 -0
  167. data/test/multiverse/test/suite_examples/two/a/fail_test.rb +6 -0
  168. data/test/new_relic/agent/agent/connect_test.rb +134 -164
  169. data/test/new_relic/agent/agent/start_test.rb +111 -81
  170. data/test/new_relic/agent/agent/start_worker_thread_test.rb +6 -33
  171. data/test/new_relic/agent/agent_test.rb +88 -9
  172. data/test/new_relic/agent/agent_test_controller.rb +1 -1
  173. data/test/new_relic/agent/agent_test_controller_test.rb +42 -10
  174. data/test/new_relic/agent/beacon_configuration_test.rb +63 -67
  175. data/test/new_relic/agent/browser_monitoring_test.rb +150 -79
  176. data/test/new_relic/agent/configuration/environment_source_test.rb +74 -0
  177. data/test/new_relic/agent/configuration/manager_test.rb +149 -0
  178. data/test/new_relic/agent/configuration/server_source_test.rb +45 -0
  179. data/test/new_relic/agent/configuration/yaml_source_test.rb +56 -0
  180. data/test/new_relic/agent/error_collector/notice_error_test.rb +63 -50
  181. data/test/new_relic/agent/error_collector_test.rb +22 -12
  182. data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +21 -11
  183. data/test/new_relic/agent/instrumentation/metric_frame_test.rb +6 -0
  184. data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +2 -2
  185. data/test/new_relic/agent/method_tracer/class_methods/add_method_tracer_test.rb +5 -5
  186. data/test/new_relic/agent/method_tracer_test.rb +6 -6
  187. data/test/new_relic/agent/mock_scope_listener.rb +3 -0
  188. data/test/new_relic/agent/new_relic_service_test.rb +208 -23
  189. data/test/new_relic/agent/pipe_channel_manager_test.rb +34 -17
  190. data/test/new_relic/agent/rpm_agent_test.rb +27 -23
  191. data/test/new_relic/agent/sql_sampler_test.rb +81 -56
  192. data/test/new_relic/agent/stats_engine/metric_stats/harvest_test.rb +3 -20
  193. data/test/new_relic/agent/stats_engine/metric_stats_test.rb +12 -1
  194. data/test/new_relic/agent/stats_engine_test.rb +17 -8
  195. data/test/new_relic/agent/thread_profiler_test.rb +536 -0
  196. data/test/new_relic/agent/thread_test.rb +76 -0
  197. data/test/new_relic/agent/threaded_test.rb +65 -0
  198. data/test/new_relic/agent/transaction_info_test.rb +45 -4
  199. data/test/new_relic/agent/transaction_sample_builder_test.rb +8 -6
  200. data/test/new_relic/agent/transaction_sampler_test.rb +193 -204
  201. data/test/new_relic/agent/worker_loop_test.rb +20 -0
  202. data/test/new_relic/agent_test.rb +69 -41
  203. data/test/new_relic/collection_helper_test.rb +7 -8
  204. data/test/new_relic/command/deployments_test.rb +18 -2
  205. data/test/new_relic/control/frameworks/rails_test.rb +26 -0
  206. data/test/new_relic/control/logging_methods_test.rb +78 -52
  207. data/test/new_relic/control_test.rb +91 -129
  208. data/test/new_relic/fake_collector.rb +103 -31
  209. data/test/new_relic/fake_service.rb +8 -2
  210. data/test/new_relic/load_test.rb +13 -0
  211. data/test/new_relic/local_environment_test.rb +7 -10
  212. data/test/new_relic/metric_data_test.rb +45 -16
  213. data/test/new_relic/noticed_error_test.rb +14 -0
  214. data/test/new_relic/rack/browser_monitoring_test.rb +15 -9
  215. data/test/new_relic/rack/developer_mode_test.rb +13 -7
  216. data/test/new_relic/rack/error_collector_test.rb +74 -0
  217. data/test/new_relic/transaction_sample/segment_test.rb +23 -4
  218. data/test/new_relic/transaction_sample_test.rb +47 -2
  219. data/test/script/build_test_gem.sh +9 -3
  220. data/test/script/ci.sh +48 -21
  221. data/test/script/ci_multiverse_runner.sh +11 -11
  222. data/test/test_helper.rb +37 -18
  223. data/ui/helpers/developer_mode_helper.rb +21 -11
  224. data/ui/views/layouts/newrelic_default.rhtml +1 -0
  225. data/ui/views/newrelic/show_sample.rhtml +1 -1
  226. data/ui/views/newrelic/threads.rhtml +2 -10
  227. data/vendor/gems/metric_parser-0.1.0.pre1/.specification +116 -0
  228. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/servlet_init.rb +7 -0
  229. metadata +132 -58
  230. data/lib/new_relic/control/configuration.rb +0 -206
  231. data/test/new_relic/control/configuration_test.rb +0 -77
@@ -1,10 +1,15 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # print commands in this script as they're invoked
4
- set -x
4
+ #set -x
5
5
  # fail if any command fails
6
6
  set -e
7
7
 
8
+ . "$HOME/.rvm/scripts/rvm"
9
+
10
+ #rvm 1.9.3
11
+
12
+
8
13
  if [ "x$BUILD_NUMBER" == "x" ]; then
9
14
  echo '$BUILD_NUMBER is undefined'
10
15
  echo 'setting $BUILD_NUMBER to alpha'
@@ -12,7 +17,7 @@ if [ "x$BUILD_NUMBER" == "x" ]; then
12
17
  fi
13
18
 
14
19
  SHA1=`git log --pretty=format:'%h' -n 1`
15
- echo "building gem for commit $SHA"
20
+ echo "building gem for commit $SHA1"
16
21
 
17
22
  if [[ `gem list jeweler | grep [j]eweler | wc -l` -eq 1 ]]; then
18
23
  echo "detected jeweler. skipping install"
@@ -28,7 +33,8 @@ mkdir gems
28
33
 
29
34
  # FIXME: don't include the $SHA1 since some of our builds systems are confused
30
35
  # by this.
31
- BUILD_ID=$BUILD_NUMBER #.$SHA1
36
+ #BUILD_ID="$SHA1.$BUILD_NUMBER" #.$SHA1
37
+ BUILD_ID="$BUILD_NUMBER" #.$SHA1
32
38
 
33
39
  # rewrite the version file, setting the patch identifier to include the
34
40
  # BUILD_ID
@@ -1,12 +1,12 @@
1
1
  #!/bin/bash
2
2
 
3
3
  # Script to run test suites in CI or in development mode. This script handles
4
- # checking out test dependencies (currently rpm_test_app and it's dependencies)
4
+ # checking out test dependencies (currently rpm_test_app and its dependencies)
5
5
  # and executing them.
6
6
  #
7
7
  # It relies on 2 environment variables:
8
8
  #
9
- # RUBY - The rvm ruby you want to use (e.g. 1.8.7, ree, jruby)
9
+ # RUBY - The rbenv ruby you want to use (e.g. 1.8.7, ree, jruby)
10
10
  #
11
11
  # BRANCH - The rpm_test_app branch you want to use (e.g. rails20, rails31)
12
12
  #
@@ -29,17 +29,47 @@ set -e
29
29
  if [ "x$RUBY" == "x" ]; then
30
30
  echo '$RUBY is undefined'
31
31
  echo 'defaulting to 1.9.3'
32
- RUBY=1.9.3
32
+ export RUBY=1.9.3-p286
33
33
  fi
34
34
  if [ "x$BRANCH" == "x" ]; then
35
35
  echo '$BRANCH is undefined'
36
36
  echo 'defaulting to rails31'
37
- BRANCH=rails31
37
+ export BRANCH=rails31
38
+ fi
39
+
40
+ if [ "x$JOB_NAME" == "x" ]; then
41
+ echo '$JOB_NAME is undefined'
42
+ echo 'defaulting to clrun'
43
+ export PROJECT_NAME=clrun
44
+ else
45
+ CLEANSED_NAME=`echo $JOB_NAME | sed "s/label//" | sed "s/Portland//" | sed "s/BRANCH//" | sed "s/RUBY//" | sed "s/[=\/,\._]//g" | sed "s/ReleaseCandidate/RC/"`
46
+ echo "setting PROJECT_NAME to $CLEANSED_NAME"
47
+ export PROJECT_NAME="$CLEANSED_NAME"
48
+ fi
49
+
50
+ eval "$(rbenv init -)" || true
51
+ rbenv shell $RUBY
52
+ if [ "x$(rbenv version-name)" = "x$RUBY" ]; then
53
+ echo "switched to ruby $RUBY"
54
+ else
55
+ rbenv install $RUBY
56
+ rbenv shell $RUBY
57
+ if [ "x$(rbenv version-name)" = "x$RUBY" ]; then
58
+ echo "switched to ruby $RUBY"
59
+ else
60
+ echo "failed to install ruby $RUBY"
61
+ exit 1
62
+ fi
38
63
  fi
39
64
 
40
- . "$HOME/.rvm/scripts/rvm"
41
- rvm use $RUBY || rvm install $RUBY
42
65
  echo `which ruby`
66
+ ruby -v
67
+
68
+ rake -h > /dev/null || gem install rake
69
+
70
+ echo "generating gemspec"
71
+ rake gemspec
72
+
43
73
 
44
74
  # make sure that we're in the project root
45
75
  script_dirname=`dirname $0`
@@ -60,7 +90,7 @@ rpm_test_app_cache=~/workspace/.rpm_test_app_cache
60
90
  )
61
91
 
62
92
  git clone $rpm_test_app_cache rpm_test_app
63
- cd rpm_test_app || true # rvm overrides cd and it's f-ing up the build by exiting 2
93
+ cd rpm_test_app
64
94
 
65
95
  git checkout -t origin/$BRANCH || git checkout $BRANCH
66
96
 
@@ -73,7 +103,7 @@ mysql: &mysql
73
103
  socket: <%= (`uname -s` =~ /Linux/ ) ? "" :"/tmp/mysql.sock" %>
74
104
  username: root
75
105
  host: localhost
76
- database: <%= [ 'rails_blog', ENV['BRANCH'], ENV['RUBY'] ].compact.join('_') %>
106
+ database: <%= ENV['PROJECT_NAME'] %>
77
107
 
78
108
  # Shared properties for postgres. This won't work with our schema but
79
109
  # Does work with agent tests
@@ -87,7 +117,7 @@ sqlite3: &sqlite3
87
117
  pool: 5
88
118
  timeout: 5000
89
119
  host: localhost
90
-
120
+
91
121
  # SQLite version 3.x
92
122
  # gem install sqlite3-ruby (not necessary on OS X Leopard)
93
123
  development:
@@ -104,29 +134,25 @@ YAML
104
134
  mkdir -p log
105
135
  mkdir -p tmp
106
136
  if [ "x$BRANCH" == "xrails20" ]; then
107
- printf "\e[0;31;49mWarning:\e[0m "
108
- echo "Testing against the rails20 branch requires your changes to be committed. Uncommitted changes will not be used."
137
+ echo "Warning: Rails 2.0 support in progress. This probably only works in CI"
109
138
  mkdir -p vendor/plugins
110
- git clone ../.. vendor/plugins/newrelic_rpm
139
+ GEM=`ls ../../../*.gem | tail -n1`
140
+ (cd vendor/plugins && gem unpack ../../$GEM)
141
+ mv vendor/plugins/newrelic_rpm* vendor/plugins/newrelic_rpm
111
142
  else
112
143
  perl -p -i'.bak' -e 's#gem .newrelic_rpm.*$#gem "newrelic_rpm", :path => "\.\.\/\.\.\/"#' Gemfile
113
144
  fi
114
145
 
115
- # save time by reusing the gemset if it exists
116
-
117
- gemset=ruby_agent_tests_$BRANCH
118
- rvm gemset use $gemset || ( rvm gemset create $gemset && rvm gemset use $gemset )
119
-
120
146
  if [ "x$RUBY" == "x1.8.6" ]; then
121
147
  # Bundler 0.1 dropped support for ruby 1.8.6
122
- gem install bundler -v'~>1.0.0' --no-rdoc --no-ri
148
+ bundle -h > /dev/null || gem install bundler -v'~>1.0.0' --no-rdoc --no-ri
123
149
  else
124
- gem install bundler --no-rdoc --no-ri
150
+ bundle -h > /dev/null || gem install bundler --no-rdoc --no-ri
125
151
  fi
126
152
 
127
153
 
128
154
  export RAILS_ENV=test
129
- bundle
155
+ bundle --local || bundle
130
156
 
131
157
  # FIXME: Here we actually trigger the tests. Since the agent deals so heavily
132
158
  # in units of time we have many tests that assert that durations are measured
@@ -137,4 +163,5 @@ bundle
137
163
  # To reduce the noise from these sporardic failures we rerun the test suite if
138
164
  # there are failures to see if they are transient (instead of re-running it by
139
165
  # hand). Ultimately we'll move towards a more elegant solution.
140
- bundle exec rake --trace db:create:all test:newrelic || bundle exec rake --trace test:newrelic || bundle exec rake --trace test:newrelic
166
+
167
+ bundle exec rake --trace db:create:all test:newrelic || bundle exec rake --trace test:newrelic
@@ -9,7 +9,7 @@ echo $PATH
9
9
 
10
10
 
11
11
  if [ "x$RUBY" == "x" ] ; then
12
- export RUBY=1.9.3
12
+ export RUBY=1.9.3
13
13
  fi
14
14
 
15
15
  echo "Tests will be run using $RUBY"
@@ -24,8 +24,8 @@ cd "$script_dirname/../../"
24
24
  #pwd
25
25
 
26
26
  if [ -x $SCRATH_DIR ] ; then
27
- echo "found tmp, deleting"
28
- rm -fr $SCRATH_DIR
27
+ echo "found tmp, deleting"
28
+ rm -fr $SCRATH_DIR
29
29
  fi
30
30
 
31
31
  mkdir $SCRATH_DIR
@@ -33,9 +33,9 @@ cd $SCRATH_DIR
33
33
 
34
34
  #pwd
35
35
  if [[ $JOB_NAME =~ "Pangalactic" ]] ; then
36
- AGENT_LOCATION="../../../../../../Ruby_Agent"
36
+ AGENT_LOCATION="../../../../../../Ruby_Agent"
37
37
  else
38
- AGENT_LOCATION="../../Ruby_Agent"
38
+ AGENT_LOCATION="../../Ruby_Agent"
39
39
  fi
40
40
 
41
41
  git clone --depth=1 git@github.com:newrelic/multiverse.git multiverse
@@ -46,10 +46,10 @@ echo "Looking for Ruby Agent at $AGENT_LOCATION"
46
46
  #ls -l /home/hudson/workspace/
47
47
 
48
48
  if [ -x $AGENT_LOCATION ] ; then
49
- ln -s $AGENT_LOCATION ./ruby_agent
49
+ ln -s $AGENT_LOCATION ./ruby_agent
50
50
  else
51
- echo "*********** Ruby_Agent not found ***********"
52
- exit 1
51
+ echo "*********** Ruby_Agent not found ***********"
52
+ exit 1
53
53
  fi
54
54
 
55
55
  cd multiverse
@@ -58,6 +58,6 @@ cd multiverse
58
58
  #pwd
59
59
  #ls -l ../
60
60
 
61
- source ~/.rvm/scripts/rvm
62
- rvm use $RUBY
63
- script/runner
61
+ eval "$(rbenv init -)" || true
62
+ rbenv shell $RUBY
63
+ script/runner
@@ -3,46 +3,55 @@ ENV['RAILS_ENV'] = 'test'
3
3
  NEWRELIC_PLUGIN_DIR = File.expand_path(File.join(File.dirname(__FILE__),".."))
4
4
  $LOAD_PATH << '.'
5
5
  $LOAD_PATH << '../../..'
6
+ $LOAD_PATH << File.join(NEWRELIC_PLUGIN_DIR,"lib")
6
7
  $LOAD_PATH << File.join(NEWRELIC_PLUGIN_DIR,"test")
7
8
  $LOAD_PATH << File.join(NEWRELIC_PLUGIN_DIR,"ui/helpers")
8
9
  $LOAD_PATH.uniq!
9
10
 
10
11
  require 'rubygems'
12
+ require 'rake'
11
13
  # We can speed things up in tests that don't need to load rails.
12
14
  # You can also run the tests in a mode without rails. Many tests
13
15
  # will be skipped.
14
16
 
15
17
  begin
16
18
  require 'config/environment'
17
- # require File.join(File.dirname(__FILE__),'..','..','rpm_test_app','config','environment')
19
+ # require File.join(File.dirname(__FILE__),'..','..','rpm_test_app','config','environment')
18
20
  begin
19
21
  require 'test_help'
20
22
  rescue LoadError
21
23
  # ignore load problems on test help - it doesn't exist in rails 3
22
24
  end
23
-
24
- rescue LoadError
25
- # To run the tests against a standalone agent build, you need to
26
- # add a rails app to the load path. It can be 2.* to 3.*. It should
27
- # referenc newrelic_rpm in the Gemfile with a :path option pointing
28
- # to this work directory.
29
- guess = File.expand_path("../../../rpm", __FILE__)
30
- if $LOAD_PATH.include? guess
31
- puts "Unable to load Rails for New Relic tests. See note in test_helper.rb"
32
- raise
33
- else
34
- $LOAD_PATH << guess
35
- retry
25
+ require 'newrelic_rpm'
26
+ rescue LoadError => e
27
+ puts "Running tests in standalone mode."
28
+ require 'bundler'
29
+ Bundler.require
30
+ require 'rails/all'
31
+ require 'newrelic_rpm'
32
+
33
+ # Bootstrap a basic rails environment for the agent to run in.
34
+ class MyApp < Rails::Application
35
+ config.active_support.deprecation = :log
36
+ config.secret_token = "49837489qkuweoiuoqwehisuakshdjksadhaisdy78o34y138974xyqp9rmye8yrpiokeuioqwzyoiuxftoyqiuxrhm3iou1hrzmjk"
37
+ config.after_initialize do
38
+ NewRelic::Agent.manual_start
39
+ end
36
40
  end
41
+ MyApp.initialize!
42
+
37
43
  end
38
- require 'newrelic_rpm'
39
44
 
40
45
  require 'test/unit'
41
46
  require 'shoulda'
42
47
  require 'test_contexts'
43
48
  require 'mocha'
44
- require 'mocha/integration/test_unit'
45
- require 'mocha/integration/test_unit/assertion_counter'
49
+
50
+ begin # 1.8.6
51
+ require 'mocha/integration/test_unit'
52
+ require 'mocha/integration/test_unit/assertion_counter'
53
+ rescue LoadError
54
+ end
46
55
 
47
56
  require 'new_relic/fake_service'
48
57
 
@@ -118,7 +127,18 @@ def compare_metrics(expected, actual)
118
127
  assert_equal(expected.to_a.sort, actual.to_a.sort, "extra: #{(actual - expected).to_a.inspect}; missing: #{(expected - actual).to_a.inspect}")
119
128
  end
120
129
 
130
+ def with_config(config_hash, level=0)
131
+ config = NewRelic::Agent::Configuration::DottedHash.new(config_hash)
132
+ NewRelic::Agent.config.apply_config(config, level)
133
+ begin
134
+ yield
135
+ ensure
136
+ NewRelic::Agent.config.remove_config(config)
137
+ end
138
+ end
139
+
121
140
  module TransactionSampleTestHelper
141
+ module_function
122
142
  def make_sql_transaction(*sql)
123
143
  sampler = NewRelic::Agent::TransactionSampler.new
124
144
  sampler.notice_first_scope_push Time.now.to_f
@@ -153,5 +173,4 @@ module TransactionSampleTestHelper
153
173
  sampler.notice_scope_empty
154
174
  sampler.samples[0]
155
175
  end
156
- module_function :run_sample_trace_on
157
176
  end
@@ -70,7 +70,7 @@ module NewRelic::DeveloperModeHelper
70
70
  rescue
71
71
  # catch all other exceptions. We're going to create an invalid link below, but that's okay.
72
72
  end
73
- if using_textmate?
73
+ if NewRelic::Agent.config[:textmate]
74
74
  "txmt://open?url=file://#{file}&line=#{line}"
75
75
  else
76
76
  "show_source?file=#{file}&amp;line=#{line}&amp;anchor=selected_line"
@@ -105,7 +105,7 @@ module NewRelic::DeveloperModeHelper
105
105
 
106
106
  # write a link to the source for a trace
107
107
  def link_to_source(trace)
108
- image_url = 'file/images/' + (using_textmate? ? "textmate.png" : "file_icon.png")
108
+ image_url = 'file/images/' + (NewRelic::Agent.config[:textmate] ? "textmate.png" : "file_icon.png")
109
109
 
110
110
  link_to "<img src=#{image_url} alt=\"View Source\" title=\"View Source\"/>", url_for_source(application_caller(trace))
111
111
  end
@@ -239,11 +239,6 @@ module NewRelic::DeveloperModeHelper
239
239
  end
240
240
  end
241
241
 
242
- def using_textmate?
243
- NewRelic::Control.instance.use_textmate?
244
- end
245
-
246
-
247
242
  def render_segment_details(segment, depth=0)
248
243
  @detail_segment_count ||= 0
249
244
  @detail_segment_count += 1
@@ -348,10 +343,25 @@ module NewRelic::DeveloperModeHelper
348
343
  parts.join '.'
349
344
  end
350
345
 
351
- def profile_table(profile)
346
+ SORT_REPLACEMENTS = {
347
+ "Total" => :total_time,
348
+ "Self" => :self_time,
349
+ "Child" => :children_time,
350
+ "Wait" => :wait_time
351
+ }
352
+
353
+ def profile_table(sample, options)
352
354
  out = StringIO.new
353
- printer = RubyProf::GraphHtmlPrinter.new(profile)
354
- printer.print(out, :min_percent=>0.5)
355
- out.string[/<body>(.*)<\/body>/im, 0].gsub('<table>', '<table class=profile>')
355
+ printer = RubyProf::GraphHtmlPrinter.new(sample.profile)
356
+ printer.print(out, options)
357
+ out = out.string[/<body>(.*)<\/body>/im, 0].gsub('<table>', '<table class=profile>')
358
+ SORT_REPLACEMENTS.each do |text, param|
359
+ replacement = (options[:sort_method] == param) ?
360
+ "<th> #{text}&nbsp;&darr;</th>" :
361
+ "<th>#{link_to text, "show_sample_summary?id=#{sample.sample_id}&sort=#{param}"}</th>"
362
+
363
+ out.gsub!(/<th> +#{text}<\/th>/, replacement)
364
+ end
365
+ out
356
366
  end
357
367
  end
@@ -2,6 +2,7 @@
2
2
  xml:lang="en" lang="en">
3
3
  <head>
4
4
  <script type="text/javascript" src="/newrelic/file/javascript/jquery-1.4.2.js"></script>
5
+ <meta charset="utf-8" />
5
6
  <title>New Relic Developer Mode</title>
6
7
  <link href="/newrelic/file/stylesheets/style.css"
7
8
  media="screen" rel="stylesheet" type="text/css" />
@@ -62,7 +62,7 @@
62
62
  <br/>
63
63
  <div id="view_sample">
64
64
  <% if @sample.profile %>
65
- <%= profile_table(@sample.profile) %>
65
+ <%= profile_table(@sample, @profile_options) %>
66
66
  <% else %>
67
67
  <div align=center width="100%">
68
68
  <%= show_view_link 'Summary', 'show_sample_summary' %>
@@ -8,22 +8,18 @@
8
8
  <th class="left">Status</th>
9
9
  <th class="left">Group</th>
10
10
  <th class="left">Priority</th>
11
- <th class="left">Locals</th>
12
11
  </thead>
13
12
  <%
14
13
  main = Thread.main
15
14
  threads = Thread.list - [ main ]
16
15
  nr_threads = []
17
- threads.delete_if { | thread | nr_threads << thread if thread.key? 'newrelic_label' }
16
+ threads.delete_if { | thread | nr_threads << thread if thread.key?(:newrelic_label) }
18
17
  ([ main ] + threads).each_with_index do | thread, i | %>
19
18
  <tr class="odd_row">
20
19
  <td valign="top"><%= h(thread == main ? 'main' : thread.to_s) %></td>
21
20
  <td valign="top"><%= h(thread.status || 'terminated with exception') %></td>
22
21
  <td valign="top"><%= h(thread.group || 'none') %></td>
23
22
  <td valign="top"><%= h thread.priority %></td>
24
- <td class="locals">
25
- <%= thread.keys.map{|k| h k}.join("</br>") %>
26
- </td>
27
23
  </tr>
28
24
  <% end %>
29
25
  <% if nr_threads.size > 0 %>
@@ -34,18 +30,14 @@
34
30
  <th class="left">Status</th>
35
31
  <th class="left">Group</th>
36
32
  <th class="left">Priority</th>
37
- <th class="left">Locals</th>
38
33
  </thead>
39
34
 
40
35
  <% nr_threads.each_with_index do | thread, i | %>
41
36
  <tr class="odd_row">
42
- <td valign="top"><%= h thread['newrelic_label'] %></td>
37
+ <td valign="top"><%= h thread[:newrelic_label] %></td>
43
38
  <td valign="top"><%= h(thread.status || 'terminated with exception') %></td>
44
39
  <td valign="top"><%= h(thread.group || 'none') %></td>
45
40
  <td valign="top"><%= h thread.priority %></td>
46
- <td class="locals">
47
- <%= (thread.keys - ['newrelic_label']).map{|k| h k}.join("</br>") %>
48
- </td>
49
41
  </tr>
50
42
  <% end %>
51
43
  <% end %>
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metric_parser
3
+ version: !ruby/object:Gem::Version
4
+ hash: 270495464
5
+ prerelease: true
6
+ segments:
7
+ - 0
8
+ - 1
9
+ - 0
10
+ - pre1
11
+ version: 0.1.0.pre1
12
+ platform: ruby
13
+ authors:
14
+ - Justin George
15
+ autorequire:
16
+ bindir: bin
17
+ cert_chain: []
18
+
19
+ date: 2010-08-12 00:00:00 +00:00
20
+ default_executable:
21
+ dependencies: []
22
+
23
+ description: A standard way to parse New Relic metric names
24
+ email:
25
+ - support@newrelic.com
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files: []
31
+
32
+ files:
33
+ - lib/metric_parser.rb
34
+ - lib/new_relic/metric_parser/action_mailer.rb
35
+ - lib/new_relic/metric_parser/active_merchant.rb
36
+ - lib/new_relic/metric_parser/active_record.rb
37
+ - lib/new_relic/metric_parser/apdex.rb
38
+ - lib/new_relic/metric_parser/background_transaction.rb
39
+ - lib/new_relic/metric_parser/client.rb
40
+ - lib/new_relic/metric_parser/controller.rb
41
+ - lib/new_relic/metric_parser/controller_cpu.rb
42
+ - lib/new_relic/metric_parser/controller_ext.rb
43
+ - lib/new_relic/metric_parser/database.rb
44
+ - lib/new_relic/metric_parser/database_pool.rb
45
+ - lib/new_relic/metric_parser/dot_net.rb
46
+ - lib/new_relic/metric_parser/dot_net_parser.rb
47
+ - lib/new_relic/metric_parser/errors.rb
48
+ - lib/new_relic/metric_parser/external.rb
49
+ - lib/new_relic/metric_parser/frontend.rb
50
+ - lib/new_relic/metric_parser/gc.rb
51
+ - lib/new_relic/metric_parser/hibernate_session.rb
52
+ - lib/new_relic/metric_parser/java.rb
53
+ - lib/new_relic/metric_parser/java_parser.rb
54
+ - lib/new_relic/metric_parser/jsp.rb
55
+ - lib/new_relic/metric_parser/jsp_tag.rb
56
+ - lib/new_relic/metric_parser/mem_cache.rb
57
+ - lib/new_relic/metric_parser/metric_parser.rb
58
+ - lib/new_relic/metric_parser/orm.rb
59
+ - lib/new_relic/metric_parser/other_transaction.rb
60
+ - lib/new_relic/metric_parser/servlet.rb
61
+ - lib/new_relic/metric_parser/servlet_context_listener.rb
62
+ - lib/new_relic/metric_parser/servlet_filter.rb
63
+ - lib/new_relic/metric_parser/servlet_init.rb
64
+ - lib/new_relic/metric_parser/solr.rb
65
+ - lib/new_relic/metric_parser/solr_request_handler.rb
66
+ - lib/new_relic/metric_parser/spring.rb
67
+ - lib/new_relic/metric_parser/spring_controller.rb
68
+ - lib/new_relic/metric_parser/spring_view.rb
69
+ - lib/new_relic/metric_parser/struts_action.rb
70
+ - lib/new_relic/metric_parser/struts_result.rb
71
+ - lib/new_relic/metric_parser/version.rb
72
+ - lib/new_relic/metric_parser/view.rb
73
+ - lib/new_relic/metric_parser/web_frontend.rb
74
+ - lib/new_relic/metric_parser/web_service.rb
75
+ - lib/new_relic/metric_parser/web_transaction.rb
76
+ - lib/new_relic/metric_parser.rb
77
+ - LICENSE
78
+ - README
79
+ has_rdoc: true
80
+ homepage: http://www.newrelic.com
81
+ licenses: []
82
+
83
+ post_install_message:
84
+ rdoc_options: []
85
+
86
+ require_paths:
87
+ - lib
88
+ required_ruby_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ hash: 3
94
+ segments:
95
+ - 0
96
+ version: "0"
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ none: false
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ hash: 31
103
+ segments:
104
+ - 1
105
+ - 2
106
+ - 0
107
+ version: 1.2.0
108
+ requirements: []
109
+
110
+ rubyforge_project:
111
+ rubygems_version: 1.3.7
112
+ signing_key:
113
+ specification_version: 3
114
+ summary: A standard way to parse New Relic metric names
115
+ test_files: []
116
+