private void TestTriggerChannel(TriggerChannel channel, string[] urls, bool isSensor, ChannelItem channelItem = null) { var countOverride = new Dictionary <Content, int> { [Content.Sensors] = isSensor ? 2 : 0 }; var itemOverride = channelItem != null ? new Dictionary <Content, BaseItem[]> { [Content.Channels] = new[] { channelItem } } : null; var parameters = new ThresholdTriggerParameters(1001) { Channel = channel }; Execute( c => c.AddNotificationTrigger(parameters, false), urls, countOverride, itemOverride ); }
public void ThresholdTriggerParameters_Create_FromExistingTrigger() { var trigger = GetMultipleItems().First(t => t.Type == TriggerType.Threshold); var parameters = new ThresholdTriggerParameters(1234, trigger); TriggerParameters_Create_FromExistingTrigger(trigger, parameters); }
public async Task AddNotificationTrigger_EnumToSensorAsync() { var client = Initialize_Client(new SetNotificationTriggerResponse()); var parameters = new ThresholdTriggerParameters(1001); await AssertEx.ThrowsAsync <InvalidOperationException>(async() => await client.AddNotificationTriggerAsync(parameters), "Channel 'Primary' is not a valid value for sensor"); }
public void AddNotificationTrigger_EnumToSensor() { var client = Initialize_Client(new SetNotificationTriggerResponse()); var parameters = new ThresholdTriggerParameters(1001); AssertEx.Throws <InvalidOperationException>(() => client.AddNotificationTrigger(parameters), "Channel 'Primary' is not a valid value for sensor"); }
public async Task AddNotificationTrigger_SupportedTypeAsync() { var client = Initialize_Client(new SetNotificationTriggerResponse()); var parameters = new ThresholdTriggerParameters(1001) { Channel = new TriggerChannel(1) }; await client.AddNotificationTriggerAsync(parameters, false); }
public async Task SetNotificationTrigger_SetsAChannel_OnASensorAsync() { var client = Initialize_Client(new SetNotificationTriggerResponse()); var parameters = new ThresholdTriggerParameters(1001, 1) { Channel = (await client.GetChannelsAsync(1001)).First() }; await client.SetNotificationTriggerAsync(parameters); }
public void SetNotificationTrigger_SetsAChannel_OnASensor() { var client = Initialize_Client(new SetNotificationTriggerResponse()); var parameters = new ThresholdTriggerParameters(1001, 1) { Channel = client.GetChannels(1001).First() }; client.SetNotificationTrigger(parameters); }
private void TestTriggerChannel(int objectId, TriggerChannel channel, Func <object, object, string, bool> validator = null) { var parameters = new ThresholdTriggerParameters(objectId) { Channel = channel }; DoubleAddRemoveTrigger( parameters, t => new ThresholdTriggerParameters(objectId, t), validator ); }
public void ThresholdTriggerParameters_AllProperties_HaveValues() { var parameters = new ThresholdTriggerParameters(1) { Channel = TriggerChannel.Total, Condition = TriggerCondition.Above, Latency = 30, OffNotificationAction = base.GetNotificationAction(), OnNotificationAction = base.GetNotificationAction(), Threshold = 3 }; TriggerParameters_AllProperties_HaveValues(parameters); }
public void Action_NotificationTrigger_AddWithCustomization_Threshold() { var actions = client.GetNotificationActions(); var parameters = new ThresholdTriggerParameters(Settings.Probe) { OnNotificationAction = actions.First(), OffNotificationAction = actions.Skip(0).First(), Latency = 40, Threshold = 4, Condition = TriggerCondition.Equals, Channel = TriggerChannel.Total }; AddRemoveTrigger(parameters, false); }
private void AddInvalidTrigger() { var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic; var engine = client.GetInternalProperty("RequestEngine"); var methods = engine.GetType().GetMethods(bindingFlags).Where(m => m.Name == "ExecuteRequest").ToList(); var method = methods.First(m => m.GetParameters().Any(p => p.ParameterType.Name == "IHtmlParameters")); var channel = client.GetChannels(Settings.ChannelSensor).First(c => c.Id == Settings.Channel); var param = new ThresholdTriggerParameters(Settings.UpSensor) { Channel = channel }; method.Invoke(engine, new object[] { param, null }); }
public async Task AddNotificationTrigger_ChannelToContainerAsync() { var dictionary = new Dictionary <Content, int> { [Content.Sensors] = 0 }; var client = Initialize_Client(new SetNotificationTriggerResponse(dictionary)); var parameters = new ThresholdTriggerParameters(1001) { Channel = new TriggerChannel(1) }; await AssertEx.ThrowsAsync <InvalidOperationException>(async() => await client.AddNotificationTriggerAsync(parameters), "Channel ID '1' is not a valid channel for Device, Group or Probe"); }
public void AddNotificationTrigger_ChannelToContainer() { var dictionary = new Dictionary <Content, int> { [Content.Sensors] = 0 }; var client = Initialize_Client(new SetNotificationTriggerResponse(dictionary)); var parameters = new ThresholdTriggerParameters(1001) { Channel = new TriggerChannel(1) }; AssertEx.Throws <InvalidOperationException>(() => client.AddNotificationTrigger(parameters), "Channel '1' is not a valid value for Device, Group or Probe"); }
private void CloneTrigger() { TriggerParameters parameters; switch (Trigger.Type) { case TriggerType.Change: parameters = new ChangeTriggerParameters(DestinationId, Trigger); break; case TriggerType.State: parameters = new StateTriggerParameters(DestinationId, Trigger); break; case TriggerType.Speed: parameters = new SpeedTriggerParameters(DestinationId, Trigger); break; case TriggerType.Threshold: parameters = new ThresholdTriggerParameters(DestinationId, Trigger); break; case TriggerType.Volume: parameters = new VolumeTriggerParameters(DestinationId, Trigger); break; default: throw new NotImplementedException($"Handler of trigger type '{Trigger.Type}' is not implemented."); } if (Resolve) { var triggers = client.AddNotificationTriggerInternal(parameters, true, CancellationToken, DisplayResolutionError, ShouldStop); foreach (var obj in triggers) { WriteObject(obj); } } else { client.AddNotificationTrigger(parameters); } }
private async Task ResolvesAsync(bool resolve) { var device = (await client.GetDevicesAsync(Property.Id, Settings.Device)).Single(); var deviceTriggers = (await client.GetNotificationTriggersAsync(device.Id)).Where(t => t.Type == TriggerType.Threshold).ToList(); AssertEx.AreEqual(1, deviceTriggers.Count, "Found incorrect number of source triggers"); var probe = (await client.GetProbesAsync(Property.Id, Settings.Probe)).Single(); var probeTrggers = (await client.GetNotificationTriggersAsync(probe.Id)).Where(t => t.Type == TriggerType.Threshold).ToList(); AssertEx.AreEqual(0, probeTrggers.Count, "Found incorrect number of existing triggers on target object"); var parameters = new ThresholdTriggerParameters(Settings.Probe, deviceTriggers.Single()); var newTrigger = await client.AddNotificationTriggerAsync(parameters, resolve); var manualTrigger = (await client.GetNotificationTriggersAsync(probe.Id)).Where(t => t.Type == TriggerType.Threshold).ToList(); try { if (resolve) { AssertEx.AreEqual(1, manualTrigger.Count, "Found incorrect number of new triggers on target object"); AssertEx.AreEqual(manualTrigger.Single().ParentId, newTrigger.ParentId, "Parent ID was not correct"); AssertEx.AreEqual(manualTrigger.Single().SubId, newTrigger.SubId, "Sub ID was not correct"); } else { AssertEx.AreEqual(null, newTrigger, "New trigger was not null"); } } finally { if (resolve) { await client.RemoveNotificationTriggerAsync(newTrigger); } else { await client.RemoveNotificationTriggerAsync(manualTrigger.Single()); } } }
private void TestTriggerChannel(TriggerChannel channel, string[] urls, bool isSensor, ChannelItem channelItem = null) { var client = Initialize_Client(new AddressValidatorResponse(urls) { CountOverride = new Dictionary <Content, int> { [Content.Sensors] = isSensor ? 2 : 0 }, ItemOverride = channelItem != null ? new Dictionary <Content, BaseItem[]> { [Content.Channels] = new[] { channelItem } } : null }); var parameters = new ThresholdTriggerParameters(1001) { Channel = channel }; client.AddNotificationTrigger(parameters, false); }
private void AddInvalidTrigger() { var bindingFlags = BindingFlags.Instance | BindingFlags.NonPublic; var htmlFunction = client.GetType().Assembly.GetType("PrtgAPI.HtmlFunction"); var editSettings = htmlFunction.GetField("EditSettings").GetValue(null); var requestEngine = client.GetType().GetField("requestEngine", bindingFlags).GetValue(client); var args = new[] { htmlFunction, typeof(Parameters.Parameters), typeof(Func <HttpResponseMessage, string>) }; var method = requestEngine.GetType().GetMethod("ExecuteRequest", bindingFlags, null, args, null); var channel = client.GetChannels(Settings.ChannelSensor).First(c => c.Id == Settings.Channel); var param = new ThresholdTriggerParameters(Settings.UpSensor) { Channel = channel }; method.Invoke(requestEngine, new[] { editSettings, param, null }); }
public void Action_NotificationTrigger_CreateFromExistingTrigger_Threshold_Sensor() { //Create the initial trigger var channel = client.GetChannels(Settings.ChannelSensor).First(); var parameters = new ThresholdTriggerParameters(Settings.ChannelSensor) { Channel = channel }; //Verify it was created successfully client.AddNotificationTrigger(parameters); var triggers = client.GetNotificationTriggers(Settings.ChannelSensor).Where(t => t.Inherited == false).ToList(); AssertEx.AreEqual(1, triggers.Count, "Initial trigger did not add successfully"); AssertEx.IsTrue(triggers.First().Channel.ToString() == channel.Name, "Initial trigger channel did not serialize properly"); //Clone the trigger var newParameters = new ThresholdTriggerParameters(Settings.ChannelSensor, triggers.First()); client.AddNotificationTrigger(newParameters); //Verify it was created successfully var newTriggers = client.GetNotificationTriggers(Settings.ChannelSensor).Where(t => t.Inherited == false).ToList(); AssertEx.AreEqual(2, newTriggers.Count, "Second trigger did not add successfully"); foreach (var trigger in newTriggers) { AssertEx.IsTrue(trigger.Channel.ToString() == channel.Name, "Second trigger channel did not serialize properly"); } }
public void ThresholdTriggerParameters_AllProperties_HaveDefault() { var parameters = new ThresholdTriggerParameters(1, 1); TriggerParameters_AllProperties_HaveDefault(parameters); }
public void Action_NotificationTrigger_AddWithoutCustomization_Threshold() { var parameters = new ThresholdTriggerParameters(Settings.Probe); AddRemoveTrigger(parameters, true); }