コード例 #1
0
        private bool ValidateCollectionLimits(AttributeClassification classification, string name)
        {
            int attribCount = 0;

            switch (classification)
            {
            case AttributeClassification.Intrinsics:
                attribCount = _attribCountIntrinsicAttribs;
                break;

            case AttributeClassification.AgentAttributes:
                attribCount = _attribCountAgentAttribs;
                break;

            case AttributeClassification.UserAttributes:
                attribCount = _attribCountUserAttribs;
                break;
            }

            if (classification == AttributeClassification.UserAttributes && attribCount >= MaxCountUserAttrib)
            {
                Log.Debug($"{classification} Attribute '{name}' was not recorded - A max of {MaxCountUserAttrib} {classification} attributes may be supplied.");
                return(false);
            }

            if (Count >= MaxCountAllAttrib)
            {
                Log.Debug($"{classification} Attribute '{name}' was not recorded - A max of {MaxCountAllAttrib} attributes may be supplied.");
                return(false);
            }

            return(true);
        }
コード例 #2
0
        protected override IEnumerable <AttributeValue> GetAttribValuesImpl(AttributeClassification classification)
        {
            var dic = GetAttribValues(classification, false);

            return(dic == null
                ? Enumerable.Empty <AttributeValue>()
                : dic);
        }
コード例 #3
0
        public IDictionary <string, object> GetAttributeValuesDic(AttributeClassification classification)
        {
            var result = new Dictionary <string, object>();

            foreach (var attribVal in GetAttribValuesImpl(classification))
            {
                result[attribVal.AttributeDefinition.Name] = attribVal.Value;
            }

            return(result);
        }
コード例 #4
0
        public AttributeDefinition(string name, AttributeClassification classification, Dictionary <AttributeDestinations, bool> availability)
        {
            Name           = name;
            Classification = classification;
            _availability  = availability;

            foreach (var k in availability.Where(x => x.Value))
            {
                AttributeDestinations |= k.Key;
            }
        }
コード例 #5
0
        private void IncrementAttribCount(AttributeClassification classification)
        {
            switch (classification)
            {
            case AttributeClassification.Intrinsics:
                Interlocked.Increment(ref _attribCountIntrinsicAttribs);
                break;

            case AttributeClassification.AgentAttributes:
                Interlocked.Increment(ref _attribCountAgentAttribs);
                break;

            case AttributeClassification.UserAttributes:
                Interlocked.Increment(ref _attribCountUserAttribs);
                break;
            }
        }
コード例 #6
0
        private MapField <string, AttributeValue> GetAttribValuesInternal(AttributeClassification classification)
        {
            switch (classification)
            {
            case AttributeClassification.AgentAttributes:
                return(_span.AgentAttributes);

            case AttributeClassification.UserAttributes:
                return(_span.UserAttributes);

            case AttributeClassification.Intrinsics:
                return(_span.Intrinsics);

            default:
                return(null);
            }
        }
コード例 #7
0
        private List <AttributeValue> GetAttribValues(AttributeClassification classification, bool withCreate)
        {
            switch (classification)
            {
            case AttributeClassification.Intrinsics:
                return(withCreate
                        ? _attribValuesIntrinsicAttribs ?? (_attribValuesIntrinsicAttribs = new List <AttributeValue>())
                        : _attribValuesIntrinsicAttribs);

            case AttributeClassification.AgentAttributes:
                return(withCreate
                        ? _attribValuesAgentAttribs ?? (_attribValuesAgentAttribs = new List <AttributeValue>())
                        : _attribValuesAgentAttribs);

            case AttributeClassification.UserAttributes:
                return(withCreate
                        ? _attribValuesUserAttribs ?? (_attribValuesUserAttribs = new List <AttributeValue>())
                        : _attribValuesUserAttribs);
            }

            return(null);
        }
コード例 #8
0
 public static IDictionary <string, object> AttributesOfClass(this EventWireModel model, AttributeClassification classification)
 {
     return(model.AttributeValues.GetAttributeValuesDic(classification));
 }
コード例 #9
0
        public static IDictionary <string, object> GetAttributes(this ErrorTraceWireModel errorTrace, AttributeClassification attributeClassification)
        {
            switch (attributeClassification)
            {
            case AttributeClassification.Intrinsics:
                return(errorTrace.Attributes.Intrinsics.ToDictionary());

            case AttributeClassification.AgentAttributes:
                return(errorTrace.Attributes.AgentAttributes.ToDictionary());

            case AttributeClassification.UserAttributes:
                return(errorTrace.Attributes.UserAttributes.ToDictionary());

            default:
                throw new NotImplementedException();
            }
        }
コード例 #10
0
        public static IDictionary <string, object> GetAttributes(this TransactionTraceWireModel transactionTrace, AttributeClassification attributeClassification)
        {
            switch (attributeClassification)
            {
            case AttributeClassification.Intrinsics:
                return(transactionTrace.TransactionTraceData.Attributes.Intrinsics);

            case AttributeClassification.AgentAttributes:
                return(transactionTrace.TransactionTraceData.Attributes.AgentAttributes);

            case AttributeClassification.UserAttributes:
                return(transactionTrace.TransactionTraceData.Attributes.UserAttributes);

            default:
                throw new NotImplementedException();
            }
        }
コード例 #11
0
 public static IDictionary <string, object> GetAttributes(this CustomEventWireModel customEvent, AttributeClassification attributeClassification)
 {
     return(customEvent.AttributeValues.ToDictionary(attributeClassification));
 }
コード例 #12
0
 public IEnumerable <IAttributeValue> GetAttributeValues(AttributeClassification classification)
 {
     return(GetAttribValuesImpl(classification).Cast <IAttributeValue>());
 }
コード例 #13
0
 public static AttributeDefinitionBuilder <long, long> CreateLong(string name, AttributeClassification classification)
 {
     return(Create <long>(name, classification));
 }
コード例 #14
0
 public static AttributeDefinitionBuilder <bool, bool> CreateBool(string name, AttributeClassification classification)
 {
     return(Create <bool>(name, classification));
 }
コード例 #15
0
 public static AttributeDefinitionBuilder <string, string> CreateString(string name, AttributeClassification classification)
 {
     return(Create <string>(name, classification)
            .WithPostProcessing((v) => v.TruncateUnicodeStringByBytes(_stringValueMaxLengthBytes)));
 }
コード例 #16
0
 public static AttributeDefinitionBuilder <TValue, TValue> Create <TValue>(string name, AttributeClassification classification)
 {
     return(new AttributeDefinitionBuilder <TValue, TValue>(name, classification)
            .WithConvert((i) => i));
 }
コード例 #17
0
 protected override IEnumerable <AttributeValue> GetAttribValuesImpl(AttributeClassification classification)
 {
     return(GetAttribValuesInternal(classification).Values);
 }
コード例 #18
0
 protected abstract IEnumerable <TAttrib> GetAttribValuesImpl(AttributeClassification classification);
コード例 #19
0
 public IDictionary <string, object> GetAttributeValuesDic(AttributeClassification classification)
 {
     return(_emptyAttribDic);
 }
コード例 #20
0
 public IEnumerable <IAttributeValue> GetAttributeValues(AttributeClassification classification)
 {
     return(_emptyAttribValues);
 }
 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)));
 }
コード例 #22
0
        public static void HasAttributes(IEnumerable <ExpectedAttribute> expectedAttributes, AttributeClassification attributeClassification, CustomEventWireModel customEvent)
        {
            var succeeded        = true;
            var builder          = new StringBuilder();
            var actualAttributes = customEvent.GetAttributes(attributeClassification);

            foreach (var expectedAttribute in expectedAttributes)
            {
                if (!actualAttributes.ContainsKey(expectedAttribute.Key))
                {
                    builder.AppendFormat("Attribute named {0} was not found in the transaction event.", expectedAttribute);
                    builder.AppendLine();
                    succeeded = false;
                    continue;
                }

                var expectedValue = expectedAttribute.Value;
                var actualValue   = actualAttributes[expectedAttribute.Key] as string;
                if (expectedValue != null && actualValue != expectedAttribute.Value as string)
                {
                    builder.AppendFormat("Attribute named {0} in the transaction event had an unexpected value.  Expected: {1}, Actual: {2}", expectedAttribute.Key, expectedAttribute.Value, actualValue);
                    builder.AppendLine();
                    succeeded = false;
                    continue;
                }
            }

            Assert.True(succeeded, builder.ToString());
        }
