network方法目录 - KPTest框架开放资料

Skip to content

# network方法目录

1. update_all_ports
> 描述：

    1
    2
    3

    方法功能：

    命令格式：

> 参数：

    1

> 返回值：

    1

> 异常：

    1

> 举例：

    1

2. get_nic_name_by_ip
> 描述：

    1
    2
    3

    方法功能：

    命令格式：

> 参数：

    1

    ip          (str): ip地址，比如172.23.188.26

> 返回值：

    1

    nic_name    (str): ip地址对应的网口名称，比如enp125s0f0

> 异常：

    1

    None

> 举例：

    1

3. get_host_nic_name
> 描述：

    1
    2
    3
    4

    方法功能：获取当前host业务口ip地址对应的网口名
        命令示例: ip route | grep xx.xx.xx.xx | awk -F '[ \t*]' '{print $3}'

    命令格式：

> 参数：

    1

    self        (obj): 本network接口对象

> 返回值：

    1

    nic_name    (str): host业务口ip地址对应的网口名称，比如enp125s0f0

> 异常：

    1

    None

> 举例：

    1

    nic_name = self.host.network.get_host_nic_name()

4. get_nic_name_by_bdf
> 描述：

    1
    2
    3
    4

    方法功能：根据板卡的root_bdf号获取当前host下板卡的所有网口名
        命令示例: ls /sys/bus/pci/devices/0000\:82\:00.0/net/

    命令格式：

> 参数：

    1

    bdf         (str): 网口的bdf号, 示例: 82:00.0或者0000:82:00.0

> 返回值：

    1

    nic_name    (str): bdf号对应板卡的网口名, 如果未找到返回空

> 异常：

    1

    KPTestException('Invalid bdf format: %s' % bdf)

> 举例：

    1

    nic_name = self.host.network.get_nic_name_by_bdf(bdf)

5. get_ethtool_version
> 描述：

    1
    2
    3
    4

    方法功能：获取ethtool工具的版本信息
        命令示例: ethtool --version

    命令格式：

> 参数：

    1

    self        (obj): 本对象

> 返回值：

    1

    version     (str): ethtool工具的版本号

> 异常：

    1

    None

> 举例：

    1

    ver = self.host.network.get_ethtool_version()

6. self_test
> 描述：

    1
    2
    3
    4

    方法功能：对网口进行自测试
        命令示例: ethtool -t enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str ): 网口的名称, 如enp1s0f0

> 返回值：

    1

    result          (bool): 网口自测试结果

> 异常：

    1

    None

> 举例：

    1

    result = self.host.network.self_test('enp1s0f0')

7. get_optical_module_info
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的光模块/电缆信息
        命令示例: ethtool -m enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73

    optical_module  (dict): 网口的光模块/电缆信息
    optical_module = {
    'Alarm/warning flags implemented': 'Yes',
    'BR margin, max': '103%',
    'BR margin, min': '0%',
    'BR, Nominal': '25500MBd',
    'Connector': '0x07 (LC)',
    'Date code': '170720',
    'Encoding': '0x03 (NRZ)',
    'Extended identifier': '0x04 (GBIC/SFP defined by 2-wire interface ID)',
    'Identifier': '0x03 (SFP)',
    'Laser bias current': '9.800 mA',
    'Laser bias current high alarm': 'Off',
    'Laser bias current high alarm threshold': '15.000 mA',
    'Laser bias current high warning': 'Off',
    'Laser bias current high warning threshold': '15.000 mA',
    'Laser bias current low alarm': 'Off',
    'Laser bias current low alarm threshold': '0.000 mA',
    'Laser bias current low warning': 'Off',
    'Laser bias current low warning threshold': '0.000 mA',
    'Laser output power': '1.1090 mW / 0.45 dBm',
    'Laser output power high alarm': 'Off',
    'Laser output power high alarm threshold': '3.4674 mW / 5.40 dBm',
    'Laser output power high warning': 'Off',
    'Laser output power high warning threshold': '1.7378 mW / 2.40 dBm',
    'Laser output power low alarm': 'Off',
    'Laser output power low alarm threshold': '0.0724 mW / -11.40 dBm',
    'Laser output power low warning': 'Off',
    'Laser output power low warning threshold': '0.1445 mW / -8.40 dBm',
    'Laser rx power high alarm': 'Off',
    'Laser rx power high alarm threshold': '3.4674 mW / 5.40 dBm',
    'Laser rx power high warning': 'Off',
    'Laser rx power high warning threshold': '1.7378 mW / 2.40 dBm',
    'Laser rx power low alarm': 'Off',
    'Laser rx power low alarm threshold': '0.0468 mW / -13.30 dBm',
    'Laser rx power low warning': 'Off',
    'Laser rx power low warning threshold': '0.0933 mW / -10.30 dBm',
    'Laser wavelength': '850nm',
    'Length (50um)': '0m',
    'Length (62.5um)': '0m',
    'Length (Copper)': '10m',
    'Length (OM3)': '70m',
    'Length (SMF)': '0m',
    'Length (SMF,km)': '0km',
    'Module temperature': '48.07 degrees C / 118.53 degrees F',
    'Module temperature high alarm': 'Off',
    'Module temperature high alarm threshold': '80.00 degrees C / 176.00 degrees F',
    'Module temperature high warning': 'Off',
    'Module temperature high warning threshold': '70.00 degrees C / 158.00 degrees F',
    'Module temperature low alarm': 'Off',
    'Module temperature low alarm threshold': '-10.00 degrees C / 14.00 degrees F',
    'Module temperature low warning': 'Off',
    'Module temperature low warning threshold': '0.00 degrees C / 32.00 degrees F',
    'Module voltage': '3.2545 V',
    'Module voltage high alarm': 'Off',
    'Module voltage high alarm threshold': '3.6300 V',
    'Module voltage high warning': 'Off',
    'Module voltage high warning threshold': '3.4650 V',
    'Module voltage low alarm': 'Off',
    'Module voltage low alarm threshold': '2.9700 V',
    'Module voltage low warning': 'Off',
    'Module voltage low warning threshold': '3.1350 V',
    'Optical diagnostics support': 'Yes',
    'Option': 'Retimer or CDR implemented',
    'Option values': '0x08 0x1a',
    'Rate identifier': '0x00 (unspecified)',
    'Receiver signal average optical power': '1.3049 mW / 1.16 dBm',
    'Transceiver codes': '0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00',
    'Vendor PN': 'RTXM330-551',
    'Vendor SN': 'RD173400440014',
    'Vendor name': 'WTD',
    'Vendor rev': '1.0'
    }

> 异常：

    1

    None

> 举例：

    1

    ver = self.host.network.get_optical_module_info('enp1s0f0')

8. get_nic_statistics
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的统计信息
        命令示例: ethtool -S enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    statistics      (dict): 网口的统计信息

> 异常：

    1

    None

> 举例：

    1

    statistics = self.host.network.get_nic_statistics('enp1s0f0')

9. get_nic_features
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的特性信息
        命令示例: ethtool -k enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    features       (dict): 网口的特性信息

> 异常：

    1

    None

> 举例：

    1

    features = self.host.network.get_nic_features('enp1s0f0')

10. get_nic_ring_params
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的Ring参数信息
        命令示例: ethtool -g enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    ring_params     (dict): 网口的Ring参数信息

> 异常：

    1

    None

> 举例：

    1

    ring_params = self.host.network.get_nic_ring_params('enp1s0f0')

11. get_nic_channel_params
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的Channel参数信息
        命令示例: ethtool -l enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    channel_params  (dict): 网口的Channel参数信息

> 异常：

    1

    None

> 举例：

    1

    channel_params = self.host.network.get_nic_channel_params('enp1s0f0')

12. get_nic_pause_params
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的Pause参数信息
        命令示例: ethtool -a enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    pause_params    (dict): 网口的Pause参数信息

> 异常：

    1

    None

> 举例：

    1

    pause_params = self.host.network.get_nic_pause_params('enp1s0f0')

13. get_nic_info_by_ethtool
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的信息
        命令示例: ethtool -i enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    ring_params     (dict): 网口的信息

> 异常：

    1

    None

> 举例：

    1

    nic_info = self.host.network.get_nic_info_by_ethtool('enp1s0f0')

14. get_nic_settings
> 描述：

    1
    2
    3
    4

    方法功能：获取网口的Channel参数信息
        命令示例: ethtool enp1s0f0

    命令格式：

> 参数：

    1

    nic_name        (str) : 网口名称

> 返回值：

    1

    settings        (dict): 网口的配置参数信息

> 异常：

    1

    None

> 举例：

    1

    settings = self.host.network.get_nic_settings('enp1s0f0')

15. add_bridge
> 描述：

    1
    2
    3

    方法功能：增加网桥设备

    命令格式：ip link add <br_name> type bridge

> 参数：

    1

    br_name     (str): 网桥设备名称

> 返回值：

    1

    True if success else False

> 异常：

    1

    None

> 举例：

    1

    self.os_host.network.add_bridge(self.br_name)

