newrelic_rpm 3.1.2 → 3.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of newrelic_rpm might be problematic. Click here for more details.

Files changed (69) hide show
  1. data/CHANGELOG +9 -0
  2. data/lib/new_relic/agent.rb +12 -3
  3. data/lib/new_relic/agent/agent.rb +99 -97
  4. data/lib/new_relic/agent/database.rb +203 -0
  5. data/lib/new_relic/agent/instrumentation/active_merchant.rb +2 -0
  6. data/lib/new_relic/agent/instrumentation/acts_as_solr.rb +2 -0
  7. data/lib/new_relic/agent/instrumentation/authlogic.rb +2 -0
  8. data/lib/new_relic/agent/instrumentation/data_mapper.rb +2 -0
  9. data/lib/new_relic/agent/instrumentation/delayed_job_instrumentation.rb +2 -0
  10. data/lib/new_relic/agent/instrumentation/memcache.rb +23 -13
  11. data/lib/new_relic/agent/instrumentation/merb/controller.rb +2 -1
  12. data/lib/new_relic/agent/instrumentation/merb/errors.rb +2 -0
  13. data/lib/new_relic/agent/instrumentation/metric_frame.rb +7 -1
  14. data/lib/new_relic/agent/instrumentation/metric_frame/pop.rb +1 -0
  15. data/lib/new_relic/agent/instrumentation/net.rb +2 -0
  16. data/lib/new_relic/agent/instrumentation/passenger_instrumentation.rb +2 -0
  17. data/lib/new_relic/agent/instrumentation/rails/action_controller.rb +63 -36
  18. data/lib/new_relic/agent/instrumentation/rails/action_web_service.rb +2 -0
  19. data/lib/new_relic/agent/instrumentation/rails/active_record_instrumentation.rb +5 -2
  20. data/lib/new_relic/agent/instrumentation/rails/errors.rb +4 -2
  21. data/lib/new_relic/agent/instrumentation/rails3/action_controller.rb +56 -2
  22. data/lib/new_relic/agent/instrumentation/rails3/active_record_instrumentation.rb +5 -2
  23. data/lib/new_relic/agent/instrumentation/rails3/errors.rb +3 -1
  24. data/lib/new_relic/agent/instrumentation/sunspot.rb +2 -0
  25. data/lib/new_relic/agent/instrumentation/unicorn_instrumentation.rb +2 -1
  26. data/lib/new_relic/agent/shim_agent.rb +1 -0
  27. data/lib/new_relic/agent/sql_sampler.rb +230 -0
  28. data/lib/new_relic/agent/stats_engine/transactions.rb +10 -0
  29. data/lib/new_relic/agent/transaction_sampler.rb +11 -6
  30. data/lib/new_relic/collection_helper.rb +7 -4
  31. data/lib/new_relic/commands/deployments.rb +1 -1
  32. data/lib/new_relic/commands/install.rb +2 -13
  33. data/lib/new_relic/control/class_methods.rb +4 -3
  34. data/lib/new_relic/control/configuration.rb +21 -0
  35. data/lib/new_relic/control/frameworks/rails.rb +1 -1
  36. data/lib/new_relic/control/logging_methods.rb +17 -6
  37. data/lib/new_relic/delayed_job_injection.rb +1 -1
  38. data/lib/new_relic/local_environment.rb +8 -14
  39. data/lib/new_relic/rack/developer_mode.rb +1 -0
  40. data/lib/new_relic/stats.rb +1 -0
  41. data/lib/new_relic/transaction_sample.rb +5 -60
  42. data/lib/new_relic/transaction_sample/segment.rb +7 -82
  43. data/lib/new_relic/version.rb +3 -3
  44. data/newrelic_rpm.gemspec +8 -3
  45. data/test/new_relic/agent/agent/connect_test.rb +95 -0
  46. data/test/new_relic/agent/agent/start_test.rb +0 -85
  47. data/test/new_relic/agent/agent/start_worker_thread_test.rb +1 -0
  48. data/test/new_relic/agent/agent_test.rb +0 -73
  49. data/test/new_relic/agent/browser_monitoring_test.rb +1 -1
  50. data/test/new_relic/agent/database_test.rb +160 -0
  51. data/test/new_relic/agent/instrumentation/metric_frame/pop_test.rb +3 -0
  52. data/test/new_relic/agent/memcache_instrumentation_test.rb +14 -15
  53. data/test/new_relic/agent/sql_sampler_test.rb +135 -0
  54. data/test/new_relic/agent/transaction_sampler_test.rb +12 -3
  55. data/test/new_relic/collection_helper_test.rb +4 -4
  56. data/test/new_relic/control/configuration_test.rb +31 -0
  57. data/test/new_relic/control/logging_methods_test.rb +20 -4
  58. data/test/new_relic/delayed_job_injection_test.rb +1 -1
  59. data/test/new_relic/rack/developer_mode_helper_test.rb +141 -0
  60. data/test/new_relic/stats_test.rb +3 -3
  61. data/test/new_relic/transaction_sample/segment_test.rb +4 -92
  62. data/test/new_relic/transaction_sample_test.rb +1 -1
  63. data/test/test_helper.rb +1 -1
  64. data/ui/helpers/developer_mode_helper.rb +14 -8
  65. data/ui/helpers/google_pie_chart.rb +0 -1
  66. data/vendor/gems/dependency_detection-0.0.1.build/lib/dependency_detection.rb +5 -0
  67. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/mem_cache.rb +11 -11
  68. data/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/view.rb +4 -0
  69. metadata +15 -10
@@ -51,91 +51,6 @@ class NewRelic::Agent::Agent::StartTest < Test::Unit::TestCase
51
51
  log_app_names
52
52
  end
53
53
 
54
- def test_apdex_f
55
- NewRelic::Control.instance.expects(:apdex_t).returns(10)
56
- assert_equal 40, apdex_f
57
- end
58
-
59
- def test_apdex_f_threshold_positive
60
- self.expects(:sampler_config).returns({'transaction_threshold' => 'apdex_f'})
61
- assert apdex_f_threshold?
62
- end
63
-
64
- def test_apdex_f_threshold_negative
65
- self.expects(:sampler_config).returns({'transaction_threshold' => 'WHEE'})
66
- assert !apdex_f_threshold?
67
- end
68
-
69
- def test_set_sql_recording_default
70
- self.expects(:sampler_config).returns({})
71
- self.expects(:log_sql_transmission_warning?)
72
- set_sql_recording!
73
- assert_equal :obfuscated, @record_sql, " should default to :obfuscated, was #{@record_sql}"
74
- end
75
-
76
- def test_set_sql_recording_off
77
- self.expects(:sampler_config).returns({'record_sql' => 'off'})
78
- self.expects(:log_sql_transmission_warning?)
79
- set_sql_recording!
80
- assert_equal :off, @record_sql, "should be set to :off, was #{@record_sql}"
81
- end
82
-
83
- def test_set_sql_recording_none
84
- self.expects(:sampler_config).returns({'record_sql' => 'none'})
85
- self.expects(:log_sql_transmission_warning?)
86
- set_sql_recording!
87
- assert_equal :off, @record_sql, "should be set to :off, was #{@record_sql}"
88
- end
89
-
90
- def test_set_sql_recording_raw
91
- self.expects(:sampler_config).returns({'record_sql' => 'raw'})
92
- self.expects(:log_sql_transmission_warning?)
93
- set_sql_recording!
94
- assert_equal :raw, @record_sql, "should be set to :raw, was #{@record_sql}"
95
- end
96
-
97
- def test_set_sql_recording_falsy
98
- self.expects(:sampler_config).returns({'record_sql' => false})
99
- self.expects(:log_sql_transmission_warning?)
100
- set_sql_recording!
101
- assert_equal :off, @record_sql, "should be set to :off, was #{@record_sql}"
102
- end
103
-
104
- def test_log_sql_transmission_warning_negative
105
- log = mocked_log
106
- @record_sql = :obfuscated
107
- log.expects(:warn).never
108
- log_sql_transmission_warning?
109
- end
110
-
111
- def test_log_sql_transmission_warning_positive
112
- log = mocked_log
113
- @record_sql = :raw
114
- log.expects(:send).with(:warn, 'Agent is configured to send raw SQL to the service')
115
- log_sql_transmission_warning?
116
- end
117
-
118
- def test_sampler_config
119
- control = mocked_control
120
- control.expects(:fetch).with('transaction_tracer', {})
121
- sampler_config
122
- end
123
-
124
- def test_config_transaction_tracer
125
- fake_sampler_config = mock('sampler config')
126
- self.expects(:sampler_config).times(5).returns(fake_sampler_config)
127
- fake_sampler_config.expects(:fetch).with('enabled', true)
128
- fake_sampler_config.expects(:fetch).with('random_sample', false)
129
- fake_sampler_config.expects(:fetch).with('explain_threshold', 0.5)
130
- fake_sampler_config.expects(:fetch).with('explain_enabled', true)
131
- self.expects(:set_sql_recording!)
132
-
133
- fake_sampler_config.expects(:fetch).with('transaction_threshold', 2.0)
134
- self.expects(:apdex_f_threshold?).returns(true)
135
- self.expects(:apdex_f)
136
- config_transaction_tracer
137
- end
138
-
139
54
  def test_check_config_and_start_agent_disabled
