public void Collect(ISpanEventWireModel wireModel) { RecordSeenSpans(1); if (_spanEvents == null || !_spanEvents.TryAdd(wireModel.Span)) { RecordDroppedSpans(1); } }
private static void TestPayloadInfoMatchesSpanInfo(DistributedTracePayload payload, ISpanEventWireModel rootSpan, ISpanEventWireModel actualSpan) { Assert.NotNull(rootSpan); var rootSpanIntrinsicAttributes = rootSpan.IntrinsicAttributes(); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.TraceId, rootSpanIntrinsicAttributes["traceId"])); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.Priority, rootSpanIntrinsicAttributes["priority"])); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.Sampled, rootSpanIntrinsicAttributes["sampled"])); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.Guid, rootSpanIntrinsicAttributes["parentId"])); Assert.IsTrue(AttributeComparer.IsEqualTo("generic", rootSpanIntrinsicAttributes["category"])); Assert.IsTrue(AttributeComparer.IsEqualTo(true, rootSpanIntrinsicAttributes["nr.entryPoint"])); Assert.NotNull(actualSpan); var actualSpanIntrinsicAttributes = actualSpan.IntrinsicAttributes(); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.TraceId, actualSpanIntrinsicAttributes["traceId"])); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.Priority, actualSpanIntrinsicAttributes["priority"])); Assert.IsTrue(AttributeComparer.IsEqualTo(payload.Sampled, actualSpanIntrinsicAttributes["sampled"])); Assert.IsTrue(AttributeComparer.IsEqualTo(rootSpanIntrinsicAttributes["guid"], actualSpanIntrinsicAttributes["parentId"])); Assert.IsTrue(AttributeComparer.IsEqualTo(rootSpanIntrinsicAttributes["transactionId"], actualSpanIntrinsicAttributes["transactionId"])); Assert.IsTrue(AttributeComparer.IsEqualTo("datastore", actualSpanIntrinsicAttributes["category"])); }
private static ReadOnlyDictionary <string, object> ConvertAttribValuesToDictionary(ISpanEventWireModel spanEvent, AttributeClassification classification) { return(new ReadOnlyDictionary <string, object>(spanEvent .GetAttributeValues(classification) .ToDictionary(x => x.AttributeDefinition.Name, x => x.Value))); }
public static ReadOnlyDictionary <string, object> AgentAttributes(this ISpanEventWireModel spanEvent) => ConvertAttribValuesToDictionary(spanEvent, AttributeClassification.AgentAttributes);
public static void DoesNotHaveAttributes(IEnumerable <string> unexpectedAttributes, AttributeClassification attributeClassification, ISpanEventWireModel span) { var errorMessageBuilder = new StringBuilder(); var actualAttributes = span.GetAttributeValues(attributeClassification); var allAttributesNotFound = ExpectedAttribute.CheckIfAllAttributesNotFound(actualAttributes, unexpectedAttributes, errorMessageBuilder); Assert.True(allAttributesNotFound, errorMessageBuilder.ToString()); }
public static void HasAttributes(IEnumerable <ExpectedAttribute> expectedAttributes, AttributeClassification attributeClassification, ISpanEventWireModel span) { var errorMessageBuilder = new StringBuilder(); var actualAttributes = span.GetAttributeValues(attributeClassification); var allAttributesMatch = ExpectedAttribute.CheckIfAllAttributesMatch(actualAttributes, expectedAttributes, errorMessageBuilder); Assert.True(allAttributesMatch, errorMessageBuilder.ToString()); }