/// <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(); }
/// <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()); }
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); }
internal IEnumerable <TelemetryManifestMatchSampling.Path> GetAllSamplings() { return(ObjectExtensions.EmptyIfNull <TelemetryManifestRule>(Rules).SelectMany((TelemetryManifestRule rule) => from sample in rule.GetAllSamplings() select new TelemetryManifestMatchSampling.Path(rule, sample))); }