From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by mx.groups.io with SMTP id smtpd.web09.6692.1581038749071788482 for ; Thu, 06 Feb 2020 17:25:49 -0800 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: hao.a.wu@intel.com) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 06 Feb 2020 17:25:48 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.70,411,1574150400"; d="scan'208";a="232228913" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga003.jf.intel.com with ESMTP; 06 Feb 2020 17:25:48 -0800 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 6 Feb 2020 17:25:47 -0800 Received: from fmsmsx606.amr.corp.intel.com (10.18.126.86) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Thu, 6 Feb 2020 17:25:47 -0800 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by fmsmsx606.amr.corp.intel.com (10.18.126.86) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Thu, 6 Feb 2020 17:25:46 -0800 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.5]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.55]) with mapi id 14.03.0439.000; Fri, 7 Feb 2020 09:25:45 +0800 From: "Wu, Hao A" To: "Kinney, Michael D" , "devel@edk2.groups.io" CC: Sean Brogan , Bret Barkelew , "Gao, Liming" Subject: Re: [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test Thread-Topic: [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test Thread-Index: AQHV0lt+ByWqTOhlzEeOriVTrKDE8agPBh8w Date: Fri, 7 Feb 2020 01:25:44 +0000 Message-ID: References: <20200124021032.13808-1-michael.d.kinney@intel.com> <20200124021032.13808-10-michael.d.kinney@intel.com> In-Reply-To: <20200124021032.13808-10-michael.d.kinney@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: hao.a.wu@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable > -----Original Message----- > From: Kinney, Michael D > Sent: Friday, January 24, 2020 10:11 AM > To: devel@edk2.groups.io > Cc: Sean Brogan; Bret Barkelew; Gao, Liming; Wu, Hao A > Subject: [Patch 09/11] MdeModulePkg: Add DxeResetSystemLib unit test >=20 > * Add unit test of DxeResetSystemLib library > instance that uses cmocka interfaces to mock the > UEFI Runtime Services Table and its ResetSystem() > service. When a unit test uses the cmocka > interfaces, the unit test does not support being > run from target environments. >=20 > cmocka APIs: https://api.cmocka.org/index.html >=20 > This example puts the unit test in a UnitTest > directory below the library INF file and this location > means the unit test is only designed to work this > this one library instance. >=20 > * Add Test/MdeModulePkgHostTest.dsc to build host > based unit tests Acked-by: Hao A Wu Best Regards, Hao Wu >=20 > Cc: Sean Brogan > Cc: Bret Barkelew > Cc: Liming Gao > Cc: Hao A Wu > Signed-off-by: Michael D Kinney > --- > .../UnitTest/DxeResetSystemLibUnitTest.c | 312 ++++++++++++++++++ > .../DxeResetSystemLibUnitTestHost.inf | 34 ++ > .../MockUefiRuntimeServicesTableLib.c | 13 + > .../MockUefiRuntimeServicesTableLib.inf | 25 ++ > MdeModulePkg/MdeModulePkg.ci.yaml | 13 +- > MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 32 ++ > 6 files changed, 428 insertions(+), 1 deletion(-) > create mode 100644 > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn > itTest.c > create mode 100644 > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn > itTestHost.inf > create mode 100644 > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ > icesTableLib.c > create mode 100644 > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ > icesTableLib.inf > create mode 100644 MdeModulePkg/Test/MdeModulePkgHostTest.dsc >=20 > diff --git > a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTest.c > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTest.c > new file mode 100644 > index 0000000000..5f7cedb61b > --- /dev/null > +++ > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTest.c > @@ -0,0 +1,312 @@ > +/** @file > + Unit tests of the DxeResetSystemLib instance of the ResetSystemLib cla= ss > + > + Copyright (C) Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > +#include > +#include > +#include > + > +#include > +#include > + > +#define UNIT_TEST_APP_NAME "DxeResetSystemLib Unit Tests" > +#define UNIT_TEST_APP_VERSION "1.0" > + > +/** > + Resets the entire platform. > + > + @param[in] ResetType The type of reset to perform. > + @param[in] ResetStatus The status code for the reset. > + @param[in] DataSize The size, in bytes, of ResetData. > + @param[in] ResetData For a ResetType of EfiResetCold, > EfiResetWarm, or > + EfiResetShutdown the data buffer starts = with a Null- > terminated > + string, optionally followed by additiona= l binary data. > + The string is a description that the cal= ler may use to > further > + indicate the reason for the system reset= . > + For a ResetType of EfiResetPlatformSpeci= fic the data > buffer > + also starts with a Null-terminated strin= g that is followed > + by an EFI_GUID that describes the specif= ic type of reset to > perform. > +**/ > +STATIC > +VOID > +EFIAPI > +MockResetSystem ( > + IN EFI_RESET_TYPE ResetType, > + IN EFI_STATUS ResetStatus, > + IN UINTN DataSize, > + IN VOID *ResetData OPTIONAL > + ) > +{ > + check_expected_ptr (ResetType); > + check_expected_ptr (ResetStatus); > + > + // > + // NOTE: Mocked functions can also return values, but that > + // is for another demo. > +} > + > +/// > +/// Mock version of the UEFI Runtime Services Table > +/// > +EFI_RUNTIME_SERVICES MockRuntime =3D { > + { > + EFI_RUNTIME_SERVICES_SIGNATURE, // Signature > + EFI_RUNTIME_SERVICES_REVISION, // Revision > + sizeof (EFI_RUNTIME_SERVICES), // HeaderSize > + 0, // CRC32 > + 0 // Reserved > + }, > + NULL, // GetTime > + NULL, // SetTime > + NULL, // GetWakeupTime > + NULL, // SetWakeupTime > + NULL, // SetVirtualAddressMap > + NULL, // ConvertPointer > + NULL, // GetVariable > + NULL, // GetNextVariableName > + NULL, // SetVariable > + NULL, // GetNextHighMonotonicCount > + MockResetSystem, // ResetSystem > + NULL, // UpdateCapsule > + NULL, // QueryCapsuleCapabilities > + NULL // QueryVariableInfo > +}; > + > +/** > + Unit test for ColdReset () API of the ResetSystemLib. > + > + @param[in] Context [Optional] An optional paramter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +ResetColdShouldIssueAColdReset ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + expect_value (MockResetSystem, ResetType, EfiResetCold); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetCold (); > + > + return UNIT_TEST_PASSED; > +} > + > +/** > + Unit test for WarmReset () API of the ResetSystemLib. > + > + @param[in] Context [Optional] An optional paramter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +ResetWarmShouldIssueAWarmReset ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + expect_value (MockResetSystem, ResetType, EfiResetWarm); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetWarm (); > + > + return UNIT_TEST_PASSED; > +} > + > +/** > + Unit test for ResetShutdown () API of the ResetSystemLib. > + > + @param[in] Context [Optional] An optional paramter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +ResetShutdownShouldIssueAShutdown ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + expect_value (MockResetSystem, ResetType, EfiResetShutdown); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetShutdown (); > + > + return UNIT_TEST_PASSED; > +} > + > +/** > + Unit test for ResetPlatformSpecific () API of the ResetSystemLib. > + > + @param[in] Context [Optional] An optional paramter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +ResetPlatformSpecificShouldIssueAPlatformSpecificReset ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + expect_value (MockResetSystem, ResetType, EfiResetPlatformSpecific); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetPlatformSpecific (0, NULL); > + > + return UNIT_TEST_PASSED; > +} > + > +/** > + Unit test for ResetSystem () API of the ResetSystemLib. > + > + @param[in] Context [Optional] An optional paramter that enables: > + 1) test-case reuse with varied parameters and > + 2) test-case re-entry for Target tests that nee= d a > + reboot. This parameter is a VOID* and it is th= e > + responsibility of the test author to ensure tha= t the > + contents are well understood by all test cases = that may > + consume it. > + > + @retval UNIT_TEST_PASSED The Unit test has completed and = the > test > + case was successful. > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed= . > +**/ > +UNIT_TEST_STATUS > +EFIAPI > +ResetSystemShouldPassTheParametersThrough ( > + IN UNIT_TEST_CONTEXT Context > + ) > +{ > + expect_value (MockResetSystem, ResetType, EfiResetCold); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetSystem (EfiResetCold, EFI_SUCCESS, 0, NULL); > + > + expect_value (MockResetSystem, ResetType, EfiResetShutdown); > + expect_value (MockResetSystem, ResetStatus, EFI_SUCCESS); > + > + ResetSystem (EfiResetShutdown, EFI_SUCCESS, 0, NULL); > + > + return UNIT_TEST_PASSED; > +} > + > +/** > + Initialze the unit test framework, suite, and unit tests for the > + ResetSystemLib and run the ResetSystemLib unit test. > + > + @retval EFI_SUCCESS All test cases were dispached. > + @retval EFI_OUT_OF_RESOURCES There are not enough resources > available to > + initialize the unit tests. > +**/ > +STATIC > +EFI_STATUS > +EFIAPI > +UnitTestingEntry ( > + VOID > + ) > +{ > + EFI_STATUS Status; > + UNIT_TEST_FRAMEWORK_HANDLE Framework; > + UNIT_TEST_SUITE_HANDLE ResetTests; > + > + Framework =3D NULL; > + > + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, > UNIT_TEST_APP_VERSION )); > + > + // > + // Start setting up the test framework for running the tests. > + // > + Status =3D InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME, > gEfiCallerBaseName, UNIT_TEST_APP_VERSION); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status > =3D %r\n", Status)); > + goto EXIT; > + } > + > + // > + // Populate the ResetSytemLib Unit Test Suite. > + // > + Status =3D CreateUnitTestSuite (&ResetTests, Framework, > "DxeResetSystemLib Reset Tests", "ResetSystemLib.Reset", NULL, NULL); > + if (EFI_ERROR (Status)) { > + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for > ResetTests\n")); > + Status =3D EFI_OUT_OF_RESOURCES; > + goto EXIT; > + } > + > + // > + // --------------Suite-----------Description--------------Name--------= --Function- > -------Pre---Post-------------------Context----------- > + // > + AddTestCase (ResetTests, "ResetCold should issue a cold reset", "Cold"= , > ResetColdShouldIssueAColdReset, NULL, NULL, NULL); > + AddTestCase (ResetTests, "ResetWarm should issue a warm reset", > "Warm", ResetWarmShouldIssueAWarmReset, NULL, NULL, NULL); > + AddTestCase (ResetTests, "ResetShutdown should issue a shutdown", > "Shutdown", ResetShutdownShouldIssueAShutdown, NULL, NULL, NULL); > + AddTestCase (ResetTests, "ResetPlatformSpecific should issue a platfor= m- > specific reset", "Platform", > ResetPlatformSpecificShouldIssueAPlatformSpecificReset, NULL, NULL, > NULL); > + AddTestCase (ResetTests, "ResetSystem should pass all parameters > through", "Parameters", ResetSystemShouldPassTheParametersThrough, > NULL, NULL, NULL); > + > + // > + // Execute the tests. > + // > + Status =3D RunAllTestSuites (Framework); > + > +EXIT: > + if (Framework) { > + FreeUnitTestFramework (Framework); > + } > + > + return Status; > +} > + > +/** > + Standard POSIX C entry point for host based unit test execution. > +**/ > +int > +main ( > + int argc, > + char *argv[] > + ) > +{ > + return UnitTestingEntry (); > +} > diff --git > a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTestHost.inf > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTestHost.inf > new file mode 100644 > index 0000000000..54f968e810 > --- /dev/null > +++ > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLib > UnitTestHost.inf > @@ -0,0 +1,34 @@ > +## @file > +# Unit tests of the DxeResetSystemLib instance of the ResetSystemLib cla= ss > +# > +# Copyright (C) Microsoft Corporation. > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +## > + > +[Defines] > + INF_VERSION =3D 0x00010006 > + BASE_NAME =3D DxeResetSystemLibUnitTestHost > + FILE_GUID =3D 83E35653-B943-4C5F-BA08-9B2996AE927= 3 > + MODULE_TYPE =3D HOST_APPLICATION > + VERSION_STRING =3D 1.0 > + > +# > +# The following information is for reference only and not required by th= e > build tools. > +# > +# VALID_ARCHITECTURES =3D IA32 X64 > +# > + > +[Sources] > + DxeResetSystemLibUnitTest.c > + > +[Packages] > + MdePkg/MdePkg.dec > + MdeModulePkg/MdeModulePkg.dec > + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec > + > +[LibraryClasses] > + ResetSystemLib > + BaseLib > + BaseMemoryLib > + DebugLib > + UnitTestLib > diff --git > a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.c > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.c > new file mode 100644 > index 0000000000..3540e1c039 > --- /dev/null > +++ > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.c > @@ -0,0 +1,13 @@ > +/** @file > + Mock implementation of the UEFI Runtime Services Table Library. > + > + Copyright (C) Microsoft Corporation. > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > +**/ > + > +#include > + > +extern EFI_RUNTIME_SERVICES MockRuntime; > + > +EFI_RUNTIME_SERVICES *gRT =3D &MockRuntime; > diff --git > a/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.inf > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.inf > new file mode 100644 > index 0000000000..e716b855a3 > --- /dev/null > +++ > b/MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeSe > rvicesTableLib.inf > @@ -0,0 +1,25 @@ > +## @file > +# Mock implementation of the UEFI Runtime Services Table Library. > +# > +# Copyright (c) 2020, Intel Corporation. All rights reserved.
> +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +## > + > +[Defines] > + INF_VERSION =3D 0x00010005 > + BASE_NAME =3D MockUefiRuntimeServicesTableLib > + FILE_GUID =3D 4EA215EE-85C1-4A0A-847F-D2A8DE20805= F > + MODULE_TYPE =3D UEFI_DRIVER > + VERSION_STRING =3D 1.0 > + LIBRARY_CLASS =3D > UefiRuntimeServicesTableLib|HOST_APPLICATION > + > +# > +# VALID_ARCHITECTURES =3D IA32 X64 EBC > +# > + > +[Sources] > + MockUefiRuntimeServicesTableLib.c > + > +[Packages] > + MdePkg/MdePkg.dec > diff --git a/MdeModulePkg/MdeModulePkg.ci.yaml > b/MdeModulePkg/MdeModulePkg.ci.yaml > index 0bf149f205..3b6e747075 100644 > --- a/MdeModulePkg/MdeModulePkg.ci.yaml > +++ b/MdeModulePkg/MdeModulePkg.ci.yaml > @@ -9,6 +9,10 @@ > "CompilerPlugin": { > "DscPath": "MdeModulePkg.dsc" > }, > + ## options defined ci/Plugin/HostUnitTestCompilerPlugin > + "HostUnitTestCompilerPlugin": { > + "DscPath": "Test/MdeModulePkgHostTest.dsc" > + }, >=20 > ## options defined ci/Plugin/CharEncodingCheck > "CharEncodingCheck": { > @@ -24,7 +28,9 @@ > "ArmPkg/ArmPkg.dec" # this should be fixed by promoting an > abstraction > ], > # For host based unit tests > - "AcceptableDependencies-HOST_APPLICATION":[], > + "AcceptableDependencies-HOST_APPLICATION":[ > + "UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec" > + ], > # For UEFI shell based apps > "AcceptableDependencies-UEFI_APPLICATION":[], > "IgnoreInf": [] > @@ -35,6 +41,11 @@ > "IgnoreInf": [], > "DscPath": "MdeModulePkg.dsc" > }, > + ## options defined ci/Plugin/HostUnitTestDscCompleteCheck > + "HostUnitTestDscCompleteCheck": { > + "IgnoreInf": [""], > + "DscPath": "Test/MdeModulePkgHostTest.dsc" > + }, >=20 > ## options defined ci/Plugin/GuidCheck > "GuidCheck": { > diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > new file mode 100644 > index 0000000000..72a119db45 > --- /dev/null > +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc > @@ -0,0 +1,32 @@ > +## @file > +# MdeModulePkg DSC file used to build host-based unit tests. > +# > +# Copyright (c) 2019 - 2020, Intel Corporation. All rights reserved.
> +# Copyright (C) Microsoft Corporation. > +# SPDX-License-Identifier: BSD-2-Clause-Patent > +# > +## > + > +[Defines] > + PLATFORM_NAME =3D MdeModulePkgHostTest > + PLATFORM_GUID =3D F74AF7C6-698C-4EBA-BA49-FF6816916354 > + PLATFORM_VERSION =3D 0.1 > + DSC_SPECIFICATION =3D 0x00010005 > + OUTPUT_DIRECTORY =3D Build/MdeModulePkg/HostTest > + SUPPORTED_ARCHITECTURES =3D IA32|X64 > + BUILD_TARGETS =3D NOOPT > + SKUID_IDENTIFIER =3D DEFAULT > + > +!include UnitTestFrameworkPkg/UnitTestFrameworkPkgHost.dsc.inc > + > +[Components] > + > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/MockUefiRuntimeServ > icesTableLib.inf > + > + # > + # Build MdeModulePkg HOST_APPLICATION Tests > + # > + > MdeModulePkg/Library/DxeResetSystemLib/UnitTest/DxeResetSystemLibUn > itTestHost.inf { > + > + > ResetSystemLib|MdeModulePkg/Library/DxeResetSystemLib/DxeResetSyste > mLib.inf > + > UefiRuntimeServicesTableLib|MdeModulePkg/Library/DxeResetSystemLib/U > nitTest/MockUefiRuntimeServicesTableLib.inf > + } > -- > 2.21.0.windows.1