Added tests for IPMI payload commands

Signed-off-by: Tony Lee <tony.lee@quantatw.com>
Change-Id: I1396ea72feed442882685fb3d3c45eab8156efc0
diff --git a/ipmi/test_ipmi_payload.robot b/ipmi/test_ipmi_payload.robot
new file mode 100644
index 0000000..ed9d47c
--- /dev/null
+++ b/ipmi/test_ipmi_payload.robot
@@ -0,0 +1,98 @@
+*** Settings ***
+Documentation       This suite tests IPMI Payload in OpenBMC.
+
+Resource            ../lib/ipmi_client.robot
+Resource            ../lib/openbmc_ffdc.robot
+Variables           ../data/ipmi_raw_cmd_table.py
+
+
+*** Test Cases ***
+
+Test Get Payload Activation Status
+    [Documentation]  Test get payload activation status.
+    [Tags]  Test_Get_Payload_Activation_Status
+
+    # SOL is the payload currently supported for payload status.
+    # Currently supports only one SOL session.
+    # Response Data
+    # 01   instance 1 is activated.
+    # 00   instance 1 is deactivated.
+    ${payload_status}=  Get Payload Activation Status
+    Should Contain Any  ${payload_status}  01  00
+
+
+Test Activate Payload
+    [Documentation]  Test activate payload via IPMI raw command.
+    [Tags]  Test_Activate_Payload
+
+    ${payload_status}=  Get Payload Activation Status
+    Run Keyword If  '${payload_status}' == '01'  Deactivate Payload
+
+    Activate Payload
+
+    ${payload_status}=  Get Payload Activation Status
+    Should Contain  ${payload_status}  01
+
+
+Test Deactivate Payload
+    [Documentation]  Test deactivate payload via IPMI raw command.
+    [Tags]  Test_Deactivate_Payload
+
+    ${payload_status}=  Get Payload Activation Status
+    Run Keyword If  '${payload_status}' == '00'  Activate Payload
+
+    Deactivate Payload
+
+    ${payload_status}=  Get Payload Activation Status
+    Should Contain  ${payload_status}  00
+
+
+Test Get Payload Instance Info
+    [Documentation]  Test Get Payload Instance via IPMI raw command.
+    [Tags]  Test_Get_Payload_Instance_Info
+
+    ${payload_status}=  Get Payload Activation Status
+    Run keyword If  '${payload_status}' == '01'
+    ...  Deactivate Payload
+
+    # First four bytes should be 00 if given instance is not activated.
+    ${resp}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][0]}
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][1]}
+    Activate Payload
+
+    # First four bytes should be session ID when payload is activated.
+    ${resp}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][0]}
+    Should Not Contain  ${resp}  ${IPMI_RAW_CMD['Payload']['Get_Payload_Instance_Info'][1]}
+
+
+*** Keywords ***
+
+Get Payload Activation Status
+    [Documentation]  Get payload activation status.
+
+    ${resp}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['Payload']['Get_Payload_Activation_Status'][0]}
+
+    @{resp}=  Split String  ${resp}
+
+    ${payload_status}=  Set Variable  ${resp[1]}
+
+    [return]  ${payload_status}
+
+
+Activate Payload
+    [Documentation]  Activate Payload.
+
+    ${resp}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['Payload']['Activate_Payload'][0]}
+    Should Contain  ${resp}  ${IPMI_RAW_CMD['Payload']['Activate_Payload'][1]}
+
+
+Deactivate Payload
+    [Documentation]  Deactivate Payload.
+
+    ${resp}=  Run IPMI Command
+    ...  ${IPMI_RAW_CMD['Payload']['Deactivate_Payload'][0]}
+    Should Be Empty  ${resp}