16. delete_bridge
> 描述：

    1
    2
    3

    方法功能：删除网桥设备

    命令格式：ip link delete <br_name>

> 参数：

    1

    br_name     (str): 网桥设备名称

> 返回值：

    1

    True if success else False

> 异常：

    1

    None

> 举例：

    1

    self.os_host.network.delete_bridge(self.br_name)

17. enable_interface
> 描述：

    1
    2
    3

    方法功能：启用接口（网桥、物理接口等）

    命令格式：ip link set <nic_name> up

> 参数：

    1

    nic_name     (str): 接口名称

> 返回值：

    1

    None

> 异常：

    1

    KPTestException('启用接口%s失败: %s' % (nic_name, res['stderr']))

> 举例：

    1
    2

    self.os_host.network.enable_interface(self.br_name)
    self.os_host.network.enable_interface(self.nic_name)

18. disable_interface
> 描述：

    1
    2
    3

    方法功能：禁用接口（网桥、物理接口等）

    命令格式：ip link set <nic_name> down

> 参数：

    1

    nic_name     (str): 接口名称

> 返回值：

    1

    None

> 异常：

    1

    KPTestException('禁用接口%s失败: %s' % (nic_name, res['stderr']))

> 举例：

    1
    2

    self.os_host.network.disable_interface(self.br_name)
    self.os_host.network.disable_interface(self.nic_name)

19. ifconfig
> 描述：

    1
    2
    3

    方法功能：禁用接口（网桥、物理接口等）

    命令格式：ifconfig enp6s0  inet6 add fe80::2218:8ff:febc:1941/96

> 参数：

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11

    params          (dict): ifconfig命令支持的参数字典
    all         (bool): 相当于 ifconfig -a
    ipaddr      (str) : IP地址,
    nic_name    (str) : 网口名
    action      (str) : 针对网卡执行的动作，可选['0', "up", "down", 'del', 'add']
    netmask     (str) : 网口设置的子页掩码
    prefixlen   (str) : IPv6掩码长度
    mtu         (str) : 网口设置的mtu值
    mac         (str) : mac地址
    promisc     (str) : 网口混杂模式参数
    netns       (bool): 是否使用命名空间，该参数为true，namespace参数必须为有效值

> 返回值：

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21

    nic_list        (list): 解析后的网口信息列表
    nic_list = [{
    'broadcast': 'xx.xx.xx.xx',
    'ip': 'xx.xx.xx.xx',
    'link': 'DOWN',
    'mac': '02:42:10:44:06:ea',
    'mtu': '1500',
    'name': 'docker0',
    'netmask': 'xx.xx.xx.xx',
    'rx_dropped': '0',
    'rx_errors': '0',
    'rx_frame': '0',
    'rx_overruns': '0',
    'rx_packets': '0',
    'tx_carrier': '0',
    'tx_collisions': '0',
    'tx_dropped': '0',
    'tx_errors': '0',
    'tx_overruns': '0',
    'tx_packets': '0'},
    ]

> 异常：

    1

    LinuxCommandException(f'通过命令{cmd_str}获取网络配置失败:{output}')

> 举例：

    1

    self.host.network.ifconfig(all=True)

20. get_host_content
> 描述：

    1
    2
    3

    方法功能：获取/etc/hosts文件的内容并过滤含有huawei.com的配置项

    命令格式：

> 参数：

    1

    None

> 返回值：

    1

    content         (list)   : /etc/hosts文件的内容

> 异常：

    1

    None

> 举例：

    1

    content = self.host.network.get_host_content()

21. change_hosts
> 描述：

    1
    2
    3

    方法功能：更改/etc/hosts文件的内容并使其生效

    命令格式：mv <hosts_back> <hosts_path> -f

> 参数：

    1
    2
    3

    host_info       (dict)   : 包含测试端和对端IP的字典,
    /etc/hosts文件变更前的内容
    is_restore      (boolean): 是否恢复文件

> 返回值：

    1

    None

> 异常：

    1
    2
    3

    KPTestException('用于修改hosts文件的ip信息为空')
    KPTestException('ip信息未包含关键字 "%s" ' % key)
    KPTestException('修改未生效')

> 举例：

    1
    2
    3
    4
    5
    6
    7
    8
    9

    ips = {
    'source': self.test_host.local_ip,
    'target': self.supt_host.local_ip
    }
    self.t_content = self.host.network.get_host_content()
    self.t_hostinfo = {
    'ip': ip, 'content': self.t_content
    }
    self.test_host.network.change_hosts(self.t_hostinfo)