newrelic_rpm 3.9.7.266 → 3.9.8.273

Sign up to get free protection for your applications and to get access to all the features.
Files changed (88) hide show
  1. data.tar.gz.sig +0 -0
  2. data/CHANGELOG +44 -1
  3. data/lib/new_relic/agent.rb +31 -0
  4. data/lib/new_relic/agent/agent.rb +34 -5
  5. data/lib/new_relic/agent/configuration/default_source.rb +25 -1
  6. data/lib/new_relic/agent/configuration/high_security_source.rb +1 -0
  7. data/lib/new_relic/agent/cross_app_monitor.rb +1 -1
  8. data/lib/new_relic/agent/custom_event_aggregator.rb +2 -4
  9. data/lib/new_relic/agent/error_collector.rb +17 -12
  10. data/lib/new_relic/agent/instrumentation/controller_instrumentation.rb +9 -8
  11. data/lib/new_relic/agent/instrumentation/grape.rb +67 -0
  12. data/lib/new_relic/agent/new_relic_service.rb +93 -43
  13. data/lib/new_relic/agent/pipe_service.rb +4 -0
  14. data/lib/new_relic/agent/synthetics_event_buffer.rb +42 -0
  15. data/lib/new_relic/agent/system_info.rb +44 -18
  16. data/lib/new_relic/agent/transaction_event_aggregator.rb +9 -2
  17. data/lib/new_relic/agent/utilization_data.rb +77 -0
  18. data/lib/new_relic/agent/vm/mri_vm.rb +3 -3
  19. data/lib/new_relic/rack/agent_hooks.rb +15 -15
  20. data/lib/new_relic/recipes/capistrano3.rb +2 -2
  21. data/lib/new_relic/version.rb +1 -1
  22. data/newrelic_rpm.gemspec +0 -1
  23. data/test/agent_helper.rb +13 -3
  24. data/test/environments/lib/environments/runner.rb +3 -19
  25. data/test/environments/rails42/Gemfile +5 -1
  26. data/test/fixtures/cross_agent_tests/README.md +1 -1
  27. data/test/fixtures/cross_agent_tests/cat_map.json +154 -88
  28. data/test/fixtures/cross_agent_tests/docker_container_id/cases.json +30 -6
  29. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-lxc-driver.txt +10 -0
  30. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-fs.txt +10 -0
  31. data/test/fixtures/cross_agent_tests/docker_container_id/docker-1.1.2-native-driver-systemd.txt +10 -0
  32. data/test/fixtures/cross_agent_tests/docker_container_id/heroku.txt +1 -0
  33. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.04-lxc-container.txt +10 -0
  34. data/test/fixtures/cross_agent_tests/docker_container_id/{lxc-containers-without-docker.txt → ubuntu-14.04-no-container.txt} +0 -0
  35. data/test/fixtures/cross_agent_tests/docker_container_id/ubuntu-14.10-no-container.txt +10 -0
  36. data/test/multiverse/lib/multiverse/runner.rb +1 -0
  37. data/test/multiverse/lib/multiverse/suite.rb +6 -2
  38. data/test/multiverse/suites/active_record/.gitignore +1 -0
  39. data/test/multiverse/suites/active_record/Envfile +25 -7
  40. data/test/multiverse/suites/active_record/Rakefile +9 -0
  41. data/test/{new_relic/agent/instrumentation → multiverse/suites/active_record}/active_record_test.rb +82 -88
  42. data/test/multiverse/suites/active_record/app/models/models.rb +27 -0
  43. data/test/multiverse/suites/active_record/ar_method_aliasing.rb +5 -46
  44. data/test/multiverse/suites/active_record/before_suite.rb +23 -0
  45. data/test/multiverse/suites/active_record/config/database.rb +79 -0
  46. data/test/multiverse/suites/active_record/config/database.yml +19 -0
  47. data/test/multiverse/suites/active_record/db/migrate/20141105131800_create_users_and_aliases.rb +21 -0
  48. data/test/multiverse/suites/active_record/db/migrate/20141106082200_create_orders_and_shipments.rb +25 -0
  49. data/test/multiverse/suites/agent_only/cross_application_tracing_test.rb +4 -1
  50. data/test/multiverse/suites/agent_only/custom_analytics_events_test.rb +53 -0
  51. data/test/multiverse/suites/agent_only/keepalive_test.rb +3 -7
  52. data/test/multiverse/suites/agent_only/utilization_data_collection_test.rb +170 -0
  53. data/test/multiverse/suites/grape/Envfile +15 -0
  54. data/test/multiverse/suites/grape/config/newrelic.yml +18 -0
  55. data/test/multiverse/suites/grape/grape_test.rb +60 -0
  56. data/test/multiverse/suites/grape/grape_test_api.rb +43 -0
  57. data/test/multiverse/suites/grape/unsupported_version_test.rb +31 -0
  58. data/test/multiverse/suites/json/Envfile +3 -1
  59. data/test/multiverse/suites/rack/rack_env_mutation_test.rb +54 -0
  60. data/test/multiverse/suites/rails/Envfile +1 -1
  61. data/test/multiverse/suites/rails/view_instrumentation_test.rb +2 -1
  62. data/test/multiverse/suites/resque/resque_marshalling_test.rb +54 -0
  63. data/test/multiverse/suites/typhoeus/Envfile +4 -4
  64. data/test/new_relic/agent/agent_test.rb +37 -0
  65. data/test/new_relic/agent/configuration/default_source_test.rb +14 -0
  66. data/test/new_relic/agent/custom_event_aggregator_test.rb +3 -3
  67. data/test/new_relic/agent/error_collector/notice_error_test.rb +4 -4
  68. data/test/new_relic/agent/error_collector_test.rb +27 -4
  69. data/test/new_relic/agent/instrumentation/controller_instrumentation_test.rb +23 -0
  70. data/test/new_relic/agent/new_relic_service_test.rb +208 -103
  71. data/test/new_relic/agent/pipe_service_test.rb +7 -0
  72. data/test/new_relic/agent/synthetics_event_buffer_test.rb +54 -0
  73. data/test/new_relic/agent/synthetics_monitor_test.rb +0 -3
  74. data/test/new_relic/agent/system_info_test.rb +6 -6
  75. data/test/new_relic/agent/transaction_event_aggregator_test.rb +43 -2
  76. data/test/new_relic/agent/utilization_data_test.rb +18 -0
  77. data/test/new_relic/collection_helper_test.rb +0 -1
  78. data/test/new_relic/data_container_tests.rb +11 -7
  79. data/test/new_relic/fake_collector.rb +23 -0
  80. data/test/new_relic/fake_instance_metadata_service.rb +45 -0
  81. data/test/new_relic/license_test.rb +2 -0
  82. data/test/new_relic/marshalling_test_cases.rb +89 -4
  83. data/test/new_relic/transaction_sample_test.rb +1 -0
  84. data/test/test_helper.rb +1 -0
  85. metadata +33 -6
  86. metadata.gz.sig +1 -2
  87. data/test/active_record_fixtures.rb +0 -79
  88. data/test/new_relic/rack/all_test.rb +0 -14
