Exemplo n.º 1
0
        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.");
        }
Exemplo n.º 2
0
        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);
                }
            }
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        /// <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);
        }
Exemplo n.º 8
0
        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"
                );
        }
Exemplo n.º 11
0
        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);
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
        }
Exemplo n.º 14
0
        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());
        }
Exemplo n.º 15
0
        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());
        }
Exemplo n.º 16
0
        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());
        }
Exemplo n.º 17
0
        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_'."
                );
        }
Exemplo n.º 18
0
        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);
        }
Exemplo n.º 19
0
        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);
        }
Exemplo n.º 20
0
        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);
            }
        }
Exemplo n.º 21
0
        public void NewSensorParameters_NameOverride_RemovesWhenNotAdded()
        {
            var parameters = new RawSensorParameters("test", "snmplibrary");

            Assert.IsFalse(parameters.RemoveNameOverride(ObjectProperty.Name));
        }