コード例 #1
0
ファイル: test_task_19_3.py プロジェクト: chinyasstuva/a
def test_function_return_value(r1_test_connection,
                               first_router_from_devices_yaml):
    """
    Проверка работы функции
    """
    show_command = "sh ip int br"
    cfg_commands = [
        "logging 10.255.255.1",
        "logging buffered 20010",
        "no logging console",
    ]
    correct_return_value_show = r1_test_connection.send_command(show_command)
    correct_return_value_cfg = r1_test_connection.send_config_set(cfg_commands)
    return_value_show = task_19_3.send_commands(first_router_from_devices_yaml,
                                                show=show_command)
    return_value_cfg = task_19_3.send_commands(first_router_from_devices_yaml,
                                               config=cfg_commands)
    assert return_value_show != None, "Функция ничего не возвращает"
    assert (
        type(return_value_show) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(correct_return_value_show) == strip_empty_lines(
        return_value_show
    ), "Функция возвращает неправильное значение при передаче команды show"
    assert strip_empty_lines(correct_return_value_cfg) == strip_empty_lines(
        return_value_cfg
    ), "Функция возвращает неправильное значение при передаче конфигурационных команд"
コード例 #2
0
def test_function_return_value_from_single_device(
    three_routers_from_devices_yaml,
    r1_r2_r3_test_connection,
    tmpdir,
    device,
    command_dict,
):
    """
    Проверка работы функции
    """
    device_ip = device["host"]
    commands = command_dict[device_ip]
    ssh = create_ssh_connect(device)
    output = ""
    for command in commands:
        output += f"{ssh.find_prompt()}{command}\n{ssh.send_command(command)}\n"
    ssh.disconnect()
    dest_filename = tmpdir.mkdir("test_tasks").join("task_20_3.txt")

    return_value = task_20_3a.send_command_to_devices(
        devices=[device],
        commands_dict=command_dict,
        filename=dest_filename,
        limit=3,
    )
    assert return_value == None, "Функция должна возвращать None"
    dest_file_content = dest_filename.read().strip()

    assert strip_empty_lines(output) == strip_empty_lines(
        dest_file_content), f"В итоговом файле нет вывода с {device_ip}"
コード例 #3
0
ファイル: test_task_21_5.py プロジェクト: chinyasstuva/a
def test_function_return_value():
    data = {
        "tun_num": 17,
        "wan_ip_1": "80.241.1.1",
        "wan_ip_2": "90.18.10.2",
        "tun_ip_1": "10.255.1.1 255.255.255.252",
        "tun_ip_2": "10.255.1.2 255.255.255.252",
    }
    correct_value_1 = ("interface Tunnel 17\n"
                       "ip address 10.255.1.1 255.255.255.252\n"
                       "tunnel source 80.241.1.1\n"
                       "tunnel destination 90.18.10.2\n"
                       "tunnel protection ipsec profile GRE")
    correct_value_2 = ("interface Tunnel 17\n"
                       "ip address 10.255.1.2 255.255.255.252\n"
                       "tunnel source 90.18.10.2\n"
                       "tunnel destination 80.241.1.1\n"
                       "tunnel protection ipsec profile GRE")

    template1 = "templates/gre_ipsec_vpn_1.txt"
    template2 = "templates/gre_ipsec_vpn_2.txt"

    return_cfg1, return_cfg2 = task_21_5.create_vpn_config(
        template1, template2, data)
    return_cfg1 = strip_empty_lines(return_cfg1)
    return_cfg2 = strip_empty_lines(return_cfg2)

    assert (
        correct_value_1 in return_cfg1
    ), "В итоговой конфигурации неправильно указаны настройки Tunnel для первой стороны"
    assert (
        correct_value_2 in return_cfg2
    ), "В итоговой конфигурации неправильно указаны настройки Tunnel для второй стороны"
コード例 #4
0
def test_send_show_command_different_command(first_router_from_devices_yaml,
                                             r1_test_telnet_connection):
    full_pth = os.path.join(os.getcwd(), "templates")
    os.environ["NET_TEXTFSM"] = full_pth

    r1 = task_22_2a.CiscoTelnet(**first_router_from_devices_yaml)
    check_attr_or_method(r1, method="send_show_command")

    correct_return_value = r1_test_telnet_connection.send_command(
        "sh int desc",
        use_textfsm=True,
        strip_command=False,
        strip_prompt=False)
    return_value = r1.send_show_command("sh int desc",
                                        parse=True,
                                        templates="templates",
                                        index="index")
    assert (
        correct_return_value == return_value
    ), "Метод send_show_command возвращает неправильное значение с parse=True"

    correct_return_value = r1_test_telnet_connection.send_command(
        "sh version | include IOS", strip_command=False, strip_prompt=False)
    return_value = r1.send_show_command("sh version | include IOS",
                                        parse=False,
                                        templates="templates",
                                        index="index")
    assert strip_empty_lines(correct_return_value) == strip_empty_lines(
        return_value
    ), "Метод send_show_command возвращает неправильное значение с parse=False"
コード例 #5
0
def test_function_return_value():
    data = {
        'tun_num': 17,
        'wan_ip_1': '80.241.1.1',
        'wan_ip_2': '90.18.10.2',
        'tun_ip_1': '10.255.1.1 255.255.255.252',
        'tun_ip_2': '10.255.1.2 255.255.255.252'
    }
    correct_value_1 = ('interface Tunnel 17\n'
                       'ip address 10.255.1.1 255.255.255.252\n'
                       'tunnel source 80.241.1.1\n'
                       'tunnel destination 90.18.10.2\n'
                       'tunnel protection ipsec profile GRE')
    correct_value_2 = ('interface Tunnel 17\n'
                       'ip address 10.255.1.2 255.255.255.252\n'
                       'tunnel source 90.18.10.2\n'
                       'tunnel destination 80.241.1.1\n'
                       'tunnel protection ipsec profile GRE')

    template1 = 'templates/gre_ipsec_vpn_1.txt'
    template2 = 'templates/gre_ipsec_vpn_2.txt'

    return_cfg1, return_cfg2 = task_21_5.create_vpn_config(
        template1, template2, data)
    return_cfg1 = strip_empty_lines(return_cfg1)
    return_cfg2 = strip_empty_lines(return_cfg2)

    assert correct_value_1 in return_cfg1, \
        "В итоговой конфигурации неправильно указаны настройки Tunnel для первой стороны"
    assert correct_value_2 in return_cfg2, \
        "В итоговой конфигурации неправильно указаны настройки Tunnel для второй стороны"
コード例 #6
0
def test_send_show_command_different_command(first_router_from_devices_yaml,
                                             r1_test_telnet_connection):
    r1 = task_25_2.CiscoTelnet(**first_router_from_devices_yaml)

    correct_return_value = strip_empty_lines(
        r1_test_telnet_connection.send_command("sh cdp neighbors"))
    return_value = strip_empty_lines(r1.send_show_command("sh cdp neighbors"))
    assert (correct_return_value in return_value
            ), "Метод send_show_command возвращает неправильное значение"
コード例 #7
0
def test_send_show_command(first_router_from_devices_yaml,
                           r1_test_telnet_connection):
    r1 = task_22_2.CiscoTelnet(**first_router_from_devices_yaml)
    check_attr_or_method(r1, method="_write_line")
    check_attr_or_method(r1, method="send_show_command")

    correct_return_value = strip_empty_lines(
        r1_test_telnet_connection.send_command("sh ip int br"))
    return_value = strip_empty_lines(r1.send_show_command("sh ip int br"))
    assert (correct_return_value in return_value
            ), "Метод send_show_command возвращает неправильное значение"
コード例 #8
0
def test_class(first_router_from_devices_yaml, r1_test_telnet_connection):
    r1 = task_25_2.CiscoTelnet(**first_router_from_devices_yaml)
    assert getattr(r1, '_write_line', None) != None, \
        'У класса CiscoTelnet должен быть метод _write_line'
    assert getattr(r1, 'send_show_command', None) != None, \
        'У класса CiscoTelnet должен быть метод send_show_command'

    correct_return_value = strip_empty_lines(
        r1_test_telnet_connection.send_command('sh ip int br'))
    return_value = strip_empty_lines(r1.send_show_command('sh ip int br'))
    assert correct_return_value in return_value, "Метод send_show_command возвращает неправильное значение"
コード例 #9
0
def test_send_show_command_parse_false(first_router_from_devices_yaml,
                                       r1_test_telnet_connection):
    r1 = task_22_2a.CiscoTelnet(**first_router_from_devices_yaml)

    correct_return_value = r1_test_telnet_connection.send_command(
        "sh ip int br", strip_command=False, strip_prompt=False)
    return_value = r1.send_show_command("sh ip int br",
                                        parse=False,
                                        templates="templates",
                                        index="index")
    assert strip_empty_lines(correct_return_value) == strip_empty_lines(
        return_value
    ), "Метод send_show_command возвращает неправильное значение с parse=False"
コード例 #10
0
def test_function_return_value_different_args(r1_test_connection,
                                              first_router_from_devices_yaml):
    """
    Проверка работы функции с другими аргументами
    """
    correct_return_value = r1_test_connection.send_command(
        "sh int description")
    return_value = task_18_1.send_show_command(first_router_from_devices_yaml,
                                               "sh int description")
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value), "Функция возвращает неправильное значение"
コード例 #11
0
def test_function_return_value():
    correct_value_vlan = ('vlan 10\n' 'name Marketing')
    correct_value_access = ('interface Fa0/1\n'
                            'switchport mode access\n'
                            'switchport access vlan 10')
    correct_value_trunk = ('interface Fa0/23\n'
                           'switchport trunk allowed vlan add 10\n'
                           'interface Fa0/24\n'
                           'switchport trunk allowed vlan add 10')

    template = 'templates/add_vlan_to_switch.txt'
    data = {
        'vlan_id': 10,
        'name': 'Marketing',
        'trunk': ['Fa0/23', 'Fa0/24'],
        'access': ['Fa0/1']
    }

    return_value = task_21_1.generate_config(template, data)
    return_value = strip_empty_lines(return_value)

    assert correct_value_vlan in return_value,\
            "В итоговой конфигурации не создан VLAN и/или не назначено имя VLAN"
    assert correct_value_access in return_value,\
            "В итоговой конфигурации неправильная настройка access"
    assert correct_value_trunk in return_value,\
            "В итоговой конфигурации неправильная настройка trunk"
