Exemplo n.º 1
0
    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")
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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