def __init__(self, host, port, ssid, security, password, number_template="00000", radio="wiphy0", fs_type=fe_fstype.EP_FE_NFS4.name, min_rw_size=64 * 1024, max_rw_size=64 * 1024, min_file_size=25 * 1024 * 1024, max_file_size=25 * 1024 * 1024, min_read_rate_bps=1000 * 1000, max_read_rate_bps=1000 * 1000, min_write_rate_bps="1G", max_write_rate_bps=1000 * 1000, directory="AUTO", test_duration="5m", upstream_port="eth1", num_ports=1, server_mount="10.40.0.1:/var/tmp/test", macvlan_parent=None, first_mvlan_ip=None, netmask=None, gateway=None, dhcp=True, use_macvlans=False, use_test_groups=False, write_only_test_group=None, read_only_test_group=None, port_list=[], ip_list=None, mode=None, _debug_on=False, _exit_on_error=False, _exit_on_fail=False): super().__init__(host, port, _debug=_debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail) self.host = host self.port = port self.radio = radio self.upstream_port = upstream_port self.ssid = ssid self.security = security self.password = password self.number_template = number_template self.test_duration = test_duration self.port_list = [] self.use_macvlans = use_macvlans self.mode = mode self.ip_list = ip_list self.netmask = netmask self.gateway = gateway if self.use_macvlans: if macvlan_parent is not None: self.macvlan_parent = macvlan_parent self.port_list = port_list else: self.port_list = port_list self.use_test_groups = use_test_groups if self.use_test_groups: if self.mode == "write": if write_only_test_group is not None: self.write_only_test_group = write_only_test_group else: raise ValueError( "--write_only_test_group must be used to set test group name" ) if self.mode == "read": if read_only_test_group is not None: self.read_only_test_group = read_only_test_group else: raise ValueError( "--read_only_test_group must be used to set test group name" ) if self.mode == "both": if write_only_test_group is not None and read_only_test_group is not None: self.write_only_test_group = write_only_test_group self.read_only_test_group = read_only_test_group else: raise ValueError( "--write_only_test_group and --read_only_test_group " "must be used to set test group names") #self.min_rw_size = self.parse_size(min_rw_size) #self.max_rw_size = self.parse_size(max_rw_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_read_rate_bps = self.parse_size_bps(min_read_rate_bps) #self.max_read_rate_bps = self.parse_size_bps(max_read_rate_bps) #self.min_write_rate_bps = self.parse_size_bps(min_write_rate_bps) #self.max_write_rate_bps = self.parse_size_bps(max_write_rate_bps) self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port) self.wo_profile = self.local_realm.new_fio_endp_profile() self.mvlan_profile = self.local_realm.new_mvlan_profile() if not self.use_macvlans and len(self.port_list) > 0: self.station_profile = self.local_realm.new_station_profile() self.station_profile.lfclient_url = self.lfclient_url self.station_profile.ssid = self.ssid self.station_profile.ssid_pass = self.password self.station_profile.security = self.security self.station_profile.number_template_ = self.number_template self.station_profile.mode = 0 self.wo_profile.fs_type = fs_type self.wo_profile.min_rw_size = LFUtils.parse_size(min_rw_size) self.wo_profile.max_rw_size = LFUtils.parse_size(max_rw_size) self.wo_profile.min_file_size = LFUtils.parse_size(min_file_size) self.wo_profile.max_file_size = LFUtils.parse_size(max_file_size) self.wo_profile.min_read_rate_bps = LFUtils.parse_size( min_read_rate_bps) self.wo_profile.max_read_rate_bps = LFUtils.parse_size( max_read_rate_bps) self.wo_profile.min_write_rate_bps = LFUtils.parse_size( min_write_rate_bps) 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.ro_profile = self.wo_profile.create_ro_profile() if self.use_macvlans: self.mvlan_profile.num_macvlans = int(num_ports) self.mvlan_profile.desired_macvlans = self.port_list self.mvlan_profile.macvlan_parent = self.macvlan_parent self.mvlan_profile.dhcp = dhcp self.mvlan_profile.netmask = netmask self.mvlan_profile.first_ip_addr = first_mvlan_ip self.mvlan_profile.gateway = gateway self.created_ports = [] if self.use_test_groups: if self.mode is not None: if self.mode.lower() == "write": self.wo_tg_profile = self.local_realm.new_test_group_profile( ) elif self.mode.lower() == "read": self.ro_tg_profile = self.local_realm.new_test_group_profile( ) elif self.mode.lower() == "both": self.wo_tg_profile = self.local_realm.new_test_group_profile( ) self.ro_tg_profile = self.local_realm.new_test_group_profile( ) else: raise ValueError("Unknown mode given ", self.mode) else: raise ValueError("Mode (read,write,both) must be specified")
def __init__(self, host, port, ssid, security, password, number_template="00000", radio="wiphy0", fs_type=fe_fstype.EP_FE_NFS4.name, min_rw_size=64 * 1024, max_rw_size=64 * 1024, min_file_size=25 * 1024 * 1024, max_file_size=25 * 1024 * 1024, min_read_rate_bps=1000 * 1000, max_read_rate_bps=1000 * 1000, min_write_rate_bps="1G", max_write_rate_bps=1000 * 1000, directory="AUTO", test_duration="5m", upstream_port="eth1", num_ports=1, server_mount="10.40.0.1:/var/tmp/test", macvlan_parent=None, first_mvlan_ip=None, netmask=None, gateway=None, dhcp=True, use_macvlans=False, use_test_groups=False, write_only_test_group=None, read_only_test_group=None, port_list=[], ip_list=None, mode="both", update_group_args={ "name": None, "action": None, "cxs": None }, _debug_on=False, _exit_on_error=False, _exit_on_fail=False): super().__init__(host, port, _debug=_debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail) self.host = host self.port = port self.radio = radio self.upstream_port = upstream_port self.ssid = ssid self.security = security self.password = password self.number_template = number_template self.test_duration = test_duration self.port_list = [] self.use_macvlans = use_macvlans self.mode = mode.lower() self.ip_list = ip_list self.netmask = netmask self.gateway = gateway if self.use_macvlans: if macvlan_parent is not None: self.macvlan_parent = macvlan_parent self.port_list = port_list else: self.port_list = port_list self.use_test_groups = use_test_groups if self.use_test_groups: if self.mode == "write": if write_only_test_group is not None: self.write_only_test_group = write_only_test_group else: raise ValueError( "--write_only_test_group must be used to set test group name" ) if self.mode == "read": if read_only_test_group is not None: self.read_only_test_group = read_only_test_group else: raise ValueError( "--read_only_test_group must be used to set test group name" ) if self.mode == "both": if write_only_test_group is not None and read_only_test_group is not None: self.write_only_test_group = write_only_test_group self.read_only_test_group = read_only_test_group else: raise ValueError( "--write_only_test_group and --read_only_test_group " "must be used to set test group names") #self.min_rw_size = self.parse_size(min_rw_size) #self.max_rw_size = self.parse_size(max_rw_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_read_rate_bps = self.parse_size_bps(min_read_rate_bps) # self.max_read_rate_bps = self.sisize_bps(max_read_rate_bps) # self.min_write_rate_bps = self.parse_size_bps(min_write_rate_bps) #self.max_write_rate_bps = self.parse_size_bps(max_write_rate_bps) self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port) self.wo_profile = self.local_realm.new_fio_endp_profile() self.mvlan_profile = self.local_realm.new_mvlan_profile() if not self.use_macvlans and len(self.port_list) > 0: self.station_profile = self.local_realm.new_station_profile() self.station_profile.lfclient_url = self.lfclient_url self.station_profile.ssid = self.ssid self.station_profile.ssid_pass = self.password self.station_profile.security = self.security self.station_profile.number_template_ = self.number_template self.station_profile.mode = 0 self.wo_profile.fs_type = fs_type self.wo_profile.min_rw_size = LFUtils.parse_size(min_rw_size) self.wo_profile.max_rw_size = LFUtils.parse_size(max_rw_size) self.wo_profile.min_file_size = LFUtils.parse_size(min_file_size) self.wo_profile.max_file_size = LFUtils.parse_size(max_file_size) self.wo_profile.min_read_rate_bps = LFUtils.parse_size( min_read_rate_bps) self.wo_profile.max_read_rate_bps = LFUtils.parse_size( max_read_rate_bps) self.wo_profile.min_write_rate_bps = LFUtils.parse_size( min_write_rate_bps) 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.ro_profile = self.wo_profile.create_ro_profile() if self.use_macvlans: self.mvlan_profile.num_macvlans = int(num_ports) self.mvlan_profile.desired_macvlans = self.port_list self.mvlan_profile.macvlan_parent = self.macvlan_parent self.mvlan_profile.dhcp = dhcp self.mvlan_profile.netmask = netmask self.mvlan_profile.first_ip_addr = first_mvlan_ip self.mvlan_profile.gateway = gateway self.created_ports = [] if self.use_test_groups: if self.mode is not None: if self.mode == "write": self.wo_tg_profile = self.local_realm.new_test_group_profile( ) self.wo_tg_profile.group_name = self.write_only_test_group elif self.mode == "read": self.ro_tg_profile = self.local_realm.new_test_group_profile( ) self.ro_tg_profile.group_name = self.read_only_test_group elif self.mode == "both": self.wo_tg_profile = self.local_realm.new_test_group_profile( ) self.ro_tg_profile = self.local_realm.new_test_group_profile( ) self.wo_tg_profile.group_name = self.write_only_test_group self.ro_tg_profile.group_name = self.read_only_test_group else: raise ValueError("Unknown mode given ", self.mode) else: raise ValueError( "Mode ( read, write, or both ) must be specified") if update_group_args is not None and update_group_args[ 'name'] is not None: temp_tg = self.local_realm.new_test_group_profile() temp_cxs = update_group_args['cxs'].split(',') if update_group_args['action'] == "add": temp_tg.group_name = update_group_args['name'] if not temp_tg.check_group_exists(): temp_tg.create_group() for cx in temp_cxs: if "CX_" not in cx: cx = "CX_" + cx temp_tg.add_cx(cx) if update_group_args['action'] == "del": temp_tg.group_name = update_group_args['name'] if temp_tg.check_group_exists(): for cx in temp_cxs: temp_tg.rm_cx(cx) time.sleep(5) self.wo_tg_exists = False self.ro_tg_exists = False self.wo_tg_cx_exists = False self.ro_tg_cx_exists = False print("Checking for pre-existing test groups and cxs") if self.use_test_groups: if self.mode == "write": if self.wo_tg_profile.check_group_exists(): self.wo_tg_exists = True if len(self.wo_tg_profile.list_cxs()) > 0: self.wo_tg_cx_exists = True elif self.mode == "read": if self.ro_tg_profile.check_group_exists(): self.ro_tg_exists = True if len(self.ro_tg_profile.list_cxs()) > 0: self.ro_tg_cx_exists = True elif self.mode == "both": if self.wo_tg_profile.check_group_exists(): self.wo_tg_exists = True if len(self.wo_tg_profile.list_cxs()) > 0: self.wo_tg_cx_exists = True if self.ro_tg_profile.check_group_exists(): self.ro_tg_exists = True if len(self.ro_tg_profile.list_cxs()) > 0: self.ro_tg_cx_exists = True
def __init__(self, host, port, ssid, security, password, station_list, number_template="00000", radio="wiphy0", fs_type=fe_fstype.EP_FE_NFS4.name, min_rw_size=64 * 1024, max_rw_size=64 * 1024, min_file_size=25 * 1024 * 1024, max_file_size=25 * 1024 * 1024, min_read_rate_bps=1000 * 1000, max_read_rate_bps=1000 * 1000, min_write_rate_bps="1G", max_write_rate_bps=1000 * 1000, directory="AUTO", test_duration="5m", upstream_port="eth1", num_macvlans=1, server_mount="10.40.0.1:/var/tmp/test", _debug_on=False, _exit_on_error=False, _exit_on_fail=False): super().__init__(host, port, _debug=_debug_on, _halt_on_error=_exit_on_error, _exit_on_fail=_exit_on_fail) self.host = host self.port = port self.radio = radio self.upstream_port = upstream_port self.ssid = ssid self.security = security self.password = password self.number_template = number_template self.sta_list = station_list self.test_duration = test_duration #self.min_rw_size = self.parse_size(min_rw_size) #self.max_rw_size = self.parse_size(max_rw_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_file_size = self.parse_size(min_file_size) #self.min_read_rate_bps = self.parse_size_bps(min_read_rate_bps) #self.max_read_rate_bps = self.parse_size_bps(max_read_rate_bps) #self.min_write_rate_bps = self.parse_size_bps(min_write_rate_bps) #self.max_write_rate_bps = self.parse_size_bps(max_write_rate_bps) self.local_realm = realm.Realm(lfclient_host=self.host, lfclient_port=self.port) self.station_profile = self.local_realm.new_station_profile() self.endp_profile = self.local_realm.new_fio_endp_profile() self.mvlan_profile = self.local_realm.new_mvlan_profile() self.station_profile.lfclient_url = self.lfclient_url self.station_profile.ssid = self.ssid self.station_profile.ssid_pass = self.password self.station_profile.security = self.security self.station_profile.number_template_ = self.number_template self.station_profile.mode = 0 self.endp_profile.fs_type = fs_type self.endp_profile.min_rw_size = LFUtils.parse_size(min_rw_size) self.endp_profile.max_rw_size = LFUtils.parse_size(max_rw_size) self.endp_profile.min_file_size = LFUtils.parse_size(min_file_size) self.endp_profile.min_file_size = LFUtils.parse_size(min_file_size) self.endp_profile.min_read_rate_bps = LFUtils.parse_size( min_read_rate_bps) self.endp_profile.max_read_rate_bps = LFUtils.parse_size( max_read_rate_bps) self.endp_profile.min_write_rate_bps = LFUtils.parse_size( min_write_rate_bps) self.endp_profile.max_write_rate_bps = LFUtils.parse_size( max_write_rate_bps) self.endp_profile.directory = directory self.endp_profile.server_mount = server_mount self.ro_profile = self.endp_profile.create_ro_profile() self.mvlan_profile.num_macvlans = int(num_macvlans) self.mvlan_profile.upstream_port = upstream_port