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.100, mailfrom: eric.jin@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Mon, 09 Sep 2019 00:22:38 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 09 Sep 2019 00:22:36 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,484,1559545200"; d="scan'208";a="383891930" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 09 Sep 2019 00:22:36 -0700 Received: from fmsmsx153.amr.corp.intel.com (10.18.125.6) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 9 Sep 2019 00:22:36 -0700 Received: from shsmsx108.ccr.corp.intel.com (10.239.4.97) by FMSMSX153.amr.corp.intel.com (10.18.125.6) with Microsoft SMTP Server (TLS) id 14.3.439.0; Mon, 9 Sep 2019 00:22:35 -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; Mon, 9 Sep 2019 15:22:34 +0800 From: "Eric Jin" 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". Thread-Topic: [edk2-devel] [edk2-test] [PATCH 1/1] uefi-sct/SctPkg: Auto gen result of "EFICompliantTest". Thread-Index: AdVm3wnYi4d/WPyFT+65laQw3YcHdg== Date: Mon, 9 Sep 2019 07:22:33 +0000 Message-ID: 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 Add prefix in subject. Cc: Supreeth Venkatesh -----Original Message----- From: Chen, ArvinX=20 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". REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3D2155 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 the= y test is, so I think we can independently generate a file of the "EFIComp= liantTest" tests, then the SCT tester can send this file to the platform ow= ner and let them directly handle the compliant issue. This patch will auto gen a file in path SCT\Report\PlatformConfigXXX.ini ea= ch time tester execute this test will creat a new one until 255. Cc: Eric Jin Cc: ArvinX Chen Signed-off-by: ArvinX Chen --- .../BlackBoxTest/EfiCompliantBBTestPlatform_uefi.c | 438 +++++++++++++++++= ++++ 1 file changed, 438 insertions(+) diff --git a/Edk2/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTes= t/EfiCompliantBBTestPlatform_uefi.c b/Edk2/SctPkg/TestCase/UEFI/EFI/Generic= /EfiCompliant/BlackBoxTest/EfiCompliantBBTestPlatform_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, 0x7a, = 0xd5 }} @@ -201,6 +203,12 @@ EFI_GUID gEfiBlueToothAttributeProtocolGuid = =3D { 0x898890e9, 0x84b2, 0x4f3a, { 0x =20 EFI_GUID gEfiBlueToothLEConfigProtocolGuid =3D { 0x8f76da58, 0x1f99, 0x427= 5, { 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 @@ Routin= e Description: return Status; } =20 + // + // Creat PlatformConfig.ini file. + // + ProfileLib->EfiGetSystemDevicePath ( + ProfileLib, + &DevicePath, + &FilePath + ); + for (Index=3D0; IndexEfiIniCreate ( + ProfileLib, + DevicePath, + SctPoolPrint (L"%s\\Report\\PlatformConfig%03d.in= i",FilePath, Index), + &ConfigINI + ); + 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 have= 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 platfo= rm 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); // // =20 + 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->ErrorCoun= t) + ); + // + // Save data + // + if (GEN_CONFIG_INI_FILE_ON =3D=3D TRUE) { + // + // If have error occor and GenTestINI flag is on, gen the report file. + // + 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 ", ValueA= ); + GenTestConfigContent (L"gEfiSimpleTextOutProtocolGuid ", ValueB= ); + GenTestConfigContent (L"gEfiSimpleTextInputExProtocolGuid", ValueC= ); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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 ", Value[0= ]); + GenTestConfigContent (L"gEfiHiiStringProtocolGuid ", Value[1= ]); + GenTestConfigContent (L"gEfiHiiConfigRoutingProtocolGuid", Value[2= ]); + GenTestConfigContent (L"gEfiHiiFontProtocolGuid ", Value[3= ]); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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; + } } } =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; + } } } =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 ", ValueA)= ; + GenTestConfigContent (L"gEfiDiskIoProtocolGuid ", ValueB)= ; + GenTestConfigContent (L"gEfiSimpleFileSystemProtocolGuid", ValueC)= ; + GenTestConfigContent (L"gEfiUnicodeCollationProtocolGuid", ValueD)= ; + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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"gEfiNetworkInterfaceIdentifierProtocolGuid= ", Value[2]); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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"gEfiManagedNetworkServiceBindingProtocolGu= id", 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; + } } 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"gEfiManagedNetworkServiceBindingProtocol= Guid", 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; + } } } =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", Valu= e[0]); + GenTestConfigContent (L"gEfiTcp6ServiceBindingProtocolGuid ", Valu= e[1]); + GenTestConfigContent (L"gEfiIp6ServiceBindingProtocolGuid ", Valu= e[2]); + GenTestConfigContent (L"gEfiUdp6ServiceBindingProtocolGuid ", Valu= e[3]); + GenTestConfigContent (L"gEfiIp6ConfigProtocolGuid ", Valu= e[4]); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } 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", Va= lue[0]); + GenTestConfigContent (L"gEfiTcp6ServiceBindingProtocolGuid ", Va= lue[1]); + GenTestConfigContent (L"gEfiIp6ServiceBindingProtocolGuid ", Va= lue[2]); + GenTestConfigContent (L"gEfiUdp6ServiceBindingProtocolGuid ", Va= lue[3]); + GenTestConfigContent (L"gEfiIp6ConfigProtocolGuid ", Va= lue[4]); + GenTestConfigContent (L"gEfiDhcp6ProtocolGuid ", Va= lue[5]); + GenTestConfigContent (L"gEfiTcp6ProtocolGuid ", Va= lue[6]); + GenTestConfigContent (L"gEfiIp6ProtocolGuid ", Va= lue[7]); + GenTestConfigContent (L"gEfiUdp6ProtocolGuid ", Va= lue[8]); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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", ValueA); + GenTestConfigContent (L"gEfiPciIoProtocolGuid ", ValueB); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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", Value= A); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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", Val= ueA); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", ValueA); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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", ValueA= ); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", Value= A); + GenTestConfigContent (L"gEfiAuthenticationInfoProtocolGuid", Value= B); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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", V= alueA); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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 N= ULL); + GenTestConfigContent (L"Ebc->UnloadImage", Ebc->UnloadImage !=3D N= ULL); + GenTestConfigContent (L"Ebc->RegisterICacheFlush", Ebc->RegisterIC= acheFlush !=3D NULL); + GenTestConfigContent (L"Ebc->GetVersion ", Ebc->GetVersion !=3D NU= LL); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", Value= A); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } 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", Val= ueA); + GenTestConfigContent (L"gEfiDns4ProtocolGuid ", Val= ueB); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", Value= A); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } 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", Val= ueA); + GenTestConfigContent (L"gEfiDns6ProtocolGuid ", Val= ueB); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", ValueA= ); + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", ValueB= ); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } 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", Valu= eA); + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", Valu= eB); + GenTestConfigContent (L"gEfiTlsProtocolGuid ", Valu= eC); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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", Value= A); + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", Value= B); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } 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", Val= ueA); + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", Val= ueB); + GenTestConfigContent (L"gEfiHttpProtocolGuid ", Val= ueC); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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; + } } =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"gEfiBlueToothServiceBindingProtocolGuid"= , ValueB); + GenTestConfigContent (L"gEfiBlueToothConfigProtocolGuid "= , ValueC); + GenTestConfigContent (L"gEfiBlueToothIoProtocolGuid "= , ValueD); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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 ", Value= A); + GenTestConfigContent (L"gEfiBlueToothAttributeProtocolGuid", Value= B); + GenTestConfigContent (L"gEfiBlueToothLEConfigProtocolGuid ", Value= C); + AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } } } =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; + } } } =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.Titl= eString)); + 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], TitleStr= ing[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, TestItemSt= ring), + 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, ErrorData-= >TitleString), + SctPoolPrint (L" %s <-| Status :", ProtocolGUIDString), + Value ? L": In use !": L": Not available !" + ); + return EFI_SUCCESS; } \ No newline at end of file --=20 2.16.2.windows.1