Error logging test suite

"logging-test" tool will generate test error log.

Added the following test cases:
   - "Create Test Error And Verify"
   - "Test Error Log Persistency On Restart"
   - "Test Error Log Persistency on Reboot"

Resolves openbmc/openbmc-test-automation#289

Change-Id: Ifcd3300f070224f1f3f200de86919c1634a8e6c3
Signed-off-by: Michael Tritz <mtritz@us.ibm.com>
diff --git a/tests/test_error_log.robot b/tests/test_error_log.robot
new file mode 100644
index 0000000..02754b0
--- /dev/null
+++ b/tests/test_error_log.robot
@@ -0,0 +1,96 @@
+*** Settings ***
+Documentation       Test Error logging.
+
+Resource            ../lib/connection_client.robot
+Resource            ../lib/openbmc_ffdc.robot
+Resource            ../lib/utils.robot
+Resource            ../lib/state_manager.robot
+
+Suite Setup         Run Keywords  Verify logging-test  AND
+...                 Clear Existing Error Logs
+Test Setup          Open Connection And Log In
+Test Teardown       Close All Connections
+Suite Teardown      Clear Existing Error Logs
+
+*** Test Cases ***
+
+Create Test Error And Verify
+    [Documentation]  Create error logs and verify via REST.
+    [Tags]  Create_Test_Error_And_Verify
+
+    Create Test Error Log
+    Verify Test Error Log
+
+
+Test Error Persistency On Restart
+    [Documentation]  Restart logging service and verify error logs don't exist.
+    [Tags]  Test_Error_Persistency_On_Restart
+
+    Create Test Error Log
+    Verify Test Error Log
+    Execute Command On BMC
+    ...  systemctl restart xyz.openbmc_project.Logging.service
+    Sleep  10s  reason=Wait for logging service to restart properly.
+    ${resp}=  OpenBMC Get Request  ${BMC_LOGGING_ENTRY}${1}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+
+Test Error Persistency On Reboot
+    [Documentation]  Reboot BMC and verify error logs don't exist.
+    [Tags]  Test_Error_Persistency_On_Reboot
+
+    Create Test Error Log
+    Verify Test Error Log
+    Initiate BMC Reboot
+    Wait Until Keyword Succeeds  10 min  10 sec
+    ...  Is BMC Ready
+    ${resp}=  OpenBMC Get Request  ${BMC_LOGGING_ENTRY}${1}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+
+*** Keywords ***
+
+Verify logging-test
+    [Documentation]  Verify existence of prerequisite logging-test.
+
+    Open Connection And Log In
+    ${out}  ${stderr}=  Execute Command  which logging-test  return_stderr=True
+    Should Be Empty  ${stderr}
+    Should Contain  ${out}  logging-test
+
+Clear Existing Error Logs
+    [Documentation]  If error log isn't empty, reboot the BMC to clear the log.
+
+    ${resp}=  OpenBMC Get Request  ${BMC_LOGGING_ENTRY}${1}
+    Return From Keyword If  ${resp.status_code} == ${HTTP_NOT_FOUND}
+    Initiate BMC Reboot
+    Wait Until Keyword Succeeds  10 min  10 sec
+    ...  Is BMC Ready
+    ${resp}=  OpenBMC Get Request  ${BMC_LOGGING_ENTRY}${1}
+    Should Be Equal As Strings  ${resp.status_code}  ${HTTP_NOT_FOUND}
+
+Create Test Error Log
+    [Documentation]  Generate test error log.
+
+    # Test error log entry example:
+    # "/xyz/openbmc_project/logging/entry/1":  {
+    #     "AdditionalData": [
+    #         "STRING=FOO"
+    #     ],
+    #     "Id": 1,
+    #     "Message": "example.xyz.openbmc_project.Example.Elog.AutoTestSimple",
+    #     "Severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
+    #     "Timestamp": 1487743963328,
+    #     "associations": []
+    # }
+
+    Execute Command On BMC  logging-test -c AutoTestSimple
+
+Verify Test Error Log
+    [Documentation]  Verify test error log entries.
+    ${content}=  Read Attribute  ${BMC_LOGGING_ENTRY}${1}  Message
+    Should Be Equal  ${content}
+    ...  example.xyz.openbmc_project.Example.Elog.AutoTestSimple
+    ${content}=  Read Attribute  ${BMC_LOGGING_ENTRY}${1}  Severity
+    Should Be Equal  ${content}
+    ...  xyz.openbmc_project.Logging.Entry.Level.Error