예제 #1
0
    def test_mass_ipv6(self):
        #
        # Achtung! This test is time consuming.
        # It is really time consuming, I'm not not
        # kidding you. Beware.
        #
        require_user('root')
        ipv6net = allocate_network('ipv6')
        base = str(ipv6net.network) + '{0}'
        limit = int(os.environ.get('PYROUTE2_SLIMIT', '0x800'), 16)

        # add addresses
        for idx in range(limit):
            self.ip.addr('add', self.ifaces[0], base.format(hex(idx)[2:]), 48)

        # assert addresses in two steps, to ease debug
        addrs = self.ip.get_addr(10)
        assert len(addrs) >= limit

        # clean up addresses
        #
        # it is not required, but if you don't do that,
        # you'll get this on the interface removal:
        #
        # >> kernel:BUG: soft lockup - CPU#0 stuck for ...
        #
        # so, not to scare people, remove addresses gracefully
        # one by one
        #
        # it also verifies all the addresses are in place
        for idx in reversed(range(limit)):
            self.ip.addr('delete', self.ifaces[0], base.format(hex(idx)[2:]),
                         48)

        free_network(ipv6net, 'ipv6')
예제 #2
0
 def setup(self):
     require_user("root")
     self.l2tp = L2tp()
     self.log_id = str(uuid.uuid4())
     self.ndb = NDB(
         log="../ndb-%s-%s.log" % (os.getpid(), self.log_id),
         rtnl_debug=True,
     )
     self.netif = uifname()
     self.l2tpeth0 = uifname()
     self.localnet = allocate_network()
     self.remotenet = allocate_network()
     self.localrange = [str(x) for x in self.localnet]
     self.remoterange = [str(x) for x in self.remotenet]
     # create the "network" interface
     (self.ndb.interfaces.create(ifname=self.netif, kind="dummy").set(
         "state", "up").add_ip("%s/24" % (self.localrange[1])).commit())
예제 #3
0
파일: test_ndb.py 프로젝트: mmtj/pyroute2
 def setup(self):
     require_user('root')
     self.ipnets = [allocate_network() for _ in range(5)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    rtnl_log=True,
                    sources=self.nl_class(**self.nl_kwarg))
예제 #4
0
    def __init__(self, request, tmpdir, **kwarg):

        self.spec = SpecContextManager(request, tmpdir)
        self.netns = None
        #
        # the cleanup registry
        self.interfaces = {}
        self.namespaces = {}

        if 'log' not in kwarg:
            kwarg['log'] = self.spec.log_spec
        if 'rtnl_debug' not in kwarg:
            kwarg['rtnl_debug'] = True

        kind = 'local'
        self.table = None
        kwarg['db_provider'] = 'sqlite3'
        kwarg['db_spec'] = ':memory:'
        if hasattr(request, 'param'):
            if isinstance(request.param, ContextParams):
                kind = request.param.target
                self.table = request.param.table
                kwarg['db_provider'] = request.param.db_provider
                kwarg['db_spec'] = request.param.db_spec
            elif isinstance(request.param, (tuple, list)):
                kind, self.table = request.param
            else:
                kind = request.param

        if kind == 'local':
            sources = [{'target': 'localhost', 'kind': 'local'}]
        elif kind == 'netns':
            self.netns = self.new_nsname
            sources = [{
                'target': 'localhost',
                'kind': 'netns',
                'netns': self.netns
            }]
        else:
            sources = None

        if sources is not None:
            kwarg['sources'] = sources
        #
        # select the DB to work on
        db_name = os.environ.get('PYROUTE2_TEST_DBNAME')
        if isinstance(db_name, basestring) and len(db_name):
            kwarg['db_provider'] = 'psycopg2'
            kwarg['db_spec'] = {'dbname': db_name}
        #
        # this instance is to be tested, so do NOT use it
        # in utility methods
        self.ndb = NDB(**kwarg)
        self.ipr = self.ndb.sources['localhost'].nl.clone()
        #
        # IPAM
        self.ipnets = [allocate_network() for _ in range(5)]
        self.ipranges = [[str(x) for x in net] for net in self.ipnets]
예제 #5
0
 def setup(self):
     require_user('root')
     self.ipnets = [allocate_network() for _ in range(5)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    debug=True)
     self.ndb.log('../ndb-%s-%s.log' % (os.getpid(), id(self.ndb)))
     self.interfaces = []
예제 #6
0
 def setup(self):
     require_user('root')
     self.ipnets = [allocate_network() for _ in range(5)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    debug=True)
     self.ndb.log('../ndb-%s-%s.log' % (os.getpid(), id(self.ndb)))
     self.interfaces = []
예제 #7
0
 def setup(self):
     require_user('root')
     self.interfaces = []
     self.log_id = str(uuid.uuid4())
     self.ipnets = [allocate_network() for _ in range(2)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    log='../ndb-%s-%s.log' % (os.getpid(), self.log_id),
                    debug=True)
