Add support for host BIOS update testing

This change adds the following keywords to utils.robot:

Clear BMC Record Log
Copy PNOR to BMC
Flash PNOR
Get Flash BIOS Status
Is PNOR Flashing
Is PNOR Flash Done
Is System State Host Booted

This also adds test_bios_update.robot which implements a basic ipl test
using the above keywords.

Change-Id: Id544fd1cec755ef95eb7c7330751b3c2e2a2d9dc
Signed-off-by: Jay Azurin <jmazurin@us.ibm.com>
diff --git a/lib/utils.robot b/lib/utils.robot
index ebe7980..190e4fc 100644
--- a/lib/utils.robot
+++ b/lib/utils.robot
@@ -130,3 +130,49 @@
     Should be equal as strings  ${resp.status_code}  ${HTTP_OK}
     ${content}=  to json  ${resp.content}
     [return]  ${content["data"]}
+
+Clear BMC Record Log
+    [Documentation]  Clears all the event logs on the BMC. This would be
+    ...              equivalent to ipmitool sel clear.
+    @{arglist}=   Create List
+    ${args}=     Create Dictionary    data=@{arglist}
+    ${resp}=   Call Method    /org/openbmc/records/events/    clear  data=${args}
+    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
+
+Copy PNOR to BMC
+    Import Library      SCPLibrary      WITH NAME       scp
+    Open Connection for SCP
+    Log    Copying ${PNOR_IMAGE_PATH} to /tmp
+    scp.Put File    ${PNOR_IMAGE_PATH}   /tmp
+
+Flash PNOR
+    [Documentation]    Calls flash bios update method to flash PNOR image
+    [arguments]    ${pnor_image}
+    @{arglist}=   Create List    ${pnor_image}
+    ${args}=     Create Dictionary    data=@{arglist}
+    ${resp}=   Call Method    /org/openbmc/control/flash/bios/    update  data=${args}
+    should be equal as strings      ${resp.status_code}     ${HTTP_OK}
+    Wait Until Keyword Succeeds    2 min   10 sec    Is PNOR Flashing
+
+Get Flash BIOS Status
+    [Documentation]  Returns the status of the flash BIOS API as a string. For
+    ...              example 'Flashing', 'Flash Done', etc
+    ${data}=      Read Properties     /org/openbmc/control/flash/bios
+    [return]    ${data['status']}
+
+Is PNOR Flashing
+    [Documentation]  Get BIOS 'Flashing' status. This indicates that PNOR
+    ...              flashing has started.
+    ${status}=    Get Flash BIOS Status
+    should be equal as strings     ${status}     Flashing
+
+Is PNOR Flash Done
+    [Documentation]  Get BIOS 'Flash Done' status.  This indicates that the
+    ...              PNOR flashing has completed.
+    ${status}=    Get Flash BIOS Status
+    should be equal as strings     ${status}     Flash Done
+
+Is System State Host Booted
+    [Documentation]  Checks whether system state is HOST_BOOTED.
+    ${state}=    Get BMC State
+    should be equal as strings     ${state}     HOST_BOOTED