From nobody Mon Apr 29 00:23:01 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) client-ip=66.175.222.12; envelope-from=bounce+27952+48928+1787277+3901457@groups.io; helo=web01.groups.io; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+48928+1787277+3901457@groups.io; dmarc=fail(p=none dis=none) header.from=intel.com ARC-Seal: i=1; a=rsa-sha256; t=1571076807; cv=none; d=zoho.com; s=zohoarc; b=G/x0Q/aeIV+sQm5KOcDPFJd3OBsX4GGOxD1shPH3mG9WapjfpoU6EBaEDktebB0yUuiCHLIYsr2STGxyoopUiGdasISKzRj6PMXP8S6eCMMtkoDmezHOUisBcX6oIRC3iU9zNmEE88LLd1oxmerHl3sOm7Prec6sV9WfVr4VweY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zoho.com; s=zohoarc; t=1571076807; h=Cc:Date:From:List-Id:List-Unsubscribe:Message-ID:Reply-To:Sender:Subject:To; bh=41DbldPHN8/REDadMEzVx4T4+GhVv4GqkPDQxf9nDWo=; b=nHY6OgRGDYArzdUWWlZeQYn8FlFf5MaazcW3V151J6lxBmTz4HQdq5k3fE7jYETbW96sz7NxbwnFK/AUkFkVx03mU1vbGr92Pm8eSnMJh+W7JG9KbZGAw9+w96QktOBl/ojk/dUBs2TvwYHR4X9PP391pcSG4VcWScGh0l1Yknk= ARC-Authentication-Results: i=1; mx.zoho.com; dkim=pass; spf=pass (zoho.com: domain of groups.io designates 66.175.222.12 as permitted sender) smtp.mailfrom=bounce+27952+48928+1787277+3901457@groups.io; dmarc=fail header.from= (p=none dis=none) header.from= Received: from web01.groups.io (web01.groups.io [66.175.222.12]) by mx.zohomail.com with SMTPS id 1571076807371627.7153254494509; Mon, 14 Oct 2019 11:13:27 -0700 (PDT) Return-Path: X-Received: by 127.0.0.2 with SMTP id NCg5YY1788612xrtBfrsMnEu; Mon, 14 Oct 2019 11:13:26 -0700 X-Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by mx.groups.io with SMTP id smtpd.web11.999.1571037608310903417 for ; Mon, 14 Oct 2019 00:20:08 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False X-Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 14 Oct 2019 00:20:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,295,1566889200"; d="scan'208";a="370052740" X-Received: from unknown (HELO chiena2x-MOBL.gar.corp.intel.com) ([10.5.246.116]) by orsmga005.jf.intel.com with ESMTP; 14 Oct 2019 00:20:06 -0700 From: ArvinX Chen To: devel@edk2.groups.io Cc: Eric Jin Subject: [edk2-devel] [PATCH] uefi-sct/SctPkg: Auto gen result of "EFICompliantTest". Date: Mon, 14 Oct 2019 15:20:01 +0800 Message-Id: <20191014072001.11812-1-arvinx.chen@intel.com> Precedence: Bulk List-Unsubscribe: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,arvinx.chen@intel.com X-Gm-Message-State: hDlTGsdjMeHMGozqbVyS9CDGx1787277AA= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=groups.io; q=dns/txt; s=20140610; t=1571076806; bh=Ct+8XuBHDV1kYj5/x3IiKLJ7dsggtxseRqJ0D87aB/I=; h=Cc:Date:From:Reply-To:Subject:To; b=MSDWYR0j2x8JixPAZW6QmEyvGnHUSmuEJSfXLr5W6DUbMN/+cL5NhFirZXiV33EDNmT ygUnSUWWOIYi9tjrUQom6gxW7yPRm+4d6MxBnRrrpM3cEDHZqy5Z2/JxrOZMRin5V0E1Y HjwinSf47GSwN61dFMNfMff2pasb64WrsX0= X-ZohoMail-DKIM: pass (identity @groups.io) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 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. This patch will auto gen a file in path SCT\Report\PlatformConfig.ini once tester retest again, system will delete the current PlatformConfig.ini and create a new one. If tester want to ignore test results in *.csv, tester can modify EfiCompliant.ini to control it. Cc: Eric Jin Signed-off-by: ArvinX Chen --- .../Dependency/Config/EfiCompliant.ini | 13 +- .../BlackBoxTest/EfiCompliantBBTestPlatform_uefi.c | 492 +++++++++++++++++= +++- 2 files changed, 503 insertions(+), 2 deletions(-) diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBo= xTest/Dependency/Config/EfiCompliant.ini b/uefi-sct/SctPkg/TestCase/UEFI/EF= I/Generic/EfiCompliant/BlackBoxTest/Dependency/Config/EfiCompliant.ini index d234d87a..4deaae3b 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/D= ependency/Config/EfiCompliant.ini +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/D= ependency/Config/EfiCompliant.ini @@ -1,6 +1,6 @@ ## @file # -# Copyright 2006 - 2016 Unified EFI, Inc.
+# Copyright 2006 - 2019 Unified EFI, Inc.
# Copyright (c) 2010 - 2019, Intel Corporation. All rights reserved.
# # This program and the accompanying materials @@ -24,6 +24,14 @@ # # Notes: # +### [Test Configuration Specific] +# +# GEN_CONFIG_INI_FILE_ON =3D +# +# IGNORE_COMPLIANT_TEST_CSV =3D +# +### [Platform Specific] +# # ConsoleDevices =3D # # HiiConfigSupport =3D @@ -91,6 +99,9 @@ # IPSecSupport =3D # #--*/ +[Test Configuration Specific] +GEN_CONFIG_INI_FILE_ON =3D yes +IGNORE_COMPLIANT_TEST_CSV =3D no =20 [Platform Specific] ConsoleDevices =3D yes diff --git a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBo= xTest/EfiCompliantBBTestPlatform_uefi.c b/uefi-sct/SctPkg/TestCase/UEFI/EFI= /Generic/EfiCompliant/BlackBoxTest/EfiCompliantBBTestPlatform_uefi.c index ae76c909..7a2c2232 100644 --- a/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/E= fiCompliantBBTestPlatform_uefi.c +++ b/uefi-sct/SctPkg/TestCase/UEFI/EFI/Generic/EfiCompliant/BlackBoxTest/E= fiCompliantBBTestPlatform_uefi.c @@ -28,7 +28,7 @@ Abstract: // Includes // =20 -#include "SctLib.h" +#include "SctLib.h" #include "EfiCompliantBbTestMain_uefi.h" #include EFI_PROTOCOL_DEFINITION (SimpleTextIn) #include EFI_PROTOCOL_DEFINITION (SimpleTextInEx) @@ -87,6 +87,9 @@ extern EFI_GUID gGlobalVariableGuid; // =20 #define SECTION_NAME_PLATFORM_SPECIFIC L"Platform Specific" +#define SECTION_NAME_CONFIGURATION_SPECIFIC L"Test Configuration Specific" +#define CONFIN_TITLE_STRING 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|" +#define MAX_SIZE 0xFF =20 #define EFI_DHCP6_SERVICE_BINDING_PROTOCOL_GUID \ { 0x9fb9a8a1, 0x2f4a, 0x43a6, {0x88, 0x9c, 0xd0, 0xf7, 0xb6, 0xc4, 0x7a, = 0xd5 }} @@ -170,6 +173,12 @@ EFI_GUID gEfiBlueToothAttributeProtocolGuid =3D { 0x89= 8890e9, 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; + // // The Max length of pre-defined string value(yes or no) // in the EfiCompliant.ini @@ -381,6 +390,25 @@ 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 EFI_INI_FILE_HANDLE IniFile, + IN OUT EFI_TEST_ASSERTION *AssertionType, + IN CHAR16 *TestItemString +); + +EFI_STATUS +GenTestConfigContent ( + IN CHAR16 *ProtocolGUIDString, + IN BOOLEAN Value +); + // // External functions implementation // @@ -405,6 +433,25 @@ 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; + EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *Volume; + EFI_HANDLE DeviceHandle; + EFI_FILE *Root; + EFI_FILE *OldFile; + CONFIG_ERROR_DATA *ErrorData; + UINT8 Index; + BOOLEAN GenConfigINI; + CHAR16 String[MAX_LENGTH]; + CHAR16 *FilePath; + CHAR16 *TitleString[] =3D { + L"<|If fail item is not 0, it mean platform config have error ___", + L"<|occur or EfiCompliant.ini setting have wrong. ________________", + L"<|Please sent this file and EfiCompliant.ini to platform owner .", + L"<|EfiCompliant.ini is in the : SCT\\Dependency\\EfiCompliantBBTest", + 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", + NULL + }; =20 // // Locate the standard test library protocol @@ -430,6 +477,62 @@ Routine Description: return Status; } =20 + // + // Check PlatformConfig.ini file is exise or not. + // + ProfileLib->EfiGetSystemDevicePath ( + ProfileLib, + &DevicePath, + &FilePath + ); + Status =3D OpenIniFile ( + ProfileLib, + L"Report", + L"PlatformConfig.ini", + &ConfigINI + ); + if (ConfigINI !=3D NULL) { + // + // If file exise, delete it. + // + CloseIniFile (ProfileLib, ConfigINI); + + Status =3D gtBS->LocateDevicePath ( + &gEfiSimpleFileSystemProtocolGuid, + &DevicePath, + &DeviceHandle + ); + if (EFI_ERROR (Status)) return Status; + + Status =3D gtBS->HandleProtocol ( + DeviceHandle, + &gEfiSimpleFileSystemProtocolGuid, + (VOID*)&Volume + ); + if (EFI_ERROR (Status)) return Status; + + Status =3D Volume->OpenVolume(Volume, &Root); + if (EFI_ERROR (Status)) return Status; + + Status =3D Root->Open ( + Root, + &OldFile, + SctPoolPrint (L"%s\\Report\\PlatformConfig.ini", File= Path), + EFI_FILE_MODE_READ | EFI_FILE_MODE_WRITE, + 0 + ); + if (EFI_ERROR (Status)) { + return Status; + } + + Status =3D OldFile->Delete (OldFile); + if (EFI_ERROR (Status)) { + return Status; + } + + Root->Close (Root); + } + // // Open the INI file // @@ -453,6 +556,68 @@ Routine Description: return Status; } =20 + GenConfigINI =3D TRUE; + Index =3D MAX_LENGTH; + Status =3D IniFile->GetString ( + IniFile, + SECTION_NAME_CONFIGURATION_SPECIFIC, + L"GEN_CONFIG_INI_FILE_ON", + String, + &Index + ); + if (!EFI_ERROR (Status) && !(SctStriCmp (String, L"yes") =3D=3D 0)) { + GenConfigINI =3D FALSE; + } + + if (GenConfigINI =3D=3D TRUE) { + // + // Create the config.ini file. + // + ProfileLib->EfiGetSystemDevicePath ( + ProfileLib, + &DevicePath, + &FilePath + ); + + Status =3D ProfileLib->EfiIniCreate ( + ProfileLib, + DevicePath, + SctPoolPrint (L"%s\\Report\\PlatformConfig.ini"= , FilePath), + &ConfigINI + ); + if (EFI_ERROR (Status)) { + StandardLib->RecordAssertion ( + StandardLib, + EFI_TEST_ASSERTION_FAILED, + gTestGenericFailureGuid, + L"UEFI Compliant - Cannot create or open INI file", + L"%a:%d:", + __FILE__, + (UINTN)__LINE__ + ); + return Status; + } + // + // Gen PlatformConfig.ini title and description. + // + ConfigINI->SetStringByOrder ( + ConfigINI, + 0x00, + CONFIN_TITLE_STRING, + L"<|Unavailable (Fail) item have :", + SctPoolPrint (L": \"%02d\" --", 0x00) + ); + for (Index=3D0; TitleString[Index] !=3D NULL ;Index++) { + ConfigINI->SetString ( + ConfigINI, + CONFIN_TITLE_STRING, + TitleString[Index], + L"|>" + ); + } + ConstructionAndAcquisition (NULL, ConfigINI); + } + // // Check the console protocols // @@ -594,6 +759,26 @@ Routine Description: // CloseIniFile (ProfileLib, IniFile); =20 + // + // Save data to platform.ini + // + if (GenConfigINI =3D=3D TRUE) { + 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->ErrorCo= unt) + ); + // + // If have error occor and GenTestINI flag is on, gen the report file. + // + CloseIniFile (ProfileLib, ConfigINI); + } return EFI_SUCCESS; } =20 @@ -810,6 +995,11 @@ CheckConsoleProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"ConsoleDevices")= ) { + GenTestConfigContent (L"gEfiSimpleTextInProtocolGuid ", ValueA= ); + GenTestConfigContent (L"gEfiSimpleTextOutProtocolGuid ", ValueB= ); + GenTestConfigContent (L"gEfiSimpleTextInputExProtocolGuid", ValueC= ); + } } } =20 @@ -888,6 +1078,12 @@ CheckHiiProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"HiiConfigSupport= ")) { + GenTestConfigContent (L"gEfiHiiDatabaseProtocolGuid ", Value[0= ]); + GenTestConfigContent (L"gEfiHiiStringProtocolGuid ", Value[1= ]); + GenTestConfigContent (L"gEfiHiiConfigRoutingProtocolGuid", Value[2= ]); + GenTestConfigContent (L"gEfiHiiFontProtocolGuid ", Value[3= ]); + } } } =20 @@ -929,6 +1125,9 @@ CheckHiiProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"HiiFontSupport= ")) { + GenTestConfigContent (L"gEfiHiiFontProtocolGuid", Value[4]); + } } } =20 @@ -1028,6 +1227,11 @@ CheckGraphicalConsoleProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"GraphicalConsole= Devices")) { + GenTestConfigContent (L"gEfiGraphicsOutputProtocolGuid", ValueA); + GenTestConfigContent (L"gEfiEdidDiscoveredProtocolGuid", ValueB); + GenTestConfigContent (L"gEfiEdidActiveProtocolGuid ", ValueC); + } } } =20 @@ -1098,6 +1302,9 @@ CheckPointerProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"PointerDevices")= ) { + GenTestConfigContent (L"gEfiSimplePointerProtocolGuid", ValueA); + } } } =20 @@ -1211,6 +1418,12 @@ CheckBootFromDiskProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BootFromDiskDevi= ces")) { + GenTestConfigContent (L"gEfiBlockIoProtocolGuid ", ValueA); + GenTestConfigContent (L"gEfiDiskIoProtocolGuid ", ValueB); + GenTestConfigContent (L"gEfiSimpleFileSystemProtocolGuid", ValueC); + GenTestConfigContent (L"gEfiUnicodeCollationProtocolGuid", ValueD); + } } } =20 @@ -1353,6 +1566,12 @@ CheckBootFromNetworkProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BootFromNetworkD= evices")) { + GenTestConfigContent (L"gEfiPxeBaseCodeProtocolGuid = ", ValueA); + GenTestConfigContent (L"gEfiSimpleNetworkProtocolGuid = ", Value[0]); + GenTestConfigContent (L"gEfiManagedNetworkProtocolGuid = ", Value[1]); + GenTestConfigContent (L"gEfiNetworkInterfaceIdentifierProtocolGuid= ", Value[2]); + } } } =20 @@ -1391,6 +1610,9 @@ CheckBootFromNetworkProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"ValidateBootIm= ageThruNet")) { + GenTestConfigContent (L"Variable \"SetupMode\"", ValueC); + } } } =20 @@ -1481,6 +1703,15 @@ CheckUefiNetworkApplication ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"UefiNetworkAppli= cation")) { + 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]); + } } StandardLib->RecordAssertion ( StandardLib, @@ -1582,6 +1813,21 @@ CheckUefiNetworkApplication ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"UefiNetworkApp= lication")) { + 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]); + } } } =20 @@ -1679,6 +1925,13 @@ CheckUefiV6NetworkApplication ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, 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]); + } } StandardLib->RecordAssertion ( StandardLib, @@ -1774,6 +2027,17 @@ CheckUefiV6NetworkApplication ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"UEFIIPv6Suppor= t")) { + 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]); + } } } =20 @@ -1830,6 +2094,9 @@ CheckUefiV6NetworkApplication ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0))= { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"VlanSupport"= )) { + GenTestConfigContent (L"gEfiVlanConfigProtocolGuid", Value[9]); + } } } =20 @@ -1902,6 +2169,9 @@ CheckUartProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"UartDevices")) { + GenTestConfigContent (L"gEfiSerialIoProtocolGuid", ValueA); + } } } =20 @@ -1986,6 +2256,10 @@ CheckPciProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"PciBusSupport"))= { + GenTestConfigContent (L"gEfiPciRootBridgeIoProtocolGuid", ValueA); + GenTestConfigContent (L"gEfiPciIoProtocolGuid ", ValueB); + } } } =20 @@ -2070,6 +2344,10 @@ CheckUsbProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"UsbBusSupport"))= { + GenTestConfigContent (L"gEfiUsb2HcProtocolGuid", ValueA); + GenTestConfigContent (L"gEfiUsbIoProtocolGuid ", ValueB); + } } } =20 @@ -2139,6 +2417,9 @@ CheckNVMeProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"NVMExpressPassTh= ru")) { + GenTestConfigContent (L"gEfiNvmExpressPassThruProtocolGuid", Value= A); + } } } =20 @@ -2222,6 +2503,9 @@ CheckBootFromNVMe ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BootFromNVMe")) { + GenTestConfigContent (L"gEfiBlockIoProtocolGuid", ValueB); + } } } =20 @@ -2258,6 +2542,9 @@ CheckBootFromNVMe ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"NVMExpressPass= Thru")) { + GenTestConfigContent (L"gEfiNvmExpressPassThruProtocolGuid", Val= ueA); + } } } =20 @@ -2330,6 +2617,9 @@ CheckScsiProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"ExtScsiPassThru"= )) { + GenTestConfigContent (L"gEfiExtScsiPassThruProtocolGuid", ValueA); + } } } =20 @@ -2428,6 +2718,10 @@ CheckBootFromScsi ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BootFromScsi")) { + GenTestConfigContent (L"gEfiBlockIoProtocolGuid", ValueB); + GenTestConfigContent (L"gEfiScsiIoProtocolGuid ", ValueC); + } } } =20 @@ -2465,6 +2759,9 @@ CheckBootFromScsi ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"ExtScsiPassThr= uSupport")) { + GenTestConfigContent (L"gEfiExtScsiPassThruProtocolGuid", ValueA= ); + } } } =20 @@ -2550,6 +2847,10 @@ CheckBootFromIScsi ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BootFromIscsi"))= { + GenTestConfigContent (L"gEfiIScsiInitiatorNameProtocolGuid", Value= A); + GenTestConfigContent (L"gEfiAuthenticationInfoProtocolGuid", Value= B); + } } } =20 @@ -2637,6 +2938,10 @@ CheckDebugProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"DebugSupport")) { + GenTestConfigContent (L"gEfiDebugSupportProtocolGuid", ValueA); + GenTestConfigContent (L"gEfiDebugPortProtocolGuid ", ValueB); + } } } =20 @@ -2706,6 +3011,9 @@ CheckDriverOverrideProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"PlatformDriverOv= erride")) { + GenTestConfigContent (L"gEfiPlatformDriverOverrideProtocolGuid", V= alueA); + } } } =20 @@ -2774,6 +3082,9 @@ CheckATAProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"AtaPassThru")) { + GenTestConfigContent (L"gEfiAtaPassThruProtocolGuid", ValueA); + } } } =20 @@ -2845,6 +3156,12 @@ CheckEbcProtocol ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, 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); + } } } =20 @@ -2941,6 +3258,9 @@ CheckDNS4Protocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"DNS4Support")) { + GenTestConfigContent (L"gEfiDns4ServiceBindingProtocolGuid", Value= A); + } } StandardLib->RecordAssertion ( StandardLib, @@ -2998,6 +3318,10 @@ CheckDNS4Protocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"DNS4Support"))= { + GenTestConfigContent (L"gEfiDns4ServiceBindingProtocolGuid", Val= ueA); + GenTestConfigContent (L"gEfiDns4ProtocolGuid ", Val= ueB); + } } } =20 @@ -3067,6 +3391,9 @@ CheckDNS6Protocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"DNS6Support")) { + GenTestConfigContent (L"gEfiDns6ServiceBindingProtocolGuid", Value= A); + } } StandardLib->RecordAssertion ( StandardLib, @@ -3124,6 +3451,10 @@ CheckDNS6Protocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"DNS6Support"))= { + GenTestConfigContent (L"gEfiDns6ServiceBindingProtocolGuid", Val= ueA); + GenTestConfigContent (L"gEfiDns6ProtocolGuid ", Val= ueB); + } } } =20 @@ -3205,6 +3536,10 @@ CheckTLSProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"TLSSupport")) { + GenTestConfigContent (L"gEfiTlsServiceBindingProtocolGuid", ValueA= ); + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", ValueB= ); + } } StandardLib->RecordAssertion ( StandardLib, @@ -3263,6 +3598,11 @@ CheckTLSProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"TLSSupport")) { + GenTestConfigContent (L"gEfiTlsServiceBindingProtocolGuid", Valu= eA); + GenTestConfigContent (L"gEfiTlsConfigurationProtocolGuid ", Valu= eB); + GenTestConfigContent (L"gEfiTlsProtocolGuid ", Valu= eC); + } } } =20 @@ -3346,6 +3686,10 @@ CheckHTTPProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"HTTPSupport")) { + GenTestConfigContent (L"gEfiHttpServiceBindingProtocolGuid", Value= A); + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", Value= B); + } } StandardLib->RecordAssertion ( StandardLib, @@ -3404,6 +3748,11 @@ CheckHTTPProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"HTTPSupport"))= { + GenTestConfigContent (L"gEfiHttpServiceBindingProtocolGuid", Val= ueA); + GenTestConfigContent (L"gEfiHttpUtilitiesProtocolGuid ", Val= ueB); + GenTestConfigContent (L"gEfiHttpProtocolGuid ", Val= ueC); + } } } =20 @@ -3493,6 +3842,11 @@ CheckEAPProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"EAPSupport")) { + GenTestConfigContent (L"gEfiEapProtocolGuid ", ValueA); + GenTestConfigContent (L"gEfiEapConfigProtocolGuid ", ValueB); + GenTestConfigContent (L"gEfiEapManagement2ProtocolGuid", ValueC); + } } } =20 @@ -3588,6 +3942,11 @@ CheckBlueToothClassicProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BlueToothClassic= Support")) { + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid ", = ValueA); + GenTestConfigContent (L"gEfiBlueToothServiceBindingProtocolGuid", = ValueB); + GenTestConfigContent (L"gEfiBlueToothConfigProtocolGuid ", = ValueC); + } } =20 // @@ -3652,6 +4011,12 @@ CheckBlueToothClassicProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BlueToothClass= icSupport")) { + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid "= , ValueA); + GenTestConfigContent (L"gEfiBlueToothServiceBindingProtocolGuid"= , ValueB); + GenTestConfigContent (L"gEfiBlueToothConfigProtocolGuid "= , ValueC); + GenTestConfigContent (L"gEfiBlueToothIoProtocolGuid "= , ValueD); + } } } =20 @@ -3743,6 +4108,11 @@ CheckBlueToothLEProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"BlueToothLESuppo= rt")) { + GenTestConfigContent (L"gEfiBlueToothHcProtocolGuid ", Value= A); + GenTestConfigContent (L"gEfiBlueToothAttributeProtocolGuid", Value= B); + GenTestConfigContent (L"gEfiBlueToothLEConfigProtocolGuid ", Value= C); + } } } =20 @@ -3832,6 +4202,10 @@ CheckIPSecProtocols ( ); if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { AssertionType =3D EFI_TEST_ASSERTION_FAILED; + if (!GenTestConfigTitle (IniFile, &AssertionType, L"IPSecSupport")) { + GenTestConfigContent (L"gEfiIPSecConfigProtocolGuid", ValueA); + GenTestConfigContent (L"gEfiIPSec2ProtocolGuid ", ValueB); + } } } =20 @@ -3852,3 +4226,119 @@ CheckIPSecProtocols ( =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 EFI_INI_FILE_HANDLE IniFile, + IN OUT EFI_TEST_ASSERTION *AssertionType, + IN CHAR16 *TestItemString +){ + CONFIG_ERROR_DATA *ErrorData; + EFI_STATUS Status; + CHAR16 String[MAX_LENGTH]; + UINT32 MaxLength; + + // + // Check need to gen config.ini or not. + // + MaxLength =3D MAX_LENGTH; + Status =3D IniFile->GetString ( + IniFile, + SECTION_NAME_PLATFORM_SPECIFIC, + L"GEN_CONFIG_INI_FILE_ON", + String, + &MaxLength + ); + if (!EFI_ERROR (Status) && !(SctStriCmp (String, L"yes") =3D=3D 0)) { + return EFI_UNSUPPORTED; + } + + // + // If platform owner is not sure platform config yet, this item can ski= p this test. + // + MaxLength =3D MAX_LENGTH; + Status =3D IniFile->GetString ( + IniFile, + SECTION_NAME_CONFIGURATION_SPECIFIC, + L"IGNORE_COMPLIANT_TEST_CSV", + String, + &MaxLength + ); + if (!EFI_ERROR (Status) && (SctStriCmp (String, L"yes") =3D=3D 0)) { + *AssertionType =3D EFI_TEST_ASSERTION_WARNING; + } + + 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 EFI_SUCCESS; +} + +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": Exist in system !": L": Not exist in system !" + ); + + return EFI_SUCCESS; +} + --=20 2.16.2.windows.1 -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#48928): https://edk2.groups.io/g/devel/message/48928 Mute This Topic: https://groups.io/mt/34536852/1787277 Group Owner: devel+owner@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org] -=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-