Tests for Downloading Image onto the BMC
- Upload images via REST
- Upload images via TFTP
Resolves openbmc/openbmc-test-automation#510
Change-Id: Id55f12d0d0354024c57ca929953b408e70876b40
Signed-off-by: Saqib Khan <khansa@us.ibm.com>
diff --git a/extended/test_uploadimage.robot b/extended/test_uploadimage.robot
new file mode 100644
index 0000000..19dc35a
--- /dev/null
+++ b/extended/test_uploadimage.robot
@@ -0,0 +1,81 @@
+*** Settings ***
+Documentation Test Upload Image
+... Execution Method :
+... python -m robot -v OPENBMC_HOST:<hostname>
+... -v TFTP_SERVER:<TFTP server IP>
+... -v TFTP_FILE_NAME:<filename.tar>
+... -v IMAGE_FILE_PATH:<path/*.tar> test_uploadimage.robot
+
+Resource ../lib/connection_client.robot
+Resource ../lib/rest_client.robot
+Resource ../lib/openbmc_ffdc.robot
+Library Collections
+Library String
+Library OperatingSystem
+Library test_uploadimage.py
+
+Test Teardown Upload Image Teardown
+
+*** Variables ***
+${timeout} 10
+${UPLOAD_DIR_PATH} /tmp/images/
+${QUIET} ${1}
+${IMAGE_VERSION} ${EMPTY}
+
+*** Test Cases ***
+
+Upload Image Via REST
+ [Documentation] Upload an image via REST.
+ [Tags] Upload_Image_Via_REST
+
+ 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 Post Request /upload/image data=${image_data}
+ ${ret}= Verify Image Upload
+ Should Be True True == ${ret}
+
+Upload Image Via TFTP
+ [Documentation] Upload an image via TFTP.
+ [Tags] Upload_Image_Via_TFTP
+
+ @{image}= Create List ${TFTP_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
+ ${upload_file}= Get Latest File ${UPLOAD_DIR_PATH}
+ ${IMAGE_VERSION}= Get Image Version
+ ... ${UPLOAD_DIR_PATH}${upload_file}/MANIFEST
+ ${ret}= Verify Image Upload
+ Should Be True True == ${ret}
+
+*** Keywords ***
+
+Upload Image Teardown
+ [Documentation] Log FFDC if test suite fails and collect SOL log for
+ ... debugging purposes.
+
+ Close All Connections
+ FFDC On Test Case Fail
+
+Upload Post Request
+ [Arguments] ${uri} ${timeout}=10 ${quiet}=${QUIET} &{kwargs}
+
+ # Description of arguments:
+ # 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}