コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }