Skip to content

Commit 456eada

Browse files
TsunFengdependabot[bot]apop5makubackiTaylorBeebe
authored
Add mock functions under MockUefiLib and Create Mock for AcpiTable, FirmwareVolume2 and AcpiSystemDescriptionTable protocol (#1106)
## Description Add mock functions under MockUefiLib and Create Mock for AcpiTable, FirmwareVolume2 and AcpiSystemDescriptionTable protocol - [ ] Impacts functionality? - [ ] Impacts security? - [ ] Breaking change? - [x] Includes tests? - [ ] Includes documentation? ## How This Was Tested Unit tests component can call these mock functions success ## Integration Instructions N/A --------- Signed-off-by: dependabot[bot] <[email protected]> Signed-off-by: Ethan Hsu <[email protected]> Signed-off-by: Vivian Nowka-Keane <[email protected]> Signed-off-by: TsunFeng <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aaron Pop <[email protected]> Co-authored-by: Michael Kubacki <[email protected]> Co-authored-by: Taylor Beebe <[email protected]> Co-authored-by: pohanch <[email protected]> Co-authored-by: kenlautner <[email protected]> Co-authored-by: Oliver Smith-Denny <[email protected]> Co-authored-by: Sean Brogan <[email protected]> Co-authored-by: Aaron <[email protected]> Co-authored-by: yhsu3 <[email protected]> Co-authored-by: Vivian Nowka-Keane <[email protected]> Co-authored-by: v-sbolisetti <[email protected]> Co-authored-by: YiTa-AMI <[email protected]>
1 parent a952e84 commit 456eada

File tree

21 files changed

+657
-5
lines changed

21 files changed

+657
-5
lines changed

MdeModulePkg/Bus/Pci/PciBusDxe/PciLib.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1306,7 +1306,7 @@ PciScanBus (
13061306
PciDevice->DevicePath,
13071307
PciAddress,
13081308
&State,
1309-
(VOID **)&Descriptors, // MU_CHANGE - CodeQL Change
1309+
(VOID **)&DescriptorsBuffer, // MU_CHANGE - CodeQL Change
13101310
&Attributes
13111311
);
13121312

MdePkg/Test/MdePkgHostTest.dsc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,6 @@
6363
MdePkg/Test/Mock/Library/Stub/StubUefiLib/StubUefiLib.inf
6464
MdePkg/Test/Mock/Library/GoogleTest/MockPciExpressLib/MockPciExpressLib.inf
6565
MdePkg/Test/Mock/Library/GoogleTest/MockUefiDevicePathLib/MockUefiDevicePathLib.inf
66+
MdePkg/Test/Mock/Library/GoogleTest/MockDxeServicesTableLib/MockDxeServicesTableLib.inf
6667
MdePkg/Test/Mock/Library/GoogleTest/MockPciLib/MockPciLib.inf
6768
# MU_CHANGE [END]
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
/** @file MockDxeServicesTableLib.h
2+
Google Test mocks for DxeServicesTableLib
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_DXE_SERVICES_TABLE_LIB_H_
9+
#define MOCK_DXE_SERVICES_TABLE_LIB_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
extern "C" {
14+
#include <Uefi.h>
15+
#include <Pi/PiDxeCis.h>
16+
}
17+
18+
//
19+
// Declarations to handle usage of the DxeServicesTableLib by creating mock
20+
//
21+
struct MockDxeServicesTableLib {
22+
MOCK_INTERFACE_DECLARATION (MockDxeServicesTableLib);
23+
24+
MOCK_FUNCTION_DECLARATION (
25+
EFI_STATUS,
26+
gDS_Dispatch,
27+
()
28+
);
29+
};
30+
31+
#endif // MOCK_UEFI_DXE_SERVICES_TABLE_LIB_H_

MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiBootServicesTableLib.h

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,14 @@ struct MockUefiBootServicesTableLib {
7272
OUT VOID **Interface)
7373
);
7474

75+
MOCK_FUNCTION_DECLARATION (
76+
EFI_STATUS,
77+
gBS_RegisterProtocolNotify,
78+
(IN EFI_GUID *Protocol,
79+
IN EFI_EVENT Event,
80+
OUT VOID **Registration)
81+
);
82+
7583
MOCK_FUNCTION_DECLARATION (
7684
EFI_STATUS,
7785
gBS_LocateHandleBuffer,
@@ -179,6 +187,23 @@ struct MockUefiBootServicesTableLib {
179187
IN OUT UINTN *BufferSize,
180188
OUT EFI_HANDLE *Buffer)
181189
);
190+
191+
MOCK_FUNCTION_DECLARATION (
192+
EFI_STATUS,
193+
gBS_ConnectController,
194+
(IN EFI_HANDLE ControllerHandle,
195+
IN EFI_HANDLE *DriverImageHandle OPTIONAL,
196+
IN EFI_DEVICE_PATH_PROTOCOL *RemainingDevicePath OPTIONAL,
197+
IN BOOLEAN Recursive)
198+
);
199+
200+
MOCK_FUNCTION_DECLARATION (
201+
EFI_STATUS,
202+
gBS_DisconnectController,
203+
(IN EFI_HANDLE ControllerHandle,
204+
IN EFI_HANDLE DriverImageHandle OPTIONAL,
205+
IN EFI_HANDLE ChildHandle OPTIONAL)
206+
);
182207
};
183208

184209
#endif // MOCK_UEFI_BOOT_SERVICES_TABLE_LIB_H_

MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiLib.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,15 @@ struct MockUefiLib {
8989
IN CONST EFI_COMPONENT_NAME_PROTOCOL *ComponentName OPTIONAL,
9090
IN CONST EFI_COMPONENT_NAME2_PROTOCOL *ComponentName2 OPTIONAL)
9191
);
92+
93+
MOCK_FUNCTION_DECLARATION (
94+
EFI_STATUS,
95+
EfiCreateEventReadyToBootEx,
96+
(IN EFI_TPL NotifyTpl,
97+
IN EFI_EVENT_NOTIFY NotifyFunction OPTIONAL,
98+
IN VOID *NotifyContext OPTIONAL,
99+
OUT EFI_EVENT *ReadyToBootEvent)
100+
);
92101
};
93102

94103
#endif

MdePkg/Test/Mock/Include/GoogleTest/Library/MockUefiRuntimeServicesTableLib.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,15 @@ struct MockUefiRuntimeServicesTableLib {
4444
(OUT EFI_TIME *Time,
4545
OUT EFI_TIME_CAPABILITIES *Capabilities OPTIONAL)
4646
);
47+
48+
MOCK_FUNCTION_DECLARATION (
49+
VOID,
50+
gRT_ResetSystem,
51+
(IN EFI_RESET_TYPE ResetType,
52+
IN EFI_STATUS ResetStatus,
53+
IN UINTN DataSize,
54+
IN VOID *ResetData OPTIONAL)
55+
);
4756
};
4857

4958
#endif
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/** @file MockPeiReportStatusCodeHandler.h
2+
This file declares a mock of Report Status Code Handler PPI.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_PEI_REPORT_STATUS_CODE_HANDLER_PPI_H
9+
#define MOCK_PEI_REPORT_STATUS_CODE_HANDLER_PPI_H
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
extern "C" {
14+
#include <Uefi.h>
15+
#include <Pi/PiPeiCis.h>
16+
#include <Ppi/ReportStatusCodeHandler.h>
17+
}
18+
19+
struct MockPeiReportStatusCodeHandler {
20+
MOCK_INTERFACE_DECLARATION (MockPeiReportStatusCodeHandler);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
EFI_STATUS,
24+
Register,
25+
(IN EFI_PEI_RSC_HANDLER_CALLBACK Callback)
26+
);
27+
28+
MOCK_FUNCTION_DECLARATION (
29+
EFI_STATUS,
30+
Unregister,
31+
(IN EFI_PEI_RSC_HANDLER_CALLBACK Callback)
32+
);
33+
};
34+
35+
MOCK_INTERFACE_DEFINITION (MockPeiReportStatusCodeHandler);
36+
MOCK_FUNCTION_DEFINITION (MockPeiReportStatusCodeHandler, Register, 1, EFIAPI);
37+
MOCK_FUNCTION_DEFINITION (MockPeiReportStatusCodeHandler, Unregister, 1, EFIAPI);
38+
39+
EFI_PEI_RSC_HANDLER_PPI PeiRscHandlerPpi = {
40+
Register,
41+
Unregister
42+
};
43+
44+
extern "C" {
45+
EFI_PEI_RSC_HANDLER_PPI *PeiRscHandlerPpiServices = &PeiRscHandlerPpi;
46+
}
47+
48+
#endif
Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,139 @@
1+
/** @file MockAcpiSystemDescriptionTable.h
2+
This file declares a mock of ACPI system description tables protocol.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
9+
#define MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Protocol/AcpiSystemDescriptionTable.h>
17+
}
18+
19+
struct MockAcpiSdtProtocol {
20+
MOCK_INTERFACE_DECLARATION (MockAcpiSdtProtocol);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
EFI_STATUS,
24+
GetAcpiTable,
25+
(
26+
IN UINTN Index,
27+
OUT EFI_ACPI_SDT_HEADER **Table,
28+
OUT EFI_ACPI_TABLE_VERSION *Version,
29+
OUT UINTN *TableKey
30+
)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
RegisterNotify,
36+
(
37+
IN BOOLEAN Register,
38+
IN EFI_ACPI_NOTIFICATION_FN Notification
39+
)
40+
);
41+
42+
MOCK_FUNCTION_DECLARATION (
43+
EFI_STATUS,
44+
Open,
45+
(
46+
IN VOID *Buffer,
47+
OUT EFI_ACPI_HANDLE *Handle
48+
)
49+
);
50+
51+
MOCK_FUNCTION_DECLARATION (
52+
EFI_STATUS,
53+
OpenSdt,
54+
(
55+
IN UINTN TableKey,
56+
OUT EFI_ACPI_HANDLE *Handle
57+
)
58+
);
59+
60+
MOCK_FUNCTION_DECLARATION (
61+
EFI_STATUS,
62+
Close,
63+
(
64+
IN EFI_ACPI_HANDLE Handle
65+
)
66+
);
67+
68+
MOCK_FUNCTION_DECLARATION (
69+
EFI_STATUS,
70+
GetChild,
71+
(
72+
IN EFI_ACPI_HANDLE ParentHandle,
73+
IN OUT EFI_ACPI_HANDLE *Handle
74+
)
75+
);
76+
77+
MOCK_FUNCTION_DECLARATION (
78+
EFI_STATUS,
79+
GetOption,
80+
(
81+
IN EFI_ACPI_HANDLE Handle,
82+
IN UINTN Index,
83+
OUT EFI_ACPI_DATA_TYPE *DataType,
84+
OUT CONST VOID **Data,
85+
OUT UINTN *DataSize
86+
)
87+
);
88+
89+
MOCK_FUNCTION_DECLARATION (
90+
EFI_STATUS,
91+
SetOption,
92+
(
93+
IN EFI_ACPI_HANDLE Handle,
94+
IN UINTN Index,
95+
IN CONST VOID *Data,
96+
IN UINTN DataSize
97+
)
98+
);
99+
100+
MOCK_FUNCTION_DECLARATION (
101+
EFI_STATUS,
102+
FindPath,
103+
(
104+
IN EFI_ACPI_HANDLE HandleIn,
105+
IN VOID *AcpiPath,
106+
OUT EFI_ACPI_HANDLE *HandleOut
107+
)
108+
);
109+
};
110+
111+
MOCK_INTERFACE_DEFINITION (MockAcpiSdtProtocol);
112+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetAcpiTable, 4, EFIAPI);
113+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, RegisterNotify, 2, EFIAPI);
114+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, Open, 2, EFIAPI);
115+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, OpenSdt, 2, EFIAPI);
116+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, Close, 1, EFIAPI);
117+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetChild, 2, EFIAPI);
118+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, GetOption, 5, EFIAPI);
119+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, SetOption, 4, EFIAPI);
120+
MOCK_FUNCTION_DEFINITION (MockAcpiSdtProtocol, FindPath, 3, EFIAPI);
121+
122+
EFI_ACPI_SDT_PROTOCOL ACPI_SDT_PROTOCOL_INSTANCE = {
123+
0,
124+
GetAcpiTable, // EFI_ACPI_TABLE_INSTALL_ACPI_TABLE
125+
RegisterNotify, // EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE
126+
Open,
127+
OpenSdt,
128+
Close,
129+
GetChild,
130+
GetOption,
131+
SetOption,
132+
FindPath
133+
};
134+
135+
extern "C" {
136+
EFI_ACPI_SDT_PROTOCOL *gAcpiSdtProtocol = &ACPI_SDT_PROTOCOL_INSTANCE;
137+
}
138+
139+
#endif // MOCK_ACPI_SYSTEM_DESCRIPTION_TABLE_H_
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
/** @file MockAcpiTable.h
2+
This file declares a mock of Acpi table protocol.
3+
4+
Copyright (c) Microsoft Corporation.
5+
SPDX-License-Identifier: BSD-2-Clause-Patent
6+
**/
7+
8+
#ifndef MOCK_ACPI_TABLE_H_
9+
#define MOCK_ACPI_TABLE_H_
10+
11+
#include <Library/GoogleTestLib.h>
12+
#include <Library/FunctionMockLib.h>
13+
14+
extern "C" {
15+
#include <Uefi.h>
16+
#include <Protocol/AcpiTable.h>
17+
}
18+
19+
struct MockAcpiTableProtocol {
20+
MOCK_INTERFACE_DECLARATION (MockAcpiTableProtocol);
21+
22+
MOCK_FUNCTION_DECLARATION (
23+
EFI_STATUS,
24+
InstallAcpiTable,
25+
(
26+
IN EFI_ACPI_TABLE_PROTOCOL *This,
27+
IN VOID *AcpiTableBuffer,
28+
IN UINTN AcpiTableBufferSize,
29+
OUT UINTN *TableKey
30+
)
31+
);
32+
33+
MOCK_FUNCTION_DECLARATION (
34+
EFI_STATUS,
35+
UninstallAcpiTable,
36+
(
37+
IN EFI_ACPI_TABLE_PROTOCOL *This,
38+
IN UINTN TableKey
39+
)
40+
);
41+
};
42+
43+
MOCK_INTERFACE_DEFINITION (MockAcpiTableProtocol);
44+
MOCK_FUNCTION_DEFINITION (MockAcpiTableProtocol, InstallAcpiTable, 4, EFIAPI);
45+
MOCK_FUNCTION_DEFINITION (MockAcpiTableProtocol, UninstallAcpiTable, 2, EFIAPI);
46+
47+
EFI_ACPI_TABLE_PROTOCOL ACPI_TABLE_PROTOCOL_INSTANCE = {
48+
InstallAcpiTable, // EFI_ACPI_TABLE_INSTALL_ACPI_TABLE
49+
UninstallAcpiTable // EFI_ACPI_TABLE_UNINSTALL_ACPI_TABLE
50+
};
51+
52+
extern "C" {
53+
EFI_ACPI_TABLE_PROTOCOL *gAcpiTableProtocol = &ACPI_TABLE_PROTOCOL_INSTANCE;
54+
}
55+
56+
#endif // MOCK_ACPI_TABLE_H_

0 commit comments

Comments
 (0)