Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[CHERRY-PICK] MdePkg: Bring in mocks from 2311 #1139

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions MdePkg/Test/MdePkgHostTest.dsc
Original file line number Diff line number Diff line change
Expand Up @@ -63,5 +63,6 @@
MdePkg/Test/Mock/Library/Stub/StubUefiLib/StubUefiLib.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/MockPciLib/MockPciLib.inf
# MU_CHANGE [END]
Original file line number Diff line number Diff line change
@@ -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 <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
#include <Uefi.h>
#include <Pi/PiDxeCis.h>
}

//
// 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_
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ struct MockUefiBootServicesTableLib {
OUT VOID **Interface)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_RegisterProtocolNotify,
(IN EFI_GUID *Protocol,
IN EFI_EVENT Event,
OUT VOID **Registration)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
gBS_LocateHandleBuffer,
Expand Down Expand Up @@ -179,6 +187,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_
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,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
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/** @file MockPeiReportStatusCodeHandler.h
This file declares a mock of Report Status Code Handler PPI.

Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef MOCK_PEI_REPORT_STATUS_CODE_HANDLER_PPI_H
#define MOCK_PEI_REPORT_STATUS_CODE_HANDLER_PPI_H

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>
extern "C" {
#include <Uefi.h>
#include <Pi/PiPeiCis.h>
#include <Ppi/ReportStatusCodeHandler.h>
}

struct MockPeiReportStatusCodeHandler {
MOCK_INTERFACE_DECLARATION (MockPeiReportStatusCodeHandler);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Register,
(IN EFI_PEI_RSC_HANDLER_CALLBACK Callback)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Unregister,
(IN EFI_PEI_RSC_HANDLER_CALLBACK Callback)
);
};

MOCK_INTERFACE_DEFINITION (MockPeiReportStatusCodeHandler);
MOCK_FUNCTION_DEFINITION (MockPeiReportStatusCodeHandler, Register, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockPeiReportStatusCodeHandler, Unregister, 1, EFIAPI);

EFI_PEI_RSC_HANDLER_PPI PeiRscHandlerPpi = {
Register,
Unregister
};

extern "C" {
EFI_PEI_RSC_HANDLER_PPI *PeiRscHandlerPpiServices = &PeiRscHandlerPpi;
}

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
/** @file MockReportStatusCodeHandler.h
This file declares a mock of Report Status Code Handler Protocol.

Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef MOCK_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H
#define MOCK_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>

extern "C" {
#include <Uefi.h>
#include <Library/ReportStatusCodeLib.h>
#include <Protocol/ReportStatusCodeHandler.h>
}

struct MockReportStatusCodeHandler {
MOCK_INTERFACE_DECLARATION (MockReportStatusCodeHandler);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Register,
(
IN EFI_RSC_HANDLER_CALLBACK Callback,
IN EFI_TPL Tpl)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Unregister,
(IN EFI_RSC_HANDLER_CALLBACK Callback)
);
};

MOCK_INTERFACE_DEFINITION (MockReportStatusCodeHandler);
MOCK_FUNCTION_DEFINITION (MockReportStatusCodeHandler, Register, 2, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockReportStatusCodeHandler, Unregister, 1, EFIAPI);

EFI_RSC_HANDLER_PROTOCOL RscHandlerProtocol = {
Register,
Unregister
};

extern "C" {
EFI_RSC_HANDLER_PROTOCOL *RscHandlerProtocolServices = &RscHandlerProtocol;
}

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
/** @file MockSmmReportStatusCodeHandler.h
This file declares a mock of SMM Report Status Code Handler Protocol.

Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/

#ifndef MOCK_SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H
#define MOCK_SMM_REPORT_STATUS_CODE_HANDLER_PROTOCOL_H

#include <Library/GoogleTestLib.h>
#include <Library/FunctionMockLib.h>

extern "C" {
#include <Uefi.h>
#include <Library/ReportStatusCodeLib.h>
#include <Protocol/SmmReportStatusCodeHandler.h>
}

struct MockReportStatusCodeHandler {
MOCK_INTERFACE_DECLARATION (MockReportStatusCodeHandler);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Register,
(
IN EFI_SMM_RSC_HANDLER_CALLBACK Callback)
);

MOCK_FUNCTION_DECLARATION (
EFI_STATUS,
Unregister,
(IN EFI_SMM_RSC_HANDLER_CALLBACK Callback)
);
};

MOCK_INTERFACE_DEFINITION (MockReportStatusCodeHandler);
MOCK_FUNCTION_DEFINITION (MockReportStatusCodeHandler, Register, 1, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockReportStatusCodeHandler, Unregister, 1, EFIAPI);

EFI_SMM_RSC_HANDLER_PROTOCOL SmmRscHandlerProtocol = {
Register,
Unregister
};

extern "C" {
EFI_SMM_RSC_HANDLER_PROTOCOL *SmmRscHandlerProtocolServices = &SmmRscHandlerProtocol;
}

#endif
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/** @file MockDxeServicesTableLib.cpp
Google Test mocks for DxeServicesTableLib

Copyright (c) Microsoft Corporation.
SPDX-License-Identifier: BSD-2-Clause-Patent
**/
#include <GoogleTest/Library/MockDxeServicesTableLib.h>

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;
}
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CloseEvent, 1, EFIAP
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_InstallProtocolInterface, 4, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_UninstallProtocolInterface, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_HandleProtocol, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_RegisterProtocolNotify, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateHandleBuffer, 5, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_LocateProtocol, 3, EFIAPI);
MOCK_FUNCTION_DEFINITION (MockUefiBootServicesTableLib, gBS_CreateEventEx, 6, EFIAPI);
Expand All @@ -25,6 +26,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
Expand Down Expand Up @@ -118,7 +121,7 @@ static EFI_BOOT_SERVICES LocalBs = {
gBS_UninstallProtocolInterface, // EFI_UNINSTALL_PROTOCOL_INTERFACE
gBS_HandleProtocol, // EFI_HANDLE_PROTOCOL
NULL, // VOID
NULL, // EFI_REGISTER_PROTOCOL_NOTIFY
gBS_RegisterProtocolNotify, // EFI_REGISTER_PROTOCOL_NOTIFY
gBS_LocateHandle, // EFI_LOCATE_HANDLE
gBS_LocateDevicePath, // EFI_LOCATE_DEVICE_PATH
NULL, // EFI_INSTALL_CONFIGURATION_TABLE
Expand All @@ -130,8 +133,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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -28,7 +29,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
Expand Down
Loading