@@ -29,11 +29,11 @@ module NewRelic
29
29
 
30
30
  if GC.respond_to?(:stat)
31
31
  gc_stats = GC.stat
32
- snap.total_allocated_object = gc_stats[:total_allocated_object] || gc_stats[:total_allocated_objects]
32
+ snap.total_allocated_object = gc_stats[:total_allocated_objects] || gc_stats[:total_allocated_object]
33
33
  snap.major_gc_count = gc_stats[:major_gc_count]
34
34
  snap.minor_gc_count = gc_stats[:minor_gc_count]
35
- snap.heap_live = gc_stats[:heap_live_slot] || gc_stats[:heap_live_slots] || gc_stats[:heap_live_num]
36
- snap.heap_free = gc_stats[:heap_free_slot] || gc_stats[:heap_free_slots] || gc_stats[:heap_free_num]
35
+ snap.heap_live = gc_stats[:heap_live_slots] || gc_stats[:heap_live_slot] || gc_stats[:heap_live_num]
36
+ snap.heap_free = gc_stats[:heap_free_slots] || gc_stats[:heap_free_slot] || gc_stats[:heap_free_num]
37
37
  end
38
38
  end
39
39
 
@@ -14,24 +14,24 @@ module NewRelic::Rack
14
14
  # @api public
15
15
  #
16
16
  class AgentHooks < AgentMiddleware
17
- FIRED_FORMATS = {
18
- :before_call => "newrelic.agent_hooks_before_fired",
19
- :after_call => "newrelic.agent_hooks_after_fired"
20
- }
17
+ # We use this key in the Rack env hash to note when we've already fired
18
+ # events for a given request, in case this middleware gets installed
19
+ # multiple times in the middleware chain because of a misconfiguration.
20
+ ENV_KEY = "newrelic.agent_hooks_fired".freeze
21
21
 
22
- # method required by Rack interface
23
- # [status, headers, response]
24
22
  def traced_call(env)
25
- notify(:before_call, env)
26
- result = @app.call(env)
27
- notify(:after_call, env, result)
28
- result
29
- end
23
+ if env[ENV_KEY]
24
+ # Already fired the hooks, just pass through
25
+ @app.call(env)
26
+ else
27
+ env[ENV_KEY] = true
28
+
29
+ events.notify(:before_call, env)
30
+ result = @app.call(env)
31
+ events.notify(:after_call, env, result)
30
32
 
31
- def notify(event, env, *args)
32
- key = FIRED_FORMATS[event]
33
- events.notify(event, *([env] + args)) unless env[key]
34
- env[key] = true
33
+ result
34
+ end
35
35
  end
36
36
 
37
37
  def events
@@ -10,7 +10,7 @@ namespace :newrelic do
10
10
  desc "Record a deployment in New Relic (newrelic.com)"
11
11
  task :notice_deployment do
12
12
  run_locally do
13
- rails_env = fetch(:newrelic_rails_env, fetch(:rails_env, "production"))
13
+ environment = fetch(:newrelic_rails_env, fetch(:rack_env, fetch(:rails_env, "production")))
14
14
 
15
15
  require 'new_relic/cli/command.rb'
16
16
 
@@ -30,7 +30,7 @@ namespace :newrelic do
30
30
 
31
31
  new_revision = rev
32
32
  deploy_options = {
33
- :environment => rails_env,
33
+ :environment => environment,
34
34
  :revision => new_revision,
35
35
  :changelog => changelog,
36
36
  :description => description,
@@ -12,7 +12,7 @@ module NewRelic
12
12
 
13
13
  MAJOR = 3
14
14
  MINOR = 9
15
- TINY = 7
15
+ TINY = 8
16
16
 
17
17
  begin
18
18
  require File.join(File.dirname(__FILE__), 'build')
@@ -47,7 +47,6 @@ EOS
47
47
  s.add_development_dependency 'yard'
48
48
  s.add_development_dependency 'rails', '~> 3.2.13'
49
49
  s.add_development_dependency 'pry', '~> 0.9.12'
50
- # s.add_development_dependency 'pry-nav'
51
50
  s.add_development_dependency 'guard', '~> 1.8.3' # Guard 2.0 is Ruby 1.9 only
52
51
  s.add_development_dependency 'guard-minitest'
53
52
  s.add_development_dependency 'rb-fsevent', '~> 0.9.1'
@@ -216,6 +216,19 @@ def assert_metrics_not_recorded(not_expected)
216
216
  assert_equal([], found_but_not_expected, "Found unexpected metrics: #{format_metric_spec_list(found_but_not_expected)}")
217
217
  end
218
218
 
219
+ def assert_no_metrics_match(regex)
220
+ matching_metrics = []
221
+ NewRelic::Agent.instance.stats_engine.metrics.each do |metric|
222
+ matching_metrics << metric if metric.match regex
223
+ end
224
+
225
+ assert_equal(
226
+ [],
227
+ matching_metrics,
228
+ "Found unexpected metrics:\n" + matching_metrics.map { |m| " '#{m}'"}.join("\n") + "\n\n"
229
+ )
230
+ end
231
+
219
232
  def format_metric_spec_list(specs)
220
233
  spec_strings = specs.map do |spec|
221
234
  "#{spec.name} (#{spec.scope.empty? ? '<unscoped>' : spec.scope})"
@@ -268,15 +281,12 @@ def in_transaction(*args)
268
281
  state = NewRelic::Agent::TransactionState.tl_get
269
282
 
270
283
  NewRelic::Agent::Transaction.start(state, category, opts)
271
-
272
284
  val = nil
273
-
274
285
  begin
275
286
  val = yield state.current_transaction
276
287
  ensure
277
288
  NewRelic::Agent::Transaction.stop(state)
278
289
  end
279
-
280
290
  val
281
291
  end
282
292
 
@@ -11,14 +11,10 @@ module Environments
11
11
  include Multiverse::Color
12
12
 
13
13
  BLACKLIST = {
14
- "1.9" => ["rails21", "rails22"],
15
14
  "2" => ["rails21", "rails22", "rails23"],
16
-
17
- # https://github.com/rails/rails/issues/17017
18
- "2.2" => ["rails30", "rails31", "rails32"],
19
-
20
- "1.8.7" => ["rails40", "rails41", "rails42"],
15
+ "1.9" => ["rails21", "rails22"],
21
16
  "1.9.2" => ["rails40", "rails41", "rails42"],
17
+ "1.8.7" => ["rails40", "rails41", "rails42"],
22
18
  "ree" => ["rails40", "rails41", "rails42"],
23
19
  "jruby-1.6" => ["rails40", "rails41", "rails42"],
24
20
  "jruby-1.7" => ["rails21", "rails22", "rails23"],
@@ -45,10 +41,7 @@ module Environments
45
41
  dir = File.expand_path(dir)
46
42
  puts "", yellow("Running tests for #{dir}")
47
43
  status = bundle(dir)
48
- if status.success?
49
- create_database(dir)
50
- status = run(dir)
51
- end
44
+ status = run(dir) if status.success?
52
45
 
53
46
  if !status.success?
54
47
  overall_status += 1
@@ -107,15 +100,6 @@ module Environments
107
100
  $?
108
101
  end
109
102
 
110
- # Would be nice to get our unit tests decoupled from the actual DB, but
111
- # until then this is necessary
112
- def create_database(dir)
113
- return if File.basename(dir) == "norails"
114
-
115
- puts "Making sure the database is there for '#{File.basename(dir)}'..."
116
- `cd #{dir} && RAILS_ENV=test bundle exec rake --trace db:create`
117
- end
118
-
119
103
  def run(dir)
120
104
  puts "Starting tests..."
121
105
  IO.popen("cd #{dir} && bundle exec rake") do |io|
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'rake'
4
4
 
5
- gem 'rails', '~>4.2.0.beta4'
5
+ gem 'rails', '~>4.2.0.rc1'
6
6
 
7
7
  gem 'minitest', '5.2.3'
8
8
  gem 'mocha', :require => false
@@ -27,6 +27,10 @@ platforms :rbx do
27
27
  # hook and run when we run our rake task to create the test DB.
28
28
  gem "rubysl-test-unit", :require => false
29
29
  gem "racc" # https://github.com/rubinius/rubinius/issues/2632
30
+
31
+ # Compilation issues with rubysl-openssl 2.2.1, lock at 2.1.0 for now.
32
+ # https://github.com/rubysl/rubysl-openssl/issues/11
33
+ gem "rubysl-openssl", "2.1.0"
30
34
  end
31
35
 
32
36
  gem "newrelic_rpm", :path => "../../.."
@@ -24,7 +24,7 @@ Please be careful when adding new tests from real world failures.
24
24
  | [proc_cpuinfo](proc_cpuinfo) | These test correct processing of `/proc/cpuinfo` output on Linux hosts. |
25
25
  | [proc_meminfo](proc_meminfo) | These test correct processing of `/proc/meminfo` output on Linux hosts. |
26
26
  | [transaction_segment_terms.json](transaction_segment_terms.json) | These tests cover agent implementations of the `transaction_segment_terms` transaction renaming rules introduced in collector protocol 14. See [the spec](https://newrelic.atlassian.net/wiki/display/eng/Language+agent+transaction+segment+terms+rules) for details. |
27
- | [docker_container_id](docker_container_id) | These tests cover parsing of Docker container IDs from `/proc` on Linux hosts. |
27
+ | [docker_container_id](docker_container_id) | These tests cover parsing of Docker container IDs from `/proc/*/cgroup` on Linux hosts. |
28
28
 
29
29
  ### CAT Map test details
30
30
 
@@ -2,7 +2,7 @@
2
2
  {
3
3
  "name": "new_cat",
4
4
  "appName": "testAppName",
5
- "transactionName": "WebTransaction/testTxnName",
5
+ "transactionName": "WebTransaction/Custom/testTxnName",
6
6
  "transactionGuid": "9323dc260548ed0e",
7
7
  "inboundPayload": [
8
8
  "b854df4feb2b1f06",
@@ -13,7 +13,7 @@
13
13
  "expectedIntrinsicFields": {
14
14
  "nr.guid": "9323dc260548ed0e",
15
15
  "nr.tripId": "7e249074f277923d",
16
- "nr.pathHash": "169d655a",
16
+ "nr.pathHash": "815b96d3",
17
17
  "nr.referringTransactionGuid": "b854df4feb2b1f06",
18
18
  "nr.referringPathHash": "5d2957be"
19
19
  },
@@ -24,7 +24,7 @@
24
24
  {
25
25
  "name": "new_cat_path_hash_with_leading_zero",
26
26
  "appName": "testAppName",
27
- "transactionName": "WebTransaction/txn7",
27
+ "transactionName": "WebTransaction/Custom/txn4",
28
28
  "transactionGuid": "9323dc260548ed0e",
29
29
  "inboundPayload": [
30
30
  "b854df4feb2b1f06",
@@ -35,7 +35,7 @@
35
35
  "expectedIntrinsicFields": {
36
36
  "nr.guid": "9323dc260548ed0e",
37
37
  "nr.tripId": "7e249074f277923d",
38
- "nr.pathHash": "04429689",
38
+ "nr.pathHash": "0e258e4e",
39
39
  "nr.referringTransactionGuid": "b854df4feb2b1f06",
40
40
  "nr.referringPathHash": "5d2957be"
41
41
  },
@@ -43,10 +43,32 @@
43
43
  "nr.alternatePathHashes"
44
44
  ]
45
45
  },
46
+ {
47
+ "name": "new_cat_path_hash_with_unicode_name",
48
+ "appName": "testAppName",
49
+ "transactionName": "WebTransaction/Custom/txn\u221a\u221a\u221a",
50
+ "transactionGuid": "9323dc260548ed0e",
51
+ "inboundPayload": [
52
+ "b854df4feb2b1f06",
53
+ false,
54
+ "7e249074f277923d",
55
+ "5d2957be"
56
+ ],
57
+ "expectedIntrinsicFields": {
58
+ "nr.guid": "9323dc260548ed0e",
59
+ "nr.tripId": "7e249074f277923d",
60
+ "nr.pathHash": "3d015d23",
61
+ "nr.referringTransactionGuid": "b854df4feb2b1f06",
62
+ "nr.referringPathHash": "5d2957be"
63
+ },
64
+ "nonExpectedIntrinsicFields": [
65
+ "nr.alternatePathHashes"
66
+ ]
67
+ },
46
68
  {
47
69
  "name": "new_cat_no_referring_payload",
48
70
  "appName": "testAppName",
49
- "transactionName": "WebTransaction/testTxnName",
71
+ "transactionName": "WebTransaction/Custom/testTxnName",
50
72
  "transactionGuid": "9323dc260548ed0e",
51
73
  "inboundPayload": null,
52
74
  "expectedIntrinsicFields": {},
@@ -62,24 +84,24 @@
62
84
  {
63
85
  "name": "new_cat_with_call_out",
64
86
  "appName": "testAppName",
65
- "transactionName": "WebTransaction/testTxnName",
87
+ "transactionName": "WebTransaction/Custom/testTxnName",
66
88
  "transactionGuid": "9323dc260548ed0e",
67
89
  "inboundPayload": null,
68
90
  "outboundRequests": [
69
91
  {
70
- "outboundTxnName": "WebTransaction/testTxnName",
92
+ "outboundTxnName": "WebTransaction/Custom/testTxnName",
71
93
  "expectedOutboundPayload": [
72
94
  "9323dc260548ed0e",
73
95
  false,
74
96
  "9323dc260548ed0e",
75
- "accfca26"
97
+ "3b0939af"
76
98
  ]
77
99
  }
78
100
  ],
79
101
  "expectedIntrinsicFields": {
80
102
  "nr.guid": "9323dc260548ed0e",
81
103
  "nr.tripId": "9323dc260548ed0e",
82
- "nr.pathHash": "accfca26"
104
+ "nr.pathHash": "3b0939af"
83
105
  },
84
106
  "nonExpectedIntrinsicFields": [
85
107
  "nr.referringTransactionGuid",
@@ -90,52 +112,52 @@
90
112
  {
91
113
  "name": "new_cat_with_multiple_calls_out",
92
114
  "appName": "testAppName",
93
- "transactionName": "WebTransaction/testTxnName",
115
+ "transactionName": "WebTransaction/Custom/testTxnName",
94
116
  "transactionGuid": "9323dc260548ed0e",
95
117
  "inboundPayload": null,
96
118
  "outboundRequests": [
97
119
  {
98
- "outboundTxnName": "WebTransaction/otherTxnName",
120
+ "outboundTxnName": "WebTransaction/Custom/otherTxnName",
99
121
  "expectedOutboundPayload": [
100
122
  "9323dc260548ed0e",
101
123
  false,
102
124
  "9323dc260548ed0e",
103
- "df3fb1b5"
125
+ "f1c8adf5"
104
126
  ]
105
127
  },
106
128
  {
107
- "outboundTxnName": "WebTransaction/otherTxnName",
129
+ "outboundTxnName": "WebTransaction/Custom/otherTxnName",
108
130
  "expectedOutboundPayload": [
109
131
  "9323dc260548ed0e",
110
132
  false,
111
133
  "9323dc260548ed0e",
112
- "df3fb1b5"
134
+ "f1c8adf5"
113
135
  ]
114
136
  },
115
137
  {
116
- "outboundTxnName": "WebTransaction/moreOtherTxnName",
138
+ "outboundTxnName": "WebTransaction/Custom/moreOtherTxnName",
117
139
  "expectedOutboundPayload": [
118
140
  "9323dc260548ed0e",
119
141
  false,
120
142
  "9323dc260548ed0e",
121
- "cf3bc3a8"
143
+ "ea19b61c"
122
144
  ]
123
145
  },
124
146
  {
125
- "outboundTxnName": "WebTransaction/moreDifferentTxnName",
147
+ "outboundTxnName": "WebTransaction/Custom/moreDifferentTxnName",
126
148
  "expectedOutboundPayload": [
127
149
  "9323dc260548ed0e",
128
150
  false,
129
151
  "9323dc260548ed0e",
130
- "2ab5328c"
152
+ "e00736cc"
131
153
  ]
132
154
  }
133
155
  ],
134
156
  "expectedIntrinsicFields": {
135
157
  "nr.guid": "9323dc260548ed0e",
136
158
  "nr.tripId": "9323dc260548ed0e",
137
- "nr.pathHash": "accfca26",
138
- "nr.alternatePathHashes": "2ab5328c,cf3bc3a8,df3fb1b5"
159
+ "nr.pathHash": "3b0939af",
160
+ "nr.alternatePathHashes": "e00736cc,ea19b61c,f1c8adf5"
139
161
  },
140
162
  "nonExpectedIntrinsicFields": [
141
163
  "nr.referringTransactionGuid",
@@ -145,115 +167,115 @@
145
167
  {
146
168
  "name": "new_cat_with_many_unique_calls_out",
147
169
  "appName": "testAppName",
148
- "transactionName": "WebTransaction/testTxnName",
170
+ "transactionName": "WebTransaction/Custom/testTxnName",
149
171
  "transactionGuid": "9323dc260548ed0e",
150
172
  "inboundPayload": null,
151
173
  "outboundRequests": [
152
174
  {
153
- "outboundTxnName": "WebTransaction/txn1",
175
+ "outboundTxnName": "WebTransaction/Custom/txn1",
154
176
  "expectedOutboundPayload": [
155
177
  "9323dc260548ed0e",
156
178
  false,
157
179
  "9323dc260548ed0e",
158
- "a7d2798f"
180
+ "93fb4310"
159
181
  ]
160
182
  },
161
183
  {
162
- "outboundTxnName": "WebTransaction/txn2",
184
+ "outboundTxnName": "WebTransaction/Custom/txn2",
163
185
  "expectedOutboundPayload": [
164
186
  "9323dc260548ed0e",
165
187
  false,
166
188
  "9323dc260548ed0e",
167
- "55f97a7f"
189
+ "a67c2da4"
168
190
  ]
169
191
  },
170
192
  {
171
- "outboundTxnName": "WebTransaction/txn3",
193
+ "outboundTxnName": "WebTransaction/Custom/txn3",
172
194
  "expectedOutboundPayload": [
173
195
  "9323dc260548ed0e",
174
196
  false,
175
197
  "9323dc260548ed0e",
176
- "72827114"
198
+ "0d932b2b"
177
199
  ]
178
200
  },
179
201
  {
180
- "outboundTxnName": "WebTransaction/txn4",
202
+ "outboundTxnName": "WebTransaction/Custom/txn4",
181
203
  "expectedOutboundPayload": [
182
204
  "9323dc260548ed0e",
183
205
  false,
184
206
  "9323dc260548ed0e",
185
- "9a3ed934"
207
+ "b4772132"
186
208
  ]
187
209
  },
188
210
  {
189
- "outboundTxnName": "WebTransaction/txn5",
211
+ "outboundTxnName": "WebTransaction/Custom/txn5",
190
212
  "expectedOutboundPayload": [
191
213
  "9323dc260548ed0e",
192
214
  false,
193
215
  "9323dc260548ed0e",
194
- "a1744603"
216
+ "51a1a337"
195
217
  ]
196
218
  },
197
219
  {
198
- "outboundTxnName": "WebTransaction/txn6",
220
+ "outboundTxnName": "WebTransaction/Custom/txn6",
199
221
  "expectedOutboundPayload": [
200
222
  "9323dc260548ed0e",
201
223
  false,
202
224
  "9323dc260548ed0e",
203
- "ccadfd2c"
225
+ "77b5cb70"
204
226
  ]
205
227
  },
206
228
  {
207
- "outboundTxnName": "WebTransaction/txn7",
229
+ "outboundTxnName": "WebTransaction/Custom/txn7",
208
230
  "expectedOutboundPayload": [
209
231
  "9323dc260548ed0e",
210
232
  false,
211
233
  "9323dc260548ed0e",
212
- "be1039f5"
234
+ "8a842c7f"
213
235
  ]
214
236
  },
215
237
  {
216
- "outboundTxnName": "WebTransaction/txn8",
238
+ "outboundTxnName": "WebTransaction/Custom/txn8",
217
239
  "expectedOutboundPayload": [
218
240
  "9323dc260548ed0e",
219
241
  false,
220
242
  "9323dc260548ed0e",
221
- "da7edf2e"
243
+ "b968edb8"
222
244
  ]
223
245
  },
224
246
  {
225
- "outboundTxnName": "WebTransaction/txn9",
247
+ "outboundTxnName": "WebTransaction/Custom/txn9",
226
248
  "expectedOutboundPayload": [
227
249
  "9323dc260548ed0e",
228
250
  false,
229
251
  "9323dc260548ed0e",
230
- "eaca716b"
252
+ "2691f90e"
231
253
  ]
232
254
  },
233
255
  {
234
- "outboundTxnName": "WebTransaction/txn10",
256
+ "outboundTxnName": "WebTransaction/Custom/txn10",
235
257
  "expectedOutboundPayload": [
236
258
  "9323dc260548ed0e",
237
259
  false,
238
260
  "9323dc260548ed0e",
239
- "6fc8d18f"
261
+ "b46aec87"
240
262
  ]
241
263
  },
242
264
  {
243
- "outboundTxnName": "WebTransaction/txn11",
265
+ "outboundTxnName": "WebTransaction/Custom/txn11",
244
266
  "expectedOutboundPayload": [
245
267
  "9323dc260548ed0e",
246
268
  false,
247
269
  "9323dc260548ed0e",
248
- "dbe37177"
270
+ "10bb3bf3"
249
271
  ]
250
272
  }
251
273
  ],
252
274
  "expectedIntrinsicFields": {
253
275
  "nr.guid": "9323dc260548ed0e",
254
276
  "nr.tripId": "9323dc260548ed0e",
255
- "nr.pathHash": "accfca26",
256
- "nr.alternatePathHashes": "55f97a7f,6fc8d18f,72827114,9a3ed934,a1744603,a7d2798f,be1039f5,ccadfd2c,da7edf2e,eaca716b"
277
+ "nr.pathHash": "3b0939af",
278
+ "nr.alternatePathHashes": "0d932b2b,2691f90e,51a1a337,77b5cb70,8a842c7f,93fb4310,a67c2da4,b46aec87,b4772132,b968edb8"
257
279
  },
258
280
  "nonExpectedIntrinsicFields": [
259
281
  "nr.referringTransactionGuid",
@@ -263,124 +285,124 @@
263
285
  {
264
286
  "name": "new_cat_with_many_calls_out",
265
287
  "appName": "testAppName",
266
- "transactionName": "WebTransaction/testTxnName",
288
+ "transactionName": "WebTransaction/Custom/testTxnName",
267
289
  "transactionGuid": "9323dc260548ed0e",
268
290
  "inboundPayload": null,
269
291
  "outboundRequests": [
270
292
  {
271
- "outboundTxnName": "WebTransaction/txn1",
293
+ "outboundTxnName": "WebTransaction/Custom/txn1",
272
294
  "expectedOutboundPayload": [
273
295
  "9323dc260548ed0e",
274
296
  false,
275
297
  "9323dc260548ed0e",
276
- "a7d2798f"
298
+ "93fb4310"
277
299
  ]
278
300
  },
279
301
  {
280
- "outboundTxnName": "WebTransaction/txn1",
302
+ "outboundTxnName": "WebTransaction/Custom/txn1",
281
303
  "expectedOutboundPayload": [
282
304
  "9323dc260548ed0e",
283
305
  false,
284
306
  "9323dc260548ed0e",
285
- "a7d2798f"
307
+ "93fb4310"
286
308
  ]
287
309
  },
288
310
  {
289
- "outboundTxnName": "WebTransaction/txn1",
311
+ "outboundTxnName": "WebTransaction/Custom/txn1",
290
312
  "expectedOutboundPayload": [
291
313
  "9323dc260548ed0e",
292
314
  false,
293
315
  "9323dc260548ed0e",
294
- "a7d2798f"
316
+ "93fb4310"
295
317
  ]
296
318
  },
297
319
  {
298
- "outboundTxnName": "WebTransaction/txn1",
320
+ "outboundTxnName": "WebTransaction/Custom/txn1",
299
321
  "expectedOutboundPayload": [
300
322
  "9323dc260548ed0e",
301
323
  false,
302
324
  "9323dc260548ed0e",
303
- "a7d2798f"
325
+ "93fb4310"
304
326
  ]
305
327
  },
306
328
  {
307
- "outboundTxnName": "WebTransaction/txn1",
329
+ "outboundTxnName": "WebTransaction/Custom/txn1",
308
330
  "expectedOutboundPayload": [
309
331
  "9323dc260548ed0e",
310
332
  false,
311
333
  "9323dc260548ed0e",
312
- "a7d2798f"
334
+ "93fb4310"
313
335
  ]
314
336
  },
315
337
  {
316
- "outboundTxnName": "WebTransaction/txn1",
338
+ "outboundTxnName": "WebTransaction/Custom/txn1",
317
339
  "expectedOutboundPayload": [
318
340
  "9323dc260548ed0e",
319
341
  false,
320
342
  "9323dc260548ed0e",
321
- "a7d2798f"
343
+ "93fb4310"
322
344
  ]
323
345
  },
324
346
  {
325
- "outboundTxnName": "WebTransaction/txn1",
347
+ "outboundTxnName": "WebTransaction/Custom/txn1",
326
348
  "expectedOutboundPayload": [
327
349
  "9323dc260548ed0e",
328
350
  false,
329
351
  "9323dc260548ed0e",
330
- "a7d2798f"
352
+ "93fb4310"
331
353
  ]
332
354
  },
333
355
  {
334
- "outboundTxnName": "WebTransaction/txn1",
356
+ "outboundTxnName": "WebTransaction/Custom/txn1",
335
357
  "expectedOutboundPayload": [
336
358
  "9323dc260548ed0e",
337
359
  false,
338
360
  "9323dc260548ed0e",
339
- "a7d2798f"
361
+ "93fb4310"
340
362
  ]
341
363
  },
342
364
  {
343
- "outboundTxnName": "WebTransaction/txn1",
365
+ "outboundTxnName": "WebTransaction/Custom/txn1",
344
366
  "expectedOutboundPayload": [
345
367
  "9323dc260548ed0e",
346
368
  false,
347
369
  "9323dc260548ed0e",
348
- "a7d2798f"
370
+ "93fb4310"
349
371
  ]
350
372
  },
351
373
  {
352
- "outboundTxnName": "WebTransaction/txn1",
374
+ "outboundTxnName": "WebTransaction/Custom/txn1",
353
375
  "expectedOutboundPayload": [
354
376
  "9323dc260548ed0e",
355
377
  false,
356
378
  "9323dc260548ed0e",
357
- "a7d2798f"
379
+ "93fb4310"
358
380
  ]
359
381
  },
360
382
  {
361
- "outboundTxnName": "WebTransaction/txn1",
383
+ "outboundTxnName": "WebTransaction/Custom/txn1",
362
384
  "expectedOutboundPayload": [
363
385
  "9323dc260548ed0e",
364
386
  false,
365
387
  "9323dc260548ed0e",
366
- "a7d2798f"
388
+ "93fb4310"
367
389
  ]
368
390
  },
369
391
  {
370
- "outboundTxnName": "WebTransaction/txn2",
392
+ "outboundTxnName": "WebTransaction/Custom/txn2",
371
393
  "expectedOutboundPayload": [
372
394
  "9323dc260548ed0e",
373
395
  false,
374
396
  "9323dc260548ed0e",
375
- "55f97a7f"
397
+ "a67c2da4"
376
398
  ]
377
399
  }
378
400
  ],
379
401
  "expectedIntrinsicFields": {
380
402
  "nr.guid": "9323dc260548ed0e",
381
403
  "nr.tripId": "9323dc260548ed0e",
382
- "nr.pathHash": "accfca26",
383
- "nr.alternatePathHashes": "55f97a7f,a7d2798f"
404
+ "nr.pathHash": "3b0939af",
405
+ "nr.alternatePathHashes": "93fb4310,a67c2da4"
384
406
  },
385
407
  "nonExpectedIntrinsicFields": [
386
408
  "nr.referringTransactionGuid",
@@ -390,7 +412,7 @@
390
412
  {
391
413
  "name": "new_cat_with_referring_info_and_call_out",
392
414
  "appName": "testAppName",
393
- "transactionName": "WebTransaction/testTxnName",
415
+ "transactionName": "WebTransaction/Custom/testTxnName",
394
416
  "transactionGuid": "9323dc260548ed0e",
395
417
  "inboundPayload": [
396
418
  "b854df4feb2b1f06",
@@ -400,20 +422,20 @@
400
422
  ],
401
423
  "outboundRequests": [
402
424
  {
403
- "outboundTxnName": "WebTransaction/otherTxnName",
425
+ "outboundTxnName": "WebTransaction/Custom/otherTxnName",
404
426
  "expectedOutboundPayload": [
405
427
  "9323dc260548ed0e",
406
428
  false,
407
429
  "7e249074f277923d",
408
- "656d1ec9"
430
+ "4b9a0289"
409
431
  ]
410
432
  }
411
433
  ],
412
434
  "expectedIntrinsicFields": {
413
435
  "nr.guid": "9323dc260548ed0e",
414
436
  "nr.tripId": "7e249074f277923d",
415
- "nr.pathHash": "169d655a",
416
- "nr.alternatePathHashes": "656d1ec9",
437
+ "nr.pathHash": "815b96d3",
438
+ "nr.alternatePathHashes": "4b9a0289",
417
439
  "nr.referringTransactionGuid": "b854df4feb2b1f06",
418
440
  "nr.referringPathHash": "5d2957be"
419
441
  },
@@ -422,7 +444,7 @@
422
444
  {
423
445
  "name": "new_cat_missing_path_hash",
424
446
  "appName": "testAppName",
425
- "transactionName": "WebTransaction/testTxnName",
447
+ "transactionName": "WebTransaction/Custom/testTxnName",
426
448
  "transactionGuid": "9323dc260548ed0e",
427
449
  "inboundPayload": [
428
450
  "b854df4feb2b1f06",
@@ -432,7 +454,7 @@
432
454
  "expectedIntrinsicFields": {
433
455
  "nr.guid": "9323dc260548ed0e",
434
456
  "nr.tripId": "7e249074f277923d",
435
- "nr.pathHash": "accfca26",
457
+ "nr.pathHash": "3b0939af",
436
458
  "nr.referringTransactionGuid": "b854df4feb2b1f06"
437
459
  },
438
460
  "nonExpectedIntrinsicFields": [
@@ -443,7 +465,7 @@
443
465
  {
444
466
  "name": "new_cat_null_path_hash",
445
467
  "appName": "testAppName",
446
- "transactionName": "WebTransaction/testTxnName",
468
+ "transactionName": "WebTransaction/Custom/testTxnName",
447
469
  "transactionGuid": "9323dc260548ed0e",
448
470
  "inboundPayload": [
449
471
  "b854df4feb2b1f06",
@@ -454,7 +476,7 @@
454
476
  "expectedIntrinsicFields": {
455
477
  "nr.guid": "9323dc260548ed0e",
456
478
  "nr.tripId": "7e249074f277923d",
457
- "nr.pathHash": "accfca26",
479
+ "nr.pathHash": "3b0939af",
458
480
  "nr.referringTransactionGuid": "b854df4feb2b1f06"
459
481
  },
460
482
  "nonExpectedIntrinsicFields": [
@@ -465,7 +487,7 @@
465
487
  {
466
488
  "name": "new_cat_malformed_path_hash",
467
489
  "appName": "testAppName",
468
- "transactionName": "WebTransaction/testTxnName",
490
+ "transactionName": "WebTransaction/Custom/testTxnName",
469
491
  "transactionGuid": "9323dc260548ed0e",
470
492
  "inboundPayload": [
471
493
  "b854df4feb2b1f06",
@@ -479,7 +501,7 @@
479
501
  "expectedIntrinsicFields": {
480
502
  "nr.guid": "9323dc260548ed0e",
481
503
  "nr.tripId": "7e249074f277923d",
482
- "nr.pathHash": "accfca26",
504
+ "nr.pathHash": "3b0939af",
483
505
  "nr.referringTransactionGuid": "b854df4feb2b1f06"
484
506
  },
485
507
  "nonExpectedIntrinsicFields": [
@@ -487,10 +509,54 @@
487
509
  "nr.referringPathHash"
488
510
  ]
489
511
  },
512
+ {
513
+ "name": "new_cat_corrupt_path_hash",
514
+ "appName": "testAppName",
515
+ "transactionName": "WebTransaction/Custom/testTxnName",
516
+ "transactionGuid": "9323dc260548ed0e",
517
+ "inboundPayload": [
518
+ "b854df4feb2b1f06",
519
+ false,
520
+ "7e249074f277923d",
521
+ "ZXYQEDABC"
522
+ ],
523
+ "expectedIntrinsicFields": {
524
+ "nr.guid": "9323dc260548ed0e",
525
+ "nr.tripId": "7e249074f277923d",
526
+ "nr.pathHash": "3b0939af",
527
+ "nr.referringTransactionGuid": "b854df4feb2b1f06",
528
+ "nr.referringPathHash": "ZXYQEDABC"
529
+ },
530
+ "nonExpectedIntrinsicFields": [
531
+ "nr.alternatePathHashes"
532
+ ]
533
+ },
534
+ {
535
+ "name": "new_cat_malformed_trip_id",
536
+ "appName": "testAppName",
537
+ "transactionName": "WebTransaction/Custom/testTxnName",
538
+ "transactionGuid": "9323dc260548ed0e",
539
+ "inboundPayload": [
540
+ "b854df4feb2b1f06",
541
+ false,
542
+ ["scrambled"],
543
+ "5d2957be"
544
+ ],
545
+ "expectedIntrinsicFields": {
546
+ "nr.guid": "9323dc260548ed0e",
547
+ "nr.tripId": "9323dc260548ed0e",
548
+ "nr.pathHash": "815b96d3",
549
+ "nr.referringTransactionGuid": "b854df4feb2b1f06",
550
+ "nr.referringPathHash": "5d2957be"
551
+ },
552
+ "nonExpectedIntrinsicFields": [
553
+ "nr.alternatePathHashes"
554
+ ]
555
+ },
490
556
  {
491
557
  "name": "new_cat_missing_trip_id",
492
558
  "appName": "testAppName",
493
- "transactionName": "WebTransaction/testTxnName",
559
+ "transactionName": "WebTransaction/Custom/testTxnName",
494
560
  "transactionGuid": "9323dc260548ed0e",
495
561
  "inboundPayload": [
496
562
  "b854df4feb2b1f06",
@@ -499,7 +565,7 @@
499
565
  "expectedIntrinsicFields": {
500
566
  "nr.guid": "9323dc260548ed0e",
501
567
  "nr.tripId": "9323dc260548ed0e",
502
- "nr.pathHash": "accfca26",
568
+ "nr.pathHash": "3b0939af",
503
569
  "nr.referringTransactionGuid": "b854df4feb2b1f06"
504
570
  },
505
571
  "nonExpectedIntrinsicFields": [
@@ -510,7 +576,7 @@
510
576
  {
511
577
  "name": "new_cat_null_trip_id",
512
578
  "appName": "testAppName",
513
- "transactionName": "WebTransaction/testTxnName",
579
+ "transactionName": "WebTransaction/Custom/testTxnName",
514
580
  "transactionGuid": "9323dc260548ed0e",
515
581
  "inboundPayload": [
516
582
  "b854df4feb2b1f06",
@@ -520,7 +586,7 @@
520
586
  "expectedIntrinsicFields": {
521
587
  "nr.guid": "9323dc260548ed0e",
522
588
  "nr.tripId": "9323dc260548ed0e",
523
- "nr.pathHash": "accfca26",
589
+ "nr.pathHash": "3b0939af",
524
590
  "nr.referringTransactionGuid": "b854df4feb2b1f06"
525
591
  },
526
592
  "nonExpectedIntrinsicFields": [
@@ -528,4 +594,4 @@
528
594
  "nr.referringPathHash"
529
595
  ]
530
596
  }
531
- ]
597
+ ]