|  | *** Settings *** | 
|  | Documentation  Verify Auto Restart policy for set of mission critical | 
|  | ...            services needed for functioning on BMC. | 
|  |  | 
|  | Resource         ../../lib/resource.robot | 
|  | Resource         ../../lib/connection_client.robot | 
|  | Resource         ../../lib/openbmc_ffdc.robot | 
|  | Resource         ../../lib/utils.robot | 
|  |  | 
|  | Suite Setup      Open Connection And Log In | 
|  | Suite Teardown   Close All Connections | 
|  | Test Teardown    FFDC On Test Case Fail | 
|  |  | 
|  | *** Variables *** | 
|  | ${LOG_SERVICE}  xyz.openbmc_project.Logging.service | 
|  |  | 
|  | *** Test Cases *** | 
|  |  | 
|  | Verify OpenBMC Services Auto Restart Policy | 
|  | [Documentation]  Kill active services and expect auto restart. | 
|  | [Tags]  Verify_OpenBMC_Services_Auto_Restart_Policy | 
|  | # The services listed below restart policy should be "always" | 
|  | # Command output: | 
|  | # systemctl -p Restart show xyz.openbmc_project.Logging.service | cat | 
|  | # Restart=always | 
|  | @{services}= | 
|  | ...  Create List  xyz.openbmc_project.Logging.service | 
|  | ...               xyz.openbmc_project.ObjectMapper.service | 
|  | ...               xyz.openbmc_project.State.BMC.service | 
|  | ...               xyz.openbmc_project.State.Chassis.service | 
|  | ...               xyz.openbmc_project.State.Host.service | 
|  | : FOR  ${SERVICE}  IN  @{services} | 
|  | \    Check Service Autorestart  ${SERVICE} | 
|  |  | 
|  |  | 
|  | Kill Services And Expect Service Restart | 
|  | [Documentation]  Kill the service and it must restart. | 
|  | [Tags]  Kill_Services_And_Expect_Service_Restart | 
|  |  | 
|  | # Get the MainPID and service state. | 
|  | ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE} | 
|  | Should Not Be Equal  ${0}  ${MainPID} | 
|  | ...  msg=Logging service not restarted. | 
|  |  | 
|  | ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE} | 
|  | Should Be Equal  active  ${ActiveState} | 
|  | ...  msg=Logging Service not in active state. | 
|  |  | 
|  | BMC Execute Command  kill -9 ${MainPID} | 
|  | Sleep  10s  reason=Wait for service to restart. | 
|  |  | 
|  | ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE} | 
|  | Should Not Be Equal  ${0}  ${MainPID} | 
|  | ...  msg=Logging service not restarted. | 
|  |  | 
|  | ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE} | 
|  | Should Be Equal  active  ${ActiveState} | 
|  | ...  msg=Logging service not in active state. | 
|  |  | 
|  |  | 
|  | *** Keywords *** | 
|  |  | 
|  | Check Service Autorestart | 
|  | [Documentation]  Check if given policy is "always". | 
|  | [Arguments]  ${servicename} | 
|  | # servicename  Qualified service name | 
|  | ${restart_policy}=  Get Service Attribute  Restart  ${servicename} | 
|  | Should Be Equal  always  ${restart_policy} | 
|  | ...  msg=Incorrect policy for ${servicename} |