コード例 #1
0
ファイル: ip_address_test.py プロジェクト: emesika/vdsm
class TestIPAddress(object):
    IPAddress = address.driver(address.Drivers.IPROUTE2)

    def test_add_delete_ipv4(self, nic0):
        self._test_add_delete(IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN,
                              nic0)

    @ipv6_broken_on_travis_ci
    def test_add_delete_ipv6(self, nic0):
        self._test_add_delete(IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN,
                              nic0)

    @ipv6_broken_on_travis_ci
    @pytest.mark.skipif(
        nm_is_running(),
        reason='Fails randomly when NM is running. See BZ#1512316',
    )
    def test_add_delete_ipv4_ipv6(self, nic0):
        self._test_add_delete(IPV4_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN,
                              nic0)

    def _test_add_delete(self, ip_a, ip_b, nic):
        ip_a_data = address.IPAddressData(ip_a, device=nic)
        ip_b_data = address.IPAddressData(ip_b, device=nic)

        TestIPAddress.IPAddress.add(ip_a_data)
        self._assert_has_address(nic, ip_a)

        TestIPAddress.IPAddress.add(ip_b_data)
        self._assert_has_address(nic, ip_a)
        self._assert_has_address(nic, ip_b)

        TestIPAddress.IPAddress.delete(ip_b_data)
        self._assert_has_address(nic, ip_a)
        self._assert_has_no_address(nic, ip_b)

        TestIPAddress.IPAddress.delete(ip_a_data)
        self._assert_has_no_address(nic, ip_a)
        self._assert_has_no_address(nic, ip_b)

    def test_add_with_non_existing_device_ipv4(self):
        self._test_add_with_non_existing_device(IPV4_A_WITH_PREFIXLEN)

    def test_add_with_non_existing_device_ipv6(self):
        self._test_add_with_non_existing_device(IPV6_A_WITH_PREFIXLEN)

    def _test_add_with_non_existing_device(self, ip):
        with pytest.raises(address.IPAddressAddError):
            TestIPAddress.IPAddress.add(
                address.IPAddressData(ip, device='tim the enchanter'))

    def test_delete_non_existing_ipv4(self, nic0):
        self._test_delete_non_existing_ip(IPV4_A_WITH_PREFIXLEN, nic0)

    def test_delete_non_existing_ipv6(self, nic0):
        self._test_delete_non_existing_ip(IPV6_A_WITH_PREFIXLEN, nic0)

    def _test_delete_non_existing_ip(self, ip, nic):
        with pytest.raises(address.IPAddressDeleteError):
            TestIPAddress.IPAddress.delete(
                address.IPAddressData(ip, device=nic))

    def test_list_ipv4(self, nic0):
        self._test_list(
            ipv4_addresses=[IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN],
            ipv6_addresses=[],
            nic=nic0,
        )

    @ipv6_broken_on_travis_ci
    def test_list_ipv6(self, nic0):
        self._test_list(
            ipv4_addresses=[],
            ipv6_addresses=[IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN],
            nic=nic0,
        )

    @ipv6_broken_on_travis_ci
    def test_list_ipv4_ipv6(self, nic0):
        self._test_list(
            ipv4_addresses=[IPV4_A_WITH_PREFIXLEN],
            ipv6_addresses=[IPV6_B_WITH_PREFIXLEN],
            nic=nic0,
        )

    def _test_list(self, ipv4_addresses, ipv6_addresses, nic):
        for addr in itertools.chain.from_iterable(
            [ipv4_addresses, ipv6_addresses]):
            TestIPAddress.IPAddress.add(address.IPAddressData(addr,
                                                              device=nic))

        all_addrs = list(TestIPAddress.IPAddress.addresses())
        ipv4_addrs = list(TestIPAddress.IPAddress.addresses(family=4))
        ipv6_addrs = list(TestIPAddress.IPAddress.addresses(family=6))

        for addr in ipv4_addresses:
            self._assert_address_in(addr, all_addrs)
            self._assert_address_in(addr, ipv4_addrs)

        for addr in ipv6_addresses:
            self._assert_address_in(addr, all_addrs)
            self._assert_address_in(addr, ipv6_addrs)

    def _test_list_by_device_ipv4_ipv4(self, nic0, nic1):
        self._test_list_by_device(IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN,
                                  (nic0, nic1))

    def _test_list_by_device_ipv4_ipv6(self, nic0, nic1):
        self._test_list_by_device(IPV4_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN,
                                  (nic0, nic1))

    def _test_list_by_device_ipv6_ipv4(self, nic0, nic1):
        self._test_list_by_device(IPV6_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN,
                                  (nic0, nic1))

    def _test_list_by_device_ipv6_ipv6(self, nic0, nic1):
        self._test_list_by_device(IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN,
                                  (nic0, nic1))

    def _test_list_by_device(self, ip_a_with_device, ip_b, nics):
        TestIPAddress.IPAddress.add(
            address.IPAddressData(ip_a_with_device, device=nics[0]))
        TestIPAddress.IPAddress.add(address.IPAddressData(ip_b,
                                                          device=nics[1]))

        addresses = list(TestIPAddress.IPAddress.addresses(device=nics[0]))
        self._assert_address_in(ip_a_with_device, addresses)
        self._assert_address_not_in(ip_b, addresses)

    def _assert_has_address(self, device, address_with_prefixlen):
        addresses = TestIPAddress.IPAddress.addresses(device)
        self._assert_address_in(address_with_prefixlen, addresses)

    def _assert_has_no_address(self, device, address_with_prefixlen):
        addresses = TestIPAddress.IPAddress.addresses(device)
        self._assert_address_not_in(address_with_prefixlen, addresses)

    def _assert_address_in(self, address_with_prefixlen, addresses):
        addresses_list = [addr.address_with_prefixlen for addr in addresses]
        assert address_with_prefixlen in addresses_list

    def _assert_address_not_in(self, address_with_prefixlen, addresses):
        addresses_list = [addr.address_with_prefixlen for addr in addresses]
        assert address_with_prefixlen not in addresses_list
