From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.24, mailfrom: eric.jin@intel.com) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by groups.io with SMTP; Thu, 26 Sep 2019 02:01:35 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 26 Sep 2019 02:01:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,551,1559545200"; d="scan'208";a="201553559" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga002.jf.intel.com with ESMTP; 26 Sep 2019 02:01:34 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 26 Sep 2019 02:01:33 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Thu, 26 Sep 2019 02:01:33 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.140]) by SHSMSX108.ccr.corp.intel.com ([169.254.8.146]) with mapi id 14.03.0439.000; Thu, 26 Sep 2019 17:01:31 +0800 From: "Eric Jin" To: "devel@edk2.groups.io" , "Chen, ArvinX" CC: Supreeth Venkatesh Subject: Re: [edk2-devel] [edk2-test] [PATCH 1/1] uefi-sct/SctPkg: Auto gen result of "EFICompliantTest". Thread-Topic: [edk2-devel] [edk2-test] [PATCH 1/1] uefi-sct/SctPkg: Auto gen result of "EFICompliantTest". Thread-Index: AdVm3wnYi4d/WPyFT+65laQw3YcHdgNaEGfg Date: Thu, 26 Sep 2019 09:01:30 +0000 Message-ID: References: <15C2B434997E0DDA.16248@groups.io> In-Reply-To: <15C2B434997E0DDA.16248@groups.io> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYWMwMzgxNDMtM2MxYS00MTA5LWJkYjQtZjRkZjM3MTdiYjExIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoieWdzWWZOUmhhUENEZkdOZDFLb1hlUXZUUDdzU3NkWUJ2Zit0ZzhHS2RhSWhqYW0zWFZxb2l1R29qUDB0akxFRyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.2.0.6 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: eric.jin@intel.com Content-Language: en-US Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi Avrin, > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Eric Jin > Sent: Monday, September 9, 2019 3:23 PM > To: EDK II Development > Cc: Supreeth Venkatesh ; Jin, Eric > > Subject: [edk2-devel] [edk2-test] [PATCH 1/1] uefi-sct/SctPkg: Auto gen > result of "EFICompliantTest". >=20 > Add prefix in subject. >=20 > Cc: Supreeth Venkatesh >=20 > -----Original Message----- > From: Chen, ArvinX > Sent: Monday, September 9, 2019 2:29 PM > To: devel@edk2.groups.io > Cc: Jin, Eric ; Chen, ArvinX > Subject: [PATCH] uefi-sct/SctPkg: Auto gen result of "EFICompliantTest". >=20 > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2155 >=20 > Now the test item "EFICompliantTest" will be gen in the XXX.csv. > However, I find most of the SCT user will not know what platform config = they > test is, so I think we can independently generate a file of the > "EFICompliantTest" tests, then the SCT tester can send this file to the > platform owner and let them directly handle the compliant issue. >=20 > This patch will auto gen a file in path SCT\Report\PlatformConfigXXX.ini= each > time tester execute this test will creat a new one until 255. >=20 > Cc: Eric Jin > Cc: ArvinX Chen > Signed-off-by: ArvinX Chen > --- > .../BlackBoxTest/EfiCompliantBBTestPlatform_uefi.c | 438 > +++++++++++++++++++++ > 1 file changed, 438 insertions(+) >=20 > diff --git > a/Edk2/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/EfiCo > mpliantBBTestPlatform_uefi.c > b/Edk2/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/EfiCo > mpliantBBTestPlatform_uefi.c > index 221366b..7bbec70 100644 > --- > a/Edk2/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/EfiCo > mpliantBBTestPlatform_uefi.c > +++ > b/Edk2/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/Ef > +++ iCompliantBBTestPlatform_uefi.c > @@ -118,6 +118,8 @@ extern EFI_GUID gGlobalVariableGuid; // >=20 > #define SECTION_NAME_PLATFORM_SPECIFIC L"Platform Specific" > +#define GEN_CONFIG_INI_FILE_ON TRUE > +#define MAX_SIZE 0xFF >=20 > #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \ > { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7= a, > 0xd5 }} @@ -201,6 +203,12 @@ EFI_GUID > gEfiBlueToothAttributeProtocolGuid =3D { 0x898890e9, 0x84b2, 0x4f3a, { 0= x >=20 > EFI_GUID gEfiBlueToothLEConfigProtocolGuid =3D { 0x8f76da58, 0x1f99, 0x= 4275, > { 0xa4, 0xec, 0x47, 0x56, 0x51, 0x5b, 0x1c, 0xe8 }}; >=20 > +typedef struct CONFIG_ERROR_DATA { > + UINT8 ErrorCount; > + CHAR16 *TitleString; > + EFI_INI_FILE_HANDLE ConfigINI; > +} CONFIG_ERROR_DATA; > + > // > // Internal functions declarations > // > @@ -405,6 +413,23 @@ CheckIPSecProtocols ( > IN EFI_INI_FILE_HANDLE IniFile > ); >=20 > +CONFIG_ERROR_DATA* > +ConstructionAndAcquisition ( > + IN CHAR16 *TitleString, > + IN EFI_INI_FILE_HANDLE ConfigINI > +); > + > +EFI_STATUS > +GenTestConfigTitle ( > + IN CHAR16 *TestItemString > + ); > + > +EFI_STATUS > +GenTestConfigContent ( > + IN CHAR16 *ProtocolGUIDString, > + IN BOOLEAN Value > +); > + > // > // External functions implementation > // > @@ -429,6 +454,11 @@ Routine Description: > EFI_STANDARD_TEST_LIBRARY_PROTOCOL *StandardLib; > EFI_TEST_PROFILE_LIBRARY_PROTOCOL *ProfileLib; > EFI_INI_FILE_HANDLE IniFile; > + EFI_INI_FILE_HANDLE ConfigINI; > + EFI_DEVICE_PATH_PROTOCOL *DevicePath; > + CONFIG_ERROR_DATA *ErrorData; > + CHAR16 *FilePath; > + UINT8 Index; >=20 > // > // Locate the standard test library protocol @@ -477,6 +507,85 @@ Rou= tine > Description: > return Status; > } >=20 > + // > + // Creat PlatformConfig.ini file. > + // > + ProfileLib->EfiGetSystemDevicePath ( > + ProfileLib, > + &DevicePath, > + &FilePath > + ); > + for (Index=3D0; Index + Status =3D OpenIniFile ( > + ProfileLib, > + L"Report", > + SctPoolPrint (L"PlatformConfig%03d.ini", Index), > + &ConfigINI > + ); > + if (ConfigINI !=3D NULL) { > + // > + // If file exise, Creat a new one. > + // > + CloseIniFile (ProfileLib, ConfigINI); > + continue; > + } > + break; > + } > + Status =3D ProfileLib->EfiIniCreate ( > + ProfileLib, > + DevicePath, > + SctPoolPrint (L"%s\\Report\\PlatformConfig%03d= .ini",FilePath, > Index), > + &ConfigINI > + ); It create the new PlatformConfig.ini file with 255 files limitation How about always delete the old and create the new? > + if (EFI_ERROR (Status)) { > + StandardLib->RecordAssertion ( > + StandardLib, > + EFI_TEST_ASSERTION_WARNING, > + gTestGenericFailureGuid, > + L"UEFI Compliant - Cannot create INI file", > + L"%a:%d", > + __FILE__, > + (UINTN)__LINE__ > + ); > + > + return Status; > + } > + // > + // Gen PlatformConfig.ini title and description. > + // > + ConfigINI->SetStringByOrder ( > + ConfigINI, > + 0x00, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + L"<|Unavailable (Fail) item have :", > + SctPoolPrint (L": \"%02d\" --", 0x00) > + ); > + ConfigINI->SetString ( > + ConfigINI, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + L"<|If fail item is not 0, it mean platform config h= ave error ___", > + L"|>" > + ); > + ConfigINI->SetString ( > + ConfigINI, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + L"<|occur or EfiCompliant.ini setting have wrong. > ________________", > + L"|>" > + ); > + ConfigINI->SetString ( > + ConfigINI, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + L"<|Please sent this file and EfiCompliant.ini to pla= tform owner .", > + L"|>" > + ); > + ConfigINI->SetString ( > + ConfigINI, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + > L"<|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D > =3D=3D=3D=3D=3D=3D=3D", > + L"|>" > + ); > + > + ConstructionAndAcquisition (NULL, ConfigINI); > // > // Check the console protocols > // > @@ -618,6 +727,26 @@ Routine Description: > // > CloseIniFile (ProfileLib, IniFile); >=20 > + ErrorData =3D ConstructionAndAcquisition (L"END", ConfigINI); // // > + Update fail count. > + // > + ConfigINI->SetStringByOrder ( > + ConfigINI, > + 0x00, > + L"|=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D Configuration Environment > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D|", > + L"<|Unavailable (Fail) item have :", > + SctPoolPrint (L": \"%02d\" --", ErrorData->ErrorC= ount) > + ); > + // > + // Save data > + // > + if (GEN_CONFIG_INI_FILE_ON =3D=3D TRUE) { > + // > + // If have error occor and GenTestINI flag is on, gen the report fi= le. > + // > + CloseIniFile (ProfileLib, ConfigINI); } > return EFI_SUCCESS; > } >=20 > @@ -835,6 +964,12 @@ CheckConsoleProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"ConsoleDevices")) { > + GenTestConfigContent (L"gEfiSimpleTextInProtocolGuid ", Val= ueA); > + GenTestConfigContent (L"gEfiSimpleTextOutProtocolGuid ", Val= ueB); > + GenTestConfigContent (L"gEfiSimpleTextInputExProtocolGuid", > ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -914,6 +1049,13 @@ CheckHiiProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"HiiConfigSupport")) { > + GenTestConfigContent (L"gEfiHiiDatabaseProtocolGuid ", Valu= e[0]); > + GenTestConfigContent (L"gEfiHiiStringProtocolGuid ", Valu= e[1]); > + GenTestConfigContent (L"gEfiHiiConfigRoutingProtocolGuid", Valu= e[2]); > + GenTestConfigContent (L"gEfiHiiFontProtocolGuid ", Valu= e[3]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -956,6 +1098,10 @@ CheckHiiProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"HiiFontSupport")) { > + GenTestConfigContent (L"gEfiHiiFontProtocolGuid", Value[4]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1056,6 +1202,12 @@ CheckGraphicalConsoleProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"GraphicalConsoleDevices")) { > + GenTestConfigContent (L"gEfiGraphicsOutputProtocolGuid", ValueA= ); > + GenTestConfigContent (L"gEfiEdidDiscoveredProtocolGuid", ValueB= ); > + GenTestConfigContent (L"gEfiEdidActiveProtocolGuid ", ValueC= ); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1127,6 +1279,10 @@ CheckPointerProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"PointerDevices")) { > + GenTestConfigContent (L"gEfiSimplePointerProtocolGuid", ValueA)= ; > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1241,6 +1397,13 @@ CheckBootFromDiskProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BootFromDiskDevices")) { > + GenTestConfigContent (L"gEfiBlockIoProtocolGuid ", Valu= eA); > + GenTestConfigContent (L"gEfiDiskIoProtocolGuid ", Valu= eB); > + GenTestConfigContent (L"gEfiSimpleFileSystemProtocolGuid", Valu= eC); > + GenTestConfigContent (L"gEfiUnicodeCollationProtocolGuid", Valu= eD); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1384,6 +1547,13 @@ CheckBootFromNetworkProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BootFromNetworkDevices")) { > + GenTestConfigContent (L"gEfiPxeBaseCodeProtocolGuid = ", > ValueA); > + GenTestConfigContent (L"gEfiSimpleNetworkProtocolGuid = ", > Value[0]); > + GenTestConfigContent (L"gEfiManagedNetworkProtocolGuid = ", > Value[1]); > + GenTestConfigContent (L"gEfiNetworkInterfaceIdentifierProtocolG= uid", > Value[2]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1423,6 +1593,10 @@ CheckBootFromNetworkProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"ValidateBootImageThruNet")) { > + GenTestConfigContent (L"Variable \"SetupMode\"", ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1514,6 +1688,16 @@ CheckUefiNetworkApplication ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UefiNetworkApplication")) { > + GenTestConfigContent > (L"gEfiManagedNetworkServiceBindingProtocolGuid", Value[0]); > + GenTestConfigContent (L"gEfiArpServiceBindingProtocolGuid = ", > Value[1]); > + GenTestConfigContent (L"gEfiIp4ServiceBindingProtocolGuid = ", > Value[2]); > + GenTestConfigContent (L"gEfiDhcp4ServiceBindingProtocolGuid = ", > Value[3]); > + GenTestConfigContent (L"gEfiTcp4ServiceBindingProtocolGuid = ", > Value[4]); > + GenTestConfigContent (L"gEfiUdp4ServiceBindingProtocolGuid = ", > Value[5]); > + GenTestConfigContent (L"gEfiIp4Config2ProtocolGuid = ", > Value[6]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -1616,6 +1800,22 @@ CheckUefiNetworkApplication ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UefiNetworkApplication")) { > + GenTestConfigContent > (L"gEfiManagedNetworkServiceBindingProtocolGuid", Value[0]); > + GenTestConfigContent (L"gEfiArpServiceBindingProtocolGuid = ", > Value[1]); > + GenTestConfigContent (L"gEfiIp4ServiceBindingProtocolGuid = ", > Value[2]); > + GenTestConfigContent (L"gEfiDhcp4ServiceBindingProtocolGuid = ", > Value[3]); > + GenTestConfigContent (L"gEfiTcp4ServiceBindingProtocolGuid = ", > Value[4]); > + GenTestConfigContent (L"gEfiUdp4ServiceBindingProtocolGuid = ", > Value[5]); > + GenTestConfigContent (L"gEfiIp4Config2ProtocolGuid = ", > Value[6]); > + GenTestConfigContent (L"gEfiManagedNetworkProtocolGuid = ", > Value[7]); > + GenTestConfigContent (L"gEfiArpProtocolGuid = ", Value[8]); > + GenTestConfigContent (L"gEfiIp4ProtocolGuid = ", Value[9]); > + GenTestConfigContent (L"gEfiDhcp4ProtocolGuid = ", > Value[10]); > + GenTestConfigContent (L"gEfiTcp4ProtocolGuid = ", > Value[11]); > + GenTestConfigContent (L"gEfiUdp4ProtocolGuid = ", > Value[12]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1714,6 +1914,14 @@ CheckUefiV6NetworkApplication ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UEFIIPv6Support")) { > + GenTestConfigContent (L"gEfiDhcp6ServiceBindingProtocolGuid", > Value[0]); > + GenTestConfigContent (L"gEfiTcp6ServiceBindingProtocolGuid ", > Value[1]); > + GenTestConfigContent (L"gEfiIp6ServiceBindingProtocolGuid ", > Value[2]); > + GenTestConfigContent (L"gEfiUdp6ServiceBindingProtocolGuid ", > Value[3]); > + GenTestConfigContent (L"gEfiIp6ConfigProtocolGuid ", V= alue[4]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -1810,6 +2018,18 @@ CheckUefiV6NetworkApplication ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UEFIIPv6Support")) { > + GenTestConfigContent (L"gEfiDhcp6ServiceBindingProtocolGuid", > Value[0]); > + GenTestConfigContent (L"gEfiTcp6ServiceBindingProtocolGuid ", > Value[1]); > + GenTestConfigContent (L"gEfiIp6ServiceBindingProtocolGuid ", > Value[2]); > + GenTestConfigContent (L"gEfiUdp6ServiceBindingProtocolGuid ", > Value[3]); > + GenTestConfigContent (L"gEfiIp6ConfigProtocolGuid ",= Value[4]); > + GenTestConfigContent (L"gEfiDhcp6ProtocolGuid ",= Value[5]); > + GenTestConfigContent (L"gEfiTcp6ProtocolGuid ",= Value[6]); > + GenTestConfigContent (L"gEfiIp6ProtocolGuid ",= Value[7]); > + GenTestConfigContent (L"gEfiUdp6ProtocolGuid ",= Value[8]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1867,6 +2087,10 @@ CheckUefiV6NetworkApplication ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D = 0)) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"VlanSupport")) { > + GenTestConfigContent (L"gEfiVlanConfigProtocolGuid", Value[= 9]); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -1940,6 +2164,10 @@ CheckUartProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UartDevices")) { > + GenTestConfigContent (L"gEfiSerialIoProtocolGuid", ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; > + } > } > } >=20 > @@ -2025,6 +2253,11 @@ CheckPciProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"PciBusSupport")) { > + GenTestConfigContent (L"gEfiPciRootBridgeIoProtocolGuid", Value= A); > + GenTestConfigContent (L"gEfiPciIoProtocolGuid ", Value= B); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2110,6 +2343,11 @@ CheckUsbProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"UsbBusSupport")) { > + GenTestConfigContent (L"gEfiUsb2HcProtocolGuid", ValueA); > + GenTestConfigContent (L"gEfiUsbIoProtocolGuid ", ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2180,6 +2418,10 @@ CheckNVMeProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"NVMExpressPassThru")) { > + GenTestConfigContent (L"gEfiNvmExpressPassThruProtocolGuid", > ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2264,6 +2506,10 @@ CheckBootFromNVMe ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BootFromNVMe")) { > + GenTestConfigContent (L"gEfiBlockIoProtocolGuid", ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2301,6 +2547,10 @@ CheckBootFromNVMe ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"NVMExpressPassThru")) { > + GenTestConfigContent (L"gEfiNvmExpressPassThruProtocolGuid", > ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2374,6 +2624,10 @@ CheckScsiProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"ExtScsiPassThru")) { > + GenTestConfigContent (L"gEfiExtScsiPassThruProtocolGuid", Value= A); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2473,6 +2727,11 @@ CheckBootFromScsi ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BootFromScsi")) { > + GenTestConfigContent (L"gEfiBlockIoProtocolGuid", ValueB); > + GenTestConfigContent (L"gEfiScsiIoProtocolGuid ", ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2511,6 +2770,10 @@ CheckBootFromScsi ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"ExtScsiPassThruSupport")) { > + GenTestConfigContent (L"gEfiExtScsiPassThruProtocolGuid", Val= ueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2597,6 +2860,11 @@ CheckBootFromIScsi ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BootFromIscsi")) { > + GenTestConfigContent (L"gEfiIScsiInitiatorNameProtocolGuid", Va= lueA); > + GenTestConfigContent (L"gEfiAuthenticationInfoProtocolGuid", > ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2685,6 +2953,11 @@ CheckDebugProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"DebugSupport")) { > + GenTestConfigContent (L"gEfiDebugSupportProtocolGuid", ValueA); > + GenTestConfigContent (L"gEfiDebugPortProtocolGuid ", ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2755,6 +3028,10 @@ CheckDriverOverrideProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"PlatformDriverOverride")) { > + GenTestConfigContent (L"gEfiPlatformDriverOverrideProtocolGuid"= , > ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2824,6 +3101,10 @@ CheckATAProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"AtaPassThru")) { > + GenTestConfigContent (L"gEfiAtaPassThruProtocolGuid", ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2896,6 +3177,13 @@ CheckEbcProtocol ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"EBCSupport")) { > + GenTestConfigContent (L"Ebc->CreateThunk", Ebc->CreateThunk != =3D > NULL); > + GenTestConfigContent (L"Ebc->UnloadImage", Ebc->UnloadImage != =3D > NULL); > + GenTestConfigContent (L"Ebc->RegisterICacheFlush", Ebc- > >RegisterICacheFlush !=3D NULL); > + GenTestConfigContent (L"Ebc->GetVersion ", Ebc->GetVersion !=3D > NULL); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -2993,6 +3281,10 @@ CheckDNS4Protocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"DNS4Support")) { > + GenTestConfigContent (L"gEfiDns4ServiceBindingProtocolGuid", > ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -3051,6 +3343,11 @@ CheckDNS4Protocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"DNS4Support")) { > + GenTestConfigContent (L"gEfiDns4ServiceBindingProtocolGuid", > ValueA); > + GenTestConfigContent (L"gEfiDns4ProtocolGuid ", = ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3121,6 +3418,10 @@ CheckDNS6Protocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"DNS6Support")) { > + GenTestConfigContent (L"gEfiDns6ServiceBindingProtocolGuid", > ValueA); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -3179,6 +3480,11 @@ CheckDNS6Protocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"DNS6Support")) { > + GenTestConfigContent (L"gEfiDns6ServiceBindingProtocolGuid", > ValueA); > + GenTestConfigContent (L"gEfiDns6ProtocolGuid ", = ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3261,6 +3567,11 @@ CheckTLSProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"TLSSupport")) { > + GenTestConfigContent (L"gEfiTlsServiceBindingProtocolGuid", Val= ueA); > + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", Val= ueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -3320,6 +3631,12 @@ CheckTLSProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"TLSSupport")) { > + GenTestConfigContent (L"gEfiTlsServiceBindingProtocolGuid", V= alueA); > + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", V= alueB); > + GenTestConfigContent (L"gEfiTlsProtocolGuid ", V= alueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3404,6 +3721,11 @@ CheckHTTPProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"HTTPSupport")) { > + GenTestConfigContent (L"gEfiHttpServiceBindingProtocolGuid", > ValueA); > + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", Va= lueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > StandardLib->RecordAssertion ( > StandardLib, > @@ -3463,6 +3785,12 @@ CheckHTTPProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"HTTPSupport")) { > + GenTestConfigContent (L"gEfiHttpServiceBindingProtocolGuid", > ValueA); > + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", = ValueB); > + GenTestConfigContent (L"gEfiHttpProtocolGuid ", = ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3553,6 +3881,12 @@ CheckEAPProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"EAPSupport")) { > + GenTestConfigContent (L"gEfiEapProtocolGuid ", ValueA= ); > + GenTestConfigContent (L"gEfiEapConfigProtocolGuid ", ValueB= ); > + GenTestConfigContent (L"gEfiEapManagement2ProtocolGuid", ValueC= ); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3649,6 +3983,12 @@ CheckBlueToothClassicProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BlueToothClassicSupport")) { > + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid = ", > ValueA); > + GenTestConfigContent (L"gEfiBlueToothServiceBindingProtocolGuid= ", > ValueB); > + GenTestConfigContent (L"gEfiBlueToothConfigProtocolGuid = ", > ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } >=20 > // > @@ -3714,6 +4054,13 @@ CheckBlueToothClassicProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)= ) { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BlueToothClassicSupport")) { > + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid = ", > ValueA); > + GenTestConfigContent (L"gEfiBlueToothServiceBindingProtocolGu= id", > ValueB); > + GenTestConfigContent (L"gEfiBlueToothConfigProtocolGuid = ", > ValueC); > + GenTestConfigContent (L"gEfiBlueToothIoProtocolGuid = ", > ValueD); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3807,6 +4154,12 @@ CheckBlueToothLEProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"BlueToothLESupport")) { > + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid ", Va= lueA); > + GenTestConfigContent (L"gEfiBlueToothAttributeProtocolGuid", > ValueB); > + GenTestConfigContent (L"gEfiBlueToothLEConfigProtocolGuid ", > ValueC); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3897,6 +4250,11 @@ CheckIPSecProtocols ( > ); > if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) = { > AssertionType =3D EFI_TEST_ASSERTION_FAILED; > + if (!GenTestConfigTitle (L"IPSecSupport")) { > + GenTestConfigContent (L"gEfiIPSecConfigProtocolGuid", ValueA); > + GenTestConfigContent (L"gEfiIPSec2ProtocolGuid ", ValueB); > + AssertionType =3D EFI_TEST_ASSERTION_WARNING; AssertionType should not be changed > + } > } > } >=20 > @@ -3915,5 +4273,85 @@ CheckIPSecProtocols ( > ValueB ? L"Yes" : L"No" > ); >=20 > + return EFI_SUCCESS; > +} > + > +CONFIG_ERROR_DATA* > +ConstructionAndAcquisition ( > + CHAR16 *TitleString, > + EFI_INI_FILE_HANDLE ConfigINI > +){ > + UINTN Index; > + static CONFIG_ERROR_DATA Data; > + > + if (TitleString =3D=3D NULL && ConfigINI !=3D NULL) { > + // > + // If only gave ConfigINI, init struct. > + // > + gtBS->AllocatePool (EfiBootServicesData ,MAX_SIZE, > (VOID**)&(Data.TitleString)); > + Data.ConfigINI =3D ConfigINI; > + Data.ErrorCount =3D 0; > + > + return NULL; > + } else if (TitleString !=3D NULL && ConfigINI =3D=3D NULL) { > + // > + // If Only gave TitleString, update the title and error count +1. > + // > + for (Index=3D0; Data.TitleString[Index]=3DTitleString[Index], > TitleString[Index]!=3D0; Index++); > + Data.ErrorCount++; > + > + return &Data; > + } else if (TitleString !=3D NULL && ConfigINI !=3D NULL) { > + // > + // If Both not NULL, end of the function, free the buffer. > + // > + gtBS->FreePool (Data.TitleString); > + return &Data; > + } > + // > + // If both NULL, just return struct data. > + // > + return &Data; > +} > + > +EFI_STATUS > +GenTestConfigTitle ( > + IN CHAR16 *TestItemString > +){ > + CONFIG_ERROR_DATA *ErrorData; > + > + ErrorData =3D ConstructionAndAcquisition (TestItemString, NULL); // > + // Set title // ErrorData->ConfigINI->SetStringByOrder ( > + ErrorData->ConfigINI, > + ErrorData->ErrorCount, > + SctPoolPrint (L"%02d. %s",ErrorData->ErrorCount, TestIte= mString), > + L"Device Status :", > + L": Unavailable" > + ); > + > + return (GEN_CONFIG_INI_FILE_ON) ? EFI_SUCCESS : EFI_UNSUPPORTED; } > + > +EFI_STATUS > +GenTestConfigContent ( > + IN CHAR16 *ProtocolGUIDString, > + IN BOOLEAN Value > +){ > + CONFIG_ERROR_DATA *ErrorData; > + > + ErrorData =3D ConstructionAndAcquisition (NULL, NULL); // // Gen > + content // ErrorData->ConfigINI->SetString ( > + ErrorData->ConfigINI, > + SctPoolPrint (L"%02d. %s",ErrorData->ErrorCount, ErrorDa= ta- > >TitleString), > + SctPoolPrint (L" %s <-| Status :", ProtocolGUIDString)= , > + Value ? L": In use !": L": Not available !" In use and Not available may cause confusion. Suggest to "exist in system" or "not exist in system" > + ); > + > return EFI_SUCCESS; > } > \ No newline at end of file > -- Please make sure CRLF at the end of line. Best Regards Eric > 2.16.2.windows.1 >=20 >=20 >=20