140
55
  self.expects(:monitoring?).returns(false)
141
56
  check_config_and_start_agent
@@ -8,6 +8,7 @@ class NewRelic::Agent::Agent::StartWorkerThreadTest < Test::Unit::TestCase
8
8
  self.expects(:connect).with('connection_options')
9
9
  @connected = true
10
10
  self.expects(:check_transaction_sampler_status)
11
+ self.expects(:check_sql_sampler_status)
11
12
  self.expects(:log_worker_loop_start)
12
13
  self.expects(:create_and_run_worker_loop)
13
14
  deferred_work!('connection_options')
@@ -129,79 +129,6 @@ module NewRelic
129
129
  @agent.merge_data_from([{}, [], []])
130
130
  end
131
131
 
132
- def test_sql_normalization
133
-
134
- # basic statement
135
- assert_equal "INSERT INTO X values(?,?, ? , ?)",
136
- @agent.send(:default_sql_obfuscator, "INSERT INTO X values('test',0, 1 , 2)")
137
-
138
- # escaped literals
139
- assert_equal "INSERT INTO X values(?, ?,?, ? , ?)",
140
- @agent.send(:default_sql_obfuscator, "INSERT INTO X values('', 'jim''s ssn',0, 1 , 'jim''s son''s son')")
141
-
142
- # multiple string literals
143
- assert_equal "INSERT INTO X values(?,?,?, ? , ?)",
144
- @agent.send(:default_sql_obfuscator, "INSERT INTO X values('jim''s ssn','x',0, 1 , 2)")
145
-
146
- # empty string literal
147
- # NOTE: the empty string literal resolves to empty string, which for our purposes is acceptable
148
- assert_equal "INSERT INTO X values(?,?,?, ? , ?)",
149
- @agent.send(:default_sql_obfuscator, "INSERT INTO X values('','x',0, 1 , 2)")
150
-
151
- # try a select statement
152
- assert_equal "select * from table where name=? and ssn=?",
153
- @agent.send(:default_sql_obfuscator, "select * from table where name='jim gochee' and ssn=0012211223")
154
-
155
- # number literals embedded in sql - oh well
156
- assert_equal "select * from table_? where name=? and ssn=?",
157
- @agent.send(:default_sql_obfuscator, "select * from table_007 where name='jim gochee' and ssn=0012211223")
158
- end
159
-
160
- def test_sql_normalization__single_quotes
161
- assert_equal "INSERT ? into table",
162
- @agent.send(:default_sql_obfuscator, "INSERT 'this isn''t a real value' into table")
163
- assert_equal "INSERT ? into table",
164
- @agent.send(:default_sql_obfuscator, %q[INSERT '"' into table])
165
- assert_equal "INSERT ? into table",
166
- @agent.send(:default_sql_obfuscator, %q[INSERT ' "some text" \" ' into table])
167
- # could not get this one licked. no biggie
168
- # assert_equal "INSERT ? into table",
169
- # @agent.send(:default_sql_obfuscator, %q[INSERT '\'' into table])
170
- assert_equal "INSERT ? into table",
171
- @agent.send(:default_sql_obfuscator, %q[INSERT ''' ' into table])
172
- end
173
- def test_sql_normalization__double_quotes
174
- assert_equal "INSERT ? into table",
175
- @agent.send(:default_sql_obfuscator, %q[INSERT "this isn't a real value" into table])
176
- assert_equal "INSERT ? into table",
177
- @agent.send(:default_sql_obfuscator, %q[INSERT "'" into table])
178
- assert_equal "INSERT ? into table",
179
- @agent.send(:default_sql_obfuscator, %q[INSERT " \" " into table])
180
- assert_equal "INSERT ? into table",
181
- @agent.send(:default_sql_obfuscator, %q[INSERT " 'some text' " into table])
182
- end
183
- def test_sql_obfuscation_filters
184
- @agent.set_sql_obfuscator(:replace) do |string|
185
- "1" + string
186
- end
187
-
188
- sql = "SELECT * FROM TABLE 123 'jim'"
189
-
190
- assert_equal "1" + sql, @agent.obfuscator.call(sql)
191
-
192
- @agent.set_sql_obfuscator(:before) do |string|
193
- "2" + string
194
- end
195
-
196
- assert_equal "12" + sql, @agent.obfuscator.call(sql)
197
-
198
- @agent.set_sql_obfuscator(:after) do |string|
199
- string + "3"
200
- end
201
-
202
- assert_equal "12" + sql + "3", @agent.obfuscator.call(sql)
203
- end
204
-
205
132
  def test_should_not_log_log_file_location_if_no_log_file
206
133
  NewRelic::Control.instance.stubs(:log_file).returns('/vasrkjn4b3b4')
207
134
  @agent.expects(:log).never
@@ -100,7 +100,7 @@ var e=document.createElement("script");'
100
100
  license_bytes = [];
101
101
  ("a" * 13).each_byte {|byte| license_bytes << byte}
102
102
  config = NewRelic::Agent::BeaconConfiguration.new({"browser_key" => "browserKey", "application_id" => "apId", "beacon"=>"beacon", "episodes_url"=>"this_is_my_file", "license_bytes" => license_bytes})
103
- config.expects(:license_bytes).returns(license_bytes)
103
+ config.expects(:license_bytes).returns(license_bytes).at_least_once
104
104
  NewRelic::Agent.instance.expects(:beacon_configuration).returns(config).at_least_once
105
105
  footer = browser_timing_footer
106
106
  beginning_snippet = '<script type="text/javascript">if (!NREUMQ.f) { NREUMQ.f=function() {
@@ -0,0 +1,160 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), '..', '..',
2
+ 'test_helper'))
3
+ require 'new_relic/agent/database'
4
+ class NewRelic::Agent::DatabaseTest < Test::Unit::TestCase
5
+ def teardown
6
+ NewRelic::Agent::Database::Obfuscator.instance.reset
7
+ end
8
+
9
+ def test_process_resultset
10
+ resultset = [["column"]]
11
+ assert_equal([nil, [["column"]]],
12
+ NewRelic::Agent::Database.process_resultset(resultset))
13
+ end
14
+
15
+ def test_explain_sql_select_with_mysql_connection
16
+ config = {:adapter => 'mysql'}
17
+ config.default('val')
18
+ sql = 'SELECT foo'
19
+ connection = mock('connection')
20
+ plan = {
21
+ "select_type"=>"SIMPLE", "key_len"=>nil, "table"=>"blogs", "id"=>"1",
22
+ "possible_keys"=>nil, "type"=>"ALL", "Extra"=>"", "rows"=>"2",
23
+ "ref"=>nil, "key"=>nil
24
+ }
25
+ result = mock('explain plan')
26
+ result.expects(:each_hash).yields(plan)
27
+ # two rows, two columns
28
+ connection.expects(:execute).with('EXPLAIN SELECT foo').returns(result)
29
+ NewRelic::Agent::Database.expects(:get_connection).with(config).returns(connection)
30
+
31
+ result = NewRelic::Agent::Database.explain_sql(sql, config)
32
+ assert_equal(plan.keys.sort, result[0].sort)
33
+ assert_equal(plan.values.compact.sort, result[1][0].compact.sort)
34
+ end
35
+
36
+ def test_explain_sql_one_select_with_pg_connection
37
+ config = {:adapter => 'postgresql'}
38
+ config.default('val')
39
+ sql = 'select count(id) from blogs limit 1'
40
+ connection = mock('connection')
41
+ plan = [{"QUERY PLAN"=>"Limit (cost=11.75..11.76 rows=1 width=4)"},
42
+ {"QUERY PLAN"=>" -> Aggregate (cost=11.75..11.76 rows=1 width=4)"},
43
+ {"QUERY PLAN"=>" -> Seq Scan on blogs (cost=0.00..11.40 rows=140 width=4)"}]
44
+ connection.expects(:execute).returns(plan)
45
+ NewRelic::Agent::Database.expects(:get_connection).with(config).returns(connection)
46
+ assert_equal([['QUERY PLAN'],
47
+ [["Limit (cost=11.75..11.76 rows=1 width=4)"],
48
+ [" -> Aggregate (cost=11.75..11.76 rows=1 width=4)"],
49
+ [" -> Seq Scan on blogs (cost=0.00..11.40 rows=140 width=4)"]]],
50
+ NewRelic::Agent::Database.explain_sql(sql, config))
51
+ end
52
+
53
+ def test_explain_sql_no_sql
54
+ assert_equal(nil, NewRelic::Agent::Database.explain_sql(nil, nil))
55
+ end
56
+
57
+ def test_explain_sql_no_connection_config
58
+ assert_equal(nil, NewRelic::Agent::Database.explain_sql('select foo', nil))
59
+ end
60
+
61
+ def test_explain_sql_non_select
62
+ assert_equal([], NewRelic::Agent::Database.explain_sql('foo',
63
+ mock('config')))
64
+ end
65
+
66
+ def test_explain_sql_one_select_no_connection
67
+ # NB this test raises an error in the log, much as it might if a
68
+ # user supplied a config that was not valid. This is generally
69
+ # expected behavior - the get_connection method shouldn't allow
70
+ # errors to percolate up.
71
+ config = mock('config')
72
+ config.stubs(:[]).returns(nil)
73
+ assert_equal([], NewRelic::Agent::Database.explain_sql('SELECT', config))
74
+ end
75
+
76
+ def test_handle_exception_in_explain
77
+ fake_error = Exception.new('a message')
78
+ NewRelic::Control.instance.log.expects(:error).with('Error getting query plan: a message')
79
+ # backtrace can be basically any string, just should get logged
80
+ NewRelic::Control.instance.log.expects(:debug).with(instance_of(String))
81
+
82
+ NewRelic::Agent::Database.handle_exception_in_explain do
83
+ raise(fake_error)
84
+ end
85
+ end
86
+
87
+ def test_sql_normalization
88
+ # basic statement
89
+ assert_equal "INSERT INTO X values(?,?, ? , ?)",
90
+ NewRelic::Agent::Database.obfuscate_sql("INSERT INTO X values('test',0, 1 , 2)")
91
+
92
+ # escaped literals
93
+ assert_equal "INSERT INTO X values(?, ?,?, ? , ?)",
94
+ NewRelic::Agent::Database.obfuscate_sql("INSERT INTO X values('', 'jim''s ssn',0, 1 , 'jim''s son''s son')")
95
+
96
+ # multiple string literals
97
+ assert_equal "INSERT INTO X values(?,?,?, ? , ?)",
98
+ NewRelic::Agent::Database.obfuscate_sql("INSERT INTO X values('jim''s ssn','x',0, 1 , 2)")
99
+
100
+ # empty string literal
101
+ # NOTE: the empty string literal resolves to empty string, which for our purposes is acceptable
102
+ assert_equal "INSERT INTO X values(?,?,?, ? , ?)",
103
+ NewRelic::Agent::Database.obfuscate_sql("INSERT INTO X values('','x',0, 1 , 2)")
104
+
105
+ # try a select statement
106
+ assert_equal "select * from table where name=? and ssn=?",
107
+ NewRelic::Agent::Database.obfuscate_sql("select * from table where name='jim gochee' and ssn=0012211223")
108
+
109
+ # number literals embedded in sql - oh well
110
+ assert_equal "select * from table_? where name=? and ssn=?",
111
+ NewRelic::Agent::Database.obfuscate_sql("select * from table_007 where name='jim gochee' and ssn=0012211223")
112
+ end
113
+
114
+ def test_sql_normalization__single_quotes
115
+ assert_equal "INSERT ? into table",
116
+ NewRelic::Agent::Database.obfuscate_sql("INSERT 'this isn''t a real value' into table")
117
+ assert_equal "INSERT ? into table",
118
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT '"' into table])
119
+ assert_equal "INSERT ? into table",
120
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT ' "some text" \" ' into table])
121
+ # could not get this one licked. no biggie
122
+ # assert_equal "INSERT ? into table",
123
+ # @agent.send(:default_sql_obfuscator, %q[INSERT '\'' into table])
124
+ assert_equal "INSERT ? into table",
125
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT ''' ' into table])
126
+ end
127
+
128
+ def test_sql_normalization__double_quotes
129
+ assert_equal "INSERT ? into table",
130
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT "this isn't a real value" into table])
131
+ assert_equal "INSERT ? into table",
132
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT "'" into table])
133
+ assert_equal "INSERT ? into table",
134
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT " \" " into table])
135
+ assert_equal "INSERT ? into table",
136
+ NewRelic::Agent::Database.obfuscate_sql(%q[INSERT " 'some text' " into table])
137
+ end
138
+
139
+ def test_sql_obfuscation_filters
140
+ NewRelic::Agent::Database.set_sql_obfuscator(:replace) do |string|
141
+ "1" + string
142
+ end
143
+
144
+ sql = "SELECT * FROM TABLE 123 'jim'"
145
+
146
+ assert_equal "1" + sql, NewRelic::Agent::Database.obfuscate_sql(sql)
147
+
148
+ NewRelic::Agent::Database.set_sql_obfuscator(:before) do |string|
149
+ "2" + string
150
+ end
151
+
152
+ assert_equal "12" + sql, NewRelic::Agent::Database.obfuscate_sql(sql)
153
+
154
+ NewRelic::Agent::Database.set_sql_obfuscator(:after) do |string|
155
+ string + "3"
156
+ end
157
+
158
+ assert_equal "12" + sql + "3", NewRelic::Agent::Database.obfuscate_sql(sql)
159
+ end
160
+ end
@@ -5,10 +5,12 @@ class NewRelic::Agent::Instrumentation::MetricFrame::PopTest < Test::Unit::TestC
5
5
 
