*** Settings ***
Documentation         Test upload image with both valid and invalid images.
...                   This test expects there to be bad image tarballs named
...                   pnor_bad_manifest.tar, pnor_no_image.tar,
...                   bmc_bad_manifest.tar, and bmc_no_image.tar on the TFTP
...                   server and in the BAD_IMAGES_DIR_PATH directory.
...                   Execution Method :
...                   python -m robot -v OPENBMC_HOST:<hostname>
...                   -v TFTP_SERVER:<TFTP server IP>
...                   -v PNOR_TFTP_FILE_NAME:<filename.tar>
...                   -v BMC_TFTP_FILE_NAME:<filename.tar>
...                   -v PNOR_IMAGE_FILE_PATH:<path/*.tar>
...                   -v BMC_IMAGE_FILE_PATH:<path/*.tar>
...                   -v BAD_IMAGES_DIR_PATH:<path> test_image_upload.robot

Resource              ../../lib/connection_client.robot
Resource              ../../lib/rest_client.robot
Resource              ../../lib/openbmc_ffdc.robot
Library               Collections
Library               String
Library               OperatingSystem
Library               ../../lib/code_update_utils.py

Test Teardown  Upload Image Teardown

Force Tags  Upload_Test

*** Variables ***
${timeout}            10
${QUIET}              ${1}

*** Test Cases ***

Upload Host Image Via REST
    [Documentation]  Upload a PNOR image via REST.
    [Tags]  Upload_Host_Image_Via_REST
    [Template]  Upload Image Via REST And Verify Success

    # Image File Path
    ${PNOR_IMAGE_FILE_PATH}


Upload BMC Image Via REST
    [Documentation]  Upload a BMC image via REST.
    [Tags]  Upload_BMC_Image_Via_REST
    [Template]  Upload Image Via REST And Verify Success

    # Image File Path
    ${BMC_IMAGE_FILE_PATH}


Upload Host Image Via TFTP
    [Documentation]  Upload a PNOR image via TFTP.
    [Tags]  Upload_Host_Image_Via_TFTP
    [Template]  Upload Image Via TFTP And Verify Success

    # Image File Path
    ${PNOR_TFTP_FILE_NAME}


Upload BMC Image Via TFTP
    [Documentation]  Upload a BMC image via TFTP
    [Tags]  Upload_BMC_Image_Via_TFTP
    [Template]  Upload Image Via TFTP And Verify Success

    # Image File Path
    ${BMC_TFTP_FILE_NAME}


Upload Host Image With Bad Manifest Via REST
    [Documentation]  Upload a PNOR image with a bad MANIFEST via REST and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_REST
    [Template]  Upload Bad Image Via REST And Verify Failure

    # Image File Name
    pnor_bad_manifest.tar


Upload Host Image With No Squashfs Via REST
    [Documentation]  Upload a PNOR image with just a MANIFEST file via REST
    ...              and verify that the BMC does not unpack it.
    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_REST
    [Template]  Upload Bad Image Via REST And Verify Failure

    # Image File Name
    pnor_no_image.tar


Upload BMC Image With Bad Manifest Via REST
    [Documentation]  Upload a BMC image with a bad MANFIEST file via REST and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_REST
    [Template]  Upload Bad Image Via REST And Verify Failure

    # Image File Name
    bmc_bad_manifest.tar


Upload BMC Image With No Image Via REST
    [Documentation]  Upload a BMC image with no just a MANIFEST file via REST
    ...              and verify that the BMC does not unpack it.
    [Tags]  Upload_BMC_Image_With_No_Image_Via_REST
    [Template]  Upload Bad Image Via REST And Verify Failure

    # Image File Name
    bmc_no_image.tar


Upload Host Image With Bad Manifest Via TFTP
    [Documentation]  Upload a PNOR image with a bad MANIFEST file via TFTP and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_Host_Image_With_Bad_Manifest_Via_TFTP
    [Template]  Upload Bad Image Via TFTP And Verify Failure

    # Image File Name
    pnor_bad_manifest.tar


Upload Host Image With No Squashfs Via TFTP
    [Documentation]  Upload a PNOR image with just a MANIFEST file via TFTP and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_Host_Image_With_No_Squashfs_Via_TFTP
    [Template]  Upload Bad Image Via TFTP And Verify Failure

    # Image File Name
    pnor_no_image.tar


Upload BMC Image With Bad Manifest Via TFTP
    [Documentation]  Upload a BMC image with a bad MANIFEST file via TFTP and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_BMC_Image_With_Bad_Manifest_Via_TFTP
    [Template]  Upload Bad Image Via TFTP And Verify Failure

    # Image File Name
    bmc_bad_manifest.tar


Upload BMC Image With No Image Via TFTP
    [Documentation]  Upload a BMC image with just a MANIFEST file via TFTP and
    ...              verify that the BMC does not unpack it.
    [Tags]  Upload_BMC_Image_With_No_Image_Via_TFTP
    [Template]  Upload Bad Image Via TFTP And Verify Failure

    # Image File Name
    bmc_no_image.tar


*** Keywords ***

Upload Image Teardown
    [Documentation]  Log FFDC if test fails for debugging purposes.

    Close All Connections
    FFDC On Test Case Fail


Upload Post Request
    [Documentation]  Make POST request.
    [Arguments]  ${uri}  ${timeout}=10  ${quiet}=${QUIET}  &{kwargs}

    # Description of argument(s):
    # uri             URI for uploading image via REST.
    # timeout         Time allocated for the REST command to return status.
    # quiet           If enabled turns off logging to console.
    # kwargs          A dictionary that maps each keyword to a value.

    Initialize OpenBMC  ${timeout}  quiet=${quiet}
    ${base_uri}=  Catenate  SEPARATOR=  ${DBUS_PREFIX}  ${uri}
    ${headers}=  Create Dictionary  Content-Type=application/octet-stream
    ...  Accept=application/octet-stream
    Set To Dictionary  ${kwargs}  headers  ${headers}
    Run Keyword If  '${quiet}' == '${0}'  Log Request  method=Post
    ...  base_uri=${base_uri}  args=&{kwargs}
    ${ret}=  Post Request  openbmc  ${base_uri}  &{kwargs}  timeout=${timeout}
    Run Keyword If  '${quiet}' == '${0}'  Log Response  ${ret}
    Should Be Equal As Strings  ${ret.status_code}  ${HTTP_OK}

Get Image Version From TFTP Server
    [Documentation]  Get the version dfound in the MANIFEST file of
    ...              an image on the given TFTP server.
    [Arguments]  ${tftp_image_file_path}

    # Description of argument(s):
    # tftp_image_file_path  The path to the image on the TFTP server.

    ${stripped_file_path}=  Strip String  ${tftp_image_file_path}  characters=/
    ${rc}=  OperatingSystem.Run And Return RC
    ...  curl -s tftp://${TFTP_SERVER}/${stripped_file_path} > tftp_image.tar
    Should Be Equal As Integers  0  ${rc}
    ...  msg=Could not download image to check version.
    ${version}=  Get Version Tar  tftp_image.tar
    OperatingSystem.Remove File  tftp_image.tar
    [Return]  ${version}

Upload Image Via REST And Verify Success
    [Documentation]  Upload an image to the BMC and check that it is unpacked.

    # Upload the given good image to the BMC via REST, and check that the
    # BMC has unpacked the image and created a valid D-Bus entry for it.

    [Arguments]  ${image_file_path}

    # Description of argument(s):
    # image_file_path  The path to the image file to upload.

    OperatingSystem.File Should Exist  ${image_file_path}
    ${image_version}=  Get Version Tar  ${image_file_path}
    ${image_data}=  OperatingSystem.Get Binary File  ${image_file_path}
    Upload Image To BMC  /upload/image  data=${image_data}
    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
    Should Be True  ${ret}

Upload Image Via TFTP And Verify Success
    [Documentation]  Upload an image to the BMC and check that it was unpacked.

    # Upload the given good image to the BMC via TFTP, and check that the
    # BMC has unpacked the image and created a valid D-Bus entry for it.

    [Arguments]  ${image_file_name}

    # Description of argument(s):
    # image_file_name  The name of the image file on the TFTP server.

    @{image}=  Create List  ${image_file_name}  ${TFTP_SERVER}
    ${data}=  Create Dictionary  data=@{image}
    ${resp}=  OpenBMC Post Request
    ...  ${SOFTWARE_VERSION_URI}action/DownloadViaTFTP  data=${data}
    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
    Sleep  1 minute
    ${image_version}=  Get Image Version From TFTP Server  ${image_file_name}
    ${ret}  ${version_id}=  Verify Image Upload  ${image_version}
    Should Be True  ${ret}

Upload Bad Image Via REST And Verify Failure
    [Documentation]  Upload the given bad image to the BMC via REST and check
    ...              that the BMC did not unpack the invalid image.
    [Arguments]  ${bad_image_file_name}

    # Description of argument(s):
    # image_file_name  The name of the bad image to upload via REST.

    ${bad_image_file_path}=  OperatingSystem.Join Path  ${BAD_IMAGES_DIR_PATH}
    ...  ${bad_image_file_name}
    OperatingSystem.File Should Exist  ${bad_image_file_path}
    ...  msg=Bad image file ${bad_image_file_name} not found.
    ${bad_image_version}=  Get Version Tar  ${bad_image_file_path}
    ${bad_image_data}=  OperatingSystem.Get Binary File  ${bad_image_file_path}
    Upload Post Request  /upload/image  data=${bad_image_data}
    Verify Image Not In BMC Uploads Dir  ${bad_image_version}

Upload Bad Image Via TFTP And Verify Failure
    [Documentation]  Upload the given bad image to the BMC via TFTP and check
    ...              that the BMC did not unpack the invalid image.
    [Arguments]  ${bad_image_file_name}

    # Description of argument(s):
    # image_file_name  The name of the bad image to upload via TFTP.

    @{image}=  Create List  ${bad_image_file_name}  ${TFTP_SERVER}
    ${data}=  Create Dictionary  data=@{image}
    ${resp}=  OpenBMC Post Request
    ...  ${SOFTWARE_VERSION_URI}action/DownloadViaTFTP  data=${data}
    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_OK}
    ${bad_image_version}=  Get Image Version From TFTP Server
    ...  ${bad_image_file_name}
    Verify Image Not In BMC Uploads Dir  ${bad_image_version}