コード例 #12
0
def test_function_return_value():
    correct_value_vlan = "vlan 10\n" "name Marketing"
    correct_value_access = ("interface Fa0/1\n"
                            "switchport mode access\n"
                            "switchport access vlan 10")
    correct_value_trunk = ("interface Fa0/23\n"
                           "switchport trunk allowed vlan add 10\n"
                           "interface Fa0/24\n"
                           "switchport trunk allowed vlan add 10")

    template = "templates/add_vlan_to_switch.txt"
    data = {
        "vlan_id": 10,
        "name": "Marketing",
        "trunk": ["Fa0/23", "Fa0/24"],
        "access": ["Fa0/1"],
    }

    return_value = task_21_1.generate_config(template, data)
    return_value = strip_empty_lines(return_value)

    assert (
        correct_value_vlan in return_value
    ), "В итоговой конфигурации не создан VLAN и/или не назначено имя VLAN"
    assert (correct_value_access in return_value
            ), "В итоговой конфигурации неправильная настройка access"
    assert (correct_value_trunk in return_value
            ), "В итоговой конфигурации неправильная настройка trunk"
コード例 #13
0
def test_function_return_value(r1_test_connection,
                               first_router_from_devices_yaml):
    """
    Тест проверяет работу функции send_show_command
    first_router_from_devices_yaml - это первое устройство из файла devices.yaml
    r1_test_connection - это сессия SSH с первым устройством из файла devices.yaml
                         Используется для проверки вывода
    """
    correct_return_value = r1_test_connection.send_command("sh ip int br")
    return_value = task_18_1.send_show_command(first_router_from_devices_yaml,
                                               "sh ip int br")
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value), "Функция возвращает неправильное значение"
コード例 #14
0
def test_function_return_value_different_args(r1_test_connection,
                                              first_router_from_devices_yaml):
    """
    Проверка работы функции с другими аргументами
    """
    test_commands = [
        "interface Loopback 100",
        "ip address 10.1.1.100 255.255.255.255",
    ]
    correct_return_value = r1_test_connection.send_config_set(test_commands)
    return_value = task_19_2.send_config_commands(
        first_router_from_devices_yaml, test_commands)
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value), "Функция возвращает неправильное значение"
コード例 #15
0
def test_function_return_value(r1_test_connection,
                               first_router_from_devices_yaml):
    """
    Проверка работы функции
    """
    test_commands = [
        "logging 10.255.255.1",
        "logging buffered 20010",
        "no logging console",
    ]
    correct_return_value = r1_test_connection.send_config_set(test_commands)
    return_value = task_19_2.send_config_commands(
        first_router_from_devices_yaml, test_commands)
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value), "Функция возвращает неправильное значение"
コード例 #16
0
ファイル: test_task_21_1.py プロジェクト: chinyasstuva/a
def test_function_return_value():
    correct_return_value = (
        "\n"
        "hostname R3\n"
        "\n"
        "interface Loopback0\n"
        " ip address 10.0.0.3 255.255.255.255\n"
        "\n"
        "vlan 10\n"
        " name Marketing\n"
        "vlan 20\n"
        " name Voice\n"
        "vlan 30\n"
        " name Management\n"
        "\n"
        "router ospf 1\n"
        " router-id 10.0.0.3\n"
        " auto-cost reference-bandwidth 10000\n"
        " network 10.0.1.0 0.0.0.255 area 0\n"
        " network 10.0.2.0 0.0.0.255 area 2\n"
        " network 10.1.1.0 0.0.0.255 area 0\n"
    )

    template = "templates/for.txt"
    data = {
        "id": 3,
        "name": "R3",
        "vlans": {10: "Marketing", 20: "Voice", 30: "Management"},
        "ospf": [
            {"network": "10.0.1.0 0.0.0.255", "area": 0},
            {"network": "10.0.2.0 0.0.0.255", "area": 2},
            {"network": "10.1.1.0 0.0.0.255", "area": 0},
        ],
    }
    return_value = task_21_1.generate_config(template, data)
    assert return_value != None, "Функция ничего не возвращает"
    assert (
        type(return_value) == str
    ), f"По заданию функция должна возвращать строку, а возвращает {type(return_value).__name__}"
    assert strip_empty_lines(return_value) == strip_empty_lines(
        correct_return_value
    ), "Функция возвращает неправильное значение"