6
6
  attr_reader :agent
7
7
  attr_reader :transaction_sampler
8
+ attr_reader :sql_sampler
8
9
 
9
10
  def setup
10
11
  @agent = mock('agent')
11
12
  @transaction_sampler = mock('transaction sampler')
13
+ @sql_sampler = mock('sql sampler')
12
14
  end
13
15
 
14
16
  def teardown
@@ -39,6 +41,7 @@ class NewRelic::Agent::Instrumentation::MetricFrame::PopTest < Test::Unit::TestC
39
41
 
40
42
  def test_notice_scope_empty
41
43
  transaction_sampler.expects(:notice_scope_empty)
44
+ sql_sampler.expects(:notice_scope_empty)
42
45
  notice_scope_empty
43
46
  end
44
47
 
@@ -2,10 +2,10 @@ require File.expand_path(File.join(File.dirname(__FILE__),'..','..','test_helper
2
2
 
3
3
  memcached_ready = false
4
4
  classes = {
5
- # 'memcache' => 'MemCache'
6
- # 'dalli' => 'Dalli::Client'
7
- # 'memcached' => 'Memcached'
8
- 'spymemcached' => 'Spymemcached'
5
+ # 'memcache' => 'MemCache',
6
+ # 'dalli' => 'Dalli::Client',
7
+ 'memcached' => 'Memcached'
8
+ # 'spymemcached' => 'Spymemcached'
9
9
  }
10
10
  begin
11
11
  TCPSocket.new('localhost', 11211)
@@ -25,7 +25,7 @@ end
25
25
 
26
26
  class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
27
27
  include NewRelic::Agent::Instrumentation::ControllerInstrumentation
28
-
28
+
29
29
  def setup
30
30
  NewRelic::Agent.manual_start
31
31
  @engine = NewRelic::Agent.instance.stats_engine
@@ -43,7 +43,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
43
43
  end
44
44
 
45
45
  def teardown
46
- if MEMCACHED_CLASS.name == 'Memecached'
46
+ if MEMCACHED_CLASS.name == 'Memcached'
47
47
  @cache.flush
48
48
  elsif MEMCACHED_CLASS.name == 'Spymemcached'
49
49
  @cache.flush
@@ -73,7 +73,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
73
73
  commands.each do |method|
74
74
  if @cache.class.method_defined?(method)
75
75
  _call_test_method_in_web_transaction(method)
76
- compare_metrics ["MemCache/#{method}", "MemCache/allWeb", "MemCache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"],
76
+ compare_metrics ["Memcache/#{method}", "Memcache/allWeb", "Memcache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"],
77
77
  @engine.metrics.select{|m| m =~ /^memcache.*/i}
78
78
  end
79
79
  end
@@ -83,7 +83,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
83
83
  %w[delete].each do |method|
84
84
  if @cache.class.method_defined?(method)
85
85
  _call_test_method_in_web_transaction(method)
86
- expected_metrics = ["MemCache/#{method}", "MemCache/allWeb", "MemCache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"]
86
+ expected_metrics = ["Memcache/#{method}", "Memcache/allWeb", "Memcache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"]
87
87
  compare_metrics expected_metrics, @engine.metrics.select{|m| m =~ /^memcache.*/i}
88
88
  end
89
89
  end
@@ -91,7 +91,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
91
91
  %w[set add].each do |method|
92
92
  @cache.delete(@key) rescue nil
93
93
  if @cache.class.method_defined?(method)
94
- expected_metrics = ["MemCache/#{method}", "MemCache/allWeb", "MemCache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"]
94
+ expected_metrics = ["Memcache/#{method}", "Memcache/allWeb", "Memcache/#{method}:Controller/NewRelic::Agent::MemcacheInstrumentationTest/action"]
95
95
  _call_test_method_in_web_transaction(method, 'value')
96
96
  compare_metrics expected_metrics, @engine.metrics.select{|m| m =~ /^memcache.*/i}
97
97
  end
@@ -104,7 +104,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
104
104
  commands.each do |method|
105
105
  if @cache.class.method_defined?(method)
106
106
  _call_test_method_in_background_task(method)
107
- compare_metrics ["MemCache/#{method}", "MemCache/allOther", "MemCache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"],
107
+ compare_metrics ["Memcache/#{method}", "Memcache/allOther", "Memcache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"],
108
108
  @engine.metrics.select{|m| m =~ /^memcache.*/i}
109
109
  end
110
110
  end
@@ -112,7 +112,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
112
112
 
113
113
  def test_writes__background
114
114
  %w[delete].each do |method|
115
- expected_metrics = ["MemCache/#{method}", "MemCache/allOther", "MemCache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
115
+ expected_metrics = ["Memcache/#{method}", "Memcache/allOther", "Memcache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
116
116
  if @cache.class.method_defined?(method)
117
117
  _call_test_method_in_background_task(method)
118
118
  compare_metrics expected_metrics, @engine.metrics.select{|m| m =~ /^memcache.*/i}
@@ -121,7 +121,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
121
121
 
122
122
  %w[set add].each do |method|
123
123
  @cache.delete(@key) rescue nil
124
- expected_metrics = ["MemCache/#{method}", "MemCache/allOther", "MemCache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
124
+ expected_metrics = ["Memcache/#{method}", "Memcache/allOther", "Memcache/#{method}:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
125
125
  if @cache.class.method_defined?(method)
126
126
  _call_test_method_in_background_task(method, 'value')
127
127
  compare_metrics expected_metrics, @engine.metrics.select{|m| m =~ /^memcache.*/i}
@@ -130,7 +130,7 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
130
130
  end
131
131
 
132
132
  def test_handles_cas
133
- expected_metrics = ["MemCache/cas", "MemCache/allOther", "MemCache/cas:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
133
+ expected_metrics = ["Memcache/cas", "Memcache/allOther", "Memcache/cas:OtherTransaction/Background/NewRelic::Agent::MemcacheInstrumentationTest/bg_task"]
134
134
  if @cache.class.method_defined?(:cas)
135
135
  @engine.clear_stats
136
136
  perform_action_with_newrelic_trace(:name => 'bg_task', :category => :task) do
@@ -139,6 +139,5 @@ class NewRelic::Agent::MemcacheInstrumentationTest < Test::Unit::TestCase
139
139
  compare_metrics expected_metrics, @engine.metrics.select{|m| m =~ /^memcache.*/i}
140
140
  assert_equal 3, @cache.get(@key)
141
141
  end
142
- end
143
-
142
+ end
144
143
  end if memcached_ready