예제 #8
0
 def setup(self):
     self.ip = IPRoute()
     self.ipnets = [allocate_network() for _ in range(3)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ifaces = []
     self.ifnames = []
     try:
         self.dev, idx = self.create()
     except IndexError:
         pass
예제 #9
0
 def setup(self):
     self.ip = IPRoute()
     self.ipnets = [allocate_network() for _ in range(3)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.ifaces = []
     self.ifnames = []
     try:
         self.dev, idx = self.create()
     except IndexError:
         pass
예제 #10
0
 def setup(self):
     require_user('root')
     self.netns = str(uuid.uuid4())
     self.ipnets = [allocate_network() for _ in range(3)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.sources = [{'target': 'localhost'}, {'netns': self.netns}]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    sources=self.sources,
                    debug=True)
     self.ndb.log('../ndb-%s-%s.log' % (os.getpid(), id(self.ndb)))
예제 #11
0
 def setup(self):
     require_user('root')
     self.netns = str(uuid.uuid4())
     self.ipnets = [allocate_network() for _ in range(3)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.sources = [{'target': 'localhost'},
                     {'netns': self.netns}]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    sources=self.sources,
                    debug=True)
     self.ndb.log('../ndb-%s-%s.log' % (os.getpid(), id(self.ndb)))
예제 #12
0
 def setup(self):
     require_user('root')
     self.ipnets = []
     self.wg = WireGuard()
     self.log_id = uifname()
     self.ndb = NDB(log='../ndb-%s-%s.log' % (os.getpid(), self.log_id),
                    rtnl_debug=True)
     self.netif = uifname()
     self.wg0if = uifname()
     self.wg1if = uifname()
     self.ifnames = [self.netif, self.wg0if, self.wg1if]
     self.ipnets.append(allocate_network())
     self.ipnets.append(allocate_network())
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     # create the "network" interface
     (self.ndb.interfaces.create(ifname=self.netif, kind='dummy').set(
         'state', 'up').add_ip('%s/24' % (self.ipranges[0][1])).commit())
     # create one peer
     (self.ndb.interfaces.create(ifname=self.wg0if, kind='wireguard').set(
         'state', 'up').add_ip('%s/24' % (self.ipranges[1][1])).commit())
     # create another peer
     (self.ndb.interfaces.create(ifname=self.wg1if, kind='wireguard').set(
         'state', 'up').add_ip('%s/24' % (self.ipranges[1][2])).commit())
예제 #13
0
 def setup(self):
     require_user('root')
     self.log_id = str(uuid.uuid4())
     self.netns = str(uuid.uuid4())
     self.ipnets = [allocate_network() for _ in range(3)]
     self.ipranges = [[str(x) for x in net] for net in self.ipnets]
     self.sources = [{'target': 'localhost'},
                     {'netns': self.netns},
                     {'target': 'localhost/netns',
                      'kind': 'nsmanager'}]
     self.ndb = NDB(db_provider=self.db_provider,
                    db_spec=self.db_spec,
                    sources=self.sources,
                    log='../ndb-%s-%s.log' % (os.getpid(), self.log_id),
                    rtnl_debug=True,
                    auto_netns=True)
예제 #14
0
    def test_mass_ipv6(self):
        #
        # Achtung! This test is time consuming.
        # It is really time consuming, I'm not not
        # kidding you. Beware.
        #
        require_user('root')
        ipv6net = allocate_network('ipv6')
        base = str(ipv6net.network) + '{0}'
        limit = int(os.environ.get('PYROUTE2_SLIMIT', '0x800'), 16)

        # add addresses
        for idx in range(limit):
            self.ip.addr('add', self.ifaces[0],
                         base.format(hex(idx)[2:]), 48)

        # assert addresses in two steps, to ease debug
        addrs = self.ip.get_addr(10)
        assert len(addrs) >= limit

        # clean up addresses
        #
        # it is not required, but if you don't do that,
        # you'll get this on the interface removal:
        #
        # >> kernel:BUG: soft lockup - CPU#0 stuck for ...
        #
        # so, not to scare people, remove addresses gracefully
        # one by one
        #
        # it also verifies all the addresses are in place
        for idx in reversed(range(limit)):
            self.ip.addr('delete', self.ifaces[0],
                         base.format(hex(idx)[2:]), 48)

        free_network(ipv6net, 'ipv6')
예제 #15
0
 def test_route_mpls_via_ipv6(self):
     ipv6net = allocate_network('ipv6')
     address = str(ipv6net.network) + '7c32'
     self._test_route_mpls_via_ipv(socket.AF_INET6, address, 0x20)
     free_network(ipv6net, 'ipv6')
예제 #16
0
 def setup(self):
     self.ipnet = allocate_network()
     self.iprange = [str(x) for x in self.ipnet]
예제 #17
0
 def test_route_mpls_via_ipv6(self):
     ipv6net = allocate_network('ipv6')
     address = str(ipv6net.network) + '7c32'
     self._test_route_mpls_via_ipv(socket.AF_INET6, address, 0x20)
     free_network(ipv6net, 'ipv6')