コード例 #2
0
ファイル: ip_address_test.py プロジェクト: asasuou/vdsm
class IPAddressTest(VdsmTestCase):
    IPAddress = address.driver(address.Drivers.IPROUTE2)

    def test_add_delete_ipv4(self):
        self._test_add_delete(IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN)

    @broken_on_ci("IPv6 not supported on travis", name="TRAVIS_CI")
    def test_add_delete_ipv6(self):
        self._test_add_delete(IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN)

    @broken_on_ci("IPv6 not supported on travis", name="TRAVIS_CI")
    def test_add_delete_ipv4_ipv6(self):
        self._test_add_delete(IPV4_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN)

    def _test_add_delete(self, ip_a, ip_b):
        with dummy_device() as nic:
            ip_a_data = address.IPAddressData(ip_a, device=nic)
            ip_b_data = address.IPAddressData(ip_b, device=nic)

            IPAddressTest.IPAddress.add(ip_a_data)
            self._assert_has_address(nic, ip_a)

            IPAddressTest.IPAddress.add(ip_b_data)
            self._assert_has_address(nic, ip_a)
            self._assert_has_address(nic, ip_b)

            IPAddressTest.IPAddress.delete(ip_b_data)
            self._assert_has_address(nic, ip_a)
            self._assert_has_no_address(nic, ip_b)

            IPAddressTest.IPAddress.delete(ip_a_data)
            self._assert_has_no_address(nic, ip_a)
            self._assert_has_no_address(nic, ip_b)

    def test_add_with_non_existing_device_ipv4(self):
        self._test_add_with_non_existing_device(IPV4_A_WITH_PREFIXLEN)

    def test_add_with_non_existing_device_ipv6(self):
        self._test_add_with_non_existing_device(IPV6_A_WITH_PREFIXLEN)

    def _test_add_with_non_existing_device(self, ip):
        with self.assertRaises(address.IPAddressAddError):
            IPAddressTest.IPAddress.add(
                address.IPAddressData(ip, device='tim the enchanter'))

    def test_delete_non_existing_ipv4(self):
        self._test_delete_non_existing_ip(IPV4_A_WITH_PREFIXLEN)

    def test_delete_non_existing_ipv6(self):
        self._test_delete_non_existing_ip(IPV6_A_WITH_PREFIXLEN)

    def _test_delete_non_existing_ip(self, ip):
        with dummy_device() as nic:
            with self.assertRaises(address.IPAddressDeleteError):
                IPAddressTest.IPAddress.delete(
                    address.IPAddressData(ip, device=nic))

    def test_list_ipv4(self):
        self._test_list(
            ipv4_addresses=[IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN],
            ipv6_addresses=[])

    @broken_on_ci("IPv6 not supported on travis", name="TRAVIS_CI")
    def test_list_ipv6(self):
        self._test_list(
            ipv4_addresses=[],
            ipv6_addresses=[IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN])

    @broken_on_ci("IPv6 not supported on travis", name="TRAVIS_CI")
    def test_list_ipv4_ipv6(self):
        self._test_list(ipv4_addresses=[IPV4_A_WITH_PREFIXLEN],
                        ipv6_addresses=[IPV6_B_WITH_PREFIXLEN])

    def _test_list(self, ipv4_addresses, ipv6_addresses):
        with dummy_device() as nic:
            for addr in itertools.chain.from_iterable(
                [ipv4_addresses, ipv6_addresses]):
                IPAddressTest.IPAddress.add(
                    address.IPAddressData(addr, device=nic))

            all_addrs = list(IPAddressTest.IPAddress.addresses())
            ipv4_addrs = list(IPAddressTest.IPAddress.addresses(family=4))
            ipv6_addrs = list(IPAddressTest.IPAddress.addresses(family=6))

        for addr in ipv4_addresses:
            self._assert_address_in(addr, all_addrs)
            self._assert_address_in(addr, ipv4_addrs)

        for addr in ipv6_addresses:
            self._assert_address_in(addr, all_addrs)
            self._assert_address_in(addr, ipv6_addrs)

    def _test_list_by_device_ipv4_ipv4(self):
        self._test_list_by_device(IPV4_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN)

    def _test_list_by_device_ipv4_ipv6(self):
        self._test_list_by_device(IPV4_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN)

    def _test_list_by_device_ipv6_ipv4(self):
        self._test_list_by_device(IPV6_A_WITH_PREFIXLEN, IPV4_B_WITH_PREFIXLEN)

    def _test_list_by_device_ipv6_ipv6(self):
        self._test_list_by_device(IPV6_A_WITH_PREFIXLEN, IPV6_B_WITH_PREFIXLEN)

    def _test_list_by_device(self, ip_a_with_device, ip_b):
        with dummy_devices(2) as (nic1, nic2):
            IPAddressTest.IPAddress.add(
                address.IPAddressData(ip_a_with_device, device=nic1))
            IPAddressTest.IPAddress.add(
                address.IPAddressData(ip_b, device=nic2))

            addresses = list(IPAddressTest.IPAddress.addresses(device=nic1))
            self._assert_address_in(ip_a_with_device, addresses)
            self._assert_address_not_in(ip_b, addresses)

    def _assert_has_address(self, device, address_with_prefixlen):
        addresses = IPAddressTest.IPAddress.addresses(device)
        self._assert_address_in(address_with_prefixlen, addresses)

    def _assert_has_no_address(self, device, address_with_prefixlen):
        addresses = IPAddressTest.IPAddress.addresses(device)
        self._assert_address_not_in(address_with_prefixlen, addresses)

    def _assert_address_in(self, address_with_prefixlen, addresses):
        addresses_list = [addr.address_with_prefixlen for addr in addresses]
        self.assertIn(address_with_prefixlen, addresses_list)

    def _assert_address_not_in(self, address_with_prefixlen, addresses):
        addresses_list = [addr.address_with_prefixlen for addr in addresses]
        self.assertNotIn(address_with_prefixlen, addresses_list)
コード例 #3
0
ファイル: net_with_bond_test.py プロジェクト: emesika/vdsm
# Refer to the README and COPYING files for full details of the license
#

import pytest

from vdsm.network import errors as ne
from vdsm.network.configurators.ifcfg import ifup, ifdown
from vdsm.network.ip import address
from vdsm.network.link.bond import Bond
from vdsm.network.link.iface import iface

from . import netfunctestlib as nftestlib
from .netfunctestlib import SetupNetworksError, NOCHK
from network.nettestlib import dummy_device, vlan_device

IPAddress = address.driver(address.Drivers.IPROUTE2)

NETWORK1_NAME = 'test-network1'
NETWORK2_NAME = 'test-network2'
BOND_NAME = 'bond1'
VLAN1 = 10
VLAN2 = 20


@pytest.fixture
def nic0():
    with dummy_device() as nic:
        yield nic


@pytest.fixture
コード例 #4
0
ファイル: net_with_bond_test.py プロジェクト: nirs/vdsm
import six

import pytest

from vdsm.network import errors as ne
from vdsm.network.configurators.ifcfg import ifup, ifdown
from vdsm.network.ip import address
from vdsm.network.link.bond import Bond
from vdsm.network.link.iface import iface

from . import netfunctestlib as nftestlib
from .netfunctestlib import NetFuncTestAdapter, SetupNetworksError, NOCHK
from network.nettestlib import dummy_device, dummy_devices, vlan_device

IPAddress = address.driver(address.Drivers.IPROUTE2)

NETWORK1_NAME = 'test-network1'
NETWORK2_NAME = 'test-network2'
BOND_NAME = 'bond1'
VLAN1 = 10
VLAN2 = 20


adapter = None


@pytest.fixture(scope='module', autouse=True)
def create_adapter(target):
    global adapter
    adapter = NetFuncTestAdapter(target)