コード例 #1
0
        public async Task <ActionResult> UpdateSensorsValues()
        {
            //ICollection<{SensorIdICB}>
            IEnumerable <string> supportedSensors = await this.sensorApiService.ListSupportedSensorTypesFromAPI();

            //IDictionary<{SensorIdICB}, {MeasurementReadIn}>
            IDictionary <string, MeasurementReadIn> currentSensorsMeasurements = new Dictionary <string, MeasurementReadIn>();

            foreach (string SensorIdICB in supportedSensors)
            {
                MeasurementReadIn measurementICB = await this.sensorApiService.GetCurrentSensorValueFromAPI(SensorIdICB);

                //IDictionary<{SensorIdICB}, {MeasurementReadIn}>
                currentSensorsMeasurements.Add(SensorIdICB, measurementICB);
            }

            ICollection <Measurement> measurements = new List <Measurement>();

            IEnumerable <LastValueReadFromDbcs> allSensorsLastValues = this.sensorDbService.GetAllSensorsLastValues();

            //f****n tested
            if (allSensorsLastValues.Count() != 0)
            {
                foreach (LastValueReadFromDbcs sensor in allSensorsLastValues)
                {
                    MeasurementReadIn measurementReadFromICB = currentSensorsMeasurements[sensor.SensorIdICB];

                    DateTime convertedDate = Convert.ToDateTime(measurementReadFromICB.TimeStamp);

                    DateTime checkDate = convertedDate.AddSeconds(10.0);

                    if (checkDate < DateTime.Now)
                    {
                        measurementReadFromICB.Value = "Sensor offline";
                    }

                    if (measurementReadFromICB.Value != sensor.Value)
                    {
                        Measurement measurement = new Measurement
                        {
                            SensorId        = sensor.SensorId,
                            Date            = convertedDate,
                            MeasurementType = measurementReadFromICB.ValueType,
                            Value           = measurementReadFromICB.Value
                        };

                        //f****n tested
                        measurements.Add(measurement);
                    }
                }

                //f****n tested
                this.sensorDbService.AddNewMeasurementsToDb(measurements);
            }

            return(this.View());
        }
コード例 #2
0
        public virtual async Task <MeasurementReadIn> GetCurrentSensorValueFromAPI(string SensorIdICB)
        {
            Guard.WhenArgument(SensorIdICB, "SensorIdICB in SensorApiService.GetCurrentSensorValueFromAPI").IsNull().Throw();

            string url        = string.Format("{0}{1}", coreURL, SensorIdICB);
            string jsonString = await this.GetJson(url);

            MeasurementReadIn sensorCurrentValue = JsonConvert.DeserializeObject <MeasurementReadIn>(jsonString);

            return(sensorCurrentValue);
        }
        public void ThrowArgumentNullException_WhenParameterIsNull()
        {
            //arrange
            string            nullSensorIdICB   = null;
            Mock <HttpClient> mockHtteClient    = new Mock <HttpClient>();
            SensorApiService  sensorApiService  = new SensorApiService(mockHtteClient.Object);
            MeasurementReadIn measurementReadIn = new MeasurementReadIn();

            //act and assert
            Assert.ThrowsExceptionAsync <ArgumentNullException>(async() => measurementReadIn = await sensorApiService.GetCurrentSensorValueFromAPI(nullSensorIdICB));
        }
コード例 #4
0
        private async Task SeedMeasurements()
        {
            IDictionary <string, MeasurementReadIn> currentSensorsMeasurements = new Dictionary <string, MeasurementReadIn>();
            ICollection <Measurement>           measurements = new List <Measurement>();
            IEnumerable <LastValueReadFromDbcs> allSensors   = new List <LastValueReadFromDbcs>();

            IEnumerable <string> supportedSensors = await this.sensorApiService.ListSupportedSensorTypesFromAPI();

            //te tuka e proverkata za no longer supported, dori pak da dojde, da si regne nov

            foreach (string SensorIdICB in supportedSensors)
            {
                MeasurementReadIn measurementICB = await this.sensorApiService.GetCurrentSensorValueFromAPI(SensorIdICB);

                currentSensorsMeasurements.Add(SensorIdICB, measurementICB);
            }

            for (int i = 0; i < 10; i++)
            {
                allSensors = this.sensorDbService.GetAllSensorsLastValues();

                if (allSensors.Count() != 0)
                {
                    foreach (LastValueReadFromDbcs sensor in allSensors)
                    {
                        MeasurementReadIn measurementReadFromICB = currentSensorsMeasurements[sensor.SensorIdICB];

                        if (measurementReadFromICB.Value != sensor.Value)
                        {
                            DateTime convertedDate = Convert.ToDateTime(measurementReadFromICB.TimeStamp);

                            Measurement measurement = new Measurement()
                            {
                                SensorId        = sensor.SensorId,
                                Date            = convertedDate,
                                MeasurementType = measurementReadFromICB.ValueType,
                                Value           = measurementReadFromICB.Value
                            };

                            measurements.Add(measurement);
                        }
                    }

                    this.sensorDbService.AddNewMeasurementsToDb(measurements);
                }

                Thread.Sleep(5000); //5 sec
            }
        }
        public void ReturnInstanceOfSensor_WhenInvoked()
        {
            // Arrange - - - - - - - - - - -

            string sensorIdICB = "Test sensorIdICB";

            //Generate mock JSON
            MeasurementReadIn expected = new MeasurementReadIn
            {
                TimeStamp = "Test TimeStamp",
                Value     = "Test Value",
                ValueType = "Test ValueType"
            };

            MemoryStream ms = new MemoryStream();
            DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(MeasurementReadIn));

            ser.WriteObject(ms, expected);
            byte[] json = ms.ToArray();
            ms.Close();
            string expectedJSON = Encoding.UTF8.GetString(json, 0, json.Length); //mock JSON done

            //Generate mock HttpClient
            MockHttpMessageHandler mockHttp = new MockHttpMessageHandler();
            string url = string.Format("http://telerikacademy.icb.bg/api/sensor/{0}", sensorIdICB);

            mockHttp.When(url).Respond("application/json", expectedJSON);

            HttpClient httpClient = new HttpClient(mockHttp);

            //injected mock HttpClient
            ISensorApiService sensorApiService = new SensorApiService(httpClient);

            // Act - - - - - - - - - - -
            MeasurementReadIn actual = sensorApiService.GetCurrentSensorValueFromAPI(sensorIdICB).Result;

            // Assert - - - - - - - - - - -
            Assert.AreEqual(expected.TimeStamp, actual.TimeStamp);
            Assert.AreEqual(expected.Value, actual.Value);
            Assert.AreEqual(expected.ValueType, actual.ValueType);
        }
        public async Task ReturnAnInstance_WhenInvoked()
        {
            // Arrange - - - - - - - - - - -
            string            mockSensorId   = "mockSensorId";
            MeasurementReadIn expectedResult = new MeasurementReadIn
            {
                TimeStamp = "Test TimeStamp",
                Value     = "Test Value",
                ValueType = "Test ValueType"
            };
            var mockHttpClient = new Mock <HttpClient>();

            // Act - - - - - - - - - - -
            SensorApiServiceMock sensorApiService = new SensorApiServiceMock(mockHttpClient.Object, JsonConvert.SerializeObject(expectedResult));

            MeasurementReadIn testOutput = await sensorApiService.GetCurrentSensorValueFromAPI(mockSensorId);

            // Assert - - - - - - - - - - -
            Assert.AreEqual(expectedResult.TimeStamp, testOutput.TimeStamp);
            Assert.AreEqual(expectedResult.Value, testOutput.Value);
            Assert.AreEqual(expectedResult.ValueType, testOutput.ValueType);
        }