diff --git a/tests/forge.py b/tests/forge.py index 06514d8647d10fb3b1bb839cfa887382cf664215..edd956a40dd8ee8d6bab54c90d0c2f919a7d23bf 100644 --- a/tests/forge.py +++ b/tests/forge.py @@ -22,20 +22,23 @@ import optparse import os import sys import threading +import fcntl +import socket +import struct +import sys -from init_all import SOFTWARE_INSTALL_PATH, LOGLEVEL, PROTO, SOFTWARE_UNDER_TEST, DB_TYPE, SHOW_PACKETS_FROM, \ +from init_all import SOFTWARE_INSTALL_PATH, LOGLEVEL, SOFTWARE_UNDER_TEST, DB_TYPE, SHOW_PACKETS_FROM, \ SRV4_ADDR, REL4_ADDR, GIADDR4, IFACE, CLI_LINK_LOCAL, SERVER_IFACE, OUTPUT_WAIT_INTERVAL, \ OUTPUT_WAIT_MAX_INTERVALS, PACKET_WAIT_INTERVAL, SRV_IPV6_ADDR_GLOBAL, SRV_IPV6_ADDR_LINK_LOCAL, HISTORY,\ TCPDUMP, TCPDUMP_PATH, SAVE_CONFIG_FILE, AUTO_ARCHIVE, SLEEP_TIME_1, SLEEP_TIME_2, MGMT_ADDRESS, MGMT_USERNAME,\ - MGMT_PASSWORD, SAVE_LOGS, BIND_LOG_TYPE, BIND_LOG_LVL, BIND_MODULE, SAVE_LEASES, DNS_IFACE, DNS_ADDR, DNS_PORT, \ + MGMT_PASSWORD, SAVE_LOGS, BIND_LOG_TYPE, BIND_LOG_LVL, BIND_MODULE, SAVE_LEASES, DNS_IFACE, DNS4_ADDR, DNS6_ADDR, DNS_PORT, \ DNS_SERVER_INSTALL_PATH, DNS_DATA_PATH, ISC_DHCP_LOG_FACILITY, ISC_DHCP_LOG_FILE, DB_NAME, DB_USER, DB_PASSWD,\ DB_HOST, CIADDR, MGMT_ADDRESS_2, MGMT_ADDRESS_3 # Create Forge configuration class SOFTWARE_INSTALL_DIR = SOFTWARE_INSTALL_PATH # for backward compatibility of tests LOGLEVEL = os.getenv('LOGLEVEL', LOGLEVEL) -PROTO = os.getenv('PROTO', PROTO) SOFTWARE_UNDER_TEST = os.getenv('SOFTWARE_UNDER_TEST', SOFTWARE_UNDER_TEST) DB_TYPE = os.getenv('DB_TYPE', DB_TYPE) SOFTWARE_INSTALL_PATH = os.getenv('SOFTWARE_INSTALL_DIR', SOFTWARE_INSTALL_PATH) @@ -70,7 +73,8 @@ BIND_LOG_LVL = os.getenv('BIND_LOG_LVL', BIND_LOG_LVL) BIND_MODULE = os.getenv('BIND_MODULE', BIND_MODULE) SAVE_LEASES = os.getenv('SAVE_LEASES', SAVE_LEASES) DNS_IFACE = os.getenv('DNS_IFACE', DNS_IFACE) -DNS_ADDR = os.getenv('DNS_ADDR', DNS_ADDR) +DNS4_ADDR = os.getenv('DNS4_ADDR', DNS4_ADDR) +DNS6_ADDR = os.getenv('DNS6_ADDR', DNS6_ADDR) DNS_PORT = os.getenv('DNS_PORT', DNS_PORT) DNS_SERVER_INSTALL_PATH = os.getenv('DNS_SERVER_INSTALL_PATH', DNS_SERVER_INSTALL_PATH) DNS_DATA_PATH = os.getenv('DNS_DATA_PATH', DNS_DATA_PATH) @@ -116,7 +120,7 @@ class ForgeConfiguration: self.packet_wait_interval = PACKET_WAIT_INTERVAL # DHCP - self.proto = PROTO + self.proto = 'v4' # default value but it is overriden by each test in terrain.declare_all() self.software_under_test = SOFTWARE_UNDER_TEST self.software_install_path = SOFTWARE_INSTALL_PATH self.software_install_dir = SOFTWARE_INSTALL_PATH # that keeps backwards compatibility @@ -141,7 +145,8 @@ class ForgeConfiguration: # DNS self.dns_iface = DNS_IFACE - self.dns_addr = DNS_ADDR + self.dns4_addr = DNS4_ADDR + self.dns6_addr = DNS6_ADDR self.dns_port = DNS_PORT self.dns_data_path = DNS_DATA_PATH self.dns_server_install_path = DNS_SERVER_INSTALL_PATH @@ -162,7 +167,6 @@ class ForgeConfiguration: self.basic_validation() def gethwaddr(self, ifname): - import fcntl, socket, struct, sys if sys.platform != "darwin": s = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM) info = fcntl.ioctl(s.fileno(), 0x8927, struct.pack('256s', ifname)) @@ -172,26 +176,21 @@ class ForgeConfiguration: return "0a:00:27:00:00:00" def basic_validation(self): - from sys import exit - if self.proto not in ["v4", "v6"]: - print "Configuration failure, protocol version not set properly." \ - " Please use ./forge.py -T to validate configuration." - exit(-1) if self.proto == "v4" and self.software_under_test[0] not in ["none_server"]: if "4" not in self.software_under_test[0]: print "Miss match of protocol version and DHCP server version" - exit(-1) + sys.exit(-1) if self.proto == "v6" and self.software_under_test[0] not in ["none_server"]: if "6" not in self.software_under_test[0]: print "Miss match of protocol version and DHCP server version" - exit(-1) + sys.exit(-1) if self.software_install_path == "": print "Configuration failure, software_install_path empty." \ " Please use ./forge.py -T to validate configuration." - exit(-1) + sys.exit(-1) if self.mgmt_address == "": print "Configuration failure, mgmt_address empty. Please use ./forge.py -T to validate configuration." - exit(-1) + sys.exit(-1) def set_env_val(self, env_name, env_val): """ diff --git a/tests/init_all.py_default b/tests/init_all.py_default index fc6d2b3cc1d0839db2e5f5a7ec02663e061cb505..b117bfbacb5c87beb9d57bc1927ecff601bd8f04 100644 --- a/tests/init_all.py_default +++ b/tests/init_all.py_default @@ -43,10 +43,6 @@ SOFTWARE_UNDER_TEST = "", # INCORRECT COMBINATIONS: SOFTWARE_UNDER_TEST = "kea6_server","kea4_server" # or SOFTWARE_UNDER_TEST = "kea6_server","dibbler_client" -# This defines protocol family. Currently two are -# supported: v4 (which means DHCPv4) and v6 (which means DHCPv6) -PROTO = "" - # Parameters specific to DHCPv4 tests SRV4_ADDR = "" @@ -212,7 +208,8 @@ ISC_DHCP_LOG_FILE = "/var/log/forge_dhcpd.log" DNS_IFACE = "" # DNS server address: -DNS_ADDR = "" +DNS4_ADDR = "" +DNS6_ADDR = "" # DNS port number, default value is 53 DNS_PORT = 53 diff --git a/tests/init_all.py_example b/tests/init_all.py_example index dccb75220a84ec4fcef683bb8a4a74476b63128a..49fbb846094a2d9a83c2e4c7f3649e6d46f43a8c 100644 --- a/tests/init_all.py_example +++ b/tests/init_all.py_example @@ -43,10 +43,6 @@ SOFTWARE_UNDER_TEST = "kea6_server", # INCORRECT COMBINATIONS: SOFTWARE_UNDER_TEST = "kea6_server","kea4_server" # or SOFTWARE_UNDER_TEST = "kea6_server","dibbler_client" -# This defines protocol family. Currently two are -# supported: v4 (which means DHCPv4) and v6 (which means DHCPv6) -PROTO = "v6" - # Parameters specific to DHCPv4 tests SRV4_ADDR = "" @@ -212,7 +208,8 @@ ISC_DHCP_LOG_FILE = "/var/log/forge_dhcpd.log" DNS_IFACE = "" # DNS server address: -DNS_ADDR = "" +DNS4_ADDR = "" +DNS6_ADDR = "" # DNS port number, default value is 53 DNS_PORT = 53 @@ -221,4 +218,4 @@ DNS_PORT = 53 DNS_SERVER_INSTALL_DIR = "" # Additional path for server management: -DNS_DATA_DIR = "" \ No newline at end of file +DNS_DATA_DIR = "" diff --git a/tests/protosupport/dns.py b/tests/protosupport/dns.py index 5e6203b586b86772ff86b9e32155af7a8f79d78a..f5370968c37c3aa8d5786794c1471516547ca1ef 100644 --- a/tests/protosupport/dns.py +++ b/tests/protosupport/dns.py @@ -166,9 +166,9 @@ def dns_question_record(addr, my_qtype, my_qclass): def build_msg(): if world.proto == "v6": - msg = IPv6(dst=world.cfg["dns_addr"])/UDP(sport=world.cfg["dns_port"], dport=world.cfg["dns_port"]) + msg = IPv6(dst=world.cfg["dns6_addr"])/UDP(sport=world.cfg["dns_port"], dport=world.cfg["dns_port"]) else: - msg = IP(dst=world.cfg["dns_addr"])/UDP(sport=world.cfg["dns_port"], dport=world.cfg["dns_port"]) + msg = IP(dst=world.cfg["dns4_addr"])/UDP(sport=world.cfg["dns_port"], dport=world.cfg["dns_port"]) msg.trid = random.randint(0, 256*256*256) world.climsg.append(msg/world.dns_query) diff --git a/tests/protosupport/multi_protocol_functions.py b/tests/protosupport/multi_protocol_functions.py index 58d81b503dace4914ba9a48a6ef2f1eb376ec449..7bba2bf55ac3d3781a75655f6b401a52e15b7c67 100644 --- a/tests/protosupport/multi_protocol_functions.py +++ b/tests/protosupport/multi_protocol_functions.py @@ -289,12 +289,6 @@ def change_network_variables(value_name, value): # world.cfg["address_v6"] = value elif value_name == "destination_address": world.cfg["destination_IP"] = value - elif value_name == "dns_iface": - world.cfg["dns_iface"] = value - elif value_name == "dns_address": - world.cfg["dns_addr"] = value - elif value_name == "dns_port": - world.cfg["dns_port"] = int(value) else: assert False, "There is no possibility of configuration value named: {value_name}".format(**locals()) diff --git a/tests/softwaresupport/bind9_server/functions.py b/tests/softwaresupport/bind9_server/functions.py index d3c18f0a559367ac429d0fcd2241b91b5f0bc591..287ad6d4525115b278df6a27e0a222b7dd6aed20 100644 --- a/tests/softwaresupport/bind9_server/functions.py +++ b/tests/softwaresupport/bind9_server/functions.py @@ -94,8 +94,12 @@ def add_rndc(address, port, alg, value): def _patch_config(cfg): tpl = string.Template(cfg) + if world.f_cfg.proto == 'v4': + dns_addr = world.f_cfg.dns4_addr + else: + dns_addr = world.f_cfg.dns6_addr return tpl.safe_substitute(data_path=os.path.join(world.f_cfg.dns_data_path, 'namedb'), - dns_addr=world.f_cfg.dns_addr, + dns_addr=dns_addr, dns_port=world.f_cfg.dns_port) diff --git a/tests/srv_control.py b/tests/srv_control.py index 6df96a926e7e69e0f9d748501ae13757dc314cce..7ed44ad6de85f78afbbf788e654f9a3e18e2d4a5 100644 --- a/tests/srv_control.py +++ b/tests/srv_control.py @@ -991,12 +991,20 @@ def add_ddns_server_options(option, value): @step('Add forward DDNS with name (\S+) and key (\S+) on address (\S+) and port (\S+).') def add_forward_ddns(name, key_name): - ddns.add_forward_ddns(name, key_name, world.f_cfg.dns_addr, world.f_cfg.dns_port) + if world.f_cfg.proto == 'v4': + ip_address = world.f_cfg.dns4_addr + else: + ip_address = world.f_cfg.dns6_addr + ddns.add_forward_ddns(name, key_name, ip_address, world.f_cfg.dns_port) @step('Add reverse DDNS with name (\S+) and key (\S+) on address (\S+) and port (\S+).') def add_reverse_ddns(name, key_name): - ddns.add_reverse_ddns(name, key_name, world.f_cfg.dns_addr, world.f_cfg.dns_port) + if world.f_cfg.proto == 'v4': + ip_address = world.f_cfg.dns4_addr + else: + ip_address = world.f_cfg.dns6_addr + ddns.add_reverse_ddns(name, key_name, ip_address, world.f_cfg.dns_port) @step('Add DDNS key named (\S+) based on (\S+) with secret value (\S+).') diff --git a/tests/srv_msg.py b/tests/srv_msg.py index 5b6fe75bdd7099fd9a630e8d538c78cdc530efa6..3dd56c8052168f0e7fba19992430ab8d497ec1dd 100644 --- a/tests/srv_msg.py +++ b/tests/srv_msg.py @@ -257,19 +257,6 @@ def client_send_dns_query(): dns.send_query() -@step('Through (\S+) interface client sends DNS query.') -def client_send_dns_query_interface(iface): - world.cfg["dns_iface"] = iface - dns.send_query() - - -@step('Through (\S+) interface to address (\S+) client sends DNS query.') -def client_send_dns_query_interface_address(iface, addr): - world.cfg["dns_iface"] = iface - world.cfg["dns_addr"] = addr - dns.send_query() - - ##checking DNS respond @step('DNS server (\S+) (NOT )?respond with DNS query.') def send_wait_for_query(type, yes_or_no): diff --git a/tests/terrain.py b/tests/terrain.py index 7c1335639cdbdf74634f30aa86d8fc69df1fa31d..4842dc3b8dd75df0ab1ad3dad37f6242ce8b6a62 100644 --- a/tests/terrain.py +++ b/tests/terrain.py @@ -194,7 +194,8 @@ def _v6_initialize(): def _dns_initialize(): world.cfg["dns_iface"] = world.f_cfg.dns_iface - world.cfg["dns_addr"] = world.f_cfg.dns_addr + world.cfg["dns4_addr"] = world.f_cfg.dns4_addr + world.cfg["dns6_addr"] = world.f_cfg.dns6_addr world.cfg["dns_port"] = world.f_cfg.dns_port world.dns_enable = True