X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fcloudtaf.git;a=blobdiff_plain;f=testcases%2Fbasic_func_tests%2Ftc_006_ssh_test_ext_ntp.py;fp=testcases%2Fbasic_func_tests%2Ftc_006_ssh_test_ext_ntp.py;h=d009e85b0aa62f91c7ddac9ba9273dc0e5941694;hp=0000000000000000000000000000000000000000;hb=af5eb3ff36b92ab1d9c156ffa0391eadc73eb6ba;hpb=025a45508d009db84c34076fb4a668f712628d6d diff --git a/testcases/basic_func_tests/tc_006_ssh_test_ext_ntp.py b/testcases/basic_func_tests/tc_006_ssh_test_ext_ntp.py new file mode 100644 index 0000000..d009e85 --- /dev/null +++ b/testcases/basic_func_tests/tc_006_ssh_test_ext_ntp.py @@ -0,0 +1,73 @@ +import sys +import os +from decorators_for_robot_functionalities import * +from robot.api import logger +from robot.libraries.BuiltIn import BuiltIn +from test_constants import * + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common')) +import common_utils # noqa + +ex = BuiltIn().get_library_instance('execute_command') +stack_infos = BuiltIn().get_library_instance('stack_infos') + + +def tc_006_ssh_test_ext_ntp(): + steps = ['step1_check_ntpd_service_and_ext_ntp_ip_on_crf_nodes'] + common_utils.keyword_runner(steps) + + +def step1_check_ntpd_service_and_ext_ntp_ip_on_crf_nodes(): + crf_nodes = stack_infos.get_crf_nodes() + check_ntpd_status(crf_nodes) + check_if_nokia_ntp_server_address_set_on_crf_node(crf_nodes) + + +@robot_log +def check_ntpd_status(nodes): + if not nodes: + logger.info("Nodes dictionary is empty, nothing to check.") + return + command = 'systemctl status ntpd.service | grep --color=no "Active"' + for node in nodes: + logger.console("\nCheck ntpd status " + node + " " + nodes[node]) + stdout = ex.execute_unix_command_on_remote_as_user(command, nodes[node]) + if "running" not in stdout: + raise Exception("ntpd.service is not running!") + + +@robot_log +def get_ext_ntp_ips_from_node(): + return stack_infos.get_inventory()["all"]["vars"]["time"]["ntp_servers"] + + +@robot_log +def filter_valid_ntp_servers(ntp_servers): + valid_servers = [] + for server in ntp_servers: + stdout = ex.execute_unix_command("ntpdate -q {}".format(server), fail_on_non_zero_rc=False) + if "no server suitable for synchronization found" not in stdout: + valid_servers.append(server) + return valid_servers + + +@robot_log +def is_ntp_server_set_on_node(server_ip, node): + command = 'ntpq -pn | grep -w --color=no ' + server_ip + stdout = ex.execute_unix_command_on_remote_as_user(command, node, {}, fail_on_non_zero_rc=False) + return server_ip in str(stdout) + + +@robot_log +def check_if_nokia_ntp_server_address_set_on_crf_node(nodes): + ext_ntp_server_ips = get_ext_ntp_ips_from_node() + valid_servers = filter_valid_ntp_servers(ext_ntp_server_ips) + logger.info("The following ntp_servers will be tested:") + logger.info(valid_servers) + is_ip_set = True + for node in nodes: + for ntp_serv_ip in valid_servers: + if not is_ntp_server_set_on_node(ntp_serv_ip, node): + is_ip_set = False + if not is_ip_set: + raise Exception("Wrong or no NTP server address set!")