コード例 #23
0
        public static void DoesNotHaveAttributes(IEnumerable <string> unexpectedAttributes, AttributeClassification attributeClassification, CustomEventWireModel customEvent)
        {
            var succeeded        = true;
            var builder          = new StringBuilder();
            var actualAttributes = customEvent.GetAttributes(attributeClassification);

            foreach (var unexpectedAttribute in unexpectedAttributes)
            {
                if (actualAttributes.ContainsKey(unexpectedAttribute))
                {
                    builder.AppendFormat("Attribute named {0} was found in the transaction event but it should not have been.", unexpectedAttribute);
                    builder.AppendLine();
                    succeeded = false;
                }
            }

            Assert.True(succeeded, builder.ToString());
        }
コード例 #24
0
        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());
        }
コード例 #25
0
 public static AttributeDefinitionBuilder <double, double> CreateDouble(string name, AttributeClassification classification)
 {
     return(Create <double>(name, classification));
 }
コード例 #26
0
        public static void ErrorTraceHasAttributes(IEnumerable <ExpectedAttribute> expectedAttributes, AttributeClassification attributeClassification, ErrorTraceWireModel errorTrace)
        {
            var errorMessageBuilder = new StringBuilder();
            var actualAttributes    = errorTrace.GetAttributes(attributeClassification);
            var allAttributesMatch  = ExpectedAttribute.CheckIfAllAttributesMatch(actualAttributes, expectedAttributes, errorMessageBuilder);

            Assert.True(allAttributesMatch, errorMessageBuilder.ToString());
        }
コード例 #27
0
 public static AttributeDefinitionBuilder <TInput, long> CreateLong <TInput>(string name, AttributeClassification classification)
 {
     return(new AttributeDefinitionBuilder <TInput, long>(name, classification));
 }
コード例 #28
0
        public static void ErrorTraceDoesNotHaveAttributes(IEnumerable <string> unexpectedAttributes, AttributeClassification attributeClassification, ErrorTraceWireModel errorTrace)
        {
            var errorMessageBuilder   = new StringBuilder();
            var actualAttributes      = errorTrace.GetAttributes(attributeClassification);
            var allAttributesNotFound = ExpectedAttribute.CheckIfAllAttributesNotFound(actualAttributes, unexpectedAttributes, errorMessageBuilder);

            Assert.True(allAttributesNotFound, errorMessageBuilder.ToString());
        }
コード例 #29
0
        public static AttributeDefinitionBuilder <string, string> CreateDBStatement(string name, AttributeClassification classification)
        {
            const int dbStmtMaxLength = 1999;

            return(new AttributeDefinitionBuilder <string, string>(name, classification)
                   .WithConvert((dbStmt) => TruncateDatastoreStatement(dbStmt, dbStmtMaxLength)));
        }
コード例 #30
0
        private ConcurrentDictionary <AttributeDefinition, AttributeValue> GetValueDictionary(AttributeClassification classification, bool withCreate)
        {
            switch (classification)
            {
            case AttributeClassification.Intrinsics:
                return(withCreate
                        ? _attribValuesIntrinsicAttribs ?? (_attribValuesIntrinsicAttribs = new ConcurrentDictionary <AttributeDefinition, AttributeValue>())
                        : _attribValuesIntrinsicAttribs);

            case AttributeClassification.AgentAttributes:
                return(withCreate
                        ? _attribValuesAgentAttribs ?? (_attribValuesAgentAttribs = new ConcurrentDictionary <AttributeDefinition, AttributeValue>())
                        : _attribValuesAgentAttribs);

            case AttributeClassification.UserAttributes:
                return(withCreate
                        ? _attribValuesUserAttribs ?? (_attribValuesUserAttribs = new ConcurrentDictionary <AttributeDefinition, AttributeValue>())
                        : _attribValuesUserAttribs);
            }

            return(null);
        }