newrelic_rpm 3.7.0.174.beta → 3.7.0.177
Sign up to get free protection for your applications and to get access to all the features.
- data.tar.gz.sig +0 -0
- data/CHANGELOG +27 -4
- data/bin/nrdebug +10 -4
- data/lib/new_relic/agent.rb +33 -11
- data/lib/new_relic/agent/agent.rb +83 -120
- data/lib/new_relic/agent/agent_logger.rb +28 -16
- data/lib/new_relic/agent/audit_logger.rb +3 -4
- data/lib/new_relic/agent/autostart.rb +20 -8
- data/lib/new_relic/agent/commands/agent_command_router.rb +26 -17
- data/lib/new_relic/agent/commands/thread_profiler_session.rb +2 -2
- data/lib/new_relic/agent/configuration/default_source.rb +146 -59
- data/lib/new_relic/agent/configuration/manager.rb +3 -3
- data/lib/new_relic/agent/cross_app_monitor.rb +15 -40
- data/lib/new_relic/agent/cross_app_tracing.rb +20 -12
- data/lib/new_relic/agent/database.rb +24 -0
- data/lib/new_relic/agent/error_collector.rb +6 -2
- data/lib/new_relic/agent/instrumentation/merb/controller.rb +3 -1
- data/lib/new_relic/agent/javascript_instrumentor.rb +187 -0
- data/lib/new_relic/agent/new_relic_service.rb +30 -22
- data/lib/new_relic/agent/obfuscator.rb +48 -0
- data/lib/new_relic/agent/request_sampler.rb +5 -13
- data/lib/new_relic/agent/shim_agent.rb +1 -0
- data/lib/new_relic/agent/sql_sampler.rb +15 -5
- data/lib/new_relic/agent/stats_engine/metric_stats.rb +9 -4
- data/lib/new_relic/agent/transaction.rb +0 -1
- data/lib/new_relic/agent/transaction_sampler.rb +28 -16
- data/lib/new_relic/agent/transaction_state.rb +9 -0
- data/lib/new_relic/agent/transaction_timings.rb +5 -1
- data/lib/new_relic/agent/worker_loop.rb +0 -10
- data/lib/new_relic/cli/deployments.rb +1 -1
- data/lib/new_relic/control/instance_methods.rb +1 -1
- data/lib/new_relic/helper.rb +3 -1
- data/lib/new_relic/rack/browser_monitoring.rb +1 -2
- data/lib/new_relic/transaction_sample.rb +11 -13
- data/lib/newrelic_rpm.rb +1 -0
- data/test/agent_helper.rb +20 -5
- data/test/environments/lib/environments/runner.rb +1 -0
- data/test/helpers/file_searching.rb +28 -0
- data/test/multiverse/lib/multiverse/suite.rb +36 -19
- data/test/multiverse/suites/agent_only/collector_exception_handling_test.rb +49 -0
- data/test/multiverse/suites/agent_only/http_response_code_test.rb +2 -2
- data/test/multiverse/suites/agent_only/rum_instrumentation_test.rb +4 -2
- data/test/multiverse/suites/agent_only/service_timeout_test.rb +1 -1
- data/test/multiverse/suites/agent_only/set_transaction_name_test.rb +7 -4
- data/test/multiverse/suites/agent_only/thread_profiling_test.rb +2 -1
- data/test/multiverse/suites/rails/error_tracing_test.rb +34 -4
- data/test/multiverse/suites/rails/ignore_test.rb +1 -1
- data/test/multiverse/suites/rails/request_statistics_test.rb +1 -3
- data/test/multiverse/suites/sequel/sequel_instrumentation_test.rb +10 -7
- data/test/multiverse/suites/sinatra/ignoring_test.rb +1 -1
- data/test/new_relic/agent/agent/start_worker_thread_test.rb +1 -1
- data/test/new_relic/agent/agent_logger_test.rb +108 -114
- data/test/new_relic/agent/agent_test.rb +139 -21
- data/test/new_relic/agent/audit_logger_test.rb +22 -20
- data/test/new_relic/agent/autostart_test.rb +3 -2
- data/test/new_relic/agent/commands/agent_command_router_test.rb +51 -32
- data/test/new_relic/agent/configuration/default_source_test.rb +8 -2
- data/test/new_relic/agent/configuration/manager_test.rb +5 -1
- data/test/new_relic/agent/configuration/orphan_configuration_test.rb +57 -0
- data/test/new_relic/agent/cross_app_monitor_test.rb +10 -26
- data/test/new_relic/agent/database_test.rb +32 -0
- data/test/new_relic/agent/error_collector_test.rb +33 -16
- data/test/new_relic/agent/instrumentation/active_record_instrumentation_test.rb +88 -71
- data/test/new_relic/agent/instrumentation/task_instrumentation_test.rb +2 -2
- data/test/new_relic/agent/javascript_instrumentor_test.rb +341 -0
- data/test/new_relic/agent/memcache_instrumentation_test.rb +91 -89
- data/test/new_relic/agent/method_tracer_test.rb +1 -1
- data/test/new_relic/agent/obfuscator_test.rb +77 -0
- data/test/new_relic/agent/pipe_channel_manager_test.rb +5 -5
- data/test/new_relic/agent/pipe_service_test.rb +1 -1
- data/test/new_relic/agent/request_sampler_test.rb +21 -11
- data/test/new_relic/agent/sql_sampler_test.rb +52 -8
- data/test/new_relic/agent/stats_engine/metric_stats_test.rb +6 -6
- data/test/new_relic/agent/stats_engine_test.rb +18 -2
- data/test/new_relic/agent/transaction_sampler_test.rb +98 -53
- data/test/new_relic/agent/transaction_state_test.rb +44 -0
- data/test/new_relic/agent/transaction_test.rb +1 -1
- data/test/new_relic/agent/transaction_timings_test.rb +15 -5
- data/test/new_relic/agent/worker_loop_test.rb +0 -9
- data/test/new_relic/agent_test.rb +9 -21
- data/test/new_relic/data_container_tests.rb +72 -0
- data/test/new_relic/fake_collector.rb +69 -20
- data/test/new_relic/http_client_test_cases.rb +17 -2
- data/test/new_relic/license_test.rb +6 -15
- data/test/new_relic/multiverse_helpers.rb +2 -3
- data/test/new_relic/rack/browser_monitoring_test.rb +15 -37
- data/test/new_relic/transaction_sample_test.rb +92 -62
- data/test/performance/suites/rum_autoinsertion.rb +0 -3
- data/test/rum/x_ua_meta_tag_spaces_around_equals.result.html +10 -0
- data/test/rum/x_ua_meta_tag_spaces_around_equals.source.html +10 -0
- data/test/test_helper.rb +9 -5
- metadata +29 -11
- metadata.gz.sig +0 -0
- data/lib/new_relic/agent/beacon_configuration.rb +0 -37
- data/lib/new_relic/agent/browser_monitoring.rb +0 -257
- data/test/new_relic/agent/beacon_configuration_test.rb +0 -44
- data/test/new_relic/agent/browser_monitoring_test.rb +0 -474
@@ -13,6 +13,21 @@ module NewRelic::Agent
|
|
13
13
|
@name = "Name"
|
14
14
|
end
|
15
15
|
|
16
|
+
def test_transaction_name
|
17
|
+
t = TransactionTimings.new(nil, nil, @name)
|
18
|
+
assert_equal "Name", t.transaction_name
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_transaction_name_or_unknown
|
22
|
+
t = TransactionTimings.new(nil, nil, @name)
|
23
|
+
assert_equal "Name", t.transaction_name_or_unknown
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_transaction_name_or_unknown_when_nil
|
27
|
+
t = TransactionTimings.new(nil, nil, nil)
|
28
|
+
assert_equal "(unknown)", t.transaction_name_or_unknown
|
29
|
+
end
|
30
|
+
|
16
31
|
def test_queue_time_nil
|
17
32
|
t = TransactionTimings.new(nil, @start_time, @name)
|
18
33
|
assert_equal 0.0, t.queue_time_in_millis
|
@@ -65,11 +80,6 @@ module NewRelic::Agent
|
|
65
80
|
assert_equal original, later
|
66
81
|
end
|
67
82
|
|
68
|
-
def test_transaction_name
|
69
|
-
t = TransactionTimings.new(nil, nil, @name)
|
70
|
-
assert_equal "Name", t.transaction_name
|
71
|
-
end
|
72
|
-
|
73
83
|
def test_clamp_to_positive
|
74
84
|
t = TransactionTimings.new(nil, nil, nil)
|
75
85
|
assert_equal(0.0, t.clamp_to_positive(-1), "should clamp a negative value to zero")
|
@@ -71,15 +71,6 @@ class NewRelic::Agent::WorkerLoopTest < Test::Unit::TestCase
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
-
def test_task_error__server
|
75
|
-
expects_no_logging(:error)
|
76
|
-
expects_logging(:debug, any_parameters)
|
77
|
-
@worker_loop.run(0) do
|
78
|
-
@worker_loop.stop
|
79
|
-
raise NewRelic::Agent::ServerError, "Runtime Error Test"
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
74
|
def test_worker_loop_propagates_errors_given_the_option
|
84
75
|
@worker_loop = NewRelic::Agent::WorkerLoop.new(
|
85
76
|
:limit => 2,
|
@@ -66,7 +66,7 @@ module NewRelic
|
|
66
66
|
|
67
67
|
def test_reset_stats
|
68
68
|
mock_agent = mocked_agent
|
69
|
-
mock_agent.expects(:
|
69
|
+
mock_agent.expects(:drop_buffered_data)
|
70
70
|
NewRelic::Agent.reset_stats
|
71
71
|
end
|
72
72
|
|
@@ -88,18 +88,6 @@ module NewRelic
|
|
88
88
|
NewRelic::Agent.shutdown
|
89
89
|
end
|
90
90
|
|
91
|
-
def test_browser_timing_header
|
92
|
-
agent = mocked_agent
|
93
|
-
agent.expects(:browser_timing_header)
|
94
|
-
NewRelic::Agent.browser_timing_header
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_browser_timing_footer
|
98
|
-
agent = mocked_agent
|
99
|
-
agent.expects(:browser_timing_footer)
|
100
|
-
NewRelic::Agent.browser_timing_footer
|
101
|
-
end
|
102
|
-
|
103
91
|
def test_get_stats
|
104
92
|
agent = mocked_agent
|
105
93
|
mock_stats_engine = mock('stats_engine')
|
@@ -268,7 +256,7 @@ module NewRelic
|
|
268
256
|
|
269
257
|
def test_set_transaction_name
|
270
258
|
engine = NewRelic::Agent.instance.stats_engine
|
271
|
-
engine.
|
259
|
+
engine.reset!
|
272
260
|
Transactor.new.txn do
|
273
261
|
NewRelic::Agent.set_transaction_name('new_name')
|
274
262
|
end
|
@@ -281,7 +269,7 @@ module NewRelic
|
|
281
269
|
|
282
270
|
def test_get_transaction_name_returns_the_default_txn_name
|
283
271
|
engine = NewRelic::Agent.instance.stats_engine
|
284
|
-
engine.
|
272
|
+
engine.reset!
|
285
273
|
Transactor.new.txn do
|
286
274
|
assert_equal 'NewRelic::MainAgentTest::Transactor/txn', NewRelic::Agent.get_transaction_name
|
287
275
|
end
|
@@ -289,7 +277,7 @@ module NewRelic
|
|
289
277
|
|
290
278
|
def test_get_transaction_name_returns_what_I_set
|
291
279
|
engine = NewRelic::Agent.instance.stats_engine
|
292
|
-
engine.
|
280
|
+
engine.reset!
|
293
281
|
Transactor.new.txn do
|
294
282
|
NewRelic::Agent.set_transaction_name('a_new_name')
|
295
283
|
assert_equal 'a_new_name', NewRelic::Agent.get_transaction_name
|
@@ -298,7 +286,7 @@ module NewRelic
|
|
298
286
|
|
299
287
|
def test_get_txn_name_and_set_txn_name_preserves_category
|
300
288
|
engine = NewRelic::Agent.instance.stats_engine
|
301
|
-
engine.
|
289
|
+
engine.reset!
|
302
290
|
Transactor.new.txn do
|
303
291
|
NewRelic::Agent.set_transaction_name('a_new_name', :category => :task)
|
304
292
|
new_name = NewRelic::Agent.get_transaction_name + "2"
|
@@ -309,7 +297,7 @@ module NewRelic
|
|
309
297
|
|
310
298
|
def test_set_transaction_name_applies_proper_scopes
|
311
299
|
engine = NewRelic::Agent.instance.stats_engine
|
312
|
-
engine.
|
300
|
+
engine.reset!
|
313
301
|
Transactor.new.txn do
|
314
302
|
trace_execution_scoped('Custom/something') {}
|
315
303
|
NewRelic::Agent.set_transaction_name('new_name')
|
@@ -327,7 +315,7 @@ module NewRelic
|
|
327
315
|
|
328
316
|
def test_set_transaction_name_gracefully_fails_when_frozen
|
329
317
|
engine = NewRelic::Agent.instance.stats_engine
|
330
|
-
engine.
|
318
|
+
engine.reset!
|
331
319
|
Transactor.new.txn do
|
332
320
|
NewRelic::Agent::Transaction.current.freeze_name
|
333
321
|
NewRelic::Agent.set_transaction_name('new_name')
|
@@ -337,7 +325,7 @@ module NewRelic
|
|
337
325
|
|
338
326
|
def test_set_transaction_name_applies_category
|
339
327
|
engine = NewRelic::Agent.instance.stats_engine
|
340
|
-
engine.
|
328
|
+
engine.reset!
|
341
329
|
Transactor.new.txn do
|
342
330
|
NewRelic::Agent.set_transaction_name('new_name', :category => :task)
|
343
331
|
end
|
@@ -354,7 +342,7 @@ module NewRelic
|
|
354
342
|
|
355
343
|
def test_set_transaction_name_uses_current_txn_category_default
|
356
344
|
engine = NewRelic::Agent.instance.stats_engine
|
357
|
-
engine.
|
345
|
+
engine.reset!
|
358
346
|
Transactor.new.task_txn do
|
359
347
|
NewRelic::Agent.set_transaction_name('new_name')
|
360
348
|
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
# This file is distributed under New Relic's license terms.
|
3
|
+
# See https://github.com/newrelic/rpm/blob/master/LICENSE for complete details.
|
4
|
+
|
5
|
+
# To use this module to test your new data container, implement the following
|
6
|
+
# methods before including it:
|
7
|
+
#
|
8
|
+
# create_container -> create an instance of your data container class
|
9
|
+
# populate_container(container, n) -> populate the container with n items
|
10
|
+
#
|
11
|
+
# If your container can only hold a fixed number of data items, you can also
|
12
|
+
# implement #max_data_items to return the number of data items that it should be
|
13
|
+
# populated with for the purposes of testing.
|
14
|
+
|
15
|
+
module NewRelic
|
16
|
+
module BasicDataContainerTests
|
17
|
+
def num_data_items
|
18
|
+
self.respond_to?(:max_data_items) ? max_data_items : 5
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_harvest_should_return_all_data_items
|
22
|
+
c = create_container
|
23
|
+
populate_container(c, num_data_items)
|
24
|
+
results = c.harvest!
|
25
|
+
assert_equal(num_data_items, results.size)
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_calling_harvest_again_should_not_return_items_again
|
29
|
+
c = create_container
|
30
|
+
populate_container(c, num_data_items)
|
31
|
+
|
32
|
+
c.harvest! # clears container
|
33
|
+
results = c.harvest!
|
34
|
+
assert_equal(0, results.size)
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_calling_harvest_after_re_populating_works
|
38
|
+
c = create_container
|
39
|
+
populate_container(c, num_data_items)
|
40
|
+
assert_equal(num_data_items, c.harvest!.size)
|
41
|
+
|
42
|
+
populate_container(c, num_data_items)
|
43
|
+
assert_equal(num_data_items, c.harvest!.size)
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_should_respond_to_required_methods
|
47
|
+
c = create_container
|
48
|
+
assert c.respond_to?(:harvest!)
|
49
|
+
assert c.respond_to?(:reset!)
|
50
|
+
assert c.respond_to?(:merge!)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
module DataContainerTests
|
55
|
+
include BasicDataContainerTests
|
56
|
+
|
57
|
+
def test_reset_should_clear_stored_items
|
58
|
+
c = create_container
|
59
|
+
populate_container(c, 5)
|
60
|
+
c.reset!
|
61
|
+
assert_equal(0, c.harvest!.size)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_merge_should_re_integrate_items
|
65
|
+
c = create_container
|
66
|
+
populate_container(c, 5)
|
67
|
+
c.merge!(c.harvest!)
|
68
|
+
results = c.harvest!
|
69
|
+
assert_equal(5, results.size)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -14,23 +14,61 @@ require 'json' if RUBY_VERSION >= '1.9'
|
|
14
14
|
|
15
15
|
module NewRelic
|
16
16
|
class FakeCollector < FakeServer
|
17
|
+
class Response
|
18
|
+
attr_reader :status, :body
|
19
|
+
|
20
|
+
def initialize(status, body)
|
21
|
+
@default_status = status
|
22
|
+
@default_body = body
|
23
|
+
@remaining = nil
|
24
|
+
revert
|
25
|
+
end
|
26
|
+
|
27
|
+
def override(status, body)
|
28
|
+
@status = status
|
29
|
+
@body = body
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def revert
|
34
|
+
@status = @default_status
|
35
|
+
@body = @default_body
|
36
|
+
@remaining = nil
|
37
|
+
end
|
38
|
+
|
39
|
+
def once
|
40
|
+
@remaining = 1
|
41
|
+
self
|
42
|
+
end
|
43
|
+
|
44
|
+
def evaluate
|
45
|
+
if @remaining == 0
|
46
|
+
revert
|
47
|
+
elsif @remaining
|
48
|
+
@remaining -= 1
|
49
|
+
end
|
50
|
+
resolved_body = @body.respond_to?(:call) ? @body.call : @body
|
51
|
+
[@status, resolved_body]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
17
55
|
attr_accessor :agent_data, :mock
|
18
56
|
|
19
57
|
def initialize
|
20
58
|
super
|
21
59
|
@id_counter = 0
|
22
|
-
@
|
23
|
-
'get_redirect_host' =>
|
24
|
-
'connect' =>
|
25
|
-
'get_agent_commands' =>
|
26
|
-
'agent_command_results' =>
|
27
|
-
'metric_data' =>
|
28
|
-
'sql_trace_data' =>
|
29
|
-
'transaction_sample_data' =>
|
30
|
-
'error_data' =>
|
31
|
-
'profile_data' =>
|
32
|
-
'shutdown' =>
|
33
|
-
'analytic_event_data' =>
|
60
|
+
@mock = {
|
61
|
+
'get_redirect_host' => Response.new(200, {'return_value' => 'localhost'}),
|
62
|
+
'connect' => Response.new(200, Proc.new { {'return_value' => {"agent_run_id" => agent_run_id}} }),
|
63
|
+
'get_agent_commands' => Response.new(200, {'return_value' => []}),
|
64
|
+
'agent_command_results' => Response.new(200, {'return_value' => []}),
|
65
|
+
'metric_data' => Response.new(200, {'return_value' => [[{'name' => 'Some/Metric/Spec'}, 1]]}),
|
66
|
+
'sql_trace_data' => Response.new(200, {'return_value' => nil}),
|
67
|
+
'transaction_sample_data' => Response.new(200, {'return_value' => nil}),
|
68
|
+
'error_data' => Response.new(200, {'return_value' => nil}),
|
69
|
+
'profile_data' => Response.new(200, {'return_value' => nil}),
|
70
|
+
'shutdown' => Response.new(200, {'return_value' => nil}),
|
71
|
+
'analytic_event_data' => Response.new(200, {'return_value' => nil}),
|
34
72
|
}
|
35
73
|
reset
|
36
74
|
end
|
@@ -40,13 +78,23 @@ module NewRelic
|
|
40
78
|
end
|
41
79
|
|
42
80
|
def reset
|
43
|
-
@mock
|
81
|
+
@mock.each_value(&:revert)
|
44
82
|
@id_counter = 0
|
45
83
|
@agent_data = []
|
46
84
|
end
|
47
85
|
|
86
|
+
def default_response
|
87
|
+
Response.new(200, {'return_value' => nil})
|
88
|
+
end
|
89
|
+
|
48
90
|
def stub(method, return_value, status=200)
|
49
|
-
self.mock[method]
|
91
|
+
self.mock[method] ||= default_response
|
92
|
+
self.mock[method].override(status, {'return_value' => return_value})
|
93
|
+
end
|
94
|
+
|
95
|
+
def stub_exception(method, exception, status=200)
|
96
|
+
self.mock[method] ||= default_response
|
97
|
+
self.mock[method].override(status, {'exception' => exception})
|
50
98
|
end
|
51
99
|
|
52
100
|
def call(env)
|
@@ -58,11 +106,12 @@ module NewRelic
|
|
58
106
|
method = $1
|
59
107
|
format = json_format?(uri) && RUBY_VERSION >= '1.9' ? :json : :pruby
|
60
108
|
if @mock.keys.include? method
|
61
|
-
|
109
|
+
status, body = @mock[method].evaluate
|
110
|
+
res.status = status
|
62
111
|
if format == :json
|
63
|
-
res.write JSON.dump(
|
112
|
+
res.write JSON.dump(body)
|
64
113
|
else
|
65
|
-
res.write Marshal.dump(
|
114
|
+
res.write Marshal.dump(body)
|
66
115
|
end
|
67
116
|
else
|
68
117
|
res.status = 500
|
@@ -285,7 +334,7 @@ if $0 == __FILE__
|
|
285
334
|
end
|
286
335
|
|
287
336
|
def test_get_redirect
|
288
|
-
@collector.mock['get_redirect_host'] = [200, 'test.example.com']
|
337
|
+
@collector.mock['get_redirect_host'].evaluate = [200, 'test.example.com']
|
289
338
|
response = invoke('get_redirect_host')
|
290
339
|
|
291
340
|
assert_equal 'test.example.com', response
|
@@ -401,9 +450,9 @@ if $0 == __FILE__
|
|
401
450
|
end
|
402
451
|
|
403
452
|
def test_reset
|
404
|
-
@collector.mock['get_redirect_host'] = [200, 'never!']
|
453
|
+
@collector.mock['get_redirect_host'].evaluate = [200, 'never!']
|
405
454
|
@collector.reset
|
406
|
-
assert_equal [200, 'localhost'], @collector.mock['get_redirect_host']
|
455
|
+
assert_equal [200, 'localhost'], @collector.mock['get_redirect_host'].evaluate
|
407
456
|
end
|
408
457
|
|
409
458
|
def invoke(method, post={}, code=200)
|
@@ -10,7 +10,6 @@ require 'multiverse_helpers'
|
|
10
10
|
|
11
11
|
module HttpClientTestCases
|
12
12
|
include NewRelic::Agent::Instrumentation::ControllerInstrumentation,
|
13
|
-
NewRelic::Agent::CrossAppMonitor::EncodingFunctions,
|
14
13
|
NewRelic::Agent::CrossAppTracing,
|
15
14
|
MultiverseHelpers
|
16
15
|
|
@@ -305,6 +304,21 @@ module HttpClientTestCases
|
|
305
304
|
assert_equal false, server.requests.last.keys.any? {|k| k =~ /NEWRELIC_ID/}
|
306
305
|
end
|
307
306
|
|
307
|
+
def test_agent_doesnt_add_a_request_header_if_empty_cross_process_id
|
308
|
+
with_config(:'cross_application_tracer.enabled' => true,
|
309
|
+
:cross_process_id => "") do
|
310
|
+
get_response
|
311
|
+
assert_equal false, server.requests.last.keys.any? {|k| k =~ /NEWRELIC_ID/}
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def test_agent_doesnt_add_a_request_header_if_empty_encoding_key
|
316
|
+
with_config(:'cross_application_tracer.enabled' => true,
|
317
|
+
:encoding_key => "") do
|
318
|
+
get_response
|
319
|
+
assert_equal false, server.requests.last.keys.any? {|k| k =~ /NEWRELIC_ID/}
|
320
|
+
end
|
321
|
+
end
|
308
322
|
|
309
323
|
def test_instrumentation_with_crossapp_enabled_records_normal_metrics_if_no_header_present
|
310
324
|
@nr_header = ""
|
@@ -491,7 +505,8 @@ module HttpClientTestCases
|
|
491
505
|
end
|
492
506
|
|
493
507
|
def make_app_data_payload( *args )
|
494
|
-
|
508
|
+
obfuscator = NewRelic::Agent::Obfuscator.new('gringletoes')
|
509
|
+
return obfuscator.obfuscate( args.to_json ) + "\n"
|
495
510
|
end
|
496
511
|
|
497
512
|
end
|
@@ -7,6 +7,7 @@ require File.expand_path(File.join(File.dirname(__FILE__),'..','test_helper'))
|
|
7
7
|
# look through the source code to enforce some simple rules that help us keep
|
8
8
|
# our license data up to date.
|
9
9
|
class LicenseTest < Test::Unit::TestCase
|
10
|
+
include NewRelic::TestHelpers::FileSearching
|
10
11
|
|
11
12
|
# A list of regexs that will likely match license info
|
12
13
|
LICENSE_TERMS = {
|
@@ -45,20 +46,6 @@ class LicenseTest < Test::Unit::TestCase
|
|
45
46
|
['/vendor/gems/metric_parser-0.1.0.pre1/lib/new_relic/metric_parser/solr_request_handler.rb', 'Apache'] => 1, # parse apache solr metrics
|
46
47
|
}
|
47
48
|
|
48
|
-
def all_rb_and_js_files
|
49
|
-
pattern = File.expand_path(gem_root + "/**/*.{rb,js}")
|
50
|
-
Dir[pattern]
|
51
|
-
end
|
52
|
-
|
53
|
-
def all_files
|
54
|
-
pattern = File.expand_path(gem_root + "/**/*")
|
55
|
-
Dir[pattern]
|
56
|
-
end
|
57
|
-
|
58
|
-
def gem_root
|
59
|
-
File.expand_path(File.dirname(__FILE__) + "/../../")
|
60
|
-
end
|
61
|
-
|
62
49
|
def shebang
|
63
50
|
/^#!/
|
64
51
|
end
|
@@ -92,7 +79,11 @@ class LicenseTest < Test::Unit::TestCase
|
|
92
79
|
all_rb_and_js_files.each do |filename|
|
93
80
|
next if should_skip?(filename)
|
94
81
|
|
95
|
-
|
82
|
+
first_thousand_bytes = File.read(filename, 1000)
|
83
|
+
assert_not_nil first_thousand_bytes, "#{filename} is shorter than 1000 bytes."
|
84
|
+
|
85
|
+
first_four_lines = first_thousand_bytes.split("\n")[0...4]
|
86
|
+
|
96
87
|
if first_four_lines.first =~ shebang
|
97
88
|
first_four_lines.shift # discard it
|
98
89
|
end
|
@@ -56,10 +56,9 @@ module MultiverseHelpers
|
|
56
56
|
NewRelic::Agent.instance.stats_engine.metric_rules.rules.clear
|
57
57
|
|
58
58
|
# Clear out lingering stats we didn't transmit
|
59
|
-
NewRelic::Agent.
|
59
|
+
NewRelic::Agent.drop_buffered_data
|
60
60
|
|
61
|
-
# Clear
|
62
|
-
NewRelic::Agent.instance.error_collector.harvest_errors
|
61
|
+
# Clear the error collector's ignore_filter
|
63
62
|
NewRelic::Agent.instance.error_collector.instance_variable_set(:@ignore_filter, nil)
|
64
63
|
|
65
64
|
# Clean up any thread-local variables starting with 'newrelic'
|