X-Git-Url: https://gerrit.akraino.org/r/gitweb?p=ta%2Fcloudtaf.git;a=blobdiff_plain;f=testcases%2Fbasic_func_tests%2Ftc_005_ssh_dns_server_check.py;fp=testcases%2Fbasic_func_tests%2Ftc_005_ssh_dns_server_check.py;h=1d3b7d9fd453cbdd29a4b68161a282cc0396296c;hp=0000000000000000000000000000000000000000;hb=af5eb3ff36b92ab1d9c156ffa0391eadc73eb6ba;hpb=025a45508d009db84c34076fb4a668f712628d6d diff --git a/testcases/basic_func_tests/tc_005_ssh_dns_server_check.py b/testcases/basic_func_tests/tc_005_ssh_dns_server_check.py new file mode 100644 index 0000000..1d3b7d9 --- /dev/null +++ b/testcases/basic_func_tests/tc_005_ssh_dns_server_check.py @@ -0,0 +1,60 @@ +import sys +import os +from robot.libraries.BuiltIn import BuiltIn +from robot.api import logger +import common_utils +from test_constants import * + +sys.path.append(os.path.join(os.path.dirname(__file__), '..', '../libraries/common')) + +ex = BuiltIn().get_library_instance('execute_command') +crf_nodes = BuiltIn().get_library_instance('stack_infos').get_crf_nodes() + + +def tc_005_ssh_dns_server_check(): + steps = ['step1_check_dns_server_replica_num_within_limits', + 'step2_dns_server_port_check', + 'step3_check_address_resolution'] + common_utils.keyword_runner(steps) + + +def step1_check_dns_server_replica_num_within_limits(): + command = "kubectl get daemonset kube-dns --namespace=kube-system | grep kube-dns | awk {'print $5'}" + available_dns_replica_num = int(ex.execute_unix_command(command)) + if available_dns_replica_num < min_dns_replica: + raise Exception(available_dns_replica_num + "DNS server is running! Minimum should be " + min_dns_replica + ".") + if available_dns_replica_num > max_dns_replica: + raise Exception(available_dns_replica_num + "DNS server is running! Maximum should be " + max_dns_replica + ".") + + +def step2_dns_server_port_check(): + nodes = get_nodes_containing_dns_servers() + check_program_listening_on_given_port_protocol_on_remote(nodes, 'dnsmasq', 'tcp', dns_masq_port) + check_program_listening_on_given_port_protocol_on_remote(nodes, 'kube-dns', 'tcp6', kube_dns_port) + + +def step3_check_address_resolution(): + ex.execute_unix_command("getent hosts " + test_address1) + ex.execute_unix_command("getent hosts " + test_address2) + logger.console("Addresses are resolved successfully") + + +def get_nodes_containing_dns_servers(): + dns_nodes = {} + logger.console("") + for name, ip in crf_nodes.items(): + command = 'docker ps | grep dnsmasq | wc -l' + stdout = int(ex.execute_unix_command_on_remote_as_user(command, ip)) + if stdout == 1: + logger.console('DNS server running on ' + name + ':' + ip) + dns_nodes[name] = ip + if stdout > 1: + raise Exception('Instead of one, ' + str(stdout) + ' DNS server running on node: ' + name + '!') + return dns_nodes + + +def check_program_listening_on_given_port_protocol_on_remote(nodes, pname, proto, port): + command = 'netstat -lopna | grep --color=no -P "' + proto + ' .*:' + port + '.*LISTEN.*"' + pname + for name, ip in nodes.items(): + stdout = ex.execute_unix_command_on_remote_as_root(command, ip) + logger.console(name + ':' + stdout)