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()); }
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)); }
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); }