public void RawSensorParameters_CanBeUsedAsDictionary() { var parameters = new RawSensorParameters("testName", "sensorType"); parameters["customParam"] = 3; Assert.AreEqual(3, parameters["customParam"]); parameters["customParam_"] = 4; Assert.AreEqual(4, parameters["customParam_"]); Assert.AreNotEqual(parameters["customParam"], parameters["customParam_"]); Assert.IsTrue(parameters.Contains("customParam")); parameters["CUSTOMPARAM"] = 5; Assert.AreEqual(5, parameters["CUSTOMPARAM"]); Assert.AreEqual(5, parameters["customParam"]); Assert.IsTrue(parameters.Contains("customParam_")); parameters.Remove("customParam_"); Assert.IsFalse(parameters.Contains("customParam_")); AssertEx.Throws <InvalidOperationException>(() => { var val = parameters["customParam_"]; }, "Parameter with name 'customParam_' does not exist."); }
private NewSensorParameters CreateRawParameters() { if (!RawParameters.ContainsKey(NameParameter)) { throw new InvalidOperationException($"Hashtable record '{NameParameter}' is mandatory, however a value was not specified"); } if (!RawParameters.ContainsKey(SensorTypeParameter)) { throw new InvalidOperationException($"Hashtable record '{SensorTypeParameter}' is mandatory, however a value was not specified'"); } var parameters = new RawSensorParameters(RawParameters[NameParameter]?.ToString(), RawParameters[SensorTypeParameter]?.ToString()); var toAdd = RawParameters.Keys.Cast <object>() .Where(k => k.ToString() != SensorTypeParameter) .Select(k => new CustomParameter(k.ToString(), PSObjectHelpers.CleanPSObject(RawParameters[k]), ParameterType.MultiParameter)) .ToList(); foreach (var param in toAdd) { parameters[param.Name] = param.Value; } return(parameters); }
public async Task Action_AddSensor_SensorQueryParameters_SynthesizesParametersAsync() { var parameters = new RawSensorParameters("test", "oracletablespace") { ["database_"] = "XE", ["sid_type_"] = 0, ["prefix_"] = 0, ["tablespace__check"] = "SYSAUX|SYSAUX|", ["tablespace_"] = 1 }; Sensor sensor = null; try { sensor = (await client.AddSensorAsync(Settings.Device, parameters)).First(); AssertEx.AreEqual("SYSAUX", sensor.Name, "Sensor name was not correct"); } finally { if (sensor != null) { await client.RemoveObjectAsync(sensor.Id); } } }
public void Action_AddSensor_AddsWithRawParameters() { var parameters = new RawSensorParameters("raw c# sensor", "exexml") { Priority = Priority.Four, InheritTriggers = false, InheritInterval = false, Interval = ScanningInterval.ThirtySeconds, IntervalErrorMode = IntervalErrorMode.TwoWarningsThenDown }; parameters.Parameters.AddRange( new List <CustomParameter> { new CustomParameter("tags_", "xmlexesensor"), new CustomParameter("exefile_", "test.ps1|test.ps1||"), new CustomParameter("exeparams_", "arg1 arg2 arg3"), new CustomParameter("environment_", 1), new CustomParameter("usewindowsauthentication_", 1), new CustomParameter("mutexname_", "testMutex"), new CustomParameter("timeout_", 70), new CustomParameter("writeresult_", 1), } ); AddAndValidateRawParameters(parameters); }
public async Task Action_AddSensor_SensorQueryTarget_IgnoresTargetAsync() { var parameters = new RawSensorParameters("test", "snmplibrary") { ["library_"] = "C:\\Program Files (x86)\\PRTG Network Monitor\\snmplibs\\Basic Linux Library (UCD-SNMP-MIB).oidlib", ["interfacenumber_"] = 1, ["interfacenumber__check"] = "1.3.6.1.4.1.2021.2.1.100.1|Basic Linux Library (UCD-SNMP-MIB)|Processes: 1|Processes Error Flag|#|0|0|Processes Error Flag|2|1|0|1|A Error flag to indicate trouble with a process. It goes to 1 if there is an error, 0 if no error.|0|0|0|0||1.3.6.1.4.1.2021.2.1.100|prErrorFlag|1.3.6.1.4.1.2021.2||ASN_INTEGER|0|ASN_INTEGER||Basic Linux Library (UCD-SNMP-MIB)|Processes: #[1.3.6.1.4.1.2021.2.1.1]|100|||||||||||||||||||||||||||||||||||", DynamicType = true }; Sensor sensor = null; try { sensor = (await client.AddSensorAsync(Settings.Device, parameters)).First(); AssertEx.AreEqual("enterprises test", sensor.Name, "Sensor name was not correct"); } finally { if (sensor != null) { await client.RemoveObjectAsync(sensor.Id); } } }
public void AddSensor_AddsWithRawParameters() { var parameters = new RawSensorParameters("raw c# sensor", "exexml"); parameters.Parameters.AddRange( new List <CustomParameter> { new CustomParameter("tags_", "xmlexesensor"), new CustomParameter("priority_", 4), new CustomParameter("inherittriggers_", 0), new CustomParameter("exefile_", "test.ps1|test.ps1||"), new CustomParameter("exeparams_", "arg1 arg2 arg3"), new CustomParameter("environment_", 1), new CustomParameter("usewindowsauthentication_", 1), new CustomParameter("mutexname_", "testMutex"), new CustomParameter("timeout_", 70), new CustomParameter("writeresult_", 1), new CustomParameter("intervalgroup", 0), new CustomParameter("interval_", "30|30 seconds"), new CustomParameter("errorintervalsdown_", 2), } ); AddAndValidateRawParameters(parameters); }
/// <summary> /// Performs enhanced record-by-record processing functionality for the cmdlet. /// </summary> protected override void ProcessRecordEx() { NewSensorParameters parameters; if (ParameterSetName == ParameterSet.Dynamic) { WriteProcessProgressRecords(CreateDynamicParameters); return; } if (ParameterSetName == ParameterSet.Empty) { parameters = new RawSensorParameters("fake_name", "fake_sensortype") { Parameters = new List <CustomParameter>() }; parameters.GetParameters().Remove(Parameter.SensorType); } else { parameters = ParameterSetName == ParameterSet.Raw ? CreateRawParameters() : CreateTypedParameters(); if (First != null && !ignoreName) { parameters.Name = First.ToString(); } } WriteObject(parameters); }
public void RawSensorParameters_Parameters_InitializesIfNull() { var parameters = new RawSensorParameters("testName", "sensorType") { [Parameter.Custom] = null }; Assert.AreEqual(typeof(List <CustomParameter>), parameters.Parameters.GetType()); }
public async Task Action_AddSensor_AsReadOnlyUser_WithQueryTargetParameters_ThrowsAsync() { var parameters = new RawSensorParameters("test", "oracletablespace"); 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 Action_AddSensor_AsReadOnlyUser_WithQueryTarget_Throws() { var parameters = new RawSensorParameters("test", "snmplibrary"); AssertEx.Throws <PrtgRequestException>( () => readOnlyClient.AddSensor(Settings.Device, parameters), "you may not have sufficient permissions on the specified object. The server responded" ); }
public void AddSensor_SensorQueryTarget_IgnoresTarget() { var client = Initialize_Client(new SensorQueryTargetValidatorResponse(new[] { UnitRequest.Status(), UnitRequest.BeginAddSensorQuery(1001, "snmplibrary"), UnitRequest.AddSensor("name_=test&priority_=3&inherittriggers_=1&intervalgroup=1&interval_=60%7C60+seconds&errorintervalsdown_=1&sensortype=snmplibrary&id=1001") })); var parameters = new RawSensorParameters("test", "snmplibrary"); client.AddSensor(1001, parameters, false); }
public void NewSensorParameters_NameOverride_CanOverride() { var parameters = new RawSensorParameters("test", "snmplibrary"); ValidateUrl("name_=test", parameters); parameters.AddNameOverride(ObjectProperty.Name, "potato"); ValidateUrl("potato=test", parameters); parameters.Name = "test1"; Assert.AreEqual("test1", parameters.Name); }
public void NewSensorParameters_NameOverride_RetrievesOverrides() { var parameters = new RawSensorParameters("test", "snmplibrary"); parameters.AddNameOverride(ObjectProperty.Name, "potato"); parameters.AddNameOverride(ObjectProperty.Priority, "tomato"); var overrides = parameters.GetNameOverrides().OrderBy(kv => kv.Key).ToList(); Assert.AreEqual(ObjectProperty.Name, overrides[0].Key); Assert.AreEqual("potato", overrides[0].Value); Assert.AreEqual(ObjectProperty.Priority, overrides[1].Key); Assert.AreEqual("tomato", overrides[1].Value); }
public void RawSensorParameters_WithoutPSObjectUtilities_ObjectArray() { TestHelpers.WithPSObjectUtilities(() => { var parameters = new RawSensorParameters("first", "second"); var arr = new[] { 1, 2 }; parameters["third"] = arr; Assert.AreEqual(arr, parameters["third"]); Assert.IsInstanceOfType(parameters.Parameters.First(p => p.Name == "third").Value, typeof(SimpleParameterContainerValue)); var url = PrtgRequestMessageTests.CreateUrl(parameters); Assert.AreEqual("name_=first&priority_=3&inherittriggers_=1&intervalgroup=1&interval_=60%7C60+seconds&errorintervalsdown_=1&third=1&third=2&sensortype=second", url); }, new DefaultPSObjectUtilities()); }
public void RawSensorParameters_WithoutPSObjectUtilities_ObjectArray() { TestHelpers.WithPSObjectUtilities(() => { var parameters = new RawSensorParameters("first", "second"); var arr = new[] { 1, 2 }; parameters["third"] = arr; Assert.AreEqual(arr, parameters["third"]); Assert.IsInstanceOfType(parameters.Parameters.First(p => p.Name == "third").Value, typeof(SimpleParameterContainerValue)); var url = PrtgUrlTests.CreateUrl(parameters); Assert.AreEqual("name_=first&third=1&third=2&sensortype=second", url); }, new DefaultPSObjectUtilities()); }
public void RawSensorParameters_WithoutPSObjectUtilities_SingleObject() { TestHelpers.WithPSObjectUtilities(() => { var parameters = new RawSensorParameters("first", "second"); var val = true; parameters["third"] = val; Assert.AreEqual(val, parameters["third"]); Assert.IsInstanceOfType(parameters.Parameters.First(p => p.Name == "third").Value, typeof(SimpleParameterContainerValue)); var url = PrtgUrlTests.CreateUrl(parameters); Assert.AreEqual("name_=first&third=True&sensortype=second", url); }, new DefaultPSObjectUtilities()); }
public void AddSensor_SensorQueryParameters_Throws_WhenSynthesizedParametersAreMissing() { var client = Initialize_Client(new SensorQueryTargetParametersValidatorResponse(new[] { UnitRequest.Status(), UnitRequest.BeginAddSensorQuery(1001, "oracletablespace"), })); var parameters = new RawSensorParameters("test", "oracletablespace") { ["sid_type"] = 0, ["prefix"] = 0 }; AssertEx.Throws <InvalidOperationException>( () => client.AddSensor(1001, parameters, false), "Failed to process request for sensor type 'oracletablespace': sensor query target parameters did not include mandatory parameter 'database_'." ); }
public void AddSensor_SensorQueryParameters_SynthesizesParameters() { var client = Initialize_Client(new SensorQueryTargetParametersValidatorResponse(new[] { UnitRequest.Status(), UnitRequest.BeginAddSensorQuery(1001, "oracletablespace"), UnitRequest.ContinueAddSensorQuery(2055, 7, "database_=XE&sid_type_=0&prefix_=0"), //Response hardcodes 2055, however normally this will in fact match UnitRequest.AddSensor("name_=test&priority_=3&inherittriggers_=1&intervalgroup=1&interval_=60%7C60+seconds&errorintervalsdown_=1&database=XE&sid_type=0&prefix=0&sensortype=oracletablespace&id=1001") })); var parameters = new RawSensorParameters("test", "oracletablespace") { ["database"] = "XE", ["sid_type"] = 0, ["prefix"] = 0 }; client.AddSensor(1001, parameters, false); }
public void AddSensor_AddsWithDictionaryParameters() { var parameters = new RawSensorParameters("raw c# sensor", "exexml") { Tags = new[] { "xmlexesensor" }, Priority = Priority.Four, InheritInterval = false, Interval = ScanningInterval.ThirtySeconds, IntervalErrorMode = IntervalErrorMode.TwoWarningsThenDown, InheritTriggers = false, ["exefile_"] = "test.ps1|test.ps1||", ["exeparams_"] = "arg1 arg2 arg3", ["environment_"] = 1, ["usewindowsauthentication_"] = 1, ["mutexname_"] = "testMutex", ["timeout_"] = 70, ["writeresult_"] = 1 }; AddAndValidateRawParameters(parameters); }
private void AddAndValidateRawParameters(RawSensorParameters parameters) { var sensors = client.GetSensors(); client.AddSensor(Settings.Device, parameters); var newSensors = client.GetSensors(); AssertEx.IsTrue(newSensors.Count > sensors.Count, "New sensor was not added properly"); var newSensor = newSensors.Where(s => s.Name == "raw c# sensor").ToList(); AssertEx.AreEqual(1, newSensor.Count, "A copy of the new sensor already exists"); try { var properties = client.GetSensorProperties(newSensor.First().Id); AssertEx.AreEqual(properties.Name, "raw c# sensor", "Name was not correct"); AssertEx.AreEqual(properties.Tags.First(), new[] { "xmlexesensor" }.First(), "Tags was not correct"); AssertEx.AreEqual(properties.Priority, Priority.Four, "Priority was not correct"); AssertEx.AreEqual(properties.ExeFile, "test.ps1", "ExeFile was not correct"); AssertEx.AreEqual(properties.ExeParameters, "arg1 arg2 arg3", "ExeParameters was not correct"); AssertEx.AreEqual(properties.SetExeEnvironmentVariables, true, "SetExeEnvironmentVariables was not correct"); AssertEx.AreEqual(properties.UseWindowsAuthentication, true, "UseWindowsAuthentication was not correct"); AssertEx.AreEqual(properties.Mutex, "testMutex", "Mutex was not correct"); AssertEx.AreEqual(properties.Timeout, 70, "Timeout was not correct"); AssertEx.AreEqual(properties.DebugMode, DebugMode.WriteToDisk, "DebugMode was not correct"); AssertEx.AreEqual(properties.InheritInterval, false, "InheritInterval was not correct"); AssertEx.AreEqual(properties.Interval.TimeSpan, new TimeSpan(0, 0, 30), "Interval was not correct"); AssertEx.AreEqual(properties.IntervalErrorMode, IntervalErrorMode.TwoWarningsThenDown, "IntervalErrorMode was not correct"); AssertEx.AreEqual(newSensor.First().NotificationTypes.InheritTriggers, false, "InheritTriggers was not correct"); } finally { client.RemoveObject(newSensor.First().Id); } }
public void NewSensorParameters_NameOverride_RemovesWhenNotAdded() { var parameters = new RawSensorParameters("test", "snmplibrary"); Assert.IsFalse(parameters.RemoveNameOverride(ObjectProperty.Name)); }