public void ShouldNotAcceptBadStringDistributedTracePayload() { var agentWrapperApi = _compositeTestAgent.GetAgent(); var transaction = agentWrapperApi.CreateTransaction( isWeb: true, category: EnumNameCache <WebTransactionType> .GetName(WebTransactionType.ASP), transactionDisplayName: "TransactionName", doNotTrackAsUnitOfWork: true); var transactionBridgeApi = new TransactionBridgeApi(transaction, _apiSupportabilityMetricCounters, _configSvc); var segment = agentWrapperApi.StartTransactionSegmentOrThrow("segment"); transactionBridgeApi.AcceptDistributedTracePayload(_badDistributedTracePayloadString, 0 /*Unknown TransportType see Agent\NewRelic.Api.Agent\TransportType.cs for more info*/); segment.End(); transaction.End(); _compositeTestAgent.Harvest(); var expectedMetrics = new List <ExpectedMetric> { new ExpectedCountMetric { Name = "Supportability/DistributedTrace/AcceptPayload/ParseException", CallCount = 1 } }; MetricAssertions.MetricsExist(expectedMetrics, _compositeTestAgent.Metrics); }
public void ShouldAcceptStringDistributedTracePayloadWhenDTEnabled() { var agentWrapperApi = _compositeTestAgent.GetAgent(); var transaction = agentWrapperApi.CreateTransaction( isWeb: true, category: EnumNameCache <WebTransactionType> .GetName(WebTransactionType.ASP), transactionDisplayName: "TransactionName", doNotTrackAsUnitOfWork: true); var transactionBridgeApi = new TransactionBridgeApi(transaction, _apiSupportabilityMetricCounters, _configSvc); var segment = agentWrapperApi.StartTransactionSegmentOrThrow("segment"); transactionBridgeApi.AcceptDistributedTracePayload(_distributedTracePayload.ToJson(), 0 /*Unknown TransportType see Agent\NewRelic.Api.Agent\TransportType.cs for more info*/); segment.End(); transaction.End(); _compositeTestAgent.Harvest(); var transactionEvent = _compositeTestAgent.TransactionEvents.First(); var transactionAttributes = transactionEvent.IntrinsicAttributes(); NrAssert.Multiple( () => Assert.AreEqual(_traceId, transactionAttributes["traceId"]), () => Assert.AreEqual(_type.ToString(), transactionAttributes["parent.type"]), () => Assert.AreEqual(_appId, transactionAttributes["parent.app"]), () => Assert.AreEqual(_accountId, transactionAttributes["parent.account"]), () => Assert.AreEqual("Unknown", transactionAttributes["parent.transportType"]), () => Assert.True(transactionAttributes.ContainsKey("parent.transportDuration")), () => Assert.AreEqual(_transactionId, transactionAttributes["parentId"]), () => Assert.AreEqual(_priority, transactionAttributes["priority"]), () => Assert.AreEqual(_sampled, transactionAttributes["sampled"]) ); }
public void ShouldCreateDistributedTracePayload() { var agentWrapperApi = _compositeTestAgent.GetAgent(); var transaction = agentWrapperApi.CreateTransaction( isWeb: true, category: EnumNameCache <WebTransactionType> .GetName(WebTransactionType.ASP), transactionDisplayName: "TransactionName", doNotTrackAsUnitOfWork: true); var transactionBridgeApi = new TransactionBridgeApi(transaction, _apiSupportabilityMetricCounters, _configSvc); dynamic payload = transactionBridgeApi.CreateDistributedTracePayload(); NrAssert.Multiple( () => Assert.IsNotEmpty(payload.HttpSafe()), () => Assert.IsNotEmpty(payload.Text()), () => Assert.IsFalse(payload.IsEmpty()) ); }
private void CallTransactionApiBridgeMethod(Action <TransactionBridgeApi> apiMethod, string expectedMetricName) { var transaction = _agent.CreateTransaction( isWeb: true, category: EnumNameCache <WebTransactionType> .GetName(WebTransactionType.ASP), transactionDisplayName: "TransactionName", doNotTrackAsUnitOfWork: true); var transactionBridgeApi = new TransactionBridgeApi(transaction, _apiSupportabilityMetricCounters, _configSvc); var segment = _compositeTestAgent.GetAgent().StartTransactionSegmentOrThrow("segment"); apiMethod(transactionBridgeApi); segment.End(); transaction.End(); HarvestAndValidateMetric(expectedMetricName); }
public void ShouldNotAcceptStringDistributedTracePayloadWhenDTNotEnabled() { _compositeTestAgent.LocalConfiguration.distributedTracing.enabled = false; _compositeTestAgent.PushConfiguration(); var agentWrapperApi = _compositeTestAgent.GetAgent(); var transaction = agentWrapperApi.CreateTransaction( isWeb: true, category: EnumNameCache <WebTransactionType> .GetName(WebTransactionType.ASP), transactionDisplayName: "TransactionName", doNotTrackAsUnitOfWork: true); var transactionBridgeApi = new TransactionBridgeApi(transaction, _apiSupportabilityMetricCounters, _configSvc); var segment = agentWrapperApi.StartTransactionSegmentOrThrow("segment"); transactionBridgeApi.AcceptDistributedTracePayload(_distributedTracePayload.ToJson(), 0 /*Unknown TransportType see Agent\NewRelic.Api.Agent\TransportType.cs for more info*/); segment.End(); transaction.End(); _compositeTestAgent.Harvest(); var transactionEvent = _compositeTestAgent.TransactionEvents.First(); var expectedMissingAttributes = new[] { "traceId", "parent.type", "parent.app", "parent.account", "parent.transportType", "parent.TransportDuration", "parentId", "priority", "sampled" }; TransactionEventAssertions.DoesNotHaveAttributes(expectedMissingAttributes, AttributeClassification.Intrinsics, transactionEvent); }