MdePkg: Add MockUefiBootServicesTableLib

This commit adds a mock library for UefiBootServicesTableLib.

Cc: Michael D Kinney <michael.d.kinney@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Zhiguang Liu <zhiguang.liu@intel.com>

Signed-off-by: Doug Flick [MSFT] <doug.edk2@gmail.com>
Reviewed-by: Liming Gao <gaoliming@byosoft.com.cn>
This commit is contained in:
Doug Flick 2024-05-08 22:56:30 -07:00 committed by mergify[bot]
parent 1904a64bcc
commit 72a9ef1c8a
4 changed files with 180 additions and 0 deletions

View File

@ -43,6 +43,7 @@
MdePkg/Library/BaseLib/UnitTestHostBaseLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockUefiLib/MockUefiLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockUefiRuntimeServicesTableLib/MockUefiRuntimeServicesTableLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockUefiBootServicesTableLib/MockUefiBootServicesTableLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockPeiServicesLib/MockPeiServicesLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockHobLib/MockHobLib.inf
MdePkg/Test/Mock/Library/GoogleTest/MockFdtLib/MockFdtLib.inf

View File

@ -0,0 +1,78 @@
/** @file
Google Test mocks for UefiBootServicesTableLib
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#ifndef MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_
#define MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_
#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
#include <Uefi.h>
#include <Library/UefiBootServicesTableLib.h>
}
//
// Declarations to handle usage of the UefiBootServiceTableLib by creating mock
//
struct MockUefiBootServicesTableLib {
MOCK_INTERFACE_DECLARATION (MockUefiBootServicesTableLib);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_GetMemoryMap,
(IN OUT UINTN *MemoryMapSize,
OUT EFI_MEMORY_DESCRIPTOR *MemoryMap,
OUT UINTN *MapKey,
OUT UINTN *DescriptorSize,
OUT UINT32 *DescriptorVersion)
);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_CreateEvent,
(IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction,
IN VOID *NotifyContext,
OUT EFI_EVENT *Event)
);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_CloseEvent,
(IN EFI_EVENT Event)
);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_HandleProtocol,
(IN EFI_HANDLE Handle,
IN EFI_GUID *Protocol,
OUT VOID **Interface)
);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_LocateProtocol,
(IN EFI_GUID *Protocol,
IN VOID *Registration OPTIONAL,
OUT VOID **Interface)
);
MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_CreateEventEx,
(IN UINT32 Type,
IN EFI_TPL NotifyTpl,
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
IN CONST VOID *NotifyContext OPTIONAL,
IN CONST EFI_GUID *EventGroup OPTIONAL,
OUT EFI_EVENT *Event)
);
};
#endif // MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_

View File

@ -0,0 +1,69 @@
/** @file
Google Test mocks for UefiBootServicesTableLib
Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <GoogleTest/Library/MockUefiBootServicesTableLib.h>
MOCK_INTERFACE_DEFINITION (MockUefiBootServicesTableLib);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_GetMemoryMap, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CreateEvent, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CloseEvent, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_HandleProtocol, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateProtocol, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CreateEventEx, 6, EFIAPI);
static EFI_BOOT_SERVICES LocalBs = {
{ 0, 0, 0, 0, 0 }, // EFI_TABLE_HEADER
NULL, // EFI_RAISE_TPL
NULL, // EFI_RESTORE_TPL
NULL, // EFI_ALLOCATE_PAGES
NULL, // EFI_FREE_PAGES
gBS_GetMemoryMap, // EFI_GET_MEMORY_MAP
NULL, // EFI_ALLOCATE_POOL
NULL, // EFI_FREE_POOL
gBS_CreateEvent, // EFI_CREATE_EVENT
NULL, // EFI_SET_TIMER
NULL, // EFI_WAIT_FOR_EVENT
NULL, // EFI_SIGNAL_EVENT
gBS_CloseEvent, // EFI_CLOSE_EVENT
NULL, // EFI_CHECK_EVENT
NULL, // EFI_INSTALL_PROTOCOL_INTERFACE
NULL, // EFI_REINSTALL_PROTOCOL_INTERFACE
NULL, // EFI_UNINSTALL_PROTOCOL_INTERFACE
gBS_HandleProtocol, // EFI_HANDLE_PROTOCOL
NULL, // VOID
NULL, // EFI_REGISTER_PROTOCOL_NOTIFY
NULL, // EFI_LOCATE_HANDLE
NULL, // EFI_LOCATE_DEVICE_PATH
NULL, // EFI_INSTALL_CONFIGURATION_TABLE
NULL, // EFI_IMAGE_LOAD
NULL, // EFI_IMAGE_START
NULL, // EFI_EXIT
NULL, // EFI_IMAGE_UNLOAD
NULL, // EFI_EXIT_BOOT_SERVICES
NULL, // EFI_GET_NEXT_MONOTONIC_COUNT
NULL, // EFI_STALL
NULL, // EFI_SET_WATCHDOG_TIMER
NULL, // EFI_CONNECT_CONTROLLER
NULL, // EFI_DISCONNECT_CONTROLLER
NULL, // EFI_OPEN_PROTOCOL
NULL, // EFI_CLOSE_PROTOCOL
NULL, // EFI_OPEN_PROTOCOL_INFORMATION
NULL, // EFI_PROTOCOLS_PER_HANDLE
NULL, // EFI_LOCATE_HANDLE_BUFFER
gBS_LocateProtocol, // EFI_LOCATE_PROTOCOL
NULL, // EFI_INSTALL_MULTIPLE_PROTOCOL_INTERFACES
NULL, // EFI_UNINSTALL_MULTIPLE_PROTOCOL_INTERFACES
NULL, // EFI_CALCULATE_CRC32
NULL, // EFI_COPY_MEM
NULL, // EFI_SET_MEM
gBS_CreateEventEx // EFI_CREATE_EVENT_EX
};
extern "C" {
EFI_BOOT_SERVICES *gBS = &LocalBs;
EFI_HANDLE gImageHandle = NULL;
EFI_SYSTEM_TABLE *gST = NULL;
}

View File

@ -0,0 +1,32 @@
## @file
# Mock implementation of the UEFI Boot Services Table Library.
#
# Copyright (c) Microsoft Corporation.
# SPDX-License-Identifier: BSD-2-Clause-Patent
#
##
[Defines]
INF_VERSION = 0x00010005
BASE_NAME = MockUefiBootServicesTableLib
FILE_GUID = 67EA4614-E276-49EC-9AE6-B97ACCEA676E
MODULE_TYPE = HOST_APPLICATION
VERSION_STRING = 1.0
LIBRARY_CLASS = UefiBootServicesTableLib|HOST_APPLICATION
#
# VALID_ARCHITECTURES = IA32 X64 EBC
#
[Sources]
MockUefiBootServicesTableLib.cpp
[LibraryClasses]
GoogleTestLib
[Packages]
MdePkg/MdePkg.dec
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
[BuildOptions]
MSFT:*_*_*_CC_FLAGS = /EHsc