Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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
                );
        }
Пример #4
0
        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"
                );
        }
Пример #5
0
        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"
                );
        }
Пример #6
0
        public void NewSensorParameters_Enum_CanBeSetToNull()
        {
            var parameters = new ExeXmlSensorParameters("test.ps1")
            {
                Priority = null
            };

            Assert.AreEqual(null, parameters.Priority);
        }
Пример #7
0
        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"
                );
        }
Пример #9
0
        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");
        }
Пример #10
0
        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);
        }
Пример #11
0
        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);
        }
Пример #12
0
        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());
            }
        }
Пример #13
0
        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());
            }
        }
Пример #14
0
        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);
        }