예제 #1
0
        public async Task AddSensor_ResolvesMultipleAsync()
        {
            var services = (await client.Targets.GetWmiServicesAsync(Settings.Device)).Where(s => s.Name.Contains("PRTG")).ToList();

            var parameters = new WmiServiceSensorParameters(services);

            var sensors = (await client.AddSensorAsync(Settings.Device, parameters)).OrderBy(s => s.Id).ToList();

            try
            {
                var manualSensors = (await client.GetSensorsAsync(
                                         new SearchFilter(Property.ParentId, Settings.Device),
                                         new SearchFilter(Property.Name, FilterOperator.Contains, "PRTG")
                                         )).OrderBy(s => s.Id).ToList();

                AssertEx.AreEqual(2, sensors.Count, "Did not create two sensors");
                AssertEx.AreEqual(2, manualSensors.Count, "Manual search did not find two sensors");

                AssertEx.AreEqual(sensors[0].Id, manualSensors[0].Id, "First sensor did not match");
                AssertEx.AreEqual(sensors[1].Id, manualSensors[1].Id, "Second sensor did not match");
            }
            finally
            {
                await client.RemoveObjectAsync(sensors.Select(s => s.Id).ToArray());
            }
        }
예제 #2
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);
        }
예제 #3
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);
        }
예제 #4
0
        public void AddSensor_Throws_WhenMissingRequiredValue_WithEmptyList()
        {
            var client = Initialize_Client(new BasicResponse(string.Empty));

            var parameters = new WmiServiceSensorParameters(new List <SensorTarget <WmiServiceTarget> >().Cast <WmiServiceTarget>().ToList());

            AssertEx.Throws <InvalidOperationException>(() => client.AddSensor(1001, parameters, false), "Property 'Services' requires a value");
        }
예제 #5
0
        public async Task AddSensor_AddsExcessiveItemsAsync()
        {
            var servicesClient = Initialize_Client(new WmiServiceTargetResponse());
            var services       = await servicesClient.Targets.GetWmiServicesAsync(1001);

            Assert.IsTrue(services.Count > 30);

            var client = GetAddExcessiveSensorClient(services);

            var parameters = new WmiServiceSensorParameters(services);

            await client.AddSensorAsync(1001, parameters, false);
        }
예제 #6
0
        public void AddSensor_AddsExcessiveItems()
        {
            var servicesClient = Initialize_Client(new WmiServiceTargetResponse());
            var services       = servicesClient.Targets.GetWmiServices(1001);

            Assert.IsTrue(services.Count > 30);

            var client = GetAddExcessiveSensorClient(services);

            var parameters = new WmiServiceSensorParameters(services);

            client.AddSensor(1001, parameters, false);
        }
예제 #7
0
        private async Task AddSensorWithExcessiveItemsAsync(RequestVersion version)
        {
            var servicesClient = Initialize_Client(new WmiServiceTargetResponse());
            var services       = await servicesClient.Targets.GetWmiServicesAsync(1001);

            Assert.IsTrue(services.Count > 30);

            var client = GetAddExcessiveSensorClient(services, version);

            var parameters = new WmiServiceSensorParameters(services);

            await client.Item1.AddSensorAsync(1001, parameters, false);

            client.Item2.AssertFinished();
        }
예제 #8
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);
        }