Redfish event log wrapping test

Added:
   - To to verify event log wraps when the MAX cap limit of 200
     is created.

Change-Id: Iec9b749f10182f1ec3f4e6c0fc87e86ffde6aa71
Signed-off-by: George Keishing <gkeishin@in.ibm.com>
diff --git a/redfish/systems/eventlog/test_event_logging.robot b/redfish/systems/eventlog/test_event_logging.robot
index 5e66b2d..268affc 100644
--- a/redfish/systems/eventlog/test_event_logging.robot
+++ b/redfish/systems/eventlog/test_event_logging.robot
@@ -6,11 +6,16 @@
 Resource            ../../../lib/logging_utils.robot
 Resource            ../../../lib/openbmc_ffdc.robot
 Resource            ../../../lib/ipmi_client.robot
+Library             ../../../lib/logging_utils.py
 
 Test Setup          Test Setup Execution
 Test Teardown       Test Teardown Execution
 Suite Teardown      Suite Teardown Execution
 
+** Variables ***
+
+${max_num_event_logs}  ${200}
+
 *** Test Cases ***
 
 Event Log Check After BMC Reboot
@@ -272,6 +277,52 @@
     ...  Fail  Error logs created exceeded max capacity 200.
 
 
+Test Event Log Wrapping
+    [Documentation]  Verify event log entries wraps when 200 max cap is reached.
+    [Tags]  Test_Event_Log_Wrapping
+
+    # Restarting logging service in order to clear logs and get the next log
+    # ID set to 1.
+    BMC Execute Command
+    ...  systemctl restart xyz.openbmc_project.Logging.service
+    Sleep  10s  reason=Wait for logging service to restart properly.
+
+    # Create ${max_num_event_logs} event logs.
+    ${cmd}=  Catenate  for i in {1..${max_num_event_logs}}; do /tmp/tarball/bin/logging-test -c
+    ...  AutoTestSimple;done
+    BMC Execute Command  ${cmd}
+
+    # Verify that event logs with IDs 1 and ${max_num_event_logs} exist.
+    ${event_log}=  Get Event Logs
+
+    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '1')]
+    Rprint Vars  log_entries  fmt=terse
+    Should Be Equal As Strings  ${log_entries[0]["Id"]}  1
+
+    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '${max_num_event_logs}')]
+    Rprint Vars  log_entries  fmt=terse
+    Should Be Equal As Strings  ${log_entries[0]["Id"]}  ${max_num_event_logs}
+
+    # Create event log and verify the entry ID, ${max_num_event_logs + 1}.
+    ${next_event_log_id}=  Set Variable  ${max_num_event_logs + 1}
+
+    Create Test Error Log
+
+    ${event_log}=  Get Event Logs
+
+    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '${next_event_log_id}')]
+    Rprint Vars  log_entries  fmt=terse
+    Should Be Equal As Strings  ${log_entries[0]["Id"]}  ${next_event_log_id}
+
+    # Event log 1 should be wrapped.
+    ${log_entries}=  Filter Struct  ${event_log}  [('Id', '1')]
+    Rprint Vars  log_entries  fmt=terse
+
+    ${length_log_entries}  Get Length  ${log_entries}
+    Should Be Equal As Integers  ${length_log_entries}  0
+    ...  msg=The event log should have wrapped such that entry ID 1 is now purged.
+
+
 *** Keywords ***
 
 Suite Teardown Execution