From 4b45a2beb755a6b8dee71cb2fd9bcb06209e2c68 Mon Sep 17 00:00:00 2001 From: SeolforHsieh Date: Fri, 14 Feb 2025 07:24:00 +0800 Subject: [PATCH] MdePkg: Add Google Mock Library for SmmMemLib (#1265) ## Description Added MockSmmMemLib to be used by Googletests - [ ] Impacts functionality? - [ ] Impacts security? - [ ] Breaking change? - [ ] Includes tests? - [ ] Includes documentation? - [x] Backport to release branch? ## How This Was Tested Added MockSmmMemLib to GoogleTests and able to successfully include its functions ## Integration Instructions N/A --- MdePkg/Test/MdePkgHostTest.dsc | 1 + .../GoogleTest/Library/MockSmmMemLib.h | 83 +++++++++++++++++++ .../MockSmmMemLib/MockSmmMemLib.cpp | 16 ++++ .../MockSmmMemLib/MockSmmMemLib.inf | 33 ++++++++ 4 files changed, 133 insertions(+) create mode 100644 MdePkg/Test/Mock/Include/GoogleTest/Library/MockSmmMemLib.h create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.cpp create mode 100644 MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.inf diff --git a/MdePkg/Test/MdePkgHostTest.dsc b/MdePkg/Test/MdePkgHostTest.dsc index dfcd17c166..104756a907 100644 --- a/MdePkg/Test/MdePkgHostTest.dsc +++ b/MdePkg/Test/MdePkgHostTest.dsc @@ -72,4 +72,5 @@ MdePkg/Test/Mock/Library/GoogleTest/MockReportStatusCodeLib/MockReportStatusCodeLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockPostCodeLib/MockPostCodeLib.inf MdePkg/Test/Mock/Library/GoogleTest/MockSafeIntLib/MockSafeIntLib.inf + MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.inf # MU_CHANGE [END] diff --git a/MdePkg/Test/Mock/Include/GoogleTest/Library/MockSmmMemLib.h b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockSmmMemLib.h new file mode 100644 index 0000000000..b41de0acb9 --- /dev/null +++ b/MdePkg/Test/Mock/Include/GoogleTest/Library/MockSmmMemLib.h @@ -0,0 +1,83 @@ +/** @file MockSmmMemLib.h + Google Test mocks for SmmMemLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#ifndef MOCK_SMM_MEM_LIB_H_ +#define MOCK_SMM_MEM_LIB_H_ + +#include +#include +extern "C" { + #include + #include +} + +// +// Declarations to handle usage of the SmmMemLib by creating mock +// +struct MockSmmMemLib { + MOCK_INTERFACE_DECLARATION (MockSmmMemLib); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + SmmIsBufferOutsideSmmValid, + ( + IN EFI_PHYSICAL_ADDRESS Buffer, + IN UINT64 Length + ) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + SmmCopyMemToSmram, + ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + SmmCopyMemFromSmram, + ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + SmmCopyMem, + ( + OUT VOID *DestinationBuffer, + IN CONST VOID *SourceBuffer, + IN UINTN Length + ) + ); + + MOCK_FUNCTION_DECLARATION ( + EFI_STATUS, + SmmSetMem, + ( + OUT VOID *Buffer, + IN UINTN Length, + IN UINT8 Value + ) + ); + + MOCK_FUNCTION_DECLARATION ( + BOOLEAN, + SmmCommBufferValid, + ( + IN EFI_PHYSICAL_ADDRESS Buffer, + IN UINT64 Length + ) + ); +}; + +#endif diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.cpp b/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.cpp new file mode 100644 index 0000000000..14b6a27817 --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.cpp @@ -0,0 +1,16 @@ +/** @file MockSmmMemLib.cpp + Google Test mocks for SmmMemLib + + Copyright (c) Microsoft Corporation. + SPDX-License-Identifier: BSD-2-Clause-Patent +**/ +#include + +MOCK_INTERFACE_DEFINITION (MockSmmMemLib); + +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmIsBufferOutsideSmmValid, 2, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmCopyMemToSmram, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmCopyMemFromSmram, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmCopyMem, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmSetMem, 3, EFIAPI); +MOCK_FUNCTION_DEFINITION (MockSmmMemLib, SmmCommBufferValid, 2, EFIAPI); diff --git a/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.inf b/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.inf new file mode 100644 index 0000000000..c308606028 --- /dev/null +++ b/MdePkg/Test/Mock/Library/GoogleTest/MockSmmMemLib/MockSmmMemLib.inf @@ -0,0 +1,33 @@ +## @file MockSmmMemLib.inf +# Google Test mocks for SmmMemLib +# +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: BSD-2-Clause-Patent +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = MockSmmMemLib + FILE_GUID = FA50DD00-8D5B-437C-91C7-664C55D8C386 + MODULE_TYPE = HOST_APPLICATION + VERSION_STRING = 1.0 + LIBRARY_CLASS = SmmMemLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = IA32 X64 +# + +[Sources] + MockSmmMemLib.cpp + +[Packages] + MdePkg/MdePkg.dec + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec + +[LibraryClasses] + GoogleTestLib + +[BuildOptions] + MSFT:*_*_*_CC_FLAGS = /EHsc