コード例 #17
0
def test_function_return_value_from_single_device(tmpdir, device, command):
    """
    Проверка работы функции
    """
    ssh = create_ssh_connect(device)
    output = f"{ssh.find_prompt()}{command}\n{ssh.send_command(command)}\n"
    ssh.disconnect()
    dest_filename = tmpdir.mkdir("test_tasks").join("task_20_2.txt")

    return_value = task_20_2.send_show_command_to_devices(
        devices=[device],
        command=command,
        filename=dest_filename,
        limit=3,
    )
    assert return_value == None, "Функция должна возвращать None"
    dest_file_content = dest_filename.read().strip()

    assert strip_empty_lines(output) == strip_empty_lines(
        dest_file_content), f"В итоговом файле нет вывода с {device['host']}"
コード例 #18
0
def test_function_return_value():
    correct_return_value_router = (
        "router ospf 10\n"
        "router-id 10.0.0.1\n"
        "auto-cost reference-bandwidth 20000\n"
        "network 10.255.0.1 0.0.0.0 area 0\n"
        "network 10.255.1.1 0.0.0.0 area 0\n"
        "network 10.255.2.1 0.0.0.0 area 0\n"
        "network 10.0.10.1 0.0.0.0 area 2\n"
        "network 10.0.20.1 0.0.0.0 area 2\n"
        "passive-interface Fa0/0.10\n"
        "passive-interface Fa0/0.20\n"
    )
    correct_return_value_intf = (
        "interface Fa0/1\n"
        "ip ospf hello-interval 1\n"
        "interface Fa0/1.100\n"
        "ip ospf hello-interval 1\n"
        "interface Fa0/1.200\n"
        "ip ospf hello-interval 1\n"
    )

    template = "templates/ospf.txt"
    data = {
        "ospf_intf": [
            {"area": 0, "ip": "10.255.0.1", "name": "Fa0/1", "passive": False},
            {"area": 0, "ip": "10.255.1.1", "name": "Fa0/1.100", "passive": False},
            {"area": 0, "ip": "10.255.2.1", "name": "Fa0/1.200", "passive": False},
            {"area": 2, "ip": "10.0.10.1", "name": "Fa0/0.10", "passive": True},
            {"area": 2, "ip": "10.0.20.1", "name": "Fa0/0.20", "passive": True},
        ],
        "process": 10,
        "ref_bw": 20000,
        "router_id": "10.0.0.1",
    }

    return_value = task_21_1.generate_config(template, data)
    correct_lines_router = set(correct_return_value_router.splitlines())
    correct_lines_interface = set(correct_return_value_intf.splitlines())

    return_value = strip_empty_lines(return_value)
    return_lines = set(return_value.splitlines())

    # проверяем что строки из correct_return_value_router содержатся в return_value
    assert correct_lines_router.issubset(
        return_lines
    ), "В итоговой конфигурации режима router ospf не все строки"
    # проверяем что строки из correct_return_value_intf содержатся в return_value
    assert correct_lines_interface.issubset(
        return_lines
    ), "В итоговой конфигурации интерфейсов не все строки"
