示例#1
0
def test_class():
    '''Проверяем работу объекта'''
    net = task_3_1.IPv4Network('100.7.1.0/29')
    assert len(net.hosts) == 6, "В данной сети должно быть 6 хостов"
    assert net.broadcast == '100.7.1.7', "Broadcast адрес для этой сети 100.7.1.7"

    net.allocate('100.7.1.2')
    net.allocate('100.7.1.4')
    net.allocate('100.7.1.5')

    assert len(net.hosts) == 6, "Переменная hosts должна возвращать все хосты"
    assert len(
        net.allocated) == 3, "Переменная allocated должна содержать 3 хоста"
    assert len(
        net.unassigned
    ) == 3, "Переменная unassigned должна возвращать на 3 хоста меньше"
    # test net.hosts rewrite
    try:
        net.hosts = 'a'
    except AttributeError:
        pass
    else:
        pytest.fail("Запись переменной hosts должна быть запрещена")

    # test net.unassigned rewrite
    try:
        net.unassigned = 'a'
    except AttributeError:
        pass
    else:
        pytest.fail("Запись переменной unassigned должна быть запрещена")
示例#2
0
def test_new_attr_created():
    '''
    Проверяем, что у объекта есть переменные:
        allocate, unassigned
    '''
    net = task_3_1.IPv4Network('100.7.1.0/26')
    check_attr_or_method(net, method='allocate')
    check_attr_or_method(net, attr='unassigned')
    check_attr_or_method(net, attr='hosts')
示例#3
0
def test_attributes_created():
    '''
    Проверяем, что у объекта есть атрибуты:
        address, mask, broadcast, allocated
    '''
    net = task_3_1.IPv4Network('100.7.1.0/26')
    check_attr_or_method(net, attr='address')
    check_attr_or_method(net, attr='mask')
    check_attr_or_method(net, attr='broadcast')
    check_attr_or_method(net, attr='allocated')
    assert net.allocated == tuple(
    ), "По умолчанию allocated должен содержать пустой кортеж"
示例#4
0
def test_class():
    '''Проверяем работу объекта'''
    list_of_ips = ['8.8.4.2', '8.8.4.4', '8.8.4.6']
    correct_return_value = get_reach_unreach(list_of_ips)

    net1 = task_3_1.IPv4Network('8.8.4.0/29')
    net1.allocate('8.8.4.2')
    net1.allocate('8.8.4.4')
    net1.allocate('8.8.4.6')

    scan_net = task_3_2.PingNetwork(net1)
    assert scan_net._ping('8.8.4.4') in (
        True, False), "Метод _ping должен возвращать True или False"
    try:
        task_3_2.PingNetwork._ping('8.8.4.4') in (True, False)
    except TypeError:
        pytest.fail("Метод _ping должен быть статическим")
示例#5
0
def test_return_types():
    '''Проверяем работу объекта'''
    net = task_3_1.IPv4Network('100.7.1.0/26')
    assert type(net.hosts) == tuple, "hosts должен возвращать кортеж"
    assert type(net.unassigned) == tuple, "unassigned должен возвращать кортеж"
示例#6
0
        else:
            return False

    def scan(self, workers=5, include_unassigned=False):
        reachable = []
        unreachable = []
        if include_unassigned is False:
            devices = self.ip_obj.allocated
        else:
            devices = self.ip_obj.unassigned + self.ip_obj.allocated

        with ThreadPoolExecutor(max_workers=3) as executor:
            result = executor.map(self._ping, devices)
            for device, output in zip(devices, result):
                if output is True:
                    reachable.append(device)
                else:
                    unreachable.append(device)
        return (reachable, unreachable)


if __name__ == '__main__':
    net1 = task_3_1.IPv4Network('8.8.4.0/29')
    net1.allocate('8.8.4.2')
    net1.allocate('8.8.4.4')
    net1.allocate('8.8.4.6')
    print(net1.allocated)
    print(net1.unassigned)
    ping_net = PingNetwork(net1)
    print(ping_net.scan())
    print(ping_net.scan(include_unassigned=True))