* [PATCH EDK2 v2 0/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
@ 2021-07-29 8:01 wenyi,xie
2021-07-29 8:01 ` [PATCH EDK2 v2 1/1] " wenyi,xie
0 siblings, 1 reply; 9+ messages in thread
From: wenyi,xie @ 2021-07-29 8:01 UTC (permalink / raw)
To: devel, jian.j.wang, hao.a.wu; +Cc: songdongkuang, xiewenyi2
Main Changes since v1 :
1.add brief summary in commit message
2.change the copyright in UefiSortLibUnitTest.inf
3.refine the indent in UnitTestingEntry
Wenyi Xie (1):
MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf | 32 ++++
MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188 ++++++++++++++++++++
3 files changed, 226 insertions(+)
create mode 100644 MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
create mode 100644 MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
--
2.20.1.windows.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-07-29 8:01 [PATCH EDK2 v2 0/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test wenyi,xie
@ 2021-07-29 8:01 ` wenyi,xie
2021-07-29 8:25 ` Wu, Hao A
0 siblings, 1 reply; 9+ messages in thread
From: wenyi,xie @ 2021-07-29 8:01 UTC (permalink / raw)
To: devel, jian.j.wang, hao.a.wu; +Cc: songdongkuang, xiewenyi2
Adding two unit test case for UefiSortLib. One is a test on
sorting an array of UINT32 by using PerformQuickSort, another
is a test on comparing the same buffer by using StringCompare.
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
---
MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf | 32 ++++
MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188 ++++++++++++++++++++
3 files changed, 226 insertions(+)
diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
index 4da4692c8451..c9ec835df65d 100644
--- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
+++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
@@ -41,3 +41,9 @@ [Components]
<PcdsFixedAtBuild>
gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDisable|TRUE
}
+
+ MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
+ <LibraryClasses>
+ UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
+ DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
+ }
diff --git a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
new file mode 100644
index 000000000000..85d8dcd69619
--- /dev/null
+++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
@@ -0,0 +1,32 @@
+## @file
+# This is a unit test for the UefiSortLib.
+#
+# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
+# SPDX-License-Identifier: BSD-2-Clause-Patent
+##
+
+[Defines]
+ INF_VERSION = 0x00010017
+ BASE_NAME = UefiSortLibUnitTest
+ FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
+ VERSION_STRING = 1.0
+ MODULE_TYPE = HOST_APPLICATION
+
+#
+# The following information is for reference only and not required by the build tools.
+#
+# VALID_ARCHITECTURES = IA32 X64
+#
+
+[Sources]
+ UefiSortLibUnitTest.c
+
+[Packages]
+ MdePkg/MdePkg.dec
+ MdeModulePkg/MdeModulePkg.dec
+ UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
+
+[LibraryClasses]
+ UnitTestLib
+ DebugLib
+ UefiSortLib
diff --git a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
new file mode 100644
index 000000000000..71f30d8b9f7f
--- /dev/null
+++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
@@ -0,0 +1,188 @@
+/** @file
+ Unit tests of the UefiSortLib
+
+ Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
+ SPDX-License-Identifier: BSD-2-Clause-Patent
+
+**/
+
+#include <stdio.h>
+#include <string.h>
+#include <stdarg.h>
+#include <stddef.h>
+#include <setjmp.h>
+#include <cmocka.h>
+
+#include <Uefi.h>
+#include <Library/BaseLib.h>
+#include <Library/DebugLib.h>
+#include <Library/MemoryAllocationLib.h>
+
+#include <Library/UnitTestLib.h>
+#include <Library/SortLib.h>
+
+#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
+#define UNIT_TEST_APP_VERSION "1.0"
+
+#define TEST_ARRAY_SIZE_9 9
+
+/**
+ The function is called by PerformQuickSort to compare int values.
+
+ @param[in] Left The pointer to first buffer.
+ @param[in] Right The pointer to second buffer.
+
+ @retval 0 Buffer1 equal to Buffer2.
+ @return <0 Buffer1 is less than Buffer2.
+ @return >0 Buffer1 is greater than Buffer2.
+
+**/
+INTN
+EFIAPI
+TestCompareFunction (
+ IN CONST VOID *Left,
+ IN CONST VOID *Right
+ )
+{
+ if (*(UINT32*)Right > *(UINT32*)Left) {
+ return 1;
+ } else if (*(UINT32*)Right < *(UINT32*)Left) {
+ return -1;
+ }
+
+ return 0;
+}
+
+/**
+ Unit test for PerformQuickSort () API of the UefiSortLib.
+
+ @param[in] Context [Optional] An optional parameter that enables:
+ 1) test-case reuse with varied parameters and
+ 2) test-case re-entry for Target tests that need a
+ reboot. This parameter is a VOID* and it is the
+ responsibility of the test author to ensure that the
+ contents are well understood by all test cases that may
+ consume it.
+
+ @retval UNIT_TEST_PASSED The Unit test has completed and the test
+ case was successful.
+ @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
+**/
+UNIT_TEST_STATUS
+EFIAPI
+SortUINT32ArrayShouldSucceed (
+ IN UNIT_TEST_CONTEXT Context
+ )
+{
+ UINTN TestCount = TEST_ARRAY_SIZE_9;
+ UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
+ UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
+
+ PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32), (SORT_COMPARE)TestCompareFunction);
+ UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) * TEST_ARRAY_SIZE_9);
+
+ return UNIT_TEST_PASSED;
+}
+
+/**
+ Unit test for StringCompare () API of the UefiSortLib.
+
+ @param[in] Context [Optional] An optional parameter that enables:
+ 1) test-case reuse with varied parameters and
+ 2) test-case re-entry for Target tests that need a
+ reboot. This parameter is a VOID* and it is the
+ responsibility of the test author to ensure that the
+ contents are well understood by all test cases that may
+ consume it.
+
+ @retval UNIT_TEST_PASSED The Unit test has completed and the test
+ case was successful.
+ @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
+**/
+UNIT_TEST_STATUS
+EFIAPI
+CompareSameBufferShouldSucceed (
+ IN UNIT_TEST_CONTEXT Context
+ )
+{
+ INTN retval;
+ CONST CHAR16* TestBuffer[] = { L"abcdefg" };
+
+ retval = StringCompare (TestBuffer, TestBuffer);
+ UT_ASSERT_TRUE (retval == 0);
+
+ return UNIT_TEST_PASSED;
+}
+
+/**
+ Initialze the unit test framework, suite, and unit tests for the
+ UefiSortLib and run the UefiSortLib unit test.
+
+ @retval EFI_SUCCESS All test cases were dispatched.
+ @retval EFI_OUT_OF_RESOURCES There are not enough resources available to
+ initialize the unit tests.
+**/
+STATIC
+EFI_STATUS
+EFIAPI
+UnitTestingEntry (
+ VOID
+ )
+{
+ EFI_STATUS Status;
+ UNIT_TEST_FRAMEWORK_HANDLE Framework;
+ UNIT_TEST_SUITE_HANDLE SortTests;
+
+ Framework = NULL;
+
+ DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, UNIT_TEST_APP_VERSION ));
+
+ //
+ // Start setting up the test framework for running the tests.
+ //
+ Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME, gEfiCallerBaseName, UNIT_TEST_APP_VERSION);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status = %r\n", Status));
+ goto EXIT;
+ }
+
+ //
+ // Populate the UefiSortLib Unit Test Suite.
+ //
+ Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib Sort Tests", "UefiSortLib.SortLib", NULL, NULL);
+ if (EFI_ERROR (Status)) {
+ DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for UefiSortLib API Tests\n"));
+ Status = EFI_OUT_OF_RESOURCES;
+ goto EXIT;
+ }
+
+ //
+ // --------------Suite--------Description------------Name--------------Function----------------Pre---Post---Context-----------
+ //
+ AddTestCase (SortTests, "Sort the Array", "Sort", SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
+ AddTestCase (SortTests, "Compare the Buffer", "Compare", CompareSameBufferShouldSucceed, NULL, NULL, NULL);
+
+ //
+ // Execute the tests.
+ //
+ Status = RunAllTestSuites (Framework);
+
+EXIT:
+ if (Framework) {
+ FreeUnitTestFramework (Framework);
+ }
+
+ return Status;
+}
+
+/**
+ Standard POSIX C entry point for host based unit test execution.
+**/
+int
+main (
+ int argc,
+ char *argv[]
+ )
+{
+ return UnitTestingEntry ();
+}
--
2.20.1.windows.1
^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-07-29 8:01 ` [PATCH EDK2 v2 1/1] " wenyi,xie
@ 2021-07-29 8:25 ` Wu, Hao A
2021-08-02 1:56 ` [edk2-devel] " Wu, Hao A
0 siblings, 1 reply; 9+ messages in thread
From: Wu, Hao A @ 2021-07-29 8:25 UTC (permalink / raw)
To: Wenyi Xie, devel@edk2.groups.io, Wang, Jian J; +Cc: songdongkuang@huawei.com
> -----Original Message-----
> From: Wenyi Xie <xiewenyi2@huawei.com>
> Sent: Thursday, July 29, 2021 4:01 PM
> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>; Wu, Hao A
> <hao.a.wu@intel.com>
> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib
> unit test
>
> Adding two unit test case for UefiSortLib. One is a test on sorting an array of
> UINT32 by using PerformQuickSort, another is a test on comparing the same
> buffer by using StringCompare.
Thanks.
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
I will wait a couple days before merging to see if any additional comment from other reviewers.
Best Regards,
Hao Wu
>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
> ---
> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf | 32
> ++++
> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188
> ++++++++++++++++++++
> 3 files changed, 226 insertions(+)
>
> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> index 4da4692c8451..c9ec835df65d 100644
> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> @@ -41,3 +41,9 @@ [Components]
> <PcdsFixedAtBuild>
>
> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
> able|TRUE
> }
> +
> + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
> + <LibraryClasses>
> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> +
> + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
> + }
> diff --git
> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> new file mode 100644
> index 000000000000..85d8dcd69619
> --- /dev/null
> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> @@ -0,0 +1,32 @@
> +## @file
> +# This is a unit test for the UefiSortLib.
> +#
> +# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved #
> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
> +
> +[Defines]
> + INF_VERSION = 0x00010017
> + BASE_NAME = UefiSortLibUnitTest
> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
> + VERSION_STRING = 1.0
> + MODULE_TYPE = HOST_APPLICATION
> +
> +#
> +# The following information is for reference only and not required by the
> build tools.
> +#
> +# VALID_ARCHITECTURES = IA32 X64
> +#
> +
> +[Sources]
> + UefiSortLibUnitTest.c
> +
> +[Packages]
> + MdePkg/MdePkg.dec
> + MdeModulePkg/MdeModulePkg.dec
> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> +
> +[LibraryClasses]
> + UnitTestLib
> + DebugLib
> + UefiSortLib
> diff --git
> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> new file mode 100644
> index 000000000000..71f30d8b9f7f
> --- /dev/null
> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> @@ -0,0 +1,188 @@
> +/** @file
> + Unit tests of the UefiSortLib
> +
> + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
> + SPDX-License-Identifier: BSD-2-Clause-Patent
> +
> +**/
> +
> +#include <stdio.h>
> +#include <string.h>
> +#include <stdarg.h>
> +#include <stddef.h>
> +#include <setjmp.h>
> +#include <cmocka.h>
> +
> +#include <Uefi.h>
> +#include <Library/BaseLib.h>
> +#include <Library/DebugLib.h>
> +#include <Library/MemoryAllocationLib.h>
> +
> +#include <Library/UnitTestLib.h>
> +#include <Library/SortLib.h>
> +
> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
> +#define UNIT_TEST_APP_VERSION "1.0"
> +
> +#define TEST_ARRAY_SIZE_9 9
> +
> +/**
> + The function is called by PerformQuickSort to compare int values.
> +
> + @param[in] Left The pointer to first buffer.
> + @param[in] Right The pointer to second buffer.
> +
> + @retval 0 Buffer1 equal to Buffer2.
> + @return <0 Buffer1 is less than Buffer2.
> + @return >0 Buffer1 is greater than Buffer2.
> +
> +**/
> +INTN
> +EFIAPI
> +TestCompareFunction (
> + IN CONST VOID *Left,
> + IN CONST VOID *Right
> + )
> +{
> + if (*(UINT32*)Right > *(UINT32*)Left) {
> + return 1;
> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
> + return -1;
> + }
> +
> + return 0;
> +}
> +
> +/**
> + Unit test for PerformQuickSort () API of the UefiSortLib.
> +
> + @param[in] Context [Optional] An optional parameter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +SortUINT32ArrayShouldSucceed (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + UINTN TestCount = TEST_ARRAY_SIZE_9;
> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
> +
> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
> + (SORT_COMPARE)TestCompareFunction);
> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) *
> + TEST_ARRAY_SIZE_9);
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Unit test for StringCompare () API of the UefiSortLib.
> +
> + @param[in] Context [Optional] An optional parameter that enables:
> + 1) test-case reuse with varied parameters and
> + 2) test-case re-entry for Target tests that need a
> + reboot. This parameter is a VOID* and it is the
> + responsibility of the test author to ensure that the
> + contents are well understood by all test cases that may
> + consume it.
> +
> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> test
> + case was successful.
> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has failed.
> +**/
> +UNIT_TEST_STATUS
> +EFIAPI
> +CompareSameBufferShouldSucceed (
> + IN UNIT_TEST_CONTEXT Context
> + )
> +{
> + INTN retval;
> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
> +
> + retval = StringCompare (TestBuffer, TestBuffer); UT_ASSERT_TRUE
> + (retval == 0);
> +
> + return UNIT_TEST_PASSED;
> +}
> +
> +/**
> + Initialze the unit test framework, suite, and unit tests for the
> + UefiSortLib and run the UefiSortLib unit test.
> +
> + @retval EFI_SUCCESS All test cases were dispatched.
> + @retval EFI_OUT_OF_RESOURCES There are not enough resources
> available to
> + initialize the unit tests.
> +**/
> +STATIC
> +EFI_STATUS
> +EFIAPI
> +UnitTestingEntry (
> + VOID
> + )
> +{
> + EFI_STATUS Status;
> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> + UNIT_TEST_SUITE_HANDLE SortTests;
> +
> + Framework = NULL;
> +
> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> + UNIT_TEST_APP_VERSION ));
> +
> + //
> + // Start setting up the test framework for running the tests.
> + //
> + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME,
> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
> = %r\n", Status));
> + goto EXIT;
> + }
> +
> + //
> + // Populate the UefiSortLib Unit Test Suite.
> + //
> + Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib
> + Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if (EFI_ERROR (Status)) {
> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for UefiSortLib
> API Tests\n"));
> + Status = EFI_OUT_OF_RESOURCES;
> + goto EXIT;
> + }
> +
> + //
> + //
> + --------------Suite--------Description------------Name--------------Fu
> + nction----------------Pre---Post---Context-----------
> + //
> + AddTestCase (SortTests, "Sort the Array", "Sort",
> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
> +
> + //
> + // Execute the tests.
> + //
> + Status = RunAllTestSuites (Framework);
> +
> +EXIT:
> + if (Framework) {
> + FreeUnitTestFramework (Framework);
> + }
> +
> + return Status;
> +}
> +
> +/**
> + Standard POSIX C entry point for host based unit test execution.
> +**/
> +int
> +main (
> + int argc,
> + char *argv[]
> + )
> +{
> + return UnitTestingEntry ();
> +}
> --
> 2.20.1.windows.1
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-07-29 8:25 ` Wu, Hao A
@ 2021-08-02 1:56 ` Wu, Hao A
2021-08-04 8:04 ` wenyi,xie
0 siblings, 1 reply; 9+ messages in thread
From: Wu, Hao A @ 2021-08-02 1:56 UTC (permalink / raw)
To: devel@edk2.groups.io, Wenyi Xie; +Cc: songdongkuang@huawei.com, Wang, Jian J
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Thursday, July 29, 2021 4:26 PM
> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io; Wang, Jian
> J <jian.j.wang@intel.com>
> Cc: songdongkuang@huawei.com
> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>
> > -----Original Message-----
> > From: Wenyi Xie <xiewenyi2@huawei.com>
> > Sent: Thursday, July 29, 2021 4:01 PM
> > To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>; Wu,
> > Hao A <hao.a.wu@intel.com>
> > Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
> > Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib
> > unit test
> >
> > Adding two unit test case for UefiSortLib. One is a test on sorting an
> > array of
> > UINT32 by using PerformQuickSort, another is a test on comparing the
> > same buffer by using StringCompare.
>
>
> Thanks.
> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
Sorry, I found that there are a couple of coding format style check failures when merging the patch.
Could you help to resolve them and then create a test pull request on the GitHub for verification? Thanks in advance.
(I think you can take the case under MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/ for reference.)
Error details:
2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
2021-08-02T01:09:28.5960733Z ==============================================================================
2021-08-02T01:09:28.5961018Z Task : Command Line
2021-08-02T01:09:28.5961258Z Description : Run a command line with arguments
2021-08-02T01:09:28.5961502Z Version : 1.1.3
2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
2021-08-02T01:09:28.5962259Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735)
2021-08-02T01:09:28.5962678Z ==============================================================================
2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3510020Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3513605Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3517536Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
2021-08-02T01:09:29.3545461Z [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
2021-08-02T01:09:29.3546707Z SECTION - Init SDE
2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based BaseTools
2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg Package
2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg: EccCheck Test NO-TARGET --
2021-08-02T01:09:33.0697006Z ERROR -
2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
2021-08-02T01:09:33.0700631Z ERROR - *There should be no initialization of a variable as part of its declaration
2021-08-02T01:09:33.0702675Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0703421Z ERROR - *Line number: 77
2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
2021-08-02T01:09:33.0715684Z ERROR -
2021-08-02T01:09:33.0716634Z ERROR - EFI coding style error
2021-08-02T01:09:33.0717372Z ERROR - *Error code: 5007
2021-08-02T01:09:33.0718214Z ERROR - *There should be no initialization of a variable as part of its declaration
2021-08-02T01:09:33.0719195Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0720631Z ERROR - *Line number: 78
2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
2021-08-02T01:09:33.0722114Z ERROR -
2021-08-02T01:09:33.0724953Z ERROR - EFI coding style error
2021-08-02T01:09:33.0725713Z ERROR - *Error code: 5007
2021-08-02T01:09:33.0726562Z ERROR - *There should be no initialization of a variable as part of its declaration
2021-08-02T01:09:33.0727526Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0728345Z ERROR - *Line number: 79
2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
2021-08-02T01:09:33.0729694Z ERROR -
2021-08-02T01:09:33.0732496Z ERROR - EFI coding style error
2021-08-02T01:09:33.0733224Z ERROR - *Error code: 7001
2021-08-02T01:09:33.0734114Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
2021-08-02T01:09:33.0737620Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0739185Z ERROR - *Line number: 117
2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
2021-08-02T01:09:33.0744099Z ERROR -
2021-08-02T01:09:33.0744829Z ERROR - EFI coding style error
2021-08-02T01:09:33.0745459Z ERROR - *Error code: 7001
2021-08-02T01:09:33.0746821Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
2021-08-02T01:09:33.0747774Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0749076Z ERROR - *Line number: 117
2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
2021-08-02T01:09:33.0750999Z ERROR -
2021-08-02T01:09:33.0751607Z ERROR - EFI coding style error
2021-08-02T01:09:33.0754599Z ERROR - *Error code: 7001
2021-08-02T01:09:33.0761175Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
2021-08-02T01:09:33.0762167Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0763160Z ERROR - *Line number: 117
2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
2021-08-02T01:09:33.0764290Z ERROR -
2021-08-02T01:09:33.0764843Z ERROR - EFI coding style error
2021-08-02T01:09:33.0766810Z ERROR - *Error code: 8006
2021-08-02T01:09:33.0767819Z ERROR - *Function name does not follow the rules: 1. First character should be upper case 2. Must contain lower case characters 3. No white space characters
2021-08-02T01:09:33.0768881Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0769619Z ERROR - *Line number: 181
2021-08-02T01:09:33.0773329Z ERROR - *The function name [main] does not follow the rules
2021-08-02T01:09:33.0791935Z ERROR -
2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
2021-08-02T01:09:33.0795350Z ERROR - *The function headers should follow Doxygen special documentation blocks in section 2.3.5
2021-08-02T01:09:33.0796271Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
2021-08-02T01:09:33.0796985Z ERROR - *Line number: 178
2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in comment
2021-08-02T01:09:33.0798208Z ERROR -
2021-08-02T01:09:33.0798859Z ERROR - --->Test Failed: EccCheck Test NO-TARGET returned 1
2021-08-02T01:09:33.0807351Z PROGRESS - --Running MdeModulePkg: Dsc Complete Check Test NO-TARGET --
2021-08-02T01:09:33.1524790Z PROGRESS - --->Test Success: Dsc Complete Check Test NO-TARGET
2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg: Char Encoding Check Test NO-TARGET --
2021-08-02T01:09:33.6280380Z PROGRESS - --->Test Success: Char Encoding Check Test NO-TARGET
2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg: License Check Test NO-TARGET --
2021-08-02T01:09:33.6495642Z PROGRESS - --->Test Success: License Check Test NO-TARGET
2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg: Compiler Plugin RELEASE --
2021-08-02T01:09:33.6785178Z PROGRESS - Start time: 2021-08-02 01:09:33.677952
2021-08-02T01:09:33.6787716Z PROGRESS - Setting up the Environment
2021-08-02T01:09:33.7725244Z PROGRESS - Running Pre Build
2021-08-02T01:09:33.7740357Z PROGRESS - Running Build RELEASE
2021-08-02T01:17:18.5479885Z PROGRESS - Running Post Build
2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02 01:17:18.549974 Total time Elapsed: 0:07:44
2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler Plugin RELEASE
2021-08-02T01:17:18.5519284Z PROGRESS - --Running MdeModulePkg: Library Class Check Test NO-TARGET --
2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library Class Check Test NO-TARGET
2021-08-02T01:17:18.5648791Z PROGRESS - --Running MdeModulePkg: Dependency Check Test NO-TARGET --
2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success: Dependency Check Test NO-TARGET
2021-08-02T01:17:18.7316162Z PROGRESS - --Running MdeModulePkg: Spell Check Test NO-TARGET --
2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET
2021-08-02T01:17:23.7934112Z PROGRESS - --Running MdeModulePkg: Guid Check Test NO-TARGET --
2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid Check Test NO-TARGET
2021-08-02T01:17:27.1939129Z PROGRESS - --Running MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host Unit Test Dsc Complete Check Test NO-TARGET
2021-08-02T01:17:27.3731676Z ERROR - Overall Build Status: Error
2021-08-02T01:17:27.3733283Z PROGRESS - There were 1 failures out of 10 attempts
2021-08-02T01:17:27.3734501Z SECTION - Summary
2021-08-02T01:17:27.3735613Z ERROR - Error
2021-08-02T01:17:27.4159842Z ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with return code: 1
2021-08-02T01:17:27.4173134Z ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with error: /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with return code: 1
2021-08-02T01:17:27.4178252Z ##[section]Finishing: Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
Best Regards,
Hao Wu
>
> I will wait a couple days before merging to see if any additional comment
> from other reviewers.
>
> Best Regards,
> Hao Wu
>
>
> >
> > Cc: Jian J Wang <jian.j.wang@intel.com>
> > Cc: Hao A Wu <hao.a.wu@intel.com>
> > Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
> > ---
> > MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
> > MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf |
> > 32
> > ++++
> > MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188
> > ++++++++++++++++++++
> > 3 files changed, 226 insertions(+)
> >
> > diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > index 4da4692c8451..c9ec835df65d 100644
> > --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > @@ -41,3 +41,9 @@ [Components]
> > <PcdsFixedAtBuild>
> >
> >
> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
> > able|TRUE
> > }
> > +
> > + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
> > + <LibraryClasses>
> > + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> > +
> > + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
> > + }
> > diff --git
> > a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> > new file mode 100644
> > index 000000000000..85d8dcd69619
> > --- /dev/null
> > +++
> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > +++ f
> > @@ -0,0 +1,32 @@
> > +## @file
> > +# This is a unit test for the UefiSortLib.
> > +#
> > +# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved #
> > +SPDX-License-Identifier: BSD-2-Clause-Patent ##
> > +
> > +[Defines]
> > + INF_VERSION = 0x00010017
> > + BASE_NAME = UefiSortLibUnitTest
> > + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
> > + VERSION_STRING = 1.0
> > + MODULE_TYPE = HOST_APPLICATION
> > +
> > +#
> > +# The following information is for reference only and not required by
> > +the
> > build tools.
> > +#
> > +# VALID_ARCHITECTURES = IA32 X64
> > +#
> > +
> > +[Sources]
> > + UefiSortLibUnitTest.c
> > +
> > +[Packages]
> > + MdePkg/MdePkg.dec
> > + MdeModulePkg/MdeModulePkg.dec
> > + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> > +
> > +[LibraryClasses]
> > + UnitTestLib
> > + DebugLib
> > + UefiSortLib
> > diff --git
> > a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > new file mode 100644
> > index 000000000000..71f30d8b9f7f
> > --- /dev/null
> > +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > @@ -0,0 +1,188 @@
> > +/** @file
> > + Unit tests of the UefiSortLib
> > +
> > + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
> > + SPDX-License-Identifier: BSD-2-Clause-Patent
> > +
> > +**/
> > +
> > +#include <stdio.h>
> > +#include <string.h>
> > +#include <stdarg.h>
> > +#include <stddef.h>
> > +#include <setjmp.h>
> > +#include <cmocka.h>
> > +
> > +#include <Uefi.h>
> > +#include <Library/BaseLib.h>
> > +#include <Library/DebugLib.h>
> > +#include <Library/MemoryAllocationLib.h>
> > +
> > +#include <Library/UnitTestLib.h>
> > +#include <Library/SortLib.h>
> > +
> > +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
> > +#define UNIT_TEST_APP_VERSION "1.0"
> > +
> > +#define TEST_ARRAY_SIZE_9 9
> > +
> > +/**
> > + The function is called by PerformQuickSort to compare int values.
> > +
> > + @param[in] Left The pointer to first buffer.
> > + @param[in] Right The pointer to second buffer.
> > +
> > + @retval 0 Buffer1 equal to Buffer2.
> > + @return <0 Buffer1 is less than Buffer2.
> > + @return >0 Buffer1 is greater than Buffer2.
> > +
> > +**/
> > +INTN
> > +EFIAPI
> > +TestCompareFunction (
> > + IN CONST VOID *Left,
> > + IN CONST VOID *Right
> > + )
> > +{
> > + if (*(UINT32*)Right > *(UINT32*)Left) {
> > + return 1;
> > + } else if (*(UINT32*)Right < *(UINT32*)Left) {
> > + return -1;
> > + }
> > +
> > + return 0;
> > +}
> > +
> > +/**
> > + Unit test for PerformQuickSort () API of the UefiSortLib.
> > +
> > + @param[in] Context [Optional] An optional parameter that enables:
> > + 1) test-case reuse with varied parameters and
> > + 2) test-case re-entry for Target tests that need a
> > + reboot. This parameter is a VOID* and it is the
> > + responsibility of the test author to ensure that the
> > + contents are well understood by all test cases that may
> > + consume it.
> > +
> > + @retval UNIT_TEST_PASSED The Unit test has completed and the
> > test
> > + case was successful.
> > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> failed.
> > +**/
> > +UNIT_TEST_STATUS
> > +EFIAPI
> > +SortUINT32ArrayShouldSucceed (
> > + IN UNIT_TEST_CONTEXT Context
> > + )
> > +{
> > + UINTN TestCount = TEST_ARRAY_SIZE_9;
> > + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
> > + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
> > +
> > + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
> > + (SORT_COMPARE)TestCompareFunction);
> > + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) *
> > + TEST_ARRAY_SIZE_9);
> > +
> > + return UNIT_TEST_PASSED;
> > +}
> > +
> > +/**
> > + Unit test for StringCompare () API of the UefiSortLib.
> > +
> > + @param[in] Context [Optional] An optional parameter that enables:
> > + 1) test-case reuse with varied parameters and
> > + 2) test-case re-entry for Target tests that need a
> > + reboot. This parameter is a VOID* and it is the
> > + responsibility of the test author to ensure that the
> > + contents are well understood by all test cases that may
> > + consume it.
> > +
> > + @retval UNIT_TEST_PASSED The Unit test has completed and the
> > test
> > + case was successful.
> > + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> failed.
> > +**/
> > +UNIT_TEST_STATUS
> > +EFIAPI
> > +CompareSameBufferShouldSucceed (
> > + IN UNIT_TEST_CONTEXT Context
> > + )
> > +{
> > + INTN retval;
> > + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
> > +
> > + retval = StringCompare (TestBuffer, TestBuffer); UT_ASSERT_TRUE
> > + (retval == 0);
> > +
> > + return UNIT_TEST_PASSED;
> > +}
> > +
> > +/**
> > + Initialze the unit test framework, suite, and unit tests for the
> > + UefiSortLib and run the UefiSortLib unit test.
> > +
> > + @retval EFI_SUCCESS All test cases were dispatched.
> > + @retval EFI_OUT_OF_RESOURCES There are not enough resources
> > available to
> > + initialize the unit tests.
> > +**/
> > +STATIC
> > +EFI_STATUS
> > +EFIAPI
> > +UnitTestingEntry (
> > + VOID
> > + )
> > +{
> > + EFI_STATUS Status;
> > + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> > + UNIT_TEST_SUITE_HANDLE SortTests;
> > +
> > + Framework = NULL;
> > +
> > + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> > + UNIT_TEST_APP_VERSION ));
> > +
> > + //
> > + // Start setting up the test framework for running the tests.
> > + //
> > + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME,
> > + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR (Status))
> {
> > + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
> > = %r\n", Status));
> > + goto EXIT;
> > + }
> > +
> > + //
> > + // Populate the UefiSortLib Unit Test Suite.
> > + //
> > + Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib
> > + Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if (EFI_ERROR (Status)) {
> > + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
> > + UefiSortLib
> > API Tests\n"));
> > + Status = EFI_OUT_OF_RESOURCES;
> > + goto EXIT;
> > + }
> > +
> > + //
> > + //
> > + --------------Suite--------Description------------Name--------------
> > + Fu
> > + nction----------------Pre---Post---Context-----------
> > + //
> > + AddTestCase (SortTests, "Sort the Array", "Sort",
> > SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
> > + AddTestCase (SortTests, "Compare the Buffer", "Compare",
> > CompareSameBufferShouldSucceed, NULL, NULL, NULL);
> > +
> > + //
> > + // Execute the tests.
> > + //
> > + Status = RunAllTestSuites (Framework);
> > +
> > +EXIT:
> > + if (Framework) {
> > + FreeUnitTestFramework (Framework);
> > + }
> > +
> > + return Status;
> > +}
> > +
> > +/**
> > + Standard POSIX C entry point for host based unit test execution.
> > +**/
> > +int
> > +main (
> > + int argc,
> > + char *argv[]
> > + )
> > +{
> > + return UnitTestingEntry ();
> > +}
> > --
> > 2.20.1.windows.1
>
>
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-08-02 1:56 ` [edk2-devel] " Wu, Hao A
@ 2021-08-04 8:04 ` wenyi,xie
2021-08-04 8:24 ` Wu, Hao A
0 siblings, 1 reply; 9+ messages in thread
From: wenyi,xie @ 2021-08-04 8:04 UTC (permalink / raw)
To: Wu, Hao A, devel@edk2.groups.io; +Cc: songdongkuang@huawei.com, Wang, Jian J
On 2021/8/2 9:56, Wu, Hao A wrote:
>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
>> A
>> Sent: Thursday, July 29, 2021 4:26 PM
>> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io; Wang, Jian
>> J <jian.j.wang@intel.com>
>> Cc: songdongkuang@huawei.com
>> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
>> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>>
>>> -----Original Message-----
>>> From: Wenyi Xie <xiewenyi2@huawei.com>
>>> Sent: Thursday, July 29, 2021 4:01 PM
>>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>; Wu,
>>> Hao A <hao.a.wu@intel.com>
>>> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
>>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib
>>> unit test
>>>
>>> Adding two unit test case for UefiSortLib. One is a test on sorting an
>>> array of
>>> UINT32 by using PerformQuickSort, another is a test on comparing the
>>> same buffer by using StringCompare.
>>
>>
>> Thanks.
>> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
>
>
> Sorry, I found that there are a couple of coding format style check failures when merging the patch.
> Could you help to resolve them and then create a test pull request on the GitHub for verification? Thanks in advance.
> (I think you can take the case under MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/ for reference.)
>
Hi, Wu Hao
I try to deal with the coding format style check failures, and meet a failure which I am not sure how to solve.
I take the case you told for reference, but still there's a failure said the define should be capital letters.
but if change it to capital letters, there will be another error
Function name does not follow the rules: 1. First character should be upper case 2. Must contain lower case characters 3. No white space characters
#define Main main
INT32
Main (
IN INT32 Argc,
IN CHAR8 *Argv[]
)
{
UnitTestingEntry ();
return 0;
}
Thanks
Wenyi
> Error details:
> 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
> 2021-08-02T01:09:28.5960733Z ==============================================================================
> 2021-08-02T01:09:28.5961018Z Task : Command Line
> 2021-08-02T01:09:28.5961258Z Description : Run a command line with arguments
> 2021-08-02T01:09:28.5961502Z Version : 1.1.3
> 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
> 2021-08-02T01:09:28.5962259Z Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613735)
> 2021-08-02T01:09:28.5962678Z ==============================================================================
> 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3510020Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3513605Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3517536Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> 2021-08-02T01:09:29.3545461Z [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
> 2021-08-02T01:09:29.3546707Z SECTION - Init SDE
> 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based BaseTools
> 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
> 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
> 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
> 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
> 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg Package
> 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg: EccCheck Test NO-TARGET --
> 2021-08-02T01:09:33.0697006Z ERROR -
> 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
> 2021-08-02T01:09:33.0700631Z ERROR - *There should be no initialization of a variable as part of its declaration
> 2021-08-02T01:09:33.0702675Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0703421Z ERROR - *Line number: 77
> 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
> 2021-08-02T01:09:33.0715684Z ERROR -
> 2021-08-02T01:09:33.0716634Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0717372Z ERROR - *Error code: 5007
> 2021-08-02T01:09:33.0718214Z ERROR - *There should be no initialization of a variable as part of its declaration
> 2021-08-02T01:09:33.0719195Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0720631Z ERROR - *Line number: 78
> 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
> 2021-08-02T01:09:33.0722114Z ERROR -
> 2021-08-02T01:09:33.0724953Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0725713Z ERROR - *Error code: 5007
> 2021-08-02T01:09:33.0726562Z ERROR - *There should be no initialization of a variable as part of its declaration
> 2021-08-02T01:09:33.0727526Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0728345Z ERROR - *Line number: 79
> 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
> 2021-08-02T01:09:33.0729694Z ERROR -
> 2021-08-02T01:09:33.0732496Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0733224Z ERROR - *Error code: 7001
> 2021-08-02T01:09:33.0734114Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
> 2021-08-02T01:09:33.0737620Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0739185Z ERROR - *Line number: 117
> 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
> 2021-08-02T01:09:33.0744099Z ERROR -
> 2021-08-02T01:09:33.0744829Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0745459Z ERROR - *Error code: 7001
> 2021-08-02T01:09:33.0746821Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
> 2021-08-02T01:09:33.0747774Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0749076Z ERROR - *Line number: 117
> 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
> 2021-08-02T01:09:33.0750999Z ERROR -
> 2021-08-02T01:09:33.0751607Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0754599Z ERROR - *Error code: 7001
> 2021-08-02T01:09:33.0761175Z ERROR - *There should be no use of int, unsigned, char, void, long in any .c, .h or .asl files
> 2021-08-02T01:09:33.0762167Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0763160Z ERROR - *Line number: 117
> 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
> 2021-08-02T01:09:33.0764290Z ERROR -
> 2021-08-02T01:09:33.0764843Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0766810Z ERROR - *Error code: 8006
> 2021-08-02T01:09:33.0767819Z ERROR - *Function name does not follow the rules: 1. First character should be upper case 2. Must contain lower case characters 3. No white space characters
> 2021-08-02T01:09:33.0768881Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0769619Z ERROR - *Line number: 181
> 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main] does not follow the rules
> 2021-08-02T01:09:33.0791935Z ERROR -
> 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
> 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
> 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should follow Doxygen special documentation blocks in section 2.3.5
> 2021-08-02T01:09:33.0796271Z ERROR - *file: //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> 2021-08-02T01:09:33.0796985Z ERROR - *Line number: 178
> 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in comment
> 2021-08-02T01:09:33.0798208Z ERROR -
> 2021-08-02T01:09:33.0798859Z ERROR - --->Test Failed: EccCheck Test NO-TARGET returned 1
> 2021-08-02T01:09:33.0807351Z PROGRESS - --Running MdeModulePkg: Dsc Complete Check Test NO-TARGET --
> 2021-08-02T01:09:33.1524790Z PROGRESS - --->Test Success: Dsc Complete Check Test NO-TARGET
> 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg: Char Encoding Check Test NO-TARGET --
> 2021-08-02T01:09:33.6280380Z PROGRESS - --->Test Success: Char Encoding Check Test NO-TARGET
> 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg: License Check Test NO-TARGET --
> 2021-08-02T01:09:33.6495642Z PROGRESS - --->Test Success: License Check Test NO-TARGET
> 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg: Compiler Plugin RELEASE --
> 2021-08-02T01:09:33.6785178Z PROGRESS - Start time: 2021-08-02 01:09:33.677952
> 2021-08-02T01:09:33.6787716Z PROGRESS - Setting up the Environment
> 2021-08-02T01:09:33.7725244Z PROGRESS - Running Pre Build
> 2021-08-02T01:09:33.7740357Z PROGRESS - Running Build RELEASE
> 2021-08-02T01:17:18.5479885Z PROGRESS - Running Post Build
> 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02 01:17:18.549974 Total time Elapsed: 0:07:44
> 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler Plugin RELEASE
> 2021-08-02T01:17:18.5519284Z PROGRESS - --Running MdeModulePkg: Library Class Check Test NO-TARGET --
> 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library Class Check Test NO-TARGET
> 2021-08-02T01:17:18.5648791Z PROGRESS - --Running MdeModulePkg: Dependency Check Test NO-TARGET --
> 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success: Dependency Check Test NO-TARGET
> 2021-08-02T01:17:18.7316162Z PROGRESS - --Running MdeModulePkg: Spell Check Test NO-TARGET --
> 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin! Spell Check Test NO-TARGET
> 2021-08-02T01:17:23.7934112Z PROGRESS - --Running MdeModulePkg: Guid Check Test NO-TARGET --
> 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid Check Test NO-TARGET
> 2021-08-02T01:17:27.1939129Z PROGRESS - --Running MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
> 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host Unit Test Dsc Complete Check Test NO-TARGET
> 2021-08-02T01:17:27.3731676Z ERROR - Overall Build Status: Error
> 2021-08-02T01:17:27.3733283Z PROGRESS - There were 1 failures out of 10 attempts
> 2021-08-02T01:17:27.3734501Z SECTION - Summary
> 2021-08-02T01:17:27.3735613Z ERROR - Error
> 2021-08-02T01:17:27.4159842Z ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with return code: 1
> 2021-08-02T01:17:27.4173134Z ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with error: /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with return code: 1
> 2021-08-02T01:17:27.4178252Z ##[section]Finishing: Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
>
> Best Regards,
> Hao Wu
>
>
>>
>> I will wait a couple days before merging to see if any additional comment
>> from other reviewers.
>>
>> Best Regards,
>> Hao Wu
>>
>>
>>>
>>> Cc: Jian J Wang <jian.j.wang@intel.com>
>>> Cc: Hao A Wu <hao.a.wu@intel.com>
>>> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
>>> ---
>>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
>>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf |
>>> 32
>>> ++++
>>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188
>>> ++++++++++++++++++++
>>> 3 files changed, 226 insertions(+)
>>>
>>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>> index 4da4692c8451..c9ec835df65d 100644
>>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>> @@ -41,3 +41,9 @@ [Components]
>>> <PcdsFixedAtBuild>
>>>
>>>
>> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
>>> able|TRUE
>>> }
>>> +
>>> + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
>>> + <LibraryClasses>
>>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
>>> +
>>> + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
>>> + }
>>> diff --git
>>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
>>> new file mode 100644
>>> index 000000000000..85d8dcd69619
>>> --- /dev/null
>>> +++
>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
>>> +++ f
>>> @@ -0,0 +1,32 @@
>>> +## @file
>>> +# This is a unit test for the UefiSortLib.
>>> +#
>>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved #
>>> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
>>> +
>>> +[Defines]
>>> + INF_VERSION = 0x00010017
>>> + BASE_NAME = UefiSortLibUnitTest
>>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
>>> + VERSION_STRING = 1.0
>>> + MODULE_TYPE = HOST_APPLICATION
>>> +
>>> +#
>>> +# The following information is for reference only and not required by
>>> +the
>>> build tools.
>>> +#
>>> +# VALID_ARCHITECTURES = IA32 X64
>>> +#
>>> +
>>> +[Sources]
>>> + UefiSortLibUnitTest.c
>>> +
>>> +[Packages]
>>> + MdePkg/MdePkg.dec
>>> + MdeModulePkg/MdeModulePkg.dec
>>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
>>> +
>>> +[LibraryClasses]
>>> + UnitTestLib
>>> + DebugLib
>>> + UefiSortLib
>>> diff --git
>>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
>>> new file mode 100644
>>> index 000000000000..71f30d8b9f7f
>>> --- /dev/null
>>> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
>>> @@ -0,0 +1,188 @@
>>> +/** @file
>>> + Unit tests of the UefiSortLib
>>> +
>>> + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
>>> + SPDX-License-Identifier: BSD-2-Clause-Patent
>>> +
>>> +**/
>>> +
>>> +#include <stdio.h>
>>> +#include <string.h>
>>> +#include <stdarg.h>
>>> +#include <stddef.h>
>>> +#include <setjmp.h>
>>> +#include <cmocka.h>
>>> +
>>> +#include <Uefi.h>
>>> +#include <Library/BaseLib.h>
>>> +#include <Library/DebugLib.h>
>>> +#include <Library/MemoryAllocationLib.h>
>>> +
>>> +#include <Library/UnitTestLib.h>
>>> +#include <Library/SortLib.h>
>>> +
>>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
>>> +#define UNIT_TEST_APP_VERSION "1.0"
>>> +
>>> +#define TEST_ARRAY_SIZE_9 9
>>> +
>>> +/**
>>> + The function is called by PerformQuickSort to compare int values.
>>> +
>>> + @param[in] Left The pointer to first buffer.
>>> + @param[in] Right The pointer to second buffer.
>>> +
>>> + @retval 0 Buffer1 equal to Buffer2.
>>> + @return <0 Buffer1 is less than Buffer2.
>>> + @return >0 Buffer1 is greater than Buffer2.
>>> +
>>> +**/
>>> +INTN
>>> +EFIAPI
>>> +TestCompareFunction (
>>> + IN CONST VOID *Left,
>>> + IN CONST VOID *Right
>>> + )
>>> +{
>>> + if (*(UINT32*)Right > *(UINT32*)Left) {
>>> + return 1;
>>> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
>>> + return -1;
>>> + }
>>> +
>>> + return 0;
>>> +}
>>> +
>>> +/**
>>> + Unit test for PerformQuickSort () API of the UefiSortLib.
>>> +
>>> + @param[in] Context [Optional] An optional parameter that enables:
>>> + 1) test-case reuse with varied parameters and
>>> + 2) test-case re-entry for Target tests that need a
>>> + reboot. This parameter is a VOID* and it is the
>>> + responsibility of the test author to ensure that the
>>> + contents are well understood by all test cases that may
>>> + consume it.
>>> +
>>> + @retval UNIT_TEST_PASSED The Unit test has completed and the
>>> test
>>> + case was successful.
>>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
>> failed.
>>> +**/
>>> +UNIT_TEST_STATUS
>>> +EFIAPI
>>> +SortUINT32ArrayShouldSucceed (
>>> + IN UNIT_TEST_CONTEXT Context
>>> + )
>>> +{
>>> + UINTN TestCount = TEST_ARRAY_SIZE_9;
>>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8, 9};
>>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2, 1};
>>> +
>>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
>>> + (SORT_COMPARE)TestCompareFunction);
>>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) *
>>> + TEST_ARRAY_SIZE_9);
>>> +
>>> + return UNIT_TEST_PASSED;
>>> +}
>>> +
>>> +/**
>>> + Unit test for StringCompare () API of the UefiSortLib.
>>> +
>>> + @param[in] Context [Optional] An optional parameter that enables:
>>> + 1) test-case reuse with varied parameters and
>>> + 2) test-case re-entry for Target tests that need a
>>> + reboot. This parameter is a VOID* and it is the
>>> + responsibility of the test author to ensure that the
>>> + contents are well understood by all test cases that may
>>> + consume it.
>>> +
>>> + @retval UNIT_TEST_PASSED The Unit test has completed and the
>>> test
>>> + case was successful.
>>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
>> failed.
>>> +**/
>>> +UNIT_TEST_STATUS
>>> +EFIAPI
>>> +CompareSameBufferShouldSucceed (
>>> + IN UNIT_TEST_CONTEXT Context
>>> + )
>>> +{
>>> + INTN retval;
>>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
>>> +
>>> + retval = StringCompare (TestBuffer, TestBuffer); UT_ASSERT_TRUE
>>> + (retval == 0);
>>> +
>>> + return UNIT_TEST_PASSED;
>>> +}
>>> +
>>> +/**
>>> + Initialze the unit test framework, suite, and unit tests for the
>>> + UefiSortLib and run the UefiSortLib unit test.
>>> +
>>> + @retval EFI_SUCCESS All test cases were dispatched.
>>> + @retval EFI_OUT_OF_RESOURCES There are not enough resources
>>> available to
>>> + initialize the unit tests.
>>> +**/
>>> +STATIC
>>> +EFI_STATUS
>>> +EFIAPI
>>> +UnitTestingEntry (
>>> + VOID
>>> + )
>>> +{
>>> + EFI_STATUS Status;
>>> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
>>> + UNIT_TEST_SUITE_HANDLE SortTests;
>>> +
>>> + Framework = NULL;
>>> +
>>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
>>> + UNIT_TEST_APP_VERSION ));
>>> +
>>> + //
>>> + // Start setting up the test framework for running the tests.
>>> + //
>>> + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME,
>>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR (Status))
>> {
>>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
>>> = %r\n", Status));
>>> + goto EXIT;
>>> + }
>>> +
>>> + //
>>> + // Populate the UefiSortLib Unit Test Suite.
>>> + //
>>> + Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib
>>> + Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if (EFI_ERROR (Status)) {
>>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
>>> + UefiSortLib
>>> API Tests\n"));
>>> + Status = EFI_OUT_OF_RESOURCES;
>>> + goto EXIT;
>>> + }
>>> +
>>> + //
>>> + //
>>> + --------------Suite--------Description------------Name--------------
>>> + Fu
>>> + nction----------------Pre---Post---Context-----------
>>> + //
>>> + AddTestCase (SortTests, "Sort the Array", "Sort",
>>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
>>> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
>>> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
>>> +
>>> + //
>>> + // Execute the tests.
>>> + //
>>> + Status = RunAllTestSuites (Framework);
>>> +
>>> +EXIT:
>>> + if (Framework) {
>>> + FreeUnitTestFramework (Framework);
>>> + }
>>> +
>>> + return Status;
>>> +}
>>> +
>>> +/**
>>> + Standard POSIX C entry point for host based unit test execution.
>>> +**/
>>> +int
>>> +main (
>>> + int argc,
>>> + char *argv[]
>>> + )
>>> +{
>>> + return UnitTestingEntry ();
>>> +}
>>> --
>>> 2.20.1.windows.1
>>
>>
>>
>>
>>
>
> .
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-08-04 8:04 ` wenyi,xie
@ 2021-08-04 8:24 ` Wu, Hao A
2021-08-10 4:11 ` Wu, Hao A
0 siblings, 1 reply; 9+ messages in thread
From: Wu, Hao A @ 2021-08-04 8:24 UTC (permalink / raw)
To: xiewenyi (A), Kinney, Michael D, devel@edk2.groups.io
Cc: songdongkuang@huawei.com, Wang, Jian J
> -----Original Message-----
> From: xiewenyi (A) <xiewenyi2@huawei.com>
> Sent: Wednesday, August 4, 2021 4:05 PM
> To: Wu, Hao A <hao.a.wu@intel.com>; devel@edk2.groups.io
> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add
> UefiSortLib unit test
>
>
>
> On 2021/8/2 9:56, Wu, Hao A wrote:
> >> -----Original Message-----
> >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu,
> >> Hao A
> >> Sent: Thursday, July 29, 2021 4:26 PM
> >> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io; Wang,
> >> Jian J <jian.j.wang@intel.com>
> >> Cc: songdongkuang@huawei.com
> >> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> >> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> >>
> >>> -----Original Message-----
> >>> From: Wenyi Xie <xiewenyi2@huawei.com>
> >>> Sent: Thursday, July 29, 2021 4:01 PM
> >>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>; Wu,
> >>> Hao A <hao.a.wu@intel.com>
> >>> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
> >>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add
> >>> UefiSortLib unit test
> >>>
> >>> Adding two unit test case for UefiSortLib. One is a test on sorting
> >>> an array of
> >>> UINT32 by using PerformQuickSort, another is a test on comparing the
> >>> same buffer by using StringCompare.
> >>
> >>
> >> Thanks.
> >> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
> >
> >
> > Sorry, I found that there are a couple of coding format style check failures
> when merging the patch.
> > Could you help to resolve them and then create a test pull request on the
> GitHub for verification? Thanks in advance.
> > (I think you can take the case under
> > MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/ for
> > reference.)
> >
>
> Hi, Wu Hao
>
> I try to deal with the coding format style check failures, and meet a failure which
> I am not sure how to solve.
> I take the case you told for reference, but still there's a failure said the define
> should be capital letters.
> but if change it to capital letters, there will be another error Function name does
> not follow the rules: 1. First character should be upper case 2. Must contain
> lower case characters 3. No white space characters
>
> #define Main main
>
> INT32
> Main (
> IN INT32 Argc,
> IN CHAR8 *Argv[]
> )
> {
> UnitTestingEntry ();
> return 0;
> }
Hello Mike,
I saw the below commit:
SHA-1: dcaa93936591883aa7826eb45ef00416ad82ef08
* MdeModulePkg/Variable/RuntimeDxe: Add Variable Lock Protocol Unit Tests
has a similar case that should involve the naming of the 'main' function within the unit test codes.
I am wondering how the open raised by Wenyi was handled back then.
Do you have suggestions for this case? Thanks in advance.
Best Regards,
Hao Wu
>
> Thanks
> Wenyi
>
> > Error details:
> > 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test
> > MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 2021-08-
> 02T01:09:28.5960733Z
> =================================================================
> =============
> > 2021-08-02T01:09:28.5961018Z Task : Command Line
> > 2021-08-02T01:09:28.5961258Z Description : Run a command line with
> arguments
> > 2021-08-02T01:09:28.5961502Z Version : 1.1.3
> > 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
> > 2021-08-02T01:09:28.5962259Z Help : [More
> Information](https://go.microsoft.com/fwlink/?LinkID=613735)
> > 2021-08-02T01:09:28.5962678Z
> >
> =================================================================
> =====
> > ======== 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use
> > Cipheriv for counter mode of aes-256-ctr 2021-08-02T01:09:29.3510020Z
> > (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> > 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for
> > counter mode of aes-256-ctr 2021-08-02T01:09:29.3513605Z (node:3659)
> > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for
> > counter mode of aes-256-ctr 2021-08-02T01:09:29.3517536Z (node:3659)
> > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for
> > counter mode of aes-256-ctr 2021-08-02T01:09:29.3545461Z
> > [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build -c
> > .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a
> > IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
> > 2021-08-02T01:09:29.3546707Z SECTION - Init SDE
> > 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based BaseTools
> > 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
> > 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
> > 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
> > 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
> > 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg Package
> > 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg:
> > EccCheck Test NO-TARGET -- 2021-08-02T01:09:33.0697006Z ERROR -
> > 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
> > 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
> > 2021-08-02T01:09:33.0700631Z ERROR - *There should be no
> > initialization of a variable as part of its declaration
> > 2021-08-02T01:09:33.0702675Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0703421Z ERROR - *Line number: 77
> > 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
> > 2021-08-02T01:09:33.0715684Z ERROR - 2021-08-02T01:09:33.0716634Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0717372Z ERROR -
> > *Error code: 5007 2021-08-02T01:09:33.0718214Z ERROR - *There should
> > be no initialization of a variable as part of its declaration
> > 2021-08-02T01:09:33.0719195Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0720631Z ERROR - *Line number: 78
> > 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
> > 2021-08-02T01:09:33.0722114Z ERROR - 2021-08-02T01:09:33.0724953Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0725713Z ERROR -
> > *Error code: 5007 2021-08-02T01:09:33.0726562Z ERROR - *There should
> > be no initialization of a variable as part of its declaration
> > 2021-08-02T01:09:33.0727526Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0728345Z ERROR - *Line number: 79
> > 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
> > 2021-08-02T01:09:33.0729694Z ERROR - 2021-08-02T01:09:33.0732496Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0733224Z ERROR -
> > *Error code: 7001 2021-08-02T01:09:33.0734114Z ERROR - *There should
> > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > files 2021-08-02T01:09:33.0737620Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0739185Z ERROR - *Line number: 117
> > 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
> > 2021-08-02T01:09:33.0744099Z ERROR - 2021-08-02T01:09:33.0744829Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0745459Z ERROR -
> > *Error code: 7001 2021-08-02T01:09:33.0746821Z ERROR - *There should
> > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > files 2021-08-02T01:09:33.0747774Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0749076Z ERROR - *Line number: 117
> > 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
> > 2021-08-02T01:09:33.0750999Z ERROR - 2021-08-02T01:09:33.0751607Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0754599Z ERROR -
> > *Error code: 7001 2021-08-02T01:09:33.0761175Z ERROR - *There should
> > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > files 2021-08-02T01:09:33.0762167Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0763160Z ERROR - *Line number: 117
> > 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
> > 2021-08-02T01:09:33.0764290Z ERROR - 2021-08-02T01:09:33.0764843Z
> > ERROR - EFI coding style error 2021-08-02T01:09:33.0766810Z ERROR -
> > *Error code: 8006 2021-08-02T01:09:33.0767819Z ERROR - *Function name
> > does not follow the rules: 1. First character should be upper case 2.
> > Must contain lower case characters 3. No white space characters
> > 2021-08-02T01:09:33.0768881Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0769619Z ERROR - *Line number: 181
> > 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main] does
> > not follow the rules 2021-08-02T01:09:33.0791935Z ERROR -
> > 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
> > 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
> > 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should
> > follow Doxygen special documentation blocks in section 2.3.5
> > 2021-08-02T01:09:33.0796271Z ERROR - *file:
> > //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSor
> > tLibUnitTest.c 2021-08-02T01:09:33.0796985Z ERROR - *Line number: 178
> > 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in comment
> > 2021-08-02T01:09:33.0798208Z ERROR - 2021-08-02T01:09:33.0798859Z
> > ERROR - --->Test Failed: EccCheck Test NO-TARGET returned 1
> > 2021-08-02T01:09:33.0807351Z PROGRESS - --Running MdeModulePkg: Dsc
> > Complete Check Test NO-TARGET -- 2021-08-02T01:09:33.1524790Z
> PROGRESS
> > - --->Test Success: Dsc Complete Check Test NO-TARGET
> > 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg: Char
> > Encoding Check Test NO-TARGET -- 2021-08-02T01:09:33.6280380Z
> PROGRESS
> > - --->Test Success: Char Encoding Check Test NO-TARGET
> > 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg:
> > License Check Test NO-TARGET -- 2021-08-02T01:09:33.6495642Z PROGRESS
> > - --->Test Success: License Check Test NO-TARGET
> > 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg:
> > Compiler Plugin RELEASE -- 2021-08-02T01:09:33.6785178Z PROGRESS -
> > Start time: 2021-08-02 01:09:33.677952 2021-08-02T01:09:33.6787716Z
> PROGRESS - Setting up the Environment 2021-08-02T01:09:33.7725244Z
> PROGRESS - Running Pre Build 2021-08-02T01:09:33.7740357Z PROGRESS -
> Running Build RELEASE 2021-08-02T01:17:18.5479885Z PROGRESS - Running
> Post Build
> > 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02
> 01:17:18.549974 Total time Elapsed: 0:07:44
> > 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler
> > Plugin RELEASE 2021-08-02T01:17:18.5519284Z PROGRESS - --Running
> > MdeModulePkg: Library Class Check Test NO-TARGET --
> > 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library
> > Class Check Test NO-TARGET 2021-08-02T01:17:18.5648791Z PROGRESS -
> > --Running MdeModulePkg: Dependency Check Test NO-TARGET --
> > 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success: Dependency
> > Check Test NO-TARGET 2021-08-02T01:17:18.7316162Z PROGRESS - --Running
> > MdeModulePkg: Spell Check Test NO-TARGET --
> > 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin!
> > Spell Check Test NO-TARGET 2021-08-02T01:17:23.7934112Z PROGRESS -
> > --Running MdeModulePkg: Guid Check Test NO-TARGET --
> > 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid Check
> > Test NO-TARGET 2021-08-02T01:17:27.1939129Z PROGRESS - --Running
> > MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
> > 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host Unit
> > Test Dsc Complete Check Test NO-TARGET 2021-08-02T01:17:27.3731676Z
> > ERROR - Overall Build Status: Error 2021-08-02T01:17:27.3733283Z
> > PROGRESS - There were 1 failures out of 10 attempts
> > 2021-08-02T01:17:27.3734501Z SECTION - Summary
> > 2021-08-02T01:17:27.3735613Z ERROR - Error
> > 2021-08-02T01:17:27.4159842Z
> > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build
> > failed with return code: 1 2021-08-02T01:17:27.4173134Z
> > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build
> > failed with error:
> > /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed with
> > return code: 1 2021-08-02T01:17:27.4178252Z ##[section]Finishing:
> > Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
> >
> > Best Regards,
> > Hao Wu
> >
> >
> >>
> >> I will wait a couple days before merging to see if any additional
> >> comment from other reviewers.
> >>
> >> Best Regards,
> >> Hao Wu
> >>
> >>
> >>>
> >>> Cc: Jian J Wang <jian.j.wang@intel.com>
> >>> Cc: Hao A Wu <hao.a.wu@intel.com>
> >>> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
> >>> ---
> >>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
> >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf |
> >>> 32
> >>> ++++
> >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c | 188
> >>> ++++++++++++++++++++
> >>> 3 files changed, 226 insertions(+)
> >>>
> >>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> >>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> >>> index 4da4692c8451..c9ec835df65d 100644
> >>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> >>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> >>> @@ -41,3 +41,9 @@ [Components]
> >>> <PcdsFixedAtBuild>
> >>>
> >>>
> >> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
> >>> able|TRUE
> >>> }
> >>> +
> >>> + MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
> >>> + <LibraryClasses>
> >>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> >>> +
> >>> + DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.i
> >>> + DevicePathLib|nf
> >>> + }
> >>> diff --git
> >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> >>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> >>> new file mode 100644
> >>> index 000000000000..85d8dcd69619
> >>> --- /dev/null
> >>> +++
> >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> >>> +++ f
> >>> @@ -0,0 +1,32 @@
> >>> +## @file
> >>> +# This is a unit test for the UefiSortLib.
> >>> +#
> >>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved #
> >>> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
> >>> +
> >>> +[Defines]
> >>> + INF_VERSION = 0x00010017
> >>> + BASE_NAME = UefiSortLibUnitTest
> >>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
> >>> + VERSION_STRING = 1.0
> >>> + MODULE_TYPE = HOST_APPLICATION
> >>> +
> >>> +#
> >>> +# The following information is for reference only and not required
> >>> +by the
> >>> build tools.
> >>> +#
> >>> +# VALID_ARCHITECTURES = IA32 X64
> >>> +#
> >>> +
> >>> +[Sources]
> >>> + UefiSortLibUnitTest.c
> >>> +
> >>> +[Packages]
> >>> + MdePkg/MdePkg.dec
> >>> + MdeModulePkg/MdeModulePkg.dec
> >>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> >>> +
> >>> +[LibraryClasses]
> >>> + UnitTestLib
> >>> + DebugLib
> >>> + UefiSortLib
> >>> diff --git
> >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> >>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> >>> new file mode 100644
> >>> index 000000000000..71f30d8b9f7f
> >>> --- /dev/null
> >>> +++ b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> >>> +++ c
> >>> @@ -0,0 +1,188 @@
> >>> +/** @file
> >>> + Unit tests of the UefiSortLib
> >>> +
> >>> + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
> >>> + SPDX-License-Identifier: BSD-2-Clause-Patent
> >>> +
> >>> +**/
> >>> +
> >>> +#include <stdio.h>
> >>> +#include <string.h>
> >>> +#include <stdarg.h>
> >>> +#include <stddef.h>
> >>> +#include <setjmp.h>
> >>> +#include <cmocka.h>
> >>> +
> >>> +#include <Uefi.h>
> >>> +#include <Library/BaseLib.h>
> >>> +#include <Library/DebugLib.h>
> >>> +#include <Library/MemoryAllocationLib.h>
> >>> +
> >>> +#include <Library/UnitTestLib.h>
> >>> +#include <Library/SortLib.h>
> >>> +
> >>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
> >>> +#define UNIT_TEST_APP_VERSION "1.0"
> >>> +
> >>> +#define TEST_ARRAY_SIZE_9 9
> >>> +
> >>> +/**
> >>> + The function is called by PerformQuickSort to compare int values.
> >>> +
> >>> + @param[in] Left The pointer to first buffer.
> >>> + @param[in] Right The pointer to second buffer.
> >>> +
> >>> + @retval 0 Buffer1 equal to Buffer2.
> >>> + @return <0 Buffer1 is less than Buffer2.
> >>> + @return >0 Buffer1 is greater than Buffer2.
> >>> +
> >>> +**/
> >>> +INTN
> >>> +EFIAPI
> >>> +TestCompareFunction (
> >>> + IN CONST VOID *Left,
> >>> + IN CONST VOID *Right
> >>> + )
> >>> +{
> >>> + if (*(UINT32*)Right > *(UINT32*)Left) {
> >>> + return 1;
> >>> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
> >>> + return -1;
> >>> + }
> >>> +
> >>> + return 0;
> >>> +}
> >>> +
> >>> +/**
> >>> + Unit test for PerformQuickSort () API of the UefiSortLib.
> >>> +
> >>> + @param[in] Context [Optional] An optional parameter that enables:
> >>> + 1) test-case reuse with varied parameters and
> >>> + 2) test-case re-entry for Target tests that need a
> >>> + reboot. This parameter is a VOID* and it is the
> >>> + responsibility of the test author to ensure that the
> >>> + contents are well understood by all test cases that may
> >>> + consume it.
> >>> +
> >>> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> >>> test
> >>> + case was successful.
> >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> >> failed.
> >>> +**/
> >>> +UNIT_TEST_STATUS
> >>> +EFIAPI
> >>> +SortUINT32ArrayShouldSucceed (
> >>> + IN UNIT_TEST_CONTEXT Context
> >>> + )
> >>> +{
> >>> + UINTN TestCount = TEST_ARRAY_SIZE_9;
> >>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8,
> >>> +9};
> >>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2,
> >>> +1};
> >>> +
> >>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
> >>> + (SORT_COMPARE)TestCompareFunction);
> >>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) *
> >>> + TEST_ARRAY_SIZE_9);
> >>> +
> >>> + return UNIT_TEST_PASSED;
> >>> +}
> >>> +
> >>> +/**
> >>> + Unit test for StringCompare () API of the UefiSortLib.
> >>> +
> >>> + @param[in] Context [Optional] An optional parameter that enables:
> >>> + 1) test-case reuse with varied parameters and
> >>> + 2) test-case re-entry for Target tests that need a
> >>> + reboot. This parameter is a VOID* and it is the
> >>> + responsibility of the test author to ensure that the
> >>> + contents are well understood by all test cases that may
> >>> + consume it.
> >>> +
> >>> + @retval UNIT_TEST_PASSED The Unit test has completed and the
> >>> test
> >>> + case was successful.
> >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> >> failed.
> >>> +**/
> >>> +UNIT_TEST_STATUS
> >>> +EFIAPI
> >>> +CompareSameBufferShouldSucceed (
> >>> + IN UNIT_TEST_CONTEXT Context
> >>> + )
> >>> +{
> >>> + INTN retval;
> >>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
> >>> +
> >>> + retval = StringCompare (TestBuffer, TestBuffer); UT_ASSERT_TRUE
> >>> + (retval == 0);
> >>> +
> >>> + return UNIT_TEST_PASSED;
> >>> +}
> >>> +
> >>> +/**
> >>> + Initialze the unit test framework, suite, and unit tests for the
> >>> + UefiSortLib and run the UefiSortLib unit test.
> >>> +
> >>> + @retval EFI_SUCCESS All test cases were dispatched.
> >>> + @retval EFI_OUT_OF_RESOURCES There are not enough resources
> >>> available to
> >>> + initialize the unit tests.
> >>> +**/
> >>> +STATIC
> >>> +EFI_STATUS
> >>> +EFIAPI
> >>> +UnitTestingEntry (
> >>> + VOID
> >>> + )
> >>> +{
> >>> + EFI_STATUS Status;
> >>> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> >>> + UNIT_TEST_SUITE_HANDLE SortTests;
> >>> +
> >>> + Framework = NULL;
> >>> +
> >>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> >>> + UNIT_TEST_APP_VERSION ));
> >>> +
> >>> + //
> >>> + // Start setting up the test framework for running the tests.
> >>> + //
> >>> + Status = InitUnitTestFramework (&Framework, UNIT_TEST_APP_NAME,
> >>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR
> >>> + (Status))
> >> {
> >>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
> >>> = %r\n", Status));
> >>> + goto EXIT;
> >>> + }
> >>> +
> >>> + //
> >>> + // Populate the UefiSortLib Unit Test Suite.
> >>> + //
> >>> + Status = CreateUnitTestSuite (&SortTests, Framework, "UefiSortLib
> >>> + Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if (EFI_ERROR (Status)) {
> >>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
> >>> + UefiSortLib
> >>> API Tests\n"));
> >>> + Status = EFI_OUT_OF_RESOURCES;
> >>> + goto EXIT;
> >>> + }
> >>> +
> >>> + //
> >>> + //
> >>> + --------------Suite--------Description------------Name------------
> >>> + --
> >>> + Fu
> >>> + nction----------------Pre---Post---Context-----------
> >>> + //
> >>> + AddTestCase (SortTests, "Sort the Array", "Sort",
> >>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
> >>> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
> >>> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
> >>> +
> >>> + //
> >>> + // Execute the tests.
> >>> + //
> >>> + Status = RunAllTestSuites (Framework);
> >>> +
> >>> +EXIT:
> >>> + if (Framework) {
> >>> + FreeUnitTestFramework (Framework);
> >>> + }
> >>> +
> >>> + return Status;
> >>> +}
> >>> +
> >>> +/**
> >>> + Standard POSIX C entry point for host based unit test execution.
> >>> +**/
> >>> +int
> >>> +main (
> >>> + int argc,
> >>> + char *argv[]
> >>> + )
> >>> +{
> >>> + return UnitTestingEntry ();
> >>> +}
> >>> --
> >>> 2.20.1.windows.1
> >>
> >>
> >>
> >>
> >>
> >
> > .
> >
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-08-04 8:24 ` Wu, Hao A
@ 2021-08-10 4:11 ` Wu, Hao A
2021-08-11 1:50 ` Wu, Hao A
0 siblings, 1 reply; 9+ messages in thread
From: Wu, Hao A @ 2021-08-10 4:11 UTC (permalink / raw)
To: Kinney, Michael D, devel@edk2.groups.io, xiewenyi (A)
Cc: songdongkuang@huawei.com, Wang, Jian J
Sorry Mike,
Do you have advice on how to deal with ECC reporting function naming issue on the 'main' function for unit test cases?
So far, I think Wenyi has tried following the same pattern in file MdeModulePkg\Universal\Variable\RuntimeDxe\RuntimeDxeUnitTest\VariableLockRequestToLockUnitTest.c:
///
/// Avoid ECC error for function name that starts with lower case letter
///
#define Main main
/**
Standard POSIX C entry point for host based unit test execution.
@param[in] Argc Number of arguments
@param[in] Argv Array of pointers to arguments
@retval 0 Success
@retval other Error
**/
INT32
Main (
IN INT32 Argc,
IN CHAR8 *Argv[]
)
But it looks like the ECC checker in the merge test is still complaining.
Best Regards,
Hao Wu
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Wednesday, August 4, 2021 4:24 PM
> To: xiewenyi (A) <xiewenyi2@huawei.com>; Kinney, Michael D
> <michael.d.kinney@intel.com>; devel@edk2.groups.io
> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>
> > -----Original Message-----
> > From: xiewenyi (A) <xiewenyi2@huawei.com>
> > Sent: Wednesday, August 4, 2021 4:05 PM
> > To: Wu, Hao A <hao.a.wu@intel.com>; devel@edk2.groups.io
> > Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> >
> >
> >
> > On 2021/8/2 9:56, Wu, Hao A wrote:
> > >> -----Original Message-----
> > >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu,
> > >> Hao A
> > >> Sent: Thursday, July 29, 2021 4:26 PM
> > >> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io; Wang,
> > >> Jian J <jian.j.wang@intel.com>
> > >> Cc: songdongkuang@huawei.com
> > >> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > >> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> > >>
> > >>> -----Original Message-----
> > >>> From: Wenyi Xie <xiewenyi2@huawei.com>
> > >>> Sent: Thursday, July 29, 2021 4:01 PM
> > >>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>;
> > >>> Wu, Hao A <hao.a.wu@intel.com>
> > >>> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
> > >>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add
> > >>> UefiSortLib unit test
> > >>>
> > >>> Adding two unit test case for UefiSortLib. One is a test on
> > >>> sorting an array of
> > >>> UINT32 by using PerformQuickSort, another is a test on comparing
> > >>> the same buffer by using StringCompare.
> > >>
> > >>
> > >> Thanks.
> > >> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
> > >
> > >
> > > Sorry, I found that there are a couple of coding format style check
> > > failures
> > when merging the patch.
> > > Could you help to resolve them and then create a test pull request
> > > on the
> > GitHub for verification? Thanks in advance.
> > > (I think you can take the case under
> > > MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/
> for
> > > reference.)
> > >
> >
> > Hi, Wu Hao
> >
> > I try to deal with the coding format style check failures, and meet a
> > failure which I am not sure how to solve.
> > I take the case you told for reference, but still there's a failure
> > said the define should be capital letters.
> > but if change it to capital letters, there will be another error
> > Function name does not follow the rules: 1. First character should be
> > upper case 2. Must contain lower case characters 3. No white space
> > characters
> >
> > #define Main main
> >
> > INT32
> > Main (
> > IN INT32 Argc,
> > IN CHAR8 *Argv[]
> > )
> > {
> > UnitTestingEntry ();
> > return 0;
> > }
>
>
> Hello Mike,
>
> I saw the below commit:
> SHA-1: dcaa93936591883aa7826eb45ef00416ad82ef08
> * MdeModulePkg/Variable/RuntimeDxe: Add Variable Lock Protocol Unit
> Tests has a similar case that should involve the naming of the 'main' function
> within the unit test codes.
>
> I am wondering how the open raised by Wenyi was handled back then.
> Do you have suggestions for this case? Thanks in advance.
>
> Best Regards,
> Hao Wu
>
>
> >
> > Thanks
> > Wenyi
> >
> > > Error details:
> > > 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test
> > > MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 2021-08-
> > 02T01:09:28.5960733Z
> >
> ==========================================================
> =======
> > =============
> > > 2021-08-02T01:09:28.5961018Z Task : Command Line
> > > 2021-08-02T01:09:28.5961258Z Description : Run a command line with
> > arguments
> > > 2021-08-02T01:09:28.5961502Z Version : 1.1.3
> > > 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
> > > 2021-08-02T01:09:28.5962259Z Help : [More
> > Information](https://go.microsoft.com/fwlink/?LinkID=613735)
> > > 2021-08-02T01:09:28.5962678Z
> > >
> >
> ==========================================================
> =======
> > =====
> > > ======== 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use
> > > Cipheriv for counter mode of aes-256-ctr
> > > 2021-08-02T01:09:29.3510020Z
> > > (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for
> > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3513605Z (node:3659)
> > > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for
> > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3517536Z (node:3659)
> > > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for
> > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3545461Z
> > > [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build
> > > -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a
> > > IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
> > > 2021-08-02T01:09:29.3546707Z SECTION - Init SDE
> > > 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based
> > > BaseTools 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
> > > 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
> > > 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
> > > 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
> > > 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg
> Package
> > > 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg:
> > > EccCheck Test NO-TARGET -- 2021-08-02T01:09:33.0697006Z ERROR -
> > > 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
> > > 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
> > > 2021-08-02T01:09:33.0700631Z ERROR - *There should be no
> > > initialization of a variable as part of its declaration
> > > 2021-08-02T01:09:33.0702675Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0703421Z ERROR - *Line number:
> > > 77 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
> > > 2021-08-02T01:09:33.0715684Z ERROR - 2021-08-02T01:09:33.0716634Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0717372Z ERROR -
> > > *Error code: 5007 2021-08-02T01:09:33.0718214Z ERROR - *There should
> > > be no initialization of a variable as part of its declaration
> > > 2021-08-02T01:09:33.0719195Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0720631Z ERROR - *Line number:
> > > 78 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
> > > 2021-08-02T01:09:33.0722114Z ERROR - 2021-08-02T01:09:33.0724953Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0725713Z ERROR -
> > > *Error code: 5007 2021-08-02T01:09:33.0726562Z ERROR - *There should
> > > be no initialization of a variable as part of its declaration
> > > 2021-08-02T01:09:33.0727526Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0728345Z ERROR - *Line number:
> > > 79 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
> > > 2021-08-02T01:09:33.0729694Z ERROR - 2021-08-02T01:09:33.0732496Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0733224Z ERROR -
> > > *Error code: 7001 2021-08-02T01:09:33.0734114Z ERROR - *There should
> > > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > > files 2021-08-02T01:09:33.0737620Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0739185Z ERROR - *Line number:
> > > 117 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
> > > 2021-08-02T01:09:33.0744099Z ERROR - 2021-08-02T01:09:33.0744829Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0745459Z ERROR -
> > > *Error code: 7001 2021-08-02T01:09:33.0746821Z ERROR - *There should
> > > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > > files 2021-08-02T01:09:33.0747774Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0749076Z ERROR - *Line number:
> > > 117 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
> > > 2021-08-02T01:09:33.0750999Z ERROR - 2021-08-02T01:09:33.0751607Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0754599Z ERROR -
> > > *Error code: 7001 2021-08-02T01:09:33.0761175Z ERROR - *There should
> > > be no use of int, unsigned, char, void, long in any .c, .h or .asl
> > > files 2021-08-02T01:09:33.0762167Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0763160Z ERROR - *Line number:
> > > 117 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
> > > 2021-08-02T01:09:33.0764290Z ERROR - 2021-08-02T01:09:33.0764843Z
> > > ERROR - EFI coding style error 2021-08-02T01:09:33.0766810Z ERROR -
> > > *Error code: 8006 2021-08-02T01:09:33.0767819Z ERROR - *Function
> > > name does not follow the rules: 1. First character should be upper case 2.
> > > Must contain lower case characters 3. No white space characters
> > > 2021-08-02T01:09:33.0768881Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0769619Z ERROR - *Line number:
> > > 181 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main]
> > > does not follow the rules 2021-08-02T01:09:33.0791935Z ERROR -
> > > 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
> > > 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
> > > 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should
> > > follow Doxygen special documentation blocks in section 2.3.5
> > > 2021-08-02T01:09:33.0796271Z ERROR - *file:
> > >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > or tLibUnitTest.c 2021-08-02T01:09:33.0796985Z ERROR - *Line number:
> > > 178 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in comment
> > > 2021-08-02T01:09:33.0798208Z ERROR - 2021-08-02T01:09:33.0798859Z
> > > ERROR - --->Test Failed: EccCheck Test NO-TARGET returned 1
> > > 2021-08-02T01:09:33.0807351Z PROGRESS - --Running MdeModulePkg:
> Dsc
> > > Complete Check Test NO-TARGET -- 2021-08-02T01:09:33.1524790Z
> > PROGRESS
> > > - --->Test Success: Dsc Complete Check Test NO-TARGET
> > > 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg:
> Char
> > > Encoding Check Test NO-TARGET -- 2021-08-02T01:09:33.6280380Z
> > PROGRESS
> > > - --->Test Success: Char Encoding Check Test NO-TARGET
> > > 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg:
> > > License Check Test NO-TARGET -- 2021-08-02T01:09:33.6495642Z
> > > PROGRESS
> > > - --->Test Success: License Check Test NO-TARGET
> > > 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg:
> > > Compiler Plugin RELEASE -- 2021-08-02T01:09:33.6785178Z PROGRESS -
> > > Start time: 2021-08-02 01:09:33.677952 2021-08-02T01:09:33.6787716Z
> > PROGRESS - Setting up the Environment 2021-08-02T01:09:33.7725244Z
> > PROGRESS - Running Pre Build 2021-08-02T01:09:33.7740357Z PROGRESS -
> > Running Build RELEASE 2021-08-02T01:17:18.5479885Z PROGRESS - Running
> > Post Build
> > > 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02
> > 01:17:18.549974 Total time Elapsed: 0:07:44
> > > 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler
> > > Plugin RELEASE 2021-08-02T01:17:18.5519284Z PROGRESS - --Running
> > > MdeModulePkg: Library Class Check Test NO-TARGET --
> > > 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library
> > > Class Check Test NO-TARGET 2021-08-02T01:17:18.5648791Z PROGRESS -
> > > --Running MdeModulePkg: Dependency Check Test NO-TARGET --
> > > 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success: Dependency
> > > Check Test NO-TARGET 2021-08-02T01:17:18.7316162Z PROGRESS -
> > > --Running
> > > MdeModulePkg: Spell Check Test NO-TARGET --
> > > 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin!
> > > Spell Check Test NO-TARGET 2021-08-02T01:17:23.7934112Z PROGRESS -
> > > --Running MdeModulePkg: Guid Check Test NO-TARGET --
> > > 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid Check
> > > Test NO-TARGET 2021-08-02T01:17:27.1939129Z PROGRESS - --Running
> > > MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
> > > 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host Unit
> > > Test Dsc Complete Check Test NO-TARGET 2021-08-02T01:17:27.3731676Z
> > > ERROR - Overall Build Status: Error 2021-08-02T01:17:27.3733283Z
> > > PROGRESS - There were 1 failures out of 10 attempts
> > > 2021-08-02T01:17:27.3734501Z SECTION - Summary
> > > 2021-08-02T01:17:27.3735613Z ERROR - Error
> > > 2021-08-02T01:17:27.4159842Z
> > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build
> > > failed with return code: 1 2021-08-02T01:17:27.4173134Z
> > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build
> > > failed with error:
> > > /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed
> > > with return code: 1 2021-08-02T01:17:27.4178252Z ##[section]Finishing:
> > > Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
> > >
> > > Best Regards,
> > > Hao Wu
> > >
> > >
> > >>
> > >> I will wait a couple days before merging to see if any additional
> > >> comment from other reviewers.
> > >>
> > >> Best Regards,
> > >> Hao Wu
> > >>
> > >>
> > >>>
> > >>> Cc: Jian J Wang <jian.j.wang@intel.com>
> > >>> Cc: Hao A Wu <hao.a.wu@intel.com>
> > >>> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
> > >>> ---
> > >>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6 +
> > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf
> > >>> |
> > >>> 32
> > >>> ++++
> > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> | 188
> > >>> ++++++++++++++++++++
> > >>> 3 files changed, 226 insertions(+)
> > >>>
> > >>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > >>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > >>> index 4da4692c8451..c9ec835df65d 100644
> > >>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > >>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > >>> @@ -41,3 +41,9 @@ [Components]
> > >>> <PcdsFixedAtBuild>
> > >>>
> > >>>
> > >>
> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
> > >>> able|TRUE
> > >>> }
> > >>> +
> > >>> +
> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
> > >>> + <LibraryClasses>
> > >>> +
> > >>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> > >>> +
> > >>> +
> DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib
> > >>> + DevicePathLib|.i
> > >>> + DevicePathLib|nf
> > >>> + }
> > >>> diff --git
> > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > >>> f
> > >>>
> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > >>> f
> > >>> new file mode 100644
> > >>> index 000000000000..85d8dcd69619
> > >>> --- /dev/null
> > >>> +++
> > >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > >>> +++ f
> > >>> @@ -0,0 +1,32 @@
> > >>> +## @file
> > >>> +# This is a unit test for the UefiSortLib.
> > >>> +#
> > >>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
> > >>> +#
> > >>> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
> > >>> +
> > >>> +[Defines]
> > >>> + INF_VERSION = 0x00010017
> > >>> + BASE_NAME = UefiSortLibUnitTest
> > >>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
> > >>> + VERSION_STRING = 1.0
> > >>> + MODULE_TYPE = HOST_APPLICATION
> > >>> +
> > >>> +#
> > >>> +# The following information is for reference only and not
> > >>> +required by the
> > >>> build tools.
> > >>> +#
> > >>> +# VALID_ARCHITECTURES = IA32 X64
> > >>> +#
> > >>> +
> > >>> +[Sources]
> > >>> + UefiSortLibUnitTest.c
> > >>> +
> > >>> +[Packages]
> > >>> + MdePkg/MdePkg.dec
> > >>> + MdeModulePkg/MdeModulePkg.dec
> > >>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> > >>> +
> > >>> +[LibraryClasses]
> > >>> + UnitTestLib
> > >>> + DebugLib
> > >>> + UefiSortLib
> > >>> diff --git
> > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > >>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > >>> new file mode 100644
> > >>> index 000000000000..71f30d8b9f7f
> > >>> --- /dev/null
> > >>> +++
> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> > >>> +++ c
> > >>> @@ -0,0 +1,188 @@
> > >>> +/** @file
> > >>> + Unit tests of the UefiSortLib
> > >>> +
> > >>> + Copyright (C) Huawei Technologies Co., Ltd. All rights reserved
> > >>> + SPDX-License-Identifier: BSD-2-Clause-Patent
> > >>> +
> > >>> +**/
> > >>> +
> > >>> +#include <stdio.h>
> > >>> +#include <string.h>
> > >>> +#include <stdarg.h>
> > >>> +#include <stddef.h>
> > >>> +#include <setjmp.h>
> > >>> +#include <cmocka.h>
> > >>> +
> > >>> +#include <Uefi.h>
> > >>> +#include <Library/BaseLib.h>
> > >>> +#include <Library/DebugLib.h>
> > >>> +#include <Library/MemoryAllocationLib.h>
> > >>> +
> > >>> +#include <Library/UnitTestLib.h>
> > >>> +#include <Library/SortLib.h>
> > >>> +
> > >>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
> > >>> +#define UNIT_TEST_APP_VERSION "1.0"
> > >>> +
> > >>> +#define TEST_ARRAY_SIZE_9 9
> > >>> +
> > >>> +/**
> > >>> + The function is called by PerformQuickSort to compare int values.
> > >>> +
> > >>> + @param[in] Left The pointer to first buffer.
> > >>> + @param[in] Right The pointer to second buffer.
> > >>> +
> > >>> + @retval 0 Buffer1 equal to Buffer2.
> > >>> + @return <0 Buffer1 is less than Buffer2.
> > >>> + @return >0 Buffer1 is greater than Buffer2.
> > >>> +
> > >>> +**/
> > >>> +INTN
> > >>> +EFIAPI
> > >>> +TestCompareFunction (
> > >>> + IN CONST VOID *Left,
> > >>> + IN CONST VOID *Right
> > >>> + )
> > >>> +{
> > >>> + if (*(UINT32*)Right > *(UINT32*)Left) {
> > >>> + return 1;
> > >>> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
> > >>> + return -1;
> > >>> + }
> > >>> +
> > >>> + return 0;
> > >>> +}
> > >>> +
> > >>> +/**
> > >>> + Unit test for PerformQuickSort () API of the UefiSortLib.
> > >>> +
> > >>> + @param[in] Context [Optional] An optional parameter that
> enables:
> > >>> + 1) test-case reuse with varied parameters and
> > >>> + 2) test-case re-entry for Target tests that need a
> > >>> + reboot. This parameter is a VOID* and it is the
> > >>> + responsibility of the test author to ensure that the
> > >>> + contents are well understood by all test cases that may
> > >>> + consume it.
> > >>> +
> > >>> + @retval UNIT_TEST_PASSED The Unit test has completed and
> the
> > >>> test
> > >>> + case was successful.
> > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> > >> failed.
> > >>> +**/
> > >>> +UNIT_TEST_STATUS
> > >>> +EFIAPI
> > >>> +SortUINT32ArrayShouldSucceed (
> > >>> + IN UNIT_TEST_CONTEXT Context
> > >>> + )
> > >>> +{
> > >>> + UINTN TestCount = TEST_ARRAY_SIZE_9;
> > >>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7 ,8,
> > >>> +9};
> > >>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3, 2,
> > >>> +1};
> > >>> +
> > >>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
> > >>> + (SORT_COMPARE)TestCompareFunction);
> > >>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32) *
> > >>> + TEST_ARRAY_SIZE_9);
> > >>> +
> > >>> + return UNIT_TEST_PASSED;
> > >>> +}
> > >>> +
> > >>> +/**
> > >>> + Unit test for StringCompare () API of the UefiSortLib.
> > >>> +
> > >>> + @param[in] Context [Optional] An optional parameter that
> enables:
> > >>> + 1) test-case reuse with varied parameters and
> > >>> + 2) test-case re-entry for Target tests that need a
> > >>> + reboot. This parameter is a VOID* and it is the
> > >>> + responsibility of the test author to ensure that the
> > >>> + contents are well understood by all test cases that may
> > >>> + consume it.
> > >>> +
> > >>> + @retval UNIT_TEST_PASSED The Unit test has completed and
> the
> > >>> test
> > >>> + case was successful.
> > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion has
> > >> failed.
> > >>> +**/
> > >>> +UNIT_TEST_STATUS
> > >>> +EFIAPI
> > >>> +CompareSameBufferShouldSucceed (
> > >>> + IN UNIT_TEST_CONTEXT Context
> > >>> + )
> > >>> +{
> > >>> + INTN retval;
> > >>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
> > >>> +
> > >>> + retval = StringCompare (TestBuffer, TestBuffer);
> > >>> + UT_ASSERT_TRUE (retval == 0);
> > >>> +
> > >>> + return UNIT_TEST_PASSED;
> > >>> +}
> > >>> +
> > >>> +/**
> > >>> + Initialze the unit test framework, suite, and unit tests for
> > >>> +the
> > >>> + UefiSortLib and run the UefiSortLib unit test.
> > >>> +
> > >>> + @retval EFI_SUCCESS All test cases were dispatched.
> > >>> + @retval EFI_OUT_OF_RESOURCES There are not enough resources
> > >>> available to
> > >>> + initialize the unit tests.
> > >>> +**/
> > >>> +STATIC
> > >>> +EFI_STATUS
> > >>> +EFIAPI
> > >>> +UnitTestingEntry (
> > >>> + VOID
> > >>> + )
> > >>> +{
> > >>> + EFI_STATUS Status;
> > >>> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> > >>> + UNIT_TEST_SUITE_HANDLE SortTests;
> > >>> +
> > >>> + Framework = NULL;
> > >>> +
> > >>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> > >>> + UNIT_TEST_APP_VERSION ));
> > >>> +
> > >>> + //
> > >>> + // Start setting up the test framework for running the tests.
> > >>> + //
> > >>> + Status = InitUnitTestFramework (&Framework,
> UNIT_TEST_APP_NAME,
> > >>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR
> > >>> + (Status))
> > >> {
> > >>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework. Status
> > >>> = %r\n", Status));
> > >>> + goto EXIT;
> > >>> + }
> > >>> +
> > >>> + //
> > >>> + // Populate the UefiSortLib Unit Test Suite.
> > >>> + //
> > >>> + Status = CreateUnitTestSuite (&SortTests, Framework,
> > >>> + "UefiSortLib Sort Tests", "UefiSortLib.SortLib", NULL, NULL); if
> (EFI_ERROR (Status)) {
> > >>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
> > >>> + UefiSortLib
> > >>> API Tests\n"));
> > >>> + Status = EFI_OUT_OF_RESOURCES;
> > >>> + goto EXIT;
> > >>> + }
> > >>> +
> > >>> + //
> > >>> + //
> > >>> + --------------Suite--------Description------------Name----------
> > >>> + --
> > >>> + --
> > >>> + Fu
> > >>> + nction----------------Pre---Post---Context-----------
> > >>> + //
> > >>> + AddTestCase (SortTests, "Sort the Array", "Sort",
> > >>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
> > >>> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
> > >>> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
> > >>> +
> > >>> + //
> > >>> + // Execute the tests.
> > >>> + //
> > >>> + Status = RunAllTestSuites (Framework);
> > >>> +
> > >>> +EXIT:
> > >>> + if (Framework) {
> > >>> + FreeUnitTestFramework (Framework);
> > >>> + }
> > >>> +
> > >>> + return Status;
> > >>> +}
> > >>> +
> > >>> +/**
> > >>> + Standard POSIX C entry point for host based unit test execution.
> > >>> +**/
> > >>> +int
> > >>> +main (
> > >>> + int argc,
> > >>> + char *argv[]
> > >>> + )
> > >>> +{
> > >>> + return UnitTestingEntry ();
> > >>> +}
> > >>> --
> > >>> 2.20.1.windows.1
> > >>
> > >>
> > >>
> > >>
> > >>
> > >
> > > .
> > >
>
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-08-10 4:11 ` Wu, Hao A
@ 2021-08-11 1:50 ` Wu, Hao A
2021-08-11 1:59 ` wenyi,xie
0 siblings, 1 reply; 9+ messages in thread
From: Wu, Hao A @ 2021-08-11 1:50 UTC (permalink / raw)
To: xiewenyi (A), devel@edk2.groups.io
Cc: songdongkuang@huawei.com, Wang, Jian J, Kinney, Michael D
Seems no help is received so far.
The approach I can think of is to add this to the ECC exception list defined in file MdeModulePkg.ci.yaml.
Hello Wenyi,
Could you help to check if the code changes in https://github.com/tianocore/edk2/pull/1883 works for you?
If so, could you update a V3 version of the patch? Thanks in advance.
Best Regards,
Hao Wu
> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
> A
> Sent: Tuesday, August 10, 2021 12:12 PM
> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io;
> xiewenyi (A) <xiewenyi2@huawei.com>
> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>
> Sorry Mike,
>
> Do you have advice on how to deal with ECC reporting function naming issue
> on the 'main' function for unit test cases?
> So far, I think Wenyi has tried following the same pattern in file
> MdeModulePkg\Universal\Variable\RuntimeDxe\RuntimeDxeUnitTest\Vari
> ableLockRequestToLockUnitTest.c:
>
> ///
> /// Avoid ECC error for function name that starts with lower case letter ///
> #define Main main
>
> /**
> Standard POSIX C entry point for host based unit test execution.
>
> @param[in] Argc Number of arguments
> @param[in] Argv Array of pointers to arguments
>
> @retval 0 Success
> @retval other Error
> **/
> INT32
> Main (
> IN INT32 Argc,
> IN CHAR8 *Argv[]
> )
>
> But it looks like the ECC checker in the merge test is still complaining.
>
> Best Regards,
> Hao Wu
>
> > -----Original Message-----
> > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu,
> Hao
> > A
> > Sent: Wednesday, August 4, 2021 4:24 PM
> > To: xiewenyi (A) <xiewenyi2@huawei.com>; Kinney, Michael D
> > <michael.d.kinney@intel.com>; devel@edk2.groups.io
> > Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> >
> > > -----Original Message-----
> > > From: xiewenyi (A) <xiewenyi2@huawei.com>
> > > Sent: Wednesday, August 4, 2021 4:05 PM
> > > To: Wu, Hao A <hao.a.wu@intel.com>; devel@edk2.groups.io
> > > Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
> > > Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > > MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> > >
> > >
> > >
> > > On 2021/8/2 9:56, Wu, Hao A wrote:
> > > >> -----Original Message-----
> > > >> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
> > > >> Wu, Hao A
> > > >> Sent: Thursday, July 29, 2021 4:26 PM
> > > >> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io;
> Wang,
> > > >> Jian J <jian.j.wang@intel.com>
> > > >> Cc: songdongkuang@huawei.com
> > > >> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
> > > >> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
> > > >>
> > > >>> -----Original Message-----
> > > >>> From: Wenyi Xie <xiewenyi2@huawei.com>
> > > >>> Sent: Thursday, July 29, 2021 4:01 PM
> > > >>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>;
> > > >>> Wu, Hao A <hao.a.wu@intel.com>
> > > >>> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
> > > >>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add
> > > >>> UefiSortLib unit test
> > > >>>
> > > >>> Adding two unit test case for UefiSortLib. One is a test on
> > > >>> sorting an array of
> > > >>> UINT32 by using PerformQuickSort, another is a test on comparing
> > > >>> the same buffer by using StringCompare.
> > > >>
> > > >>
> > > >> Thanks.
> > > >> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
> > > >
> > > >
> > > > Sorry, I found that there are a couple of coding format style
> > > > check failures
> > > when merging the patch.
> > > > Could you help to resolve them and then create a test pull request
> > > > on the
> > > GitHub for verification? Thanks in advance.
> > > > (I think you can take the case under
> > > >
> MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/
> > for
> > > > reference.)
> > > >
> > >
> > > Hi, Wu Hao
> > >
> > > I try to deal with the coding format style check failures, and meet
> > > a failure which I am not sure how to solve.
> > > I take the case you told for reference, but still there's a failure
> > > said the define should be capital letters.
> > > but if change it to capital letters, there will be another error
> > > Function name does not follow the rules: 1. First character should
> > > be upper case 2. Must contain lower case characters 3. No white
> > > space characters
> > >
> > > #define Main main
> > >
> > > INT32
> > > Main (
> > > IN INT32 Argc,
> > > IN CHAR8 *Argv[]
> > > )
> > > {
> > > UnitTestingEntry ();
> > > return 0;
> > > }
> >
> >
> > Hello Mike,
> >
> > I saw the below commit:
> > SHA-1: dcaa93936591883aa7826eb45ef00416ad82ef08
> > * MdeModulePkg/Variable/RuntimeDxe: Add Variable Lock Protocol Unit
> > Tests has a similar case that should involve the naming of the 'main'
> > function within the unit test codes.
> >
> > I am wondering how the open raised by Wenyi was handled back then.
> > Do you have suggestions for this case? Thanks in advance.
> >
> > Best Regards,
> > Hao Wu
> >
> >
> > >
> > > Thanks
> > > Wenyi
> > >
> > > > Error details:
> > > > 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test
> > > > MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 2021-08-
> > > 02T01:09:28.5960733Z
> > >
> >
> ==========================================================
> > =======
> > > =============
> > > > 2021-08-02T01:09:28.5961018Z Task : Command Line
> > > > 2021-08-02T01:09:28.5961258Z Description : Run a command line
> > > > with
> > > arguments
> > > > 2021-08-02T01:09:28.5961502Z Version : 1.1.3
> > > > 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
> > > > 2021-08-02T01:09:28.5962259Z Help : [More
> > > Information](https://go.microsoft.com/fwlink/?LinkID=613735)
> > > > 2021-08-02T01:09:28.5962678Z
> > > >
> > >
> >
> ==========================================================
> > =======
> > > =====
> > > > ======== 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use
> > > > Cipheriv for counter mode of aes-256-ctr
> > > > 2021-08-02T01:09:29.3510020Z
> > > > (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > > 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for
> > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3513605Z
> > > > (node:3659)
> > > > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > > 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for
> > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3517536Z
> > > > (node:3659)
> > > > Warning: Use Cipheriv for counter mode of aes-256-ctr
> > > > 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for
> > > > counter mode of aes-256-ctr 2021-08-02T01:09:29.3545461Z
> > > >
> [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
> > > > d -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a
> > > > IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
> > > > 2021-08-02T01:09:29.3546707Z SECTION - Init SDE
> > > > 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based
> > > > BaseTools 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
> > > > 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
> > > > 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
> > > > 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
> > > > 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg
> > Package
> > > > 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg:
> > > > EccCheck Test NO-TARGET -- 2021-08-02T01:09:33.0697006Z ERROR -
> > > > 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
> > > > 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
> > > > 2021-08-02T01:09:33.0700631Z ERROR - *There should be no
> > > > initialization of a variable as part of its declaration
> > > > 2021-08-02T01:09:33.0702675Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0703421Z ERROR - *Line number:
> > > > 77 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
> > > > 2021-08-02T01:09:33.0715684Z ERROR - 2021-08-02T01:09:33.0716634Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0717372Z ERROR
> > > > - *Error code: 5007 2021-08-02T01:09:33.0718214Z ERROR - *There
> > > > should be no initialization of a variable as part of its
> > > > declaration 2021-08-02T01:09:33.0719195Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0720631Z ERROR - *Line number:
> > > > 78 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
> > > > 2021-08-02T01:09:33.0722114Z ERROR - 2021-08-02T01:09:33.0724953Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0725713Z ERROR
> > > > - *Error code: 5007 2021-08-02T01:09:33.0726562Z ERROR - *There
> > > > should be no initialization of a variable as part of its
> > > > declaration 2021-08-02T01:09:33.0727526Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0728345Z ERROR - *Line number:
> > > > 79 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
> > > > 2021-08-02T01:09:33.0729694Z ERROR - 2021-08-02T01:09:33.0732496Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0733224Z ERROR
> > > > - *Error code: 7001 2021-08-02T01:09:33.0734114Z ERROR - *There
> > > > should be no use of int, unsigned, char, void, long in any .c, .h
> > > > or .asl files 2021-08-02T01:09:33.0737620Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0739185Z ERROR - *Line number:
> > > > 117 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
> > > > 2021-08-02T01:09:33.0744099Z ERROR - 2021-08-02T01:09:33.0744829Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0745459Z ERROR
> > > > - *Error code: 7001 2021-08-02T01:09:33.0746821Z ERROR - *There
> > > > should be no use of int, unsigned, char, void, long in any .c, .h
> > > > or .asl files 2021-08-02T01:09:33.0747774Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0749076Z ERROR - *Line number:
> > > > 117 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
> > > > 2021-08-02T01:09:33.0750999Z ERROR - 2021-08-02T01:09:33.0751607Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0754599Z ERROR
> > > > - *Error code: 7001 2021-08-02T01:09:33.0761175Z ERROR - *There
> > > > should be no use of int, unsigned, char, void, long in any .c, .h
> > > > or .asl files 2021-08-02T01:09:33.0762167Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0763160Z ERROR - *Line number:
> > > > 117 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
> > > > 2021-08-02T01:09:33.0764290Z ERROR - 2021-08-02T01:09:33.0764843Z
> > > > ERROR - EFI coding style error 2021-08-02T01:09:33.0766810Z ERROR
> > > > - *Error code: 8006 2021-08-02T01:09:33.0767819Z ERROR - *Function
> > > > name does not follow the rules: 1. First character should be upper case
> 2.
> > > > Must contain lower case characters 3. No white space characters
> > > > 2021-08-02T01:09:33.0768881Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0769619Z ERROR - *Line number:
> > > > 181 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main]
> > > > does not follow the rules 2021-08-02T01:09:33.0791935Z ERROR -
> > > > 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
> > > > 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
> > > > 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should
> > > > follow Doxygen special documentation blocks in section 2.3.5
> > > > 2021-08-02T01:09:33.0796271Z ERROR - *file:
> > > >
> >
> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
> > > > or tLibUnitTest.c 2021-08-02T01:09:33.0796985Z ERROR - *Line number:
> > > > 178 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in
> > > > comment 2021-08-02T01:09:33.0798208Z ERROR -
> > > > 2021-08-02T01:09:33.0798859Z ERROR - --->Test Failed: EccCheck
> > > > Test NO-TARGET returned 1 2021-08-02T01:09:33.0807351Z PROGRESS -
> --Running MdeModulePkg:
> > Dsc
> > > > Complete Check Test NO-TARGET -- 2021-08-02T01:09:33.1524790Z
> > > PROGRESS
> > > > - --->Test Success: Dsc Complete Check Test NO-TARGET
> > > > 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg:
> > Char
> > > > Encoding Check Test NO-TARGET -- 2021-08-02T01:09:33.6280380Z
> > > PROGRESS
> > > > - --->Test Success: Char Encoding Check Test NO-TARGET
> > > > 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg:
> > > > License Check Test NO-TARGET -- 2021-08-02T01:09:33.6495642Z
> > > > PROGRESS
> > > > - --->Test Success: License Check Test NO-TARGET
> > > > 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg:
> > > > Compiler Plugin RELEASE -- 2021-08-02T01:09:33.6785178Z PROGRESS -
> > > > Start time: 2021-08-02 01:09:33.677952
> > > > 2021-08-02T01:09:33.6787716Z
> > > PROGRESS - Setting up the Environment 2021-08-02T01:09:33.7725244Z
> > > PROGRESS - Running Pre Build 2021-08-02T01:09:33.7740357Z PROGRESS -
> > > Running Build RELEASE 2021-08-02T01:17:18.5479885Z PROGRESS -
> > > Running Post Build
> > > > 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02
> > > 01:17:18.549974 Total time Elapsed: 0:07:44
> > > > 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler
> > > > Plugin RELEASE 2021-08-02T01:17:18.5519284Z PROGRESS - --Running
> > > > MdeModulePkg: Library Class Check Test NO-TARGET --
> > > > 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library
> > > > Class Check Test NO-TARGET 2021-08-02T01:17:18.5648791Z PROGRESS -
> > > > --Running MdeModulePkg: Dependency Check Test NO-TARGET --
> > > > 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success:
> > > > Dependency Check Test NO-TARGET 2021-08-02T01:17:18.7316162Z
> > > > PROGRESS - --Running
> > > > MdeModulePkg: Spell Check Test NO-TARGET --
> > > > 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin!
> > > > Spell Check Test NO-TARGET 2021-08-02T01:17:23.7934112Z PROGRESS -
> > > > --Running MdeModulePkg: Guid Check Test NO-TARGET --
> > > > 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid
> > > > Check Test NO-TARGET 2021-08-02T01:17:27.1939129Z PROGRESS -
> > > > --Running
> > > > MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
> > > > 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host
> > > > Unit Test Dsc Complete Check Test NO-TARGET
> > > > 2021-08-02T01:17:27.3731676Z ERROR - Overall Build Status: Error
> > > > 2021-08-02T01:17:27.3733283Z PROGRESS - There were 1 failures out
> > > > of 10 attempts 2021-08-02T01:17:27.3734501Z SECTION - Summary
> > > > 2021-08-02T01:17:27.3735613Z ERROR - Error
> > > > 2021-08-02T01:17:27.4159842Z
> > > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
> > > > d failed with return code: 1 2021-08-02T01:17:27.4173134Z
> > > > ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
> > > > d
> > > > failed with error:
> > > > /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed
> > > > with return code: 1 2021-08-02T01:17:27.4178252Z ##[section]Finishing:
> > > > Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
> > > >
> > > > Best Regards,
> > > > Hao Wu
> > > >
> > > >
> > > >>
> > > >> I will wait a couple days before merging to see if any additional
> > > >> comment from other reviewers.
> > > >>
> > > >> Best Regards,
> > > >> Hao Wu
> > > >>
> > > >>
> > > >>>
> > > >>> Cc: Jian J Wang <jian.j.wang@intel.com>
> > > >>> Cc: Hao A Wu <hao.a.wu@intel.com>
> > > >>> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
> > > >>> ---
> > > >>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6
> +
> > > >>>
> > > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > > >>> f
> > > >>> |
> > > >>> 32
> > > >>> ++++
> > > >>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
> > | 188
> > > >>> ++++++++++++++++++++
> > > >>> 3 files changed, 226 insertions(+)
> > > >>>
> > > >>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > > >>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > > >>> index 4da4692c8451..c9ec835df65d 100644
> > > >>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > > >>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
> > > >>> @@ -41,3 +41,9 @@ [Components]
> > > >>> <PcdsFixedAtBuild>
> > > >>>
> > > >>>
> > > >>
> >
> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
> > > >>> able|TRUE
> > > >>> }
> > > >>> +
> > > >>> +
> > MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
> > > >>> + <LibraryClasses>
> > > >>> +
> > > >>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
> > > >>> +
> > > >>> +
> > DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib
> > > >>> + DevicePathLib|.i
> > > >>> + DevicePathLib|nf
> > > >>> + }
> > > >>> diff --git
> > > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> > > >>> in
> > > >>> f
> > > >>>
> > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
> > > >>> f
> > > >>> new file mode 100644
> > > >>> index 000000000000..85d8dcd69619
> > > >>> --- /dev/null
> > > >>> +++
> > > >> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.i
> > > >> n
> > > >>> +++ f
> > > >>> @@ -0,0 +1,32 @@
> > > >>> +## @file
> > > >>> +# This is a unit test for the UefiSortLib.
> > > >>> +#
> > > >>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights
> > > >>> +reserved #
> > > >>> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
> > > >>> +
> > > >>> +[Defines]
> > > >>> + INF_VERSION = 0x00010017
> > > >>> + BASE_NAME = UefiSortLibUnitTest
> > > >>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
> > > >>> + VERSION_STRING = 1.0
> > > >>> + MODULE_TYPE = HOST_APPLICATION
> > > >>> +
> > > >>> +#
> > > >>> +# The following information is for reference only and not
> > > >>> +required by the
> > > >>> build tools.
> > > >>> +#
> > > >>> +# VALID_ARCHITECTURES = IA32 X64
> > > >>> +#
> > > >>> +
> > > >>> +[Sources]
> > > >>> + UefiSortLibUnitTest.c
> > > >>> +
> > > >>> +[Packages]
> > > >>> + MdePkg/MdePkg.dec
> > > >>> + MdeModulePkg/MdeModulePkg.dec
> > > >>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
> > > >>> +
> > > >>> +[LibraryClasses]
> > > >>> + UnitTestLib
> > > >>> + DebugLib
> > > >>> + UefiSortLib
> > > >>> diff --git
> > > >>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> > > >>> c
> > > >>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> > > >>> c
> > > >>> new file mode 100644
> > > >>> index 000000000000..71f30d8b9f7f
> > > >>> --- /dev/null
> > > >>> +++
> > b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
> > > >>> +++ c
> > > >>> @@ -0,0 +1,188 @@
> > > >>> +/** @file
> > > >>> + Unit tests of the UefiSortLib
> > > >>> +
> > > >>> + Copyright (C) Huawei Technologies Co., Ltd. All rights
> > > >>> + reserved
> > > >>> + SPDX-License-Identifier: BSD-2-Clause-Patent
> > > >>> +
> > > >>> +**/
> > > >>> +
> > > >>> +#include <stdio.h>
> > > >>> +#include <string.h>
> > > >>> +#include <stdarg.h>
> > > >>> +#include <stddef.h>
> > > >>> +#include <setjmp.h>
> > > >>> +#include <cmocka.h>
> > > >>> +
> > > >>> +#include <Uefi.h>
> > > >>> +#include <Library/BaseLib.h>
> > > >>> +#include <Library/DebugLib.h>
> > > >>> +#include <Library/MemoryAllocationLib.h>
> > > >>> +
> > > >>> +#include <Library/UnitTestLib.h> #include <Library/SortLib.h>
> > > >>> +
> > > >>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
> > > >>> +#define UNIT_TEST_APP_VERSION "1.0"
> > > >>> +
> > > >>> +#define TEST_ARRAY_SIZE_9 9
> > > >>> +
> > > >>> +/**
> > > >>> + The function is called by PerformQuickSort to compare int values.
> > > >>> +
> > > >>> + @param[in] Left The pointer to first buffer.
> > > >>> + @param[in] Right The pointer to second buffer.
> > > >>> +
> > > >>> + @retval 0 Buffer1 equal to Buffer2.
> > > >>> + @return <0 Buffer1 is less than Buffer2.
> > > >>> + @return >0 Buffer1 is greater than Buffer2.
> > > >>> +
> > > >>> +**/
> > > >>> +INTN
> > > >>> +EFIAPI
> > > >>> +TestCompareFunction (
> > > >>> + IN CONST VOID *Left,
> > > >>> + IN CONST VOID *Right
> > > >>> + )
> > > >>> +{
> > > >>> + if (*(UINT32*)Right > *(UINT32*)Left) {
> > > >>> + return 1;
> > > >>> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
> > > >>> + return -1;
> > > >>> + }
> > > >>> +
> > > >>> + return 0;
> > > >>> +}
> > > >>> +
> > > >>> +/**
> > > >>> + Unit test for PerformQuickSort () API of the UefiSortLib.
> > > >>> +
> > > >>> + @param[in] Context [Optional] An optional parameter that
> > enables:
> > > >>> + 1) test-case reuse with varied parameters and
> > > >>> + 2) test-case re-entry for Target tests that need a
> > > >>> + reboot. This parameter is a VOID* and it is the
> > > >>> + responsibility of the test author to ensure that the
> > > >>> + contents are well understood by all test cases that may
> > > >>> + consume it.
> > > >>> +
> > > >>> + @retval UNIT_TEST_PASSED The Unit test has completed
> and
> > the
> > > >>> test
> > > >>> + case was successful.
> > > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion
> > > >>> + has
> > > >> failed.
> > > >>> +**/
> > > >>> +UNIT_TEST_STATUS
> > > >>> +EFIAPI
> > > >>> +SortUINT32ArrayShouldSucceed (
> > > >>> + IN UNIT_TEST_CONTEXT Context
> > > >>> + )
> > > >>> +{
> > > >>> + UINTN TestCount = TEST_ARRAY_SIZE_9;
> > > >>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7
> > > >>> +,8, 9};
> > > >>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3,
> > > >>> +2, 1};
> > > >>> +
> > > >>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
> > > >>> + (SORT_COMPARE)TestCompareFunction);
> > > >>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32)
> > > >>> + * TEST_ARRAY_SIZE_9);
> > > >>> +
> > > >>> + return UNIT_TEST_PASSED;
> > > >>> +}
> > > >>> +
> > > >>> +/**
> > > >>> + Unit test for StringCompare () API of the UefiSortLib.
> > > >>> +
> > > >>> + @param[in] Context [Optional] An optional parameter that
> > enables:
> > > >>> + 1) test-case reuse with varied parameters and
> > > >>> + 2) test-case re-entry for Target tests that need a
> > > >>> + reboot. This parameter is a VOID* and it is the
> > > >>> + responsibility of the test author to ensure that the
> > > >>> + contents are well understood by all test cases that may
> > > >>> + consume it.
> > > >>> +
> > > >>> + @retval UNIT_TEST_PASSED The Unit test has completed
> and
> > the
> > > >>> test
> > > >>> + case was successful.
> > > >>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion
> > > >>> + has
> > > >> failed.
> > > >>> +**/
> > > >>> +UNIT_TEST_STATUS
> > > >>> +EFIAPI
> > > >>> +CompareSameBufferShouldSucceed (
> > > >>> + IN UNIT_TEST_CONTEXT Context
> > > >>> + )
> > > >>> +{
> > > >>> + INTN retval;
> > > >>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
> > > >>> +
> > > >>> + retval = StringCompare (TestBuffer, TestBuffer);
> > > >>> + UT_ASSERT_TRUE (retval == 0);
> > > >>> +
> > > >>> + return UNIT_TEST_PASSED;
> > > >>> +}
> > > >>> +
> > > >>> +/**
> > > >>> + Initialze the unit test framework, suite, and unit tests for
> > > >>> +the
> > > >>> + UefiSortLib and run the UefiSortLib unit test.
> > > >>> +
> > > >>> + @retval EFI_SUCCESS All test cases were dispatched.
> > > >>> + @retval EFI_OUT_OF_RESOURCES There are not enough
> resources
> > > >>> available to
> > > >>> + initialize the unit tests.
> > > >>> +**/
> > > >>> +STATIC
> > > >>> +EFI_STATUS
> > > >>> +EFIAPI
> > > >>> +UnitTestingEntry (
> > > >>> + VOID
> > > >>> + )
> > > >>> +{
> > > >>> + EFI_STATUS Status;
> > > >>> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
> > > >>> + UNIT_TEST_SUITE_HANDLE SortTests;
> > > >>> +
> > > >>> + Framework = NULL;
> > > >>> +
> > > >>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
> > > >>> + UNIT_TEST_APP_VERSION ));
> > > >>> +
> > > >>> + //
> > > >>> + // Start setting up the test framework for running the tests.
> > > >>> + //
> > > >>> + Status = InitUnitTestFramework (&Framework,
> > UNIT_TEST_APP_NAME,
> > > >>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR
> > > >>> + (Status))
> > > >> {
> > > >>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework.
> > > >>> + Status
> > > >>> = %r\n", Status));
> > > >>> + goto EXIT;
> > > >>> + }
> > > >>> +
> > > >>> + //
> > > >>> + // Populate the UefiSortLib Unit Test Suite.
> > > >>> + //
> > > >>> + Status = CreateUnitTestSuite (&SortTests, Framework,
> > > >>> + "UefiSortLib Sort Tests", "UefiSortLib.SortLib", NULL, NULL);
> > > >>> + if
> > (EFI_ERROR (Status)) {
> > > >>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
> > > >>> + UefiSortLib
> > > >>> API Tests\n"));
> > > >>> + Status = EFI_OUT_OF_RESOURCES;
> > > >>> + goto EXIT;
> > > >>> + }
> > > >>> +
> > > >>> + //
> > > >>> + //
> > > >>> + --------------Suite--------Description------------Name--------
> > > >>> + --
> > > >>> + --
> > > >>> + --
> > > >>> + Fu
> > > >>> + nction----------------Pre---Post---Context-----------
> > > >>> + //
> > > >>> + AddTestCase (SortTests, "Sort the Array", "Sort",
> > > >>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
> > > >>> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
> > > >>> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
> > > >>> +
> > > >>> + //
> > > >>> + // Execute the tests.
> > > >>> + //
> > > >>> + Status = RunAllTestSuites (Framework);
> > > >>> +
> > > >>> +EXIT:
> > > >>> + if (Framework) {
> > > >>> + FreeUnitTestFramework (Framework);
> > > >>> + }
> > > >>> +
> > > >>> + return Status;
> > > >>> +}
> > > >>> +
> > > >>> +/**
> > > >>> + Standard POSIX C entry point for host based unit test execution.
> > > >>> +**/
> > > >>> +int
> > > >>> +main (
> > > >>> + int argc,
> > > >>> + char *argv[]
> > > >>> + )
> > > >>> +{
> > > >>> + return UnitTestingEntry ();
> > > >>> +}
> > > >>> --
> > > >>> 2.20.1.windows.1
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >
> > > > .
> > > >
> >
> >
> >
> >
>
>
>
>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [edk2-devel] [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
2021-08-11 1:50 ` Wu, Hao A
@ 2021-08-11 1:59 ` wenyi,xie
0 siblings, 0 replies; 9+ messages in thread
From: wenyi,xie @ 2021-08-11 1:59 UTC (permalink / raw)
To: Wu, Hao A, devel@edk2.groups.io
Cc: songdongkuang@huawei.com, Wang, Jian J, Kinney, Michael D
Hi Wu Hao,
Thank you for your help. I will have a try and send a V3 patch later.
Best Regards,
Wenyi
On 2021/8/11 9:50, Wu, Hao A wrote:
> Seems no help is received so far.
> The approach I can think of is to add this to the ECC exception list defined in file MdeModulePkg.ci.yaml.
>
> Hello Wenyi,
>
> Could you help to check if the code changes in https://github.com/tianocore/edk2/pull/1883 works for you?
> If so, could you update a V3 version of the patch? Thanks in advance.
>
> Best Regards,
> Hao Wu
>
>> -----Original Message-----
>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao
>> A
>> Sent: Tuesday, August 10, 2021 12:12 PM
>> To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2.groups.io;
>> xiewenyi (A) <xiewenyi2@huawei.com>
>> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
>> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
>> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>>
>> Sorry Mike,
>>
>> Do you have advice on how to deal with ECC reporting function naming issue
>> on the 'main' function for unit test cases?
>> So far, I think Wenyi has tried following the same pattern in file
>> MdeModulePkg\Universal\Variable\RuntimeDxe\RuntimeDxeUnitTest\Vari
>> ableLockRequestToLockUnitTest.c:
>>
>> ///
>> /// Avoid ECC error for function name that starts with lower case letter ///
>> #define Main main
>>
>> /**
>> Standard POSIX C entry point for host based unit test execution.
>>
>> @param[in] Argc Number of arguments
>> @param[in] Argv Array of pointers to arguments
>>
>> @retval 0 Success
>> @retval other Error
>> **/
>> INT32
>> Main (
>> IN INT32 Argc,
>> IN CHAR8 *Argv[]
>> )
>>
>> But it looks like the ECC checker in the merge test is still complaining.
>>
>> Best Regards,
>> Hao Wu
>>
>>> -----Original Message-----
>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu,
>> Hao
>>> A
>>> Sent: Wednesday, August 4, 2021 4:24 PM
>>> To: xiewenyi (A) <xiewenyi2@huawei.com>; Kinney, Michael D
>>> <michael.d.kinney@intel.com>; devel@edk2.groups.io
>>> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
>>> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
>>> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>>>
>>>> -----Original Message-----
>>>> From: xiewenyi (A) <xiewenyi2@huawei.com>
>>>> Sent: Wednesday, August 4, 2021 4:05 PM
>>>> To: Wu, Hao A <hao.a.wu@intel.com>; devel@edk2.groups.io
>>>> Cc: songdongkuang@huawei.com; Wang, Jian J <jian.j.wang@intel.com>
>>>> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
>>>> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>>>>
>>>>
>>>>
>>>> On 2021/8/2 9:56, Wu, Hao A wrote:
>>>>>> -----Original Message-----
>>>>>> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of
>>>>>> Wu, Hao A
>>>>>> Sent: Thursday, July 29, 2021 4:26 PM
>>>>>> To: Wenyi Xie <xiewenyi2@huawei.com>; devel@edk2.groups.io;
>> Wang,
>>>>>> Jian J <jian.j.wang@intel.com>
>>>>>> Cc: songdongkuang@huawei.com
>>>>>> Subject: Re: [edk2-devel] [PATCH EDK2 v2 1/1]
>>>>>> MdeModulePkg/UefiSortLib:Add UefiSortLib unit test
>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: Wenyi Xie <xiewenyi2@huawei.com>
>>>>>>> Sent: Thursday, July 29, 2021 4:01 PM
>>>>>>> To: devel@edk2.groups.io; Wang, Jian J <jian.j.wang@intel.com>;
>>>>>>> Wu, Hao A <hao.a.wu@intel.com>
>>>>>>> Cc: songdongkuang@huawei.com; xiewenyi2@huawei.com
>>>>>>> Subject: [PATCH EDK2 v2 1/1] MdeModulePkg/UefiSortLib:Add
>>>>>>> UefiSortLib unit test
>>>>>>>
>>>>>>> Adding two unit test case for UefiSortLib. One is a test on
>>>>>>> sorting an array of
>>>>>>> UINT32 by using PerformQuickSort, another is a test on comparing
>>>>>>> the same buffer by using StringCompare.
>>>>>>
>>>>>>
>>>>>> Thanks.
>>>>>> Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
>>>>>
>>>>>
>>>>> Sorry, I found that there are a couple of coding format style
>>>>> check failures
>>>> when merging the patch.
>>>>> Could you help to resolve them and then create a test pull request
>>>>> on the
>>>> GitHub for verification? Thanks in advance.
>>>>> (I think you can take the case under
>>>>>
>> MdeModulePkg/Universal/Variable/RuntimeDxe/RuntimeDxeUnitTest/
>>> for
>>>>> reference.)
>>>>>
>>>>
>>>> Hi, Wu Hao
>>>>
>>>> I try to deal with the coding format style check failures, and meet
>>>> a failure which I am not sure how to solve.
>>>> I take the case you told for reference, but still there's a failure
>>>> said the define should be capital letters.
>>>> but if change it to capital letters, there will be another error
>>>> Function name does not follow the rules: 1. First character should
>>>> be upper case 2. Must contain lower case characters 3. No white
>>>> space characters
>>>>
>>>> #define Main main
>>>>
>>>> INT32
>>>> Main (
>>>> IN INT32 Argc,
>>>> IN CHAR8 *Argv[]
>>>> )
>>>> {
>>>> UnitTestingEntry ();
>>>> return 0;
>>>> }
>>>
>>>
>>> Hello Mike,
>>>
>>> I saw the below commit:
>>> SHA-1: dcaa93936591883aa7826eb45ef00416ad82ef08
>>> * MdeModulePkg/Variable/RuntimeDxe: Add Variable Lock Protocol Unit
>>> Tests has a similar case that should involve the naming of the 'main'
>>> function within the unit test codes.
>>>
>>> I am wondering how the open raised by Wenyi was handled back then.
>>> Do you have suggestions for this case? Thanks in advance.
>>>
>>> Best Regards,
>>> Hao Wu
>>>
>>>
>>>>
>>>> Thanks
>>>> Wenyi
>>>>
>>>>> Error details:
>>>>> 2021-08-02T01:09:28.5955820Z ##[section]Starting: Build and Test
>>>>> MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64 2021-08-
>>>> 02T01:09:28.5960733Z
>>>>
>>>
>> ==========================================================
>>> =======
>>>> =============
>>>>> 2021-08-02T01:09:28.5961018Z Task : Command Line
>>>>> 2021-08-02T01:09:28.5961258Z Description : Run a command line
>>>>> with
>>>> arguments
>>>>> 2021-08-02T01:09:28.5961502Z Version : 1.1.3
>>>>> 2021-08-02T01:09:28.5961897Z Author : Microsoft Corporation
>>>>> 2021-08-02T01:09:28.5962259Z Help : [More
>>>> Information](https://go.microsoft.com/fwlink/?LinkID=613735)
>>>>> 2021-08-02T01:09:28.5962678Z
>>>>>
>>>>
>>>
>> ==========================================================
>>> =======
>>>> =====
>>>>> ======== 2021-08-02T01:09:29.3504946Z (node:3659) Warning: Use
>>>>> Cipheriv for counter mode of aes-256-ctr
>>>>> 2021-08-02T01:09:29.3510020Z
>>>>> (node:3659) Warning: Use Cipheriv for counter mode of aes-256-ctr
>>>>> 2021-08-02T01:09:29.3511551Z (node:3659) Warning: Use Cipheriv for
>>>>> counter mode of aes-256-ctr 2021-08-02T01:09:29.3513605Z
>>>>> (node:3659)
>>>>> Warning: Use Cipheriv for counter mode of aes-256-ctr
>>>>> 2021-08-02T01:09:29.3516798Z (node:3659) Warning: Use Cipheriv for
>>>>> counter mode of aes-256-ctr 2021-08-02T01:09:29.3517536Z
>>>>> (node:3659)
>>>>> Warning: Use Cipheriv for counter mode of aes-256-ctr
>>>>> 2021-08-02T01:09:29.3518178Z (node:3659) Warning: Use Cipheriv for
>>>>> counter mode of aes-256-ctr 2021-08-02T01:09:29.3545461Z
>>>>>
>> [command]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
>>>>> d -c .pytool/CISettings.py -p MdeModulePkg -t RELEASE,NO-TARGET -a
>>>>> IA32,X64,ARM,AARCH64,RISCV64 TOOL_CHAIN_TAG=GCC5
>>>>> 2021-08-02T01:09:29.3546707Z SECTION - Init SDE
>>>>> 2021-08-02T01:09:29.3547571Z WARNING - Using Pip Tools based
>>>>> BaseTools 2021-08-02T01:09:29.3548395Z SECTION - Loading Plugins
>>>>> 2021-08-02T01:09:29.3549212Z SECTION - Start Invocable Tool
>>>>> 2021-08-02T01:09:29.3550018Z SECTION - Getting Environment
>>>>> 2021-08-02T01:09:29.3550794Z SECTION - Loading plugins
>>>>> 2021-08-02T01:09:29.3551675Z SECTION - Building MdeModulePkg
>>> Package
>>>>> 2021-08-02T01:09:29.3552693Z PROGRESS - --Running MdeModulePkg:
>>>>> EccCheck Test NO-TARGET -- 2021-08-02T01:09:33.0697006Z ERROR -
>>>>> 2021-08-02T01:09:33.0698018Z ERROR - EFI coding style error
>>>>> 2021-08-02T01:09:33.0698748Z ERROR - *Error code: 5007
>>>>> 2021-08-02T01:09:33.0700631Z ERROR - *There should be no
>>>>> initialization of a variable as part of its declaration
>>>>> 2021-08-02T01:09:33.0702675Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0703421Z ERROR - *Line number:
>>>>> 77 2021-08-02T01:09:33.0703929Z ERROR - *Variable Name: TestCount
>>>>> 2021-08-02T01:09:33.0715684Z ERROR - 2021-08-02T01:09:33.0716634Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0717372Z ERROR
>>>>> - *Error code: 5007 2021-08-02T01:09:33.0718214Z ERROR - *There
>>>>> should be no initialization of a variable as part of its
>>>>> declaration 2021-08-02T01:09:33.0719195Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0720631Z ERROR - *Line number:
>>>>> 78 2021-08-02T01:09:33.0721451Z ERROR - *Variable Name: TestBuffer
>>>>> 2021-08-02T01:09:33.0722114Z ERROR - 2021-08-02T01:09:33.0724953Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0725713Z ERROR
>>>>> - *Error code: 5007 2021-08-02T01:09:33.0726562Z ERROR - *There
>>>>> should be no initialization of a variable as part of its
>>>>> declaration 2021-08-02T01:09:33.0727526Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0728345Z ERROR - *Line number:
>>>>> 79 2021-08-02T01:09:33.0729046Z ERROR - *Variable Name: TestResult
>>>>> 2021-08-02T01:09:33.0729694Z ERROR - 2021-08-02T01:09:33.0732496Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0733224Z ERROR
>>>>> - *Error code: 7001 2021-08-02T01:09:33.0734114Z ERROR - *There
>>>>> should be no use of int, unsigned, char, void, long in any .c, .h
>>>>> or .asl files 2021-08-02T01:09:33.0737620Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0739185Z ERROR - *Line number:
>>>>> 117 2021-08-02T01:09:33.0741301Z ERROR - *[main] Return type int
>>>>> 2021-08-02T01:09:33.0744099Z ERROR - 2021-08-02T01:09:33.0744829Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0745459Z ERROR
>>>>> - *Error code: 7001 2021-08-02T01:09:33.0746821Z ERROR - *There
>>>>> should be no use of int, unsigned, char, void, long in any .c, .h
>>>>> or .asl files 2021-08-02T01:09:33.0747774Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0749076Z ERROR - *Line number:
>>>>> 117 2021-08-02T01:09:33.0749713Z ERROR - *Parameter argc
>>>>> 2021-08-02T01:09:33.0750999Z ERROR - 2021-08-02T01:09:33.0751607Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0754599Z ERROR
>>>>> - *Error code: 7001 2021-08-02T01:09:33.0761175Z ERROR - *There
>>>>> should be no use of int, unsigned, char, void, long in any .c, .h
>>>>> or .asl files 2021-08-02T01:09:33.0762167Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0763160Z ERROR - *Line number:
>>>>> 117 2021-08-02T01:09:33.0763741Z ERROR - *Parameter argv
>>>>> 2021-08-02T01:09:33.0764290Z ERROR - 2021-08-02T01:09:33.0764843Z
>>>>> ERROR - EFI coding style error 2021-08-02T01:09:33.0766810Z ERROR
>>>>> - *Error code: 8006 2021-08-02T01:09:33.0767819Z ERROR - *Function
>>>>> name does not follow the rules: 1. First character should be upper case
>> 2.
>>>>> Must contain lower case characters 3. No white space characters
>>>>> 2021-08-02T01:09:33.0768881Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0769619Z ERROR - *Line number:
>>>>> 181 2021-08-02T01:09:33.0773329Z ERROR - *The function name [main]
>>>>> does not follow the rules 2021-08-02T01:09:33.0791935Z ERROR -
>>>>> 2021-08-02T01:09:33.0793865Z ERROR - EFI coding style error
>>>>> 2021-08-02T01:09:33.0794555Z ERROR - *Error code: 9002
>>>>> 2021-08-02T01:09:33.0795350Z ERROR - *The function headers should
>>>>> follow Doxygen special documentation blocks in section 2.3.5
>>>>> 2021-08-02T01:09:33.0796271Z ERROR - *file:
>>>>>
>>>
>> //home/vsts/work/1/s/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiS
>>>>> or tLibUnitTest.c 2021-08-02T01:09:33.0796985Z ERROR - *Line number:
>>>>> 178 2021-08-02T01:09:33.0797610Z ERROR - *No doxygen tags in
>>>>> comment 2021-08-02T01:09:33.0798208Z ERROR -
>>>>> 2021-08-02T01:09:33.0798859Z ERROR - --->Test Failed: EccCheck
>>>>> Test NO-TARGET returned 1 2021-08-02T01:09:33.0807351Z PROGRESS -
>> --Running MdeModulePkg:
>>> Dsc
>>>>> Complete Check Test NO-TARGET -- 2021-08-02T01:09:33.1524790Z
>>>> PROGRESS
>>>>> - --->Test Success: Dsc Complete Check Test NO-TARGET
>>>>> 2021-08-02T01:09:33.1536004Z PROGRESS - --Running MdeModulePkg:
>>> Char
>>>>> Encoding Check Test NO-TARGET -- 2021-08-02T01:09:33.6280380Z
>>>> PROGRESS
>>>>> - --->Test Success: Char Encoding Check Test NO-TARGET
>>>>> 2021-08-02T01:09:33.6289076Z PROGRESS - --Running MdeModulePkg:
>>>>> License Check Test NO-TARGET -- 2021-08-02T01:09:33.6495642Z
>>>>> PROGRESS
>>>>> - --->Test Success: License Check Test NO-TARGET
>>>>> 2021-08-02T01:09:33.6508125Z PROGRESS - --Running MdeModulePkg:
>>>>> Compiler Plugin RELEASE -- 2021-08-02T01:09:33.6785178Z PROGRESS -
>>>>> Start time: 2021-08-02 01:09:33.677952
>>>>> 2021-08-02T01:09:33.6787716Z
>>>> PROGRESS - Setting up the Environment 2021-08-02T01:09:33.7725244Z
>>>> PROGRESS - Running Pre Build 2021-08-02T01:09:33.7740357Z PROGRESS -
>>>> Running Build RELEASE 2021-08-02T01:17:18.5479885Z PROGRESS -
>>>> Running Post Build
>>>>> 2021-08-02T01:17:18.5511807Z PROGRESS - End time: 2021-08-02
>>>> 01:17:18.549974 Total time Elapsed: 0:07:44
>>>>> 2021-08-02T01:17:18.5512997Z PROGRESS - --->Test Success: Compiler
>>>>> Plugin RELEASE 2021-08-02T01:17:18.5519284Z PROGRESS - --Running
>>>>> MdeModulePkg: Library Class Check Test NO-TARGET --
>>>>> 2021-08-02T01:17:18.5639216Z PROGRESS - --->Test Success: Library
>>>>> Class Check Test NO-TARGET 2021-08-02T01:17:18.5648791Z PROGRESS -
>>>>> --Running MdeModulePkg: Dependency Check Test NO-TARGET --
>>>>> 2021-08-02T01:17:18.7306611Z PROGRESS - --->Test Success:
>>>>> Dependency Check Test NO-TARGET 2021-08-02T01:17:18.7316162Z
>>>>> PROGRESS - --Running
>>>>> MdeModulePkg: Spell Check Test NO-TARGET --
>>>>> 2021-08-02T01:17:23.7922166Z WARNING - --->Test Skipped: in plugin!
>>>>> Spell Check Test NO-TARGET 2021-08-02T01:17:23.7934112Z PROGRESS -
>>>>> --Running MdeModulePkg: Guid Check Test NO-TARGET --
>>>>> 2021-08-02T01:17:27.1928850Z PROGRESS - --->Test Success: Guid
>>>>> Check Test NO-TARGET 2021-08-02T01:17:27.1939129Z PROGRESS -
>>>>> --Running
>>>>> MdeModulePkg: Host Unit Test Dsc Complete Check Test NO-TARGET --
>>>>> 2021-08-02T01:17:27.3703640Z PROGRESS - --->Test Success: Host
>>>>> Unit Test Dsc Complete Check Test NO-TARGET
>>>>> 2021-08-02T01:17:27.3731676Z ERROR - Overall Build Status: Error
>>>>> 2021-08-02T01:17:27.3733283Z PROGRESS - There were 1 failures out
>>>>> of 10 attempts 2021-08-02T01:17:27.3734501Z SECTION - Summary
>>>>> 2021-08-02T01:17:27.3735613Z ERROR - Error
>>>>> 2021-08-02T01:17:27.4159842Z
>>>>> ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
>>>>> d failed with return code: 1 2021-08-02T01:17:27.4173134Z
>>>>> ##[error]/opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_buil
>>>>> d
>>>>> failed with error:
>>>>> /opt/hostedtoolcache/Python/3.8.11/x64/bin/stuart_ci_build failed
>>>>> with return code: 1 2021-08-02T01:17:27.4178252Z ##[section]Finishing:
>>>>> Build and Test MdeModulePkg IA32,X64,ARM,AARCH64,RISCV64
>>>>>
>>>>> Best Regards,
>>>>> Hao Wu
>>>>>
>>>>>
>>>>>>
>>>>>> I will wait a couple days before merging to see if any additional
>>>>>> comment from other reviewers.
>>>>>>
>>>>>> Best Regards,
>>>>>> Hao Wu
>>>>>>
>>>>>>
>>>>>>>
>>>>>>> Cc: Jian J Wang <jian.j.wang@intel.com>
>>>>>>> Cc: Hao A Wu <hao.a.wu@intel.com>
>>>>>>> Signed-off-by: Wenyi Xie <xiewenyi2@huawei.com>
>>>>>>> ---
>>>>>>> MdeModulePkg/Test/MdeModulePkgHostTest.dsc | 6
>> +
>>>>>>>
>>>>>>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
>>>>>>> f
>>>>>>> |
>>>>>>> 32
>>>>>>> ++++
>>>>>>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.c
>>> | 188
>>>>>>> ++++++++++++++++++++
>>>>>>> 3 files changed, 226 insertions(+)
>>>>>>>
>>>>>>> diff --git a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>>>>>> b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>>>>>> index 4da4692c8451..c9ec835df65d 100644
>>>>>>> --- a/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>>>>>> +++ b/MdeModulePkg/Test/MdeModulePkgHostTest.dsc
>>>>>>> @@ -41,3 +41,9 @@ [Components]
>>>>>>> <PcdsFixedAtBuild>
>>>>>>>
>>>>>>>
>>>>>>
>>>
>> gEfiMdeModulePkgTokenSpaceGuid.PcdAllowVariablePolicyEnforcementDis
>>>>>>> able|TRUE
>>>>>>> }
>>>>>>> +
>>>>>>> +
>>> MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.inf {
>>>>>>> + <LibraryClasses>
>>>>>>> +
>>>>>>> + UefiSortLib|MdeModulePkg/Library/UefiSortLib/UefiSortLib.inf
>>>>>>> +
>>>>>>> +
>>> DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib
>>>>>>> + DevicePathLib|.i
>>>>>>> + DevicePathLib|nf
>>>>>>> + }
>>>>>>> diff --git
>>>>>>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
>>>>>>> in
>>>>>>> f
>>>>>>>
>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.in
>>>>>>> f
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..85d8dcd69619
>>>>>>> --- /dev/null
>>>>>>> +++
>>>>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.i
>>>>>> n
>>>>>>> +++ f
>>>>>>> @@ -0,0 +1,32 @@
>>>>>>> +## @file
>>>>>>> +# This is a unit test for the UefiSortLib.
>>>>>>> +#
>>>>>>> +# Copyright (C) Huawei Technologies Co., Ltd. All rights
>>>>>>> +reserved #
>>>>>>> +SPDX-License-Identifier: BSD-2-Clause-Patent ##
>>>>>>> +
>>>>>>> +[Defines]
>>>>>>> + INF_VERSION = 0x00010017
>>>>>>> + BASE_NAME = UefiSortLibUnitTest
>>>>>>> + FILE_GUID = 271337A3-0D79-BA3E-BC03-714E518E3B1B
>>>>>>> + VERSION_STRING = 1.0
>>>>>>> + MODULE_TYPE = HOST_APPLICATION
>>>>>>> +
>>>>>>> +#
>>>>>>> +# The following information is for reference only and not
>>>>>>> +required by the
>>>>>>> build tools.
>>>>>>> +#
>>>>>>> +# VALID_ARCHITECTURES = IA32 X64
>>>>>>> +#
>>>>>>> +
>>>>>>> +[Sources]
>>>>>>> + UefiSortLibUnitTest.c
>>>>>>> +
>>>>>>> +[Packages]
>>>>>>> + MdePkg/MdePkg.dec
>>>>>>> + MdeModulePkg/MdeModulePkg.dec
>>>>>>> + UnitTestFrameworkPkg/UnitTestFrameworkPkg.dec
>>>>>>> +
>>>>>>> +[LibraryClasses]
>>>>>>> + UnitTestLib
>>>>>>> + DebugLib
>>>>>>> + UefiSortLib
>>>>>>> diff --git
>>>>>>> a/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
>>>>>>> c
>>>>>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
>>>>>>> c
>>>>>>> new file mode 100644
>>>>>>> index 000000000000..71f30d8b9f7f
>>>>>>> --- /dev/null
>>>>>>> +++
>>> b/MdeModulePkg/Library/UefiSortLib/UnitTest/UefiSortLibUnitTest.
>>>>>>> +++ c
>>>>>>> @@ -0,0 +1,188 @@
>>>>>>> +/** @file
>>>>>>> + Unit tests of the UefiSortLib
>>>>>>> +
>>>>>>> + Copyright (C) Huawei Technologies Co., Ltd. All rights
>>>>>>> + reserved
>>>>>>> + SPDX-License-Identifier: BSD-2-Clause-Patent
>>>>>>> +
>>>>>>> +**/
>>>>>>> +
>>>>>>> +#include <stdio.h>
>>>>>>> +#include <string.h>
>>>>>>> +#include <stdarg.h>
>>>>>>> +#include <stddef.h>
>>>>>>> +#include <setjmp.h>
>>>>>>> +#include <cmocka.h>
>>>>>>> +
>>>>>>> +#include <Uefi.h>
>>>>>>> +#include <Library/BaseLib.h>
>>>>>>> +#include <Library/DebugLib.h>
>>>>>>> +#include <Library/MemoryAllocationLib.h>
>>>>>>> +
>>>>>>> +#include <Library/UnitTestLib.h> #include <Library/SortLib.h>
>>>>>>> +
>>>>>>> +#define UNIT_TEST_APP_NAME "UefiSortLib Unit Tests"
>>>>>>> +#define UNIT_TEST_APP_VERSION "1.0"
>>>>>>> +
>>>>>>> +#define TEST_ARRAY_SIZE_9 9
>>>>>>> +
>>>>>>> +/**
>>>>>>> + The function is called by PerformQuickSort to compare int values.
>>>>>>> +
>>>>>>> + @param[in] Left The pointer to first buffer.
>>>>>>> + @param[in] Right The pointer to second buffer.
>>>>>>> +
>>>>>>> + @retval 0 Buffer1 equal to Buffer2.
>>>>>>> + @return <0 Buffer1 is less than Buffer2.
>>>>>>> + @return >0 Buffer1 is greater than Buffer2.
>>>>>>> +
>>>>>>> +**/
>>>>>>> +INTN
>>>>>>> +EFIAPI
>>>>>>> +TestCompareFunction (
>>>>>>> + IN CONST VOID *Left,
>>>>>>> + IN CONST VOID *Right
>>>>>>> + )
>>>>>>> +{
>>>>>>> + if (*(UINT32*)Right > *(UINT32*)Left) {
>>>>>>> + return 1;
>>>>>>> + } else if (*(UINT32*)Right < *(UINT32*)Left) {
>>>>>>> + return -1;
>>>>>>> + }
>>>>>>> +
>>>>>>> + return 0;
>>>>>>> +}
>>>>>>> +
>>>>>>> +/**
>>>>>>> + Unit test for PerformQuickSort () API of the UefiSortLib.
>>>>>>> +
>>>>>>> + @param[in] Context [Optional] An optional parameter that
>>> enables:
>>>>>>> + 1) test-case reuse with varied parameters and
>>>>>>> + 2) test-case re-entry for Target tests that need a
>>>>>>> + reboot. This parameter is a VOID* and it is the
>>>>>>> + responsibility of the test author to ensure that the
>>>>>>> + contents are well understood by all test cases that may
>>>>>>> + consume it.
>>>>>>> +
>>>>>>> + @retval UNIT_TEST_PASSED The Unit test has completed
>> and
>>> the
>>>>>>> test
>>>>>>> + case was successful.
>>>>>>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion
>>>>>>> + has
>>>>>> failed.
>>>>>>> +**/
>>>>>>> +UNIT_TEST_STATUS
>>>>>>> +EFIAPI
>>>>>>> +SortUINT32ArrayShouldSucceed (
>>>>>>> + IN UNIT_TEST_CONTEXT Context
>>>>>>> + )
>>>>>>> +{
>>>>>>> + UINTN TestCount = TEST_ARRAY_SIZE_9;
>>>>>>> + UINT32 TestBuffer[TEST_ARRAY_SIZE_9] = {1, 2, 3, 4, 5, 6, 7
>>>>>>> +,8, 9};
>>>>>>> + UINT32 TestResult[TEST_ARRAY_SIZE_9] = {9, 8, 7, 6, 5, 4, 3,
>>>>>>> +2, 1};
>>>>>>> +
>>>>>>> + PerformQuickSort (TestBuffer, TestCount, sizeof (UINT32),
>>>>>>> + (SORT_COMPARE)TestCompareFunction);
>>>>>>> + UT_ASSERT_MEM_EQUAL (TestBuffer, TestResult, sizeof (UINT32)
>>>>>>> + * TEST_ARRAY_SIZE_9);
>>>>>>> +
>>>>>>> + return UNIT_TEST_PASSED;
>>>>>>> +}
>>>>>>> +
>>>>>>> +/**
>>>>>>> + Unit test for StringCompare () API of the UefiSortLib.
>>>>>>> +
>>>>>>> + @param[in] Context [Optional] An optional parameter that
>>> enables:
>>>>>>> + 1) test-case reuse with varied parameters and
>>>>>>> + 2) test-case re-entry for Target tests that need a
>>>>>>> + reboot. This parameter is a VOID* and it is the
>>>>>>> + responsibility of the test author to ensure that the
>>>>>>> + contents are well understood by all test cases that may
>>>>>>> + consume it.
>>>>>>> +
>>>>>>> + @retval UNIT_TEST_PASSED The Unit test has completed
>> and
>>> the
>>>>>>> test
>>>>>>> + case was successful.
>>>>>>> + @retval UNIT_TEST_ERROR_TEST_FAILED A test case assertion
>>>>>>> + has
>>>>>> failed.
>>>>>>> +**/
>>>>>>> +UNIT_TEST_STATUS
>>>>>>> +EFIAPI
>>>>>>> +CompareSameBufferShouldSucceed (
>>>>>>> + IN UNIT_TEST_CONTEXT Context
>>>>>>> + )
>>>>>>> +{
>>>>>>> + INTN retval;
>>>>>>> + CONST CHAR16* TestBuffer[] = { L"abcdefg" };
>>>>>>> +
>>>>>>> + retval = StringCompare (TestBuffer, TestBuffer);
>>>>>>> + UT_ASSERT_TRUE (retval == 0);
>>>>>>> +
>>>>>>> + return UNIT_TEST_PASSED;
>>>>>>> +}
>>>>>>> +
>>>>>>> +/**
>>>>>>> + Initialze the unit test framework, suite, and unit tests for
>>>>>>> +the
>>>>>>> + UefiSortLib and run the UefiSortLib unit test.
>>>>>>> +
>>>>>>> + @retval EFI_SUCCESS All test cases were dispatched.
>>>>>>> + @retval EFI_OUT_OF_RESOURCES There are not enough
>> resources
>>>>>>> available to
>>>>>>> + initialize the unit tests.
>>>>>>> +**/
>>>>>>> +STATIC
>>>>>>> +EFI_STATUS
>>>>>>> +EFIAPI
>>>>>>> +UnitTestingEntry (
>>>>>>> + VOID
>>>>>>> + )
>>>>>>> +{
>>>>>>> + EFI_STATUS Status;
>>>>>>> + UNIT_TEST_FRAMEWORK_HANDLE Framework;
>>>>>>> + UNIT_TEST_SUITE_HANDLE SortTests;
>>>>>>> +
>>>>>>> + Framework = NULL;
>>>>>>> +
>>>>>>> + DEBUG(( DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME,
>>>>>>> + UNIT_TEST_APP_VERSION ));
>>>>>>> +
>>>>>>> + //
>>>>>>> + // Start setting up the test framework for running the tests.
>>>>>>> + //
>>>>>>> + Status = InitUnitTestFramework (&Framework,
>>> UNIT_TEST_APP_NAME,
>>>>>>> + gEfiCallerBaseName, UNIT_TEST_APP_VERSION); if (EFI_ERROR
>>>>>>> + (Status))
>>>>>> {
>>>>>>> + DEBUG ((DEBUG_ERROR, "Failed in InitUnitTestFramework.
>>>>>>> + Status
>>>>>>> = %r\n", Status));
>>>>>>> + goto EXIT;
>>>>>>> + }
>>>>>>> +
>>>>>>> + //
>>>>>>> + // Populate the UefiSortLib Unit Test Suite.
>>>>>>> + //
>>>>>>> + Status = CreateUnitTestSuite (&SortTests, Framework,
>>>>>>> + "UefiSortLib Sort Tests", "UefiSortLib.SortLib", NULL, NULL);
>>>>>>> + if
>>> (EFI_ERROR (Status)) {
>>>>>>> + DEBUG ((DEBUG_ERROR, "Failed in CreateUnitTestSuite for
>>>>>>> + UefiSortLib
>>>>>>> API Tests\n"));
>>>>>>> + Status = EFI_OUT_OF_RESOURCES;
>>>>>>> + goto EXIT;
>>>>>>> + }
>>>>>>> +
>>>>>>> + //
>>>>>>> + //
>>>>>>> + --------------Suite--------Description------------Name--------
>>>>>>> + --
>>>>>>> + --
>>>>>>> + --
>>>>>>> + Fu
>>>>>>> + nction----------------Pre---Post---Context-----------
>>>>>>> + //
>>>>>>> + AddTestCase (SortTests, "Sort the Array", "Sort",
>>>>>>> SortUINT32ArrayShouldSucceed, NULL, NULL, NULL);
>>>>>>> + AddTestCase (SortTests, "Compare the Buffer", "Compare",
>>>>>>> CompareSameBufferShouldSucceed, NULL, NULL, NULL);
>>>>>>> +
>>>>>>> + //
>>>>>>> + // Execute the tests.
>>>>>>> + //
>>>>>>> + Status = RunAllTestSuites (Framework);
>>>>>>> +
>>>>>>> +EXIT:
>>>>>>> + if (Framework) {
>>>>>>> + FreeUnitTestFramework (Framework);
>>>>>>> + }
>>>>>>> +
>>>>>>> + return Status;
>>>>>>> +}
>>>>>>> +
>>>>>>> +/**
>>>>>>> + Standard POSIX C entry point for host based unit test execution.
>>>>>>> +**/
>>>>>>> +int
>>>>>>> +main (
>>>>>>> + int argc,
>>>>>>> + char *argv[]
>>>>>>> + )
>>>>>>> +{
>>>>>>> + return UnitTestingEntry ();
>>>>>>> +}
>>>>>>> --
>>>>>>> 2.20.1.windows.1
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> .
>>>>>
>>>
>>>
>>>
>>>
>>
>>
>>
>>
>>
>
^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2021-08-11 1:59 UTC | newest]
Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-07-29 8:01 [PATCH EDK2 v2 0/1] MdeModulePkg/UefiSortLib:Add UefiSortLib unit test wenyi,xie
2021-07-29 8:01 ` [PATCH EDK2 v2 1/1] " wenyi,xie
2021-07-29 8:25 ` Wu, Hao A
2021-08-02 1:56 ` [edk2-devel] " Wu, Hao A
2021-08-04 8:04 ` wenyi,xie
2021-08-04 8:24 ` Wu, Hao A
2021-08-10 4:11 ` Wu, Hao A
2021-08-11 1:50 ` Wu, Hao A
2021-08-11 1:59 ` wenyi,xie
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox