From 497838bf6c4ac987a284a7ce1be3f2775d02cd7e Mon Sep 17 00:00:00 2001 From: Logan Lipke Date: Thu, 17 Dec 2020 15:33:21 -0800 Subject: [PATCH] Multiple connections can be created per port. ips on existing ports can be changed individually --- py-scripts/test_fileio.py | 97 ++++++++++++++++++++++++--------------- 1 file changed, 60 insertions(+), 37 deletions(-) diff --git a/py-scripts/test_fileio.py b/py-scripts/test_fileio.py index e16c8f00..d969a086 100755 --- a/py-scripts/test_fileio.py +++ b/py-scripts/test_fileio.py @@ -50,6 +50,7 @@ class FileIOTest(LFCliBase): read_only_test_group=None, port_list=[], ip_list=None, + connections_per_port=1, mode="both", update_group_args={"name": None, "action": None, "cxs": None}, _debug_on=False, @@ -66,6 +67,7 @@ class FileIOTest(LFCliBase): self.number_template = number_template self.test_duration = test_duration self.port_list = [] + self.connections_per_port = connections_per_port self.use_macvlans = use_macvlans self.mode = mode.lower() self.ip_list = ip_list @@ -131,6 +133,7 @@ class FileIOTest(LFCliBase): self.wo_profile.max_write_rate_bps = LFUtils.parse_size(max_write_rate_bps) self.wo_profile.directory = directory self.wo_profile.server_mount = server_mount + self.wo_profile.num_connections_per_port = connections_per_port self.ro_profile = self.wo_profile.create_ro_profile() @@ -280,25 +283,26 @@ class FileIOTest(LFCliBase): self.created_ports += self.station_profile.station_names if len(self.ip_list) > 0: - if self.gateway is not None and self.netmask is not None: - print("++++++++++++++++\n", self.ip_list, "++++++++++++++++\n") - for num_port in range(len(self.port_list)): - shelf = self.local_realm.name_to_eid(self.port_list[num_port])[0] - resource = self.local_realm.name_to_eid(self.port_list[num_port])[1] - port = self.local_realm.name_to_eid(self.port_list[num_port])[2] - req_url = "/cli-json/set_port" - data = { - "shelf": shelf, - "resource": resource, - "port": port, - "ip_addr": self.ip_list[num_port], - "netmask": self.netmask, - "gateway": self.gateway - } - self.local_realm.json_post(req_url, data) - self.created_ports.append("%s.%s.%s" % (shelf, resource, port)) - else: - raise ValueError("Netmask and gateway must be specified") + # print("++++++++++++++++\n", self.ip_list, "++++++++++++++++\n") + for num_port in range(len(self.port_list)): + if self.ip_list[num_port] != 0: + if self.gateway is not None and self.netmask is not None: + shelf = self.local_realm.name_to_eid(self.port_list[num_port])[0] + resource = self.local_realm.name_to_eid(self.port_list[num_port])[1] + port = self.local_realm.name_to_eid(self.port_list[num_port])[2] + req_url = "/cli-json/set_port" + data = { + "shelf": shelf, + "resource": resource, + "port": port, + "ip_addr": self.ip_list[num_port], + "netmask": self.netmask, + "gateway": self.gateway + } + self.local_realm.json_post(req_url, data) + self.created_ports.append("%s.%s.%s" % (shelf, resource, port)) + else: + raise ValueError("Netmask and gateway must be specified") # if use test groups and test group does not exist, create cxs, create test group, assign to test group # if use test groups and test group exists and no cxs, create cxs, assign to test group @@ -310,7 +314,8 @@ class FileIOTest(LFCliBase): if self.wo_tg_exists: if not self.wo_tg_cx_exists: print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Adding cxs to %s" % self.wo_tg_profile.group_name) @@ -318,7 +323,8 @@ class FileIOTest(LFCliBase): self.wo_tg_profile.add_cx(cx) else: print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Creating Write Only test group") @@ -330,7 +336,8 @@ class FileIOTest(LFCliBase): if self.ro_tg_exists: if not self.ro_tg_cx_exists: print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Adding cxs to %s" % self.ro_tg_profile.group_name) @@ -338,7 +345,8 @@ class FileIOTest(LFCliBase): self.ro_tg_profile.add_cx(cx) else: print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Creating Read Only test group") @@ -350,7 +358,8 @@ class FileIOTest(LFCliBase): if self.wo_tg_exists: if not self.wo_tg_cx_exists: print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Adding cxs to %s" % self.wo_tg_profile.group_name) @@ -358,7 +367,8 @@ class FileIOTest(LFCliBase): self.wo_tg_profile.add_cx(cx) else: print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Creating Write Only test group") @@ -369,7 +379,8 @@ class FileIOTest(LFCliBase): if self.ro_tg_exists: if not self.ro_tg_cx_exists: print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Adding cxs to %s" % self.ro_tg_profile.group_name) @@ -377,7 +388,8 @@ class FileIOTest(LFCliBase): self.ro_tg_profile.add_cx(cx) else: print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) time.sleep(1) print("Creating Read Only test group") @@ -390,21 +402,25 @@ class FileIOTest(LFCliBase): else: if self.mode == "write": print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) elif self.mode == "read": print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) elif self.mode == "both": print("Creating Write Only CXs") - self.wo_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.wo_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) print("Creating Read Only CXs") - self.ro_profile.create(ports=self.created_ports, sleep_time=.5, debug_=self.debug, + self.ro_profile.create(ports=self.created_ports, connections_per_port=self.connections_per_port, + sleep_time=.5, debug_=self.debug, suppress_related_commands_=None) else: - raise ValueError("Uknown mode used, must be (read, write, both)") + raise ValueError("Unknown mode used, must be (read, write, both)") else: raise ValueError("Mode must be set (read, write, both)") @@ -576,9 +592,14 @@ Generic command layout: default="AUTO") parser.add_argument('--server_mount', help='--server_mount The server to mount, ex: 192.168.100.5/exports/test1', default="10.40.0.1:/var/tmp/test") + parser.add_argument('--macvlan_parent', help='specifies parent port for macvlan creation', default=None) parser.add_argument('--first_port', help='specifies name of first port to be used', default=None) parser.add_argument('--num_ports', help='number of ports to create', default=1) + parser.add_argument('--connections_per_port', help='specifies number of connections to be used per port', default=1, + type=int) + parser.add_argument('--use_ports', help='list of comma separated ports to use with ips, \'=\' separates name and ip' + '{ port_name1=ip_addr1,port_name1=ip_addr2 }', default=None) parser.add_argument('--use_macvlans', help='will create macvlans', action='store_true', default=False) parser.add_argument('--first_mvlan_ip', help='specifies first static ip address to be used or dhcp', default=None) parser.add_argument('--netmask', help='specifies netmask to be used with static ip addresses', default=None) @@ -588,12 +609,11 @@ Generic command layout: parser.add_argument('--read_only_test_group', help='specifies name to use for read only test group', default=None) parser.add_argument('--write_only_test_group', help='specifies name to use for write only test group', default=None) parser.add_argument('--mode', help='write,read,both', default='both', type=str) - parser.add_argument('--use_ports', help='list of comma separated ports to use with ips, \'=\' separates name and ip' - '{ port_name1=ip_addr1,port_name1=ip_addr2 }', default=None) tg_group = parser.add_mutually_exclusive_group() tg_group.add_argument('--add_to_group', help='name of test group to add cxs to', default=None) tg_group.add_argument('--del_from_group', help='name of test group to delete cxs from', default=None) - parser.add_argument('--cxs', help='list of cxs to add/remove depending on use of --add_to_group or --del_from_group', default=None) + parser.add_argument('--cxs', help='list of cxs to add/remove depending on use of --add_to_group or --del_from_group' + , default=None) args = parser.parse_args() update_group_args = { @@ -647,7 +667,10 @@ Generic command layout: temp_list = args.use_ports.split(',') for port in temp_list: port_list.append(port.split('=')[0]) - ip_list.append(port.split('=')[1]) + if '=' in port: + ip_list.append(port.split('=')[1]) + else: + ip_list.append(0) if len(port_list) != len(ip_list): raise ValueError(temp_list, " ports must have matching ip addresses!") @@ -695,13 +718,13 @@ Generic command layout: write_only_test_group=args.write_only_test_group, read_only_test_group=args.read_only_test_group, update_group_args = update_group_args, + connections_per_port=args.connections_per_port, mode=args.mode # want a mount options param ) ip_test.cleanup(port_list) ip_test.build() - # exit(1) if not ip_test.passes(): print(ip_test.get_fail_message()) # ip_test.start(False, False)