public void BadlyFormedExpression(string malformedExpression) { string altMalformedExpression = malformedExpression.Replace('(', Syntax.AltOpeningBracket).Replace(')', Syntax.AltClosingBracket); Assert.Throws(typeof(ApplicationException), () => { _ = TriggerExpression.Parse(null, altMalformedExpression); }); }
public void Execute(List <TriggerItem> triggerItems) { var filteredTriggerItems = new List <TriggerItem>(); TriggerItem defaultTriggerItem = null; if (!triggerItems.Any()) { return; } if (TriggerExpression == null) { defaultTriggerItem = triggerItems.First(); WatchdogEventSource.Current.RuleFired(this.ToString(defaultTriggerItem), defaultTriggerItem.ToString(), false); return; } if (RuleFilter != null) { foreach (var triggerItem in triggerItems) { var result = (RuleFilter.Execute(triggerItem) == "1" ? true : false); if (result) { filteredTriggerItems.Add(triggerItem); } } if (!filteredTriggerItems.Any()) { defaultTriggerItem = triggerItems.First(); _firstTriggered = null; _triggeringItem = null; WatchdogEventSource.Current.RuleFired(this.ToString(defaultTriggerItem), defaultTriggerItem.ToString(), false); return; } } if (AggregateData) { filteredTriggerItems = CreateAggregatedData(filteredTriggerItems); } foreach (var filteredTriggerItem in filteredTriggerItems) { if (TriggerExpression.Execute(filteredTriggerItem) != 0) { if (_firstTriggered == null) { _firstTriggered = DateTime.UtcNow; } _triggeringItem = filteredTriggerItem; WatchdogEventSource.Current.RuleFired(this.ToString(filteredTriggerItem), filteredTriggerItem.ToString(), true); return; } } defaultTriggerItem = triggerItems.First(); _firstTriggered = null; _triggeringItem = null; WatchdogEventSource.Current.RuleFired(this.ToString(defaultTriggerItem), defaultTriggerItem.ToString(), false); }
public string ToString(TriggerItem triggerItem) { return($"RuleFilter={RuleFilter.ToString(triggerItem)}; Expression={TriggerExpression.ToString(triggerItem)}; TriggerPeriod={TriggerPeriod.ToString()}; " + $"GracePeriod={ActionGracePeriod.ToString()}; Action={TriggerAction.GetType().FullName}"); }