forked from microsoft/mu_basecore
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added MockPciIoProtocol and MockLocalApicLib (microsoft#890)
# Preface Please ensure you have read the [contribution docs](https://github.com/microsoft/mu/blob/master/CONTRIBUTING.md) prior to submitting the pull request. In particular, [pull request guidelines](https://github.com/microsoft/mu/blob/master/CONTRIBUTING.md#pull-request-best-practices). ## Description Added MockPciIoProtocol and MockLocalApicLib to be used in GoogleTests For each item, place an "x" in between `[` and `]` if true. Example: `[x]`. _(you can also check items in the GitHub UI)_ - [ ] Impacts functionality? - **Functionality** - Does the change ultimately impact how firmware functions? - Examples: Add a new library, publish a new PPI, update an algorithm, ... - [ ] Impacts security? - **Security** - Does the change have a direct security impact on an application, flow, or firmware? - Examples: Crypto algorithm change, buffer overflow fix, parameter validation improvement, ... - [ ] Breaking change? - **Breaking change** - Will anyone consuming this change experience a break in build or boot behavior? - Examples: Add a new library class, move a module to a different repo, call a function in a new library class in a pre-existing module, ... - [ ] Includes tests? - **Tests** - Does the change include any explicit test code? - Examples: Unit tests, integration tests, robot tests, ... - [ ] Includes documentation? - **Documentation** - Does the change contain explicit documentation additions outside direct code modifications (and comments)? - Examples: Update readme file, add feature readme file, link to documentation on an a separate Web page, ... ## How This Was Tested Integrated these in internal repo for a GoogleTest and ensured no build errors ## Integration Instructions N/A
- Loading branch information
1 parent
2fbaccc
commit 346a6db
Showing
7 changed files
with
177 additions
and
0 deletions.
There are no files selected for viewing
56 changes: 56 additions & 0 deletions
56
MdePkg/Test/Mock/Include/GoogleTest/Protocol/MockPciIoProtocol.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
/** @file | ||
This file declares a mock of PCI IO Protocol. | ||
Copyright (c) Microsoft Corporation. | ||
SPDX-License-Identifier: BSD-2-Clause-Patent | ||
**/ | ||
|
||
#ifndef MOCK_PCIIOPROTOCOL_H | ||
#define MOCK_PCIIOPROTOCOL_H | ||
|
||
#include <Library/GoogleTestLib.h> | ||
#include <Library/FunctionMockLib.h> | ||
|
||
extern "C" { | ||
#include <Uefi.h> | ||
#include <Protocol/PciIo.h> | ||
} | ||
|
||
// | ||
// Declarations to handle usage of the Pci Io Protocol by creating mock | ||
// | ||
struct MockPciIoConfigAccess { | ||
MOCK_INTERFACE_DECLARATION (MockPciIoConfigAccess); | ||
|
||
MOCK_FUNCTION_DECLARATION ( | ||
EFI_STATUS, | ||
MockPciIoRead, | ||
(IN EFI_PCI_IO_PROTOCOL *This, | ||
IN EFI_PCI_IO_PROTOCOL_WIDTH Width, | ||
IN UINT32 Offset, | ||
IN UINTN Count, | ||
IN OUT VOID *Buffer) | ||
); | ||
}; | ||
|
||
struct MockPciIoProtocol { | ||
MOCK_INTERFACE_DECLARATION (MockPciIoProtocol); | ||
|
||
MOCK_FUNCTION_DECLARATION ( | ||
EFI_STATUS, | ||
GetLocation, | ||
( | ||
IN EFI_PCI_IO_PROTOCOL *This, | ||
OUT UINTN *SegmentNumber, | ||
OUT UINTN *BusNumber, | ||
OUT UINTN *DeviceNumber, | ||
OUT UINTN *FunctionNumber | ||
) | ||
); | ||
}; | ||
|
||
extern "C" { | ||
extern EFI_PCI_IO_PROTOCOL *gPciIoProtocol; | ||
} | ||
|
||
#endif // MOCK_PCIIOPROTOCOL_H |
38 changes: 38 additions & 0 deletions
38
MdePkg/Test/Mock/Library/GoogleTest/Protocol/MockPciIoProtocol.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,38 @@ | ||
/** @file MockPciIoProtocol.cpp | ||
Google Test mock for Pci Io Protocol | ||
Copyright (c) Microsoft Corporation. | ||
SPDX-License-Identifier: BSD-2-Clause-Patent | ||
**/ | ||
|
||
#include <GoogleTest/Protocol/MockPciIoProtocol.h> | ||
|
||
MOCK_INTERFACE_DEFINITION (MockPciIoConfigAccess); | ||
MOCK_FUNCTION_DEFINITION (MockPciIoConfigAccess, MockPciIoRead, 5, EFIAPI); | ||
|
||
MOCK_INTERFACE_DEFINITION (MockPciIoProtocol); | ||
MOCK_FUNCTION_DEFINITION (MockPciIoProtocol, GetLocation, 5, EFIAPI); | ||
|
||
EFI_PCI_IO_PROTOCOL PCI_IO_PROTOCOL_MOCK = { | ||
NULL, // EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollMem; | ||
NULL, // EFI_PCI_IO_PROTOCOL_POLL_IO_MEM PollIo; | ||
{ NULL, NULL }, // EFI_PCI_IO_PROTOCOL_ACCESS Mem; | ||
{ NULL, NULL }, // EFI_PCI_IO_PROTOCOL_ACCESS Io; | ||
{ MockPciIoRead, NULL }, // EFI_PCI_IO_PROTOCOL_CONFIG_ACCESS Pci; | ||
NULL, // EFI_PCI_IO_PROTOCOL_COPY_MEM CopyMem; | ||
NULL, // EFI_PCI_IO_PROTOCOL_MAP Map; | ||
NULL, // EFI_PCI_IO_PROTOCOL_UNMAP Unmap; | ||
NULL, // EFI_PCI_IO_PROTOCOL_ALLOCATE_BUFFER AllocateBuffer; | ||
NULL, // EFI_PCI_IO_PROTOCOL_FREE_BUFFER FreeBuffer; | ||
NULL, // EFI_PCI_IO_PROTOCOL_FLUSH Flush; | ||
GetLocation, // EFI_PCI_IO_PROTOCOL_GET_LOCATION GetLocation; | ||
NULL, // EFI_PCI_IO_PROTOCOL_ATTRIBUTES Attributes; | ||
NULL, // EFI_PCI_IO_PROTOCOL_GET_BAR_ATTRIBUTES GetBarAttributes; | ||
NULL, // EFI_PCI_IO_PROTOCOL_SET_BAR_ATTRIBUTES SetBarAttributes; | ||
0, // UINT64 RomSize; | ||
NULL, // VOID *RomImage; | ||
}; | ||
|
||
extern "C" { | ||
EFI_PCI_IO_PROTOCOL *gPciIoProtocol = &PCI_IO_PROTOCOL_MOCK; | ||
}; |
32 changes: 32 additions & 0 deletions
32
UefiCpuPkg/Test/Mock/Include/GoogleTest/Library/MockLocalApicLib.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
/** @file MockLocalApicLib.h | ||
Google Test mocks for LocalApicLib | ||
Copyright (c) Microsoft Corporation. | ||
SPDX-License-Identifier: BSD-2-Clause-Patent | ||
**/ | ||
|
||
#ifndef MOCK_LOCAL_APIC_LIB_H_ | ||
#define MOCK_LOCAL_APIC_LIB_H_ | ||
|
||
#include <Library/GoogleTestLib.h> | ||
#include <Library/FunctionMockLib.h> | ||
extern "C" { | ||
#include <Library/LocalApicLib.h> | ||
} | ||
|
||
struct MockLocalApicLib { | ||
MOCK_INTERFACE_DECLARATION (MockLocalApicLib); | ||
|
||
MOCK_FUNCTION_DECLARATION ( | ||
VOID, | ||
GetProcessorLocationByApicId, | ||
( | ||
IN UINT32 InitialApicId, | ||
OUT UINT32 *Package OPTIONAL, | ||
OUT UINT32 *Core OPTIONAL, | ||
OUT UINT32 *Thread OPTIONAL | ||
) | ||
); | ||
}; | ||
|
||
#endif //MOCK_LOCAL_APIC_LIB_H_ |
11 changes: 11 additions & 0 deletions
11
UefiCpuPkg/Test/Mock/Library/GoogleTest/MockLocalApicLib/MockLocalApicLib.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
/** @file MockLocalApicLib.cpp | ||
Google Test mocks for LocalApicLib | ||
Copyright (c) Microsoft Corporation. | ||
SPDX-License-Identifier: BSD-2-Clause-Patent | ||
**/ | ||
|
||
#include <GoogleTest/Library/MockLocalApicLib.h> | ||
|
||
MOCK_INTERFACE_DEFINITION (MockLocalApicLib); | ||
MOCK_FUNCTION_DEFINITION (MockLocalApicLib, GetProcessorLocationByApicId, 4, EFIAPI); |
34 changes: 34 additions & 0 deletions
34
UefiCpuPkg/Test/Mock/Library/GoogleTest/MockLocalApicLib/MockLocalApicLib.inf
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
## @file MockLocalApicLib.inf | ||
# Google Test mocks for LocalApicLib | ||
# | ||
# Copyright (c) Microsoft Corporation. | ||
# SPDX-License-Identifier: BSD-2-Clause-Patent | ||
## | ||
|
||
[Defines] | ||
INF_VERSION = 0x00010005 | ||
BASE_NAME = MockLocalApicLib | ||
FILE_GUID = 33E27393-001E-4915-8AAA-0C1C9465E655 | ||
MODULE_TYPE = HOST_APPLICATION | ||
VERSION_STRING = 1.0 | ||
LIBRARY_CLASS = LocalApicLib | ||
|
||
# | ||
# The following information is for reference only and not required by the build tools. | ||
# | ||
# VALID_ARCHITECTURES = IA32 X64 | ||
# | ||
|
||
[Sources] | ||
MockLocalApicLib.cpp | ||
|
||
[Packages] | ||
UefiCpuPkg/UefiCpuPkg.dec | ||
MdePkg/MdePkg.dec | ||
UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec | ||
|
||
[LibraryClasses] | ||
GoogleTestLib | ||
|
||
[BuildOptions] | ||
MSFT:*_*_*_CC_FLAGS = /EHsc |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters