1*** Settings ***
2Documentation  Verify Auto Restart policy for set of mission critical
3...            services needed for functioning on BMC.
4
5Resource         ../../lib/resource.robot
6Resource         ../../lib/connection_client.robot
7Resource         ../../lib/openbmc_ffdc.robot
8Resource         ../../lib/utils.robot
9
10Suite Setup      Open Connection And Log In
11Suite Teardown   Close All Connections
12Test Teardown    FFDC On Test Case Fail
13
14*** Variables ***
15${LOG_SERVICE}  xyz.openbmc_project.Logging.service
16
17*** Test Cases ***
18
19Verify OpenBMC Services Auto Restart Policy
20    [Documentation]  Kill active services and expect auto restart.
21    [Tags]  Verify_OpenBMC_Services_Auto_Restart_Policy
22    # The services listed below restart policy should be "always"
23    # Command output:
24    # systemctl -p Restart show xyz.openbmc_project.Logging.service | cat
25    # Restart=always
26    @{services}=
27    ...  Create List  xyz.openbmc_project.Logging.service
28    ...               xyz.openbmc_project.ObjectMapper.service
29    ...               xyz.openbmc_project.State.BMC.service
30    ...               xyz.openbmc_project.State.Chassis.service
31    ...               xyz.openbmc_project.State.Host.service
32    FOR  ${SERVICE}  IN  @{services}
33      Check Service Autorestart  ${SERVICE}
34    END
35
36
37Kill Services And Expect Service Restart
38    [Documentation]  Kill the service and it must restart.
39    [Tags]  Kill_Services_And_Expect_Service_Restart
40
41    # Get the MainPID and service state.
42    ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE}
43    Should Not Be Equal  ${0}  ${MainPID}
44    ...  msg=Logging service not restarted.
45
46    ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE}
47    Should Be Equal  active  ${ActiveState}
48    ...  msg=Logging Service not in active state.
49
50    BMC Execute Command  kill -9 ${MainPID}
51    Sleep  10s  reason=Wait for service to restart.
52
53    ${MainPID}=  Get Service Attribute  MainPID  ${LOG_SERVICE}
54    Should Not Be Equal  ${0}  ${MainPID}
55    ...  msg=Logging service not restarted.
56
57    ${ActiveState}=  Get Service Attribute  ActiveState  ${LOG_SERVICE}
58    Should Be Equal  active  ${ActiveState}
59    ...  msg=Logging service not in active state.
60
61
62*** Keywords ***
63
64Check Service Autorestart
65    [Documentation]  Check if given policy is "always".
66    [Arguments]  ${servicename}
67    # servicename  Qualified service name
68    ${restart_policy}=  Get Service Attribute  Restart  ${servicename}
69    Should Be Equal  always  ${restart_policy}
70    ...  msg=Incorrect policy for ${servicename}
71