Пример #1
0
        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 Extract_ReturnsLambdaPayloadContext_FromPayload()
        {
            var tracer             = LambdaTracer.Instance;
            var contextTextMap     = tracer.Extract(BuiltinFormats.TextMap, new TextMapExtractAdapter(_tags));
            var contextHttpHeaders = tracer.Extract(BuiltinFormats.HttpHeaders, new TextMapExtractAdapter(_tags));
            var payloadEncodedMap  = tracer.Extract(NewRelicFormats.Payload, new PayloadExtractAdapter(_dtPayload.SerializeAndEncodeDistributedTracePayload()));
            var payloadJsonMap     = tracer.Extract(NewRelicFormats.Payload, new PayloadExtractAdapter(_dtPayload.ToJson()));

            Assert.That(contextTextMap, Is.TypeOf <LambdaPayloadContext>());
            Assert.That(contextHttpHeaders, Is.TypeOf <LambdaPayloadContext>());
            Assert.That(payloadEncodedMap, Is.TypeOf <LambdaPayloadContext>());
            Assert.That(payloadJsonMap, Is.TypeOf <LambdaPayloadContext>());
        }