*** Settings ***
Documentation   This suite tests System Vital Product Data (VPD) using vpdtool.

Library         ../../lib/vpd_utils.py
Variables       ../../data/vpd_variables.py
Resource        ../../lib/openbmc_ffdc.robot

Test Teardown   FFDC On Test Case Fail

Force Tags      VPD_Tool

*** Variables ***

${CMD_GET_PROPERTY_INVENTORY}  busctl get-property xyz.openbmc_project.Inventory.Manager
${DR_WRITE_VALUE}              XYZ Component
${PN_WRITE_VALUE}              XYZ1234
${SN_WRITE_VALUE}              ABCD12345678
@{fields}                      PN  SN  LocationCode
@{vpd_fields}                  PN  SN

*** Test Cases ***

Verify System VPD Data Via Vpdtool
    [Documentation]  Verify the system VPD details via vpdtool output.
    [Tags]  Verify_System_VPD_Data_Via_Vpdtool
    [Template]  Verify VPD Data Via Vpdtool

    # Component     Field
    System          Model
    System          SerialNumber
    System          LocationCode


Verify VPD Component Read
    [Documentation]  Verify details of all VPD component via vpdtool.
    [Tags]  Verify_VPD_Component_Read

    ${vpd_records}=  Vpdtool  -i
    ${components}=  Get Dictionary Keys  ${vpd_records}
    FOR  ${component}  IN  @{components}
        Verify VPD Component Read Operation  ${component}
    END


Verify VPD Field Read
    [Documentation]  Verify reading VPD field value via vpdtool.
    [Tags]  Verify_VPD_Field_Read

    ${vpd_records}=  Vpdtool  -i
    ${components}=  Get Dictionary Keys  ${vpd_records}
    FOR  ${component}  IN  @{components}
       # Drive component field values response in ascii format
       # due to that skipping here.
       IF  'drive' in '${component}'
           Continue FOR Loop
       ELSE
           Verify VPD Field Read Operation  ${component}
       END
    END


Verify VPD Field Write
    [Documentation]  Verify writing VPD field value via vpdtool.
    [Tags]  Verify_VPD_Field_Write

    ${components}=  Get Dictionary Keys  ${VPD_DETAILS}
    FOR  ${component}  IN  @{components}
        # VPD fields "DR", "CC" and "FN" will be added later.
        @{vpd_fields}=  Create List  SN  PN
        ${field}=  Evaluate  random.choice($vpd_fields)  random
        Verify VPD Field Write Operation  ${component}  ${field}
    END


*** Keywords ***

Verify VPD Component Read Operation
    [Documentation]  Verify reading VPD details of given component via vpdtool.
    [Arguments]  ${component}
    # Description of arguments:
    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).

    ${vpd_records}=  Vpdtool  -o -O ${component}

    # Example output from 'Vpdtool  -o -O /system/chassis/motherboard/vdd_vrm1':
    #  [/system/chassis/motherboard/vdd_vrm1]:
    #    [DR]:                                         CPU POWER CARD
    #    [type]:                                       xyz.openbmc_project.Inventory.Item.Vrm
    #    [CC]:                                         E123
    #    [FN]:                                         F123456
    #    [LocationCode]:                               ABCD.XY1.1234567-P0
    #    [SN]:                                         YL2E32010000
    #    [PN]:                                         PN12345

    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
    FOR  ${vpd_field}  IN  @{fields}
        ${match_key_exists}=  Run Keyword And Return Status
        ...  Dictionary Should Contain Key  ${vpdtool_res}  ${vpd_field}
          IF  '${match_key_exists}' == 'True'
              #  drive components busctl field response in ascii due to that checking only locationcode.
              IF  'drive' in '${component}'
                  ${vpd_field}=  Set Variable  LocationCode
              END
              # Skip check if VPD field is empty.
              Run Keyword If  '${vpd_records['${component}']['${vpd_field}']}' == ''
              ...  Continue For Loop

              # Get VPD field values via busctl.
              ${busctl_field}=  Set Variable If
              ...  '${vpd_field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
              ...  '${vpd_field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
              ...  '${vpd_field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
              ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
              ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
              ${cmd_output}=  BMC Execute Command  ${cmd}
              # Check whether the vpdtool response and busctl response matching.
              Valid Value  vpd_records['${component}']['${vpd_field}']
              ...  ['${cmd_output[0].split('"')[1].strip('"')}']
          ELSE
             Continue For Loop
          END
    END


Verify VPD Field Read Operation
    [Documentation]  Verify reading all VPD fields for given component via vpdtool.
    [Arguments]  ${component}
    # Description of arguments:
    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).

    ${vpd_records}=  Vpdtool  -o -O ${component}
    ${vpdtool_res}=  Set To Dictionary  ${vpd_records}[${component}]
    FOR  ${field}  IN  @{vpd_fields}
         ${match_key_exists}=  Run Keyword And Return Status
         ...  Dictionary Should Contain Key  ${vpdtool_res}  ${field}
         IF  '${match_key_exists}' == 'True'
             ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
             # Skip check if field value is empty.
             Run Keyword If  '${vpd_records['${component}']['${field}']}' == ''
             ...  Continue For Loop

             ${busctl_field}=  Set Variable If
             ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
             ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber
             ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY}
             ...  /xyz/openbmc_project/inventory${component} ${busctl_field}
             ${cmd_output}=  BMC Execute Command  ${cmd}

             # Check vpdtool response and busctl response for the component field.
             Valid Value  vpd_records['${component}']['${field}']
             ...  ['${cmd_output[0].split('"')[1].strip('"')}']
         ELSE
            Continue For Loop
         END
    END


Verify VPD Field Write Operation
    [Documentation]  Verify writing VPD fields for given component via vpdtool.
    [Arguments]  ${component}  ${field}
    [Teardown]  Restore VPD Value  ${component}  ${field}  ${old_field_value}
    # Description of arguments:
    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
    # field           VPD component field (e.g. PN, SN)

    ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}
    ${old_field_value}=  Set Variable  ${vpd_records['${component}']['${field}']}

    ${write_value}=  Set Variable If
    ...  '${field}' == 'DR'  ${DR_WRITE_VALUE}
    ...  '${field}' == 'PN'  ${PN_WRITE_VALUE}
    ...  '${field}' == 'SN'  ${SN_WRITE_VALUE}

    Vpdtool  -w -O ${component} -R VINI -K ${field} --value ${write_value}

    Verify VPD Field Value  ${component}  ${field}


Restore VPD Value
    [Documentation]  Restore VPD's field value of given component.
    [Arguments]  ${component}  ${field}  ${value}
    # Description of arguments:
    # component       VPD component (e.g. /system/chassis/motherboard/vdd_vrm1).
    # field           VPD component field (e.g. PN, SN)
    # value           VPD value to be restore.

    Vpdtool  -w -O ${component} -R VINI -K ${field} --value ${value}


Verify VPD Field Value
    [Documentation]  Verify VPD field value via vpdtool.
    [Arguments]  ${component}  ${field}
    # Description of arguments:
    # component       VDP component (e.g. /system/chassis/motherboard/vdd_vrm1).
    # field           VPD field (e.g. DR, SN, PN)

    ${vpd_records}=  Vpdtool  -r -O ${component} -R VINI -K ${field}

    ${busctl_field}=  Set Variable If
    ...  '${field}' == 'DR'  xyz.openbmc_project.Inventory.Item PrettyName
    ...  '${field}' == 'PN'  xyz.openbmc_project.Inventory.Decorator.Asset PartNumber
    ...  '${field}' == 'SN'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber

    ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory${component}
    ...  ${busctl_field}
    ${cmd_output}=  BMC Execute Command  ${cmd}

    Valid Value  vpd_records['${component}']['${field}']  ['${cmd_output[0].split('"')[1].strip('"')}']


Verify VPD Data Via Vpdtool
    [Documentation]  Get VPD details of given component via vpdtool and verify it
    ...              using busctl command.
    [Arguments]  ${component}  ${field}
    # Description of arguments:
    # component       VPD component (e.g. System,Chassis etc).
    # field           VPD field (e.g. Serialnumber,LocationCode etc).

    ${component_url}=  Run Keyword If
    ...  '${component}' == 'System'  Set Variable  /system

    # Get VPD details of given component via vpd-tool.
    ${vpd_records}=  Vpdtool  -o -O ${component_url}

    # Get VPD details of given component via busctl command.
    ${busctl_field}=  Set Variable If
    ...  '${field}' == 'LocationCode'  com.ibm.ipzvpd.Location LocationCode
    ...  '${field}' == 'Model'  xyz.openbmc_project.Inventory.Decorator.Asset Model
    ...  '${field}' == 'SerialNumber'  xyz.openbmc_project.Inventory.Decorator.Asset SerialNumber

    ${cmd}=  Catenate  ${CMD_GET_PROPERTY_INVENTORY} /xyz/openbmc_project/inventory/system
    ...  ${busctl_field}
    ${cmd_output}=  BMC Execute Command  ${cmd}
    # Example of cmd_output:
    #   [0]:                                            s "ABCD.XY1.1234567-P0"
    #   [1]:
    #   [2]:                                            0

    # Cross check vpdtool output with busctl response.
    Should Be Equal As Strings  ${vpd_records["/system"]["${field}"]}
    ...  ${cmd_output[0].split('"')[1].strip('"')}
