From 5aa1be5376102771d1a90c2f22a3bc617f58c378 Mon Sep 17 00:00:00 2001 From: YiTa-AMI Date: Tue, 10 Sep 2024 01:01:26 +0800 Subject: [PATCH] Add mock functions under MockUefiRuntimeServicesTableLib, MockUefiRuntimeServicesTableLib and Create Mock for DxeServicesTableLib (#1109) ## Description Add mock functions under MockUefiRuntimeServicesTableLib, MockUefiRuntimeServicesTableLib and Create Mock for DxeServicesTableLib For details on how to complete to complete these options and their meaning refer to [CONTRIBUTING.md](https://github.com/microsoft/mu/blob/HEAD/CONTRIBUTING.md). - [ ] Impacts functionality? - [ ] Impacts security? - [ ] Breaking change? - [ ] Includes tests? - [ ] Includes documentation? ## How This Was Tested Unit tests component can call these mock functions success ## Integration Instructions N/A --------- Signed-off-by: YiTa-AMI --- MdePkg/Test/MdePkgHostTest.dsc | 2 ++ .../Library/MockDxeServicesTableLib.h | 31 ++++++++++++++++ .../Library/MockUefiBootServicesTableLib.h | 17 +++++++++ .../Library/MockUefiRuntimeServicesTableLib.h | 9 +++++ .../MockDxeServicesTableLib.cpp | 36 +++++++++++++++++++ .../MockDxeServicesTableLib.inf | 32 +++++++++++++++++ .../MockUefiBootServicesTableLib.cpp | 6 ++-- .../MockUefiRuntimeServicesTableLib.cpp | 3 +- 8 files changed, 133 insertions(+), 3 deletions(-) create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockDxeServicesTableLib.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.cpp create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf diff --git a/MdePkg/Test/MdePkgHostTest.dsc b/MdePkg/Test/MdePkgHostTest.dsc index 478a0afc5b..543678f41f 100644 --- a/MdePkg/Test/MdePkgHostTest.dsc +++ b/MdePkg/Test/MdePkgHostTest.dsc @@ -57,5 +57,7 @@ MdePkg/Test/Mock/Library/GoogleTest/MockMemoryAllocationLib/MockMemoryAllocationLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockPciExpressLib/MockPciExpressLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockUefiDevicePathLib/MockUefiDevicePathLib.inf + MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockPerformanceLib/MockPerformanceLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockPciLib/MockPciLib.inf + diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockDxeServicesTableLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockDxeServicesTableLib.h new file mode 100644 index 0000000000..5ed384bc25 --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockDxeServicesTableLib.h @@ -0,0 +1,31 @@ +/** @file MockDxeServicesTableLib.h + Google Test mocks for DxeServicesTableLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_DXE_SERVICES_TABLE_LIB_H_ +#define MOCK_DXE_SERVICES_TABLE_LIB_H_ + +#include +#include +extern "C" { + #include + #include +} + +// +// Declarations to handle usage of the DxeServicesTableLib by creating mock +// +struct MockDxeServicesTableLib { + MOCK_INTERFACE_DECLARATION (MockDxeServicesTableLib); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + gDS_Dispatch, + () + ); +}; + +#endif // MOCK_UEFI_DXE_SERVICES_TABLE_LIB_H_ diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h index f26c949602..fa14cdbaaa 100644 --- a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h @@ -179,6 +179,23 @@ struct MockUefiBootServicesTableLib { IN OUT UINTN *BufferSize, OUT EFI_HANDLE *Buffer) ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + gBS_ConnectController, + (IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE *DriverImageHandle OPTIONAL, + IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL, + IN BOOLEAN Recursive) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + gBS_DisconnectController, + (IN EFI_HANDLE ControllerHandle, + IN EFI_HANDLE DriverImageHandle OPTIONAL, + IN EFI_HANDLE ChildHandle OPTIONAL) + ); }; #endif // MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_ diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h index cef560c9a7..bfa9414fde 100644 --- a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h @@ -45,6 +45,15 @@ struct MockUefiRuntimeServicesTableLib { (OUT EFI_TIME *Time, OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL) ); + + MOCK_FUNCTION_DECLARATION ( + VOID, + gRT_ResetSystem, + (IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL) + ); }; #endif diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.cpp new file mode 100644 index 0000000000..859c60ce4c --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.cpp @@ -0,0 +1,36 @@ +/** @file MockDxeServicesTableLib.cpp + Google Test mocks for DxeServicesTableLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ +#include + +MOCK_INTERFACE_DEFINITION (MockDxeServicesTableLib); +MOCK_FUNCTION_DEFINITION (MockDxeServicesTableLib, gDS_Dispatch, 0, EFIAPI); + +static EFI_DXE_SERVICES LocalDs = { + { 0, 0, 0, 0, 0 }, // EFI_TABLE_HEADER + NULL, // EFI_ADD_MEMORY_SPACE + NULL, // EFI_ALLOCATE_MEMORY_SPACE + NULL, // EFI_FREE_MEMORY_SPACE + NULL, // EFI_REMOVE_MEMORY_SPACE + NULL, // EFI_GET_MEMORY_SPACE_DESCRIPTOR + NULL, // EFI_SET_MEMORY_SPACE_ATTRIBUTES + NULL, // EFI_GET_MEMORY_SPACE_MAP + NULL, // EFI_ADD_IO_SPACE + NULL, // EFI_ALLOCATE_IO_SPACE + NULL, // EFI_FREE_IO_SPACE + NULL, // EFI_REMOVE_IO_SPACE + NULL, // EFI_GET_IO_SPACE_DESCRIPTOR + NULL, // EFI_GET_IO_SPACE_MAP + gDS_Dispatch, // EFI_DISPATCH + NULL, // EFI_SCHEDULE + NULL, // EFI_TRUST + NULL, // EFI_PROCESS_FIRMWARE_VOLUME + NULL // EFI_SET_MEMORY_SPACE_CAPABILITIES +}; + +extern "C" { + EFI_DXE_SERVICES *gDS = &LocalDs; +} diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf b/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf new file mode 100644 index 0000000000..808cbf6dbc --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf @@ -0,0 +1,32 @@ +## @file MockDxeServicesTableLib.inf +# Mock implementation of the DXE Services Table Library. +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = MockDxeServicesTableLib + FILE_GUID = 8d9ce22b-2cf3-4646-ad0b-ce3cf1aea84d + MODULE_TYPE = HOST_APPLICATION + VERSION_STRING = 1.0 + LIBRARY_CLASS = DxeServicesTableLib + +# +# VALID_ARCHITECTURES = IA32 X64 EBC +# + +[Sources] + MockDxeServicesTableLib.cpp + +[LibraryClasses] + GoogleTestLib + +[Packages] + MdePkg/MdePkg.dec + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /EHsc diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp index b1cea9b642..fe867d4ca5 100644 --- a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.cpp @@ -25,6 +25,8 @@ MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateDevicePath, 3, MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_ReinstallProtocolInterface, 4, EFIAPI); MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_AllocatePool, 3, EFIAPI); MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateHandle, 5, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_ConnectController, 4, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_DisconnectController, 3, EFIAPI); extern "C" { EFI_STATUS @@ -130,8 +132,8 @@ static EFI_BOOT_SERVICES LocalBs = { NULL, // EFI_GET_NEXT_MONOTONIC_COUNT NULL, // EFI_STALL NULL, // EFI_SET_WATCHDOG_TIMER - NULL, // EFI_CONNECT_CONTROLLER - NULL, // EFI_DISCONNECT_CONTROLLER + gBS_ConnectController, // EFI_CONNECT_CONTROLLER + gBS_DisconnectController, // EFI_DISCONNECT_CONTROLLER gBS_OpenProtocol, // EFI_OPEN_PROTOCOL gBS_CloseProtocol, // EFI_CLOSE_PROTOCOL NULL, // EFI_OPEN_PROTOCOL_INFORMATION diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.cpp index bf74c99d7d..05895731d4 100644 --- a/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.cpp +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.cpp @@ -11,6 +11,7 @@ MOCK_INTERFACE_DEFINITION (MockUefiRuntimeServicesTableLib); MOCK_FUNCTION_DEFINITION (MockUefiRuntimeServicesTableLib, gRT_GetVariable, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockUefiRuntimeServicesTableLib, gRT_SetVariable, 5, EFIAPI); MOCK_FUNCTION_DEFINITION (MockUefiRuntimeServicesTableLib, gRT_GetTime, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockUefiRuntimeServicesTableLib, gRT_ResetSystem, 4, EFIAPI); static EFI_RUNTIME_SERVICES localRt = { { 0 }, // EFI_TABLE_HEADER @@ -27,7 +28,7 @@ static EFI_RUNTIME_SERVICES localRt = { gRT_SetVariable, // EFI_SET_VARIABLE NULL, // EFI_GET_NEXT_HIGH_MONO_COUNT - NULL, // EFI_RESET_SYSTEM + gRT_ResetSystem, // EFI_RESET_SYSTEM NULL, // EFI_UPDATE_CAPSULE NULL, // EFI_QUERY_CAPSULE_CAPABILITIES