private NewSensorParameters CreateTypedParameters() { NewSensorParameters parameters; switch (Type) { case SensorType.ExeXml: parameters = new ExeXmlSensorParameters("FAKE_VALUE") { ExeFile = GetImplicit <ExeFileTarget>(Second) }; break; case SensorType.Http: var httpParameters = new HttpSensorParameters(); MaybeSet(First, v => httpParameters.Name = v?.ToString()); MaybeSet(Second, v => httpParameters.Url = v?.ToString()); parameters = httpParameters; break; case SensorType.WmiService: ignoreName = true; parameters = new WmiServiceSensorParameters(new List <WmiServiceTarget>()) { Services = GetList <WmiServiceTarget>(First) }; break; default: throw new NotImplementedException($"Sensor type '{Type}' is currently not supported"); } return(parameters); }
private void CreateDeviceSensor(bool endOperation) { if (IsDestinationIdSensor) { return; } SensorParametersInternal parameters; switch (dynamicParams.ActiveSensorType.Type) { case SensorType.ExeXml: parameters = new ExeXmlSensorParameters("FAKE_VALUE"); break; case SensorType.WmiService: parameters = new WmiServiceSensorParameters(Enumerable.Empty <Targets.WmiServiceTarget>()); break; case SensorType.Http: parameters = new HttpSensorParameters(); break; default: throw new NotImplementedException($"Don't know how to create a sensor of type '{dynamicParams.ActiveSensorType.Type}'."); } BindParametersAndAddSensor(parameters, endOperation); }
private async Task AddSensorAsync(RequestVersion version) { var builder = new StringBuilder(); builder.Append("https://prtg.example.com/addsensor5.htm?name_=XML+Custom+EXE%2FScript+Sensor&priority_=3&inherittriggers_=1&intervalgroup=1&interval_=60%7C60+seconds"); builder.Append("&errorintervalsdown_=1&tags_=xmlexesensor&exefile_=test.ps1%7Ctest.ps1%7C%7C&exeparams_=&environment_=0"); builder.Append("&usewindowsauthentication_=0&mutexname_=&timeout_=60&writeresult_=0&sensortype=exexml&id=1001&"); var auth = version == RequestVersion.v18_1 ? "tmpid=2" : "username=username&passhash=12345678"; builder.Append(auth); var urls = new List <string> { ////We don't request status since we already injected our version UnitRequest.BeginAddSensorQuery(1001, "exexml"), builder.ToString() }; if (version == RequestVersion.v18_1) { urls.Add(UnitRequest.AddSensorProgress(1001, 2, true)); } var parameters = new ExeXmlSensorParameters("test.ps1"); await ExecuteAsync( async c => await c.AddSensorAsync(1001, parameters, false), urls.ToArray(), version : version ); }
private void AddToInvalidObject(int objectId) { var parameters = new ExeXmlSensorParameters("test.ps1"); AssertEx.Throws <PrtgRequestException>( () => client.AddSensor(objectId, parameters), "The desired object cannot be created here" ); }
public void AddSensor_Throws_AddingToANonExistentObject() { var parameters = new ExeXmlSensorParameters("test.ps1"); AssertEx.Throws <PrtgRequestException>( () => client.AddSensor(9995, parameters), "The parent object (i.e. device/group) for your newly created sensor doesn't exist anymore" ); }
public void NewSensorParameters_Enum_CanBeSetToNull() { var parameters = new ExeXmlSensorParameters("test.ps1") { Priority = null }; Assert.AreEqual(null, parameters.Priority); }
public void NewSensorParameters_Enum_CanBeSet() { var parameters = new ExeXmlSensorParameters("test.ps1") { Priority = Priority.Three }; Assert.AreEqual(Priority.Three, parameters.Priority); }
public async Task Action_AddSensor_AsReadOnlyUser_NoQueryTarget_ThrowsAsync() { var parameters = new ExeXmlSensorParameters("test.ps1"); await AssertEx.ThrowsAsync <PrtgRequestException>( async() => await readOnlyClient.AddSensorAsync(Settings.Device, parameters), "you may not have sufficient permissions on the specified object. The server responded" ); }
public void AddSensor_Throws_WhenMissingRequiredValue() { var client = Initialize_Client(new BasicResponse(string.Empty)); var parameters = new ExeXmlSensorParameters("test.ps1") { ExeFile = null }; AssertEx.Throws <InvalidOperationException>(() => client.AddSensor(1001, parameters, false), "Property 'ExeFile' requires a value"); }
public void NewSensorParameters_EnablesDependentProperties() { var parameters = new ExeXmlSensorParameters("test.ps1"); Assert.AreEqual(true, parameters.InheritInterval); parameters.Interval = ScanningInterval.FiveMinutes; Assert.AreEqual(ScanningInterval.FiveMinutes, parameters.Interval); Assert.AreEqual(false, parameters.InheritInterval); }
public async Task AddSensor_CanExecuteAsync() { var builder = new StringBuilder(); builder.Append("addsensor5.htm?name_=XML+Custom+EXE%2FScript+Sensor&exefile_=test.ps1%7Ctest.ps1%7C%7C&"); builder.Append("tags_=xmlexesensor&exeparams_=&environment_=0&usewindowsauthentication_=0&mutexname_=&timeout_=60&writeresult_=0"); builder.Append("&intervalgroup=1&interval_=60%7C60+seconds&errorintervalsdown_=1&sensortype=exexml&id=1001"); var client = Initialize_Client(new AddressValidatorResponse(builder.ToString())); var parameters = new ExeXmlSensorParameters("test.ps1"); await client.AddSensorAsync(1001, parameters, false); }
public async Task AddSensor_ResolvesAsync() { var name = "resolvesSingle"; var parameters = new ExeXmlSensorParameters("test.ps1", name); var sensor = await client.AddSensorAsync(Settings.Device, parameters); try { var manualSensor = (await client.GetSensorsAsync(Property.Name, name)).Single(); AssertEx.AreEqual(manualSensor.Id, sensor.Single().Id, "Resolved sensor ID was incorrect"); } finally { await client.RemoveObjectAsync(sensor.Select(s => s.Id).ToArray()); } }
public async Task AddSensor_DoesntResolveAsync() { var name = "doesntResolveSingle"; var parameters = new ExeXmlSensorParameters("test.ps1", name); var sensor = await client.AddSensorAsync(Settings.Device, parameters, false); AssertEx.AreEqual(null, sensor, "AddSensor did not return null"); var manualSensor = await client.GetSensorsAsync(Property.Name, name); try { AssertEx.AreEqual(1, manualSensor.Count, "Found more than 1 sensor with the specified name"); } finally { await client.RemoveObjectAsync(manualSensor.Select(s => s.Id).ToArray()); } }
private NewSensorParameters CreateTypedParameters() { NewSensorParameters parameters; switch (Type) { case SensorType.ExeXml: parameters = new ExeXmlSensorParameters("FAKE_VALUE") { ExeFile = GetImplicit <ExeFileTarget>(Second) }; break; case SensorType.Http: var httpParameters = new HttpSensorParameters(); MaybeSet(Second, v => httpParameters.Url = v?.ToString()); parameters = httpParameters; break; case SensorType.WmiService: parameters = new WmiServiceSensorParameters(new List <WmiServiceTarget>()) { Services = GetList <WmiServiceTarget>(First) }; break; case SensorType.Factory: parameters = new FactorySensorParameters(Enumerable.Empty <string>()) { ChannelDefinition = GetList <string>(Second)?.ToArray() }; break; default: throw new NotImplementedException($"Sensor type '{Type}' is currently not supported."); } return(parameters); }