示例#1
0
 /// <summary>
 /// Validate manifest object structure
 /// </summary>
 public void Validate()
 {
     invalidRules.Clear();
     InvalidActionCount = 0;
     if (StringExtensions.IsNullOrWhiteSpace(Version))
     {
         throw new TelemetryManifestValidationException("'version' must be valid non-empty string, represented version");
     }
     Rules = ObjectExtensions.EmptyIfNull <TelemetryManifestRule>(Rules).Where(delegate(TelemetryManifestRule rule)
     {
         try
         {
             rule.Validate();
             return(true);
         }
         catch (TelemetryManifestValidationException)
         {
             if (!string.IsNullOrEmpty(rule.Name))
             {
                 invalidRules.Add(rule.Name);
             }
         }
         finally
         {
             InvalidActionCount += rule.InvalidActionCount;
         }
         return(false);
     }).ToList();
 }
示例#2
0
        /// <summary>
        /// Initializes all TelemetryManifestMatchSample.IsSampleActive.
        /// The initialization is based on information from the given session,
        /// such as machine id, session id etc.
        /// </summary>
        /// <param name="session"></param>
        /// <returns></returns>
        internal string CalculateAllSamplings(TelemetrySession session)
        {
            StringBuilder stringBuilder = new StringBuilder("[");

            foreach (TelemetryManifestRule item in ObjectExtensions.EmptyIfNull <TelemetryManifestRule>(Rules))
            {
                stringBuilder.AppendFormat("{0}, ", item.CalculateAllSamplings(session));
            }
            stringBuilder.Append("]");
            return(stringBuilder.ToString());
        }
示例#3
0
        public IEnumerable <ITelemetryManifestAction> GetActionsForEvent(TelemetryEvent telemetryEvent)
        {
            CodeContract.RequiresArgumentNotNull <TelemetryEvent>(telemetryEvent, "telemetryEvent");
            List <ITelemetryManifestAction> list = new List <ITelemetryManifestAction>();

            foreach (TelemetryManifestRule item in ObjectExtensions.EmptyIfNull <TelemetryManifestRule>(Rules))
            {
                if (item.When.IsEventMatch(telemetryEvent))
                {
                    list.AddRange(item.Actions);
                }
            }
            return(list);
        }
示例#4
0
 internal IEnumerable <TelemetryManifestMatchSampling.Path> GetAllSamplings()
 {
     return(ObjectExtensions.EmptyIfNull <TelemetryManifestRule>(Rules).SelectMany((TelemetryManifestRule rule) => from sample in rule.GetAllSamplings()
                                                                                   select new TelemetryManifestMatchSampling.Path(rule, sample)));
 }