public override async Task Execute(ILogger logger, TestParameters testParameters) { JObject resolvedDesiredState = (JObject)testParameters.ResolveParameters(_desiredState); JToken desiredNode = resolvedDesiredState[Constants.JsonPropertiesRoot][Constants.JsonDesiredRoot]; if (desiredNode is JObject) { JObject desiredJObject = (JObject)desiredNode; await testParameters.IoTCloudServices.IoTHubManager.UpdateDesiredObject(testParameters.IoTHubDeviceId, desiredJObject); } else { throw new Exception("DeviceTwin Test Case: Unexpected format!"); } logger.Log(LogLevel.Information, IndentInner + "Waiting " + _readBackPause + " seconds for the device twin to be updated..."); await Task.Delay(_readBackPause * 1000); DeviceData deviceData = await testParameters.IoTCloudServices.IoTHubManager.GetDeviceData(testParameters.IoTHubDeviceId); JObject desiredProperties = (JObject)JsonConvert.DeserializeObject(deviceData.desiredPropertiesJson); JObject reportedProperties = (JObject)JsonConvert.DeserializeObject(deviceData.reportedPropertiesJson); JObject expectedWindowsReported = (JObject)_expectedPresentReportedState[Constants.JsonPropertiesRoot][Constants.JsonReportedRoot]; List <string> errorList = new List <string>(); bool result = true; if (expectedWindowsReported != null) { if (!TestCaseHelpers.VerifyPropertiesPresent(Constants.JsonDeviceTwin, expectedWindowsReported, reportedProperties, errorList)) { logger.Log(LogLevel.Verbose, "---- Final Result:"); logger.Log(LogLevel.Verbose, reportedProperties.ToString()); logger.Log(LogLevel.Verbose, "---- Expected Present Result:"); logger.Log(LogLevel.Verbose, expectedWindowsReported.ToString()); result = false; } } if (_expectedAbsentReportedState != null) { JObject expectedAbsentReported = (JObject)_expectedAbsentReportedState[Constants.JsonPropertiesRoot][Constants.JsonReportedRoot]; if (expectedAbsentReported != null) { if (!TestCaseHelpers.VerifyPropertiesAbsent(expectedAbsentReported, reportedProperties, errorList)) { logger.Log(LogLevel.Verbose, "---- Final Result:"); logger.Log(LogLevel.Verbose, reportedProperties.ToString()); logger.Log(LogLevel.Verbose, "---- Expected Absent Result:"); logger.Log(LogLevel.Verbose, expectedAbsentReported.ToString()); result = false; } } } ReportResult(logger, result, errorList); }
protected async Task <bool> VerifyDeviceTwin(ILogger logger, IoTHubManager client, TestParameters testParameters, int seconds) { logger.Log(LogLevel.Information, " Waiting " + seconds + " seconds for the device twin to be updated..."); await Task.Delay(seconds * 1000); DeviceData deviceData = await client.GetDeviceData(testParameters.IoTHubDeviceId); JObject reportedProperties = (JObject)JsonConvert.DeserializeObject(deviceData.reportedPropertiesJson); logger.Log(LogLevel.Verbose, "---- Final Result:"); logger.Log(LogLevel.Verbose, reportedProperties.ToString()); List <string> errorList = new List <string>(); bool result = true; logger.Log(LogLevel.Verbose, "---- Expected Present Result:"); if (_expectedPresentReportedState != null) { JObject expectedPresentReported = (JObject)_expectedPresentReportedState[Constants.JsonPropertiesRoot][Constants.JsonReportedRoot]; if (expectedPresentReported != null) { logger.Log(LogLevel.Verbose, expectedPresentReported.ToString()); result &= TestCaseHelpers.VerifyPropertiesPresent(Constants.JsonDeviceTwin, expectedPresentReported, reportedProperties, errorList); } } logger.Log(LogLevel.Verbose, "---- Expected Absent Result:"); if (_expectedAbsentReportedState != null) { JObject expectedAbsentReported = (JObject)_expectedAbsentReportedState[Constants.JsonPropertiesRoot][Constants.JsonReportedRoot]; if (expectedAbsentReported != null) { logger.Log(LogLevel.Verbose, expectedAbsentReported.ToString()); result &= TestCaseHelpers.VerifyPropertiesAbsent(expectedAbsentReported, reportedProperties, errorList); } } ReportResult(logger, result, errorList); return(result); }