コード例 #19
0
def test_function_return_value():
    correct_return_value = (
        '\n'
        'hostname R3\n'
        '\n'
        'interface Loopback0\n'
        ' ip address 10.0.0.3 255.255.255.255\n'
        '\n'
        'vlan 10\n'
        ' name Marketing\n'
        'vlan 20\n'
        ' name Voice\n'
        'vlan 30\n'
        ' name Management\n'
        '\n'
        'router ospf 1\n'
        ' router-id 10.0.0.3\n'
        ' auto-cost reference-bandwidth 10000\n'
        ' network 10.0.1.0 0.0.0.255 area 0\n'
        ' network 10.0.2.0 0.0.0.255 area 2\n'
        ' network 10.1.1.0 0.0.0.255 area 0\n'
    )

    template = 'templates/for.txt'
    data = {
        'id': 3,
        'name': 'R3',
        'vlans': {10: 'Marketing', 20: 'Voice', 30: 'Management'},
        'ospf': [{'network': '10.0.1.0 0.0.0.255', 'area': 0},
                 {'network': '10.0.2.0 0.0.0.255', 'area': 2},
                 {'network': '10.1.1.0 0.0.0.255', 'area': 0}]}
    return_value = task_21_1.generate_config(template, data)
    assert return_value != None, "Функция ничего не возвращает"
    assert type(return_value) == str, "Функция должна возвращать строку"
    assert strip_empty_lines(return_value) == strip_empty_lines(correct_return_value), \
        "Функция возвращает неправильное значение"
コード例 #20
0
def test_function_return_value():
    correct_return_value_router = (
        'router ospf 10\n'
        'router-id 10.0.0.1\n'
        'auto-cost reference-bandwidth 20000\n'
        'network 10.255.0.1 0.0.0.0 area 0\n'
        'network 10.255.1.1 0.0.0.0 area 0\n'
        'network 10.255.2.1 0.0.0.0 area 0\n'
        'network 10.0.10.1 0.0.0.0 area 2\n'
        'network 10.0.20.1 0.0.0.0 area 2\n'
        'passive-interface Fa0/0.10\n'
        'passive-interface Fa0/0.20\n'
    )
    correct_return_value_intf = (
        'interface Fa0/1\n'
        'ip ospf hello-interval 1\n'
        'interface Fa0/1.100\n'
        'ip ospf hello-interval 1\n'
        'interface Fa0/1.200\n'
        'ip ospf hello-interval 1\n'
    )

    template = 'templates/ospf.txt'
    data = {
        'ospf_intf': [
            {'area': 0, 'ip': '10.255.0.1', 'name': 'Fa0/1', 'passive': False},
            {'area': 0, 'ip': '10.255.1.1', 'name': 'Fa0/1.100', 'passive': False},
            {'area': 0, 'ip': '10.255.2.1', 'name': 'Fa0/1.200', 'passive': False},
            {'area': 2, 'ip': '10.0.10.1', 'name': 'Fa0/0.10', 'passive': True},
            {'area': 2, 'ip': '10.0.20.1', 'name': 'Fa0/0.20', 'passive': True}],
        'process': 10,
        'ref_bw': 20000,
        'router_id': '10.0.0.1'
    }

    return_value = task_21_1.generate_config(template, data)
    correct_lines_router = set(correct_return_value_router.splitlines())
    correct_lines_interface = set(correct_return_value_intf.splitlines())

    return_value = strip_empty_lines(return_value)
    return_lines = set(return_value.splitlines())

    # проверяем что строки из correct_return_value_router содержатся в return_value
    assert correct_lines_router.issubset(return_lines),\
            "В итоговой конфигурации режима router ospf не все строки"
    # проверяем что строки из correct_return_value_intf содержатся в return_value
    assert correct_lines_interface.issubset(return_lines),\
            "В итоговой конфигурации интерфейсов не все строки"