bgp_l3vpn_to_bgp_vrf: 2nd try at skipping tests when MPLS not available

Signed-off-by: Lou Berger <lberger@labn.net>
This commit is contained in:
Lou Berger 2018-02-01 09:42:40 -05:00 committed by Donald Sharp
parent 2015a49715
commit 85c81f9540

View File

@ -74,6 +74,7 @@ r3-eth1 .3 | | .3 r3-eth0 | .4 r4-eth0
""" """
import os import os
import re
import sys import sys
import pytest import pytest
@ -91,6 +92,8 @@ CWD = os.path.dirname(os.path.realpath(__file__))
# test name based on directory # test name based on directory
TEST = os.path.basename(CWD) TEST = os.path.basename(CWD)
MplsInit = False
class ThisTestTopo(Topo): class ThisTestTopo(Topo):
"Test topology builder" "Test topology builder"
def build(self, *_args, **_opts): def build(self, *_args, **_opts):
@ -101,7 +104,14 @@ class ThisTestTopo(Topo):
# between routers, switches and hosts. # between routers, switches and hosts.
# #
# Create P/PE routers # Create P/PE routers
for routern in range(1, 5): #check for mpls - there may be a better way to check...
tgen.add_router('r1')
if os.path.exists('/proc/sys/net/mpls/conf') != True:
logger.info('MPLS not available, tests will be skipped')
return
global MplsInit
MplsInit = True
for routern in range(2, 5):
tgen.add_router('r{}'.format(routern)) tgen.add_router('r{}'.format(routern))
# Create CE routers # Create CE routers
for routern in range(1, 5): for routern in range(1, 5):
@ -129,14 +139,21 @@ class ThisTestTopo(Topo):
switch[1].add_link(tgen.gears['r2'], nodeif='r2-eth2') switch[1].add_link(tgen.gears['r2'], nodeif='r2-eth2')
switch[1].add_link(tgen.gears['r3'], nodeif='r3-eth1') switch[1].add_link(tgen.gears['r3'], nodeif='r3-eth1')
def doCmd(tgen, rtr, cmd): def doCmd(tgen, rtr, cmd, checkstr = None):
output = tgen.net[rtr].cmd(cmd).strip() output = tgen.net[rtr].cmd(cmd).strip()
if len(output): if len(output):
if checkstr != None:
return re.search(checkstr, output)
logger.info('command output: ' + output) logger.info('command output: ' + output)
return None
def ltemplatePreRouterStartHook(): def ltemplatePreRouterStartHook():
tgen = get_topogen() tgen = get_topogen()
logger.info('pre router-start hook') logger.info('pre router-start hook')
#check for mpls
if MplsInit == False:
logger.info('MPLS not available, skipping setup')
return
#configure r2 mpls interfaces #configure r2 mpls interfaces
intfs = ['lo', 'r2-eth0', 'r2-eth1', 'r2-eth2'] intfs = ['lo', 'r2-eth0', 'r2-eth1', 'r2-eth2']
for intf in intfs: for intf in intfs:
@ -148,9 +165,7 @@ def ltemplatePreRouterStartHook():
'ip ru add iif cust1 table 10', 'ip ru add iif cust1 table 10',
'ip link set dev cust1 up'] 'ip link set dev cust1 up']
for rtr in rtrs: for rtr in rtrs:
if router.has_mpls() == False: router = tgen.gears[rtr]
logger.info('MPLS not supported, test will be skipped')
return
for cmd in cmds: for cmd in cmds:
doCmd(tgen, rtr, cmd) doCmd(tgen, rtr, cmd)
doCmd(tgen, rtr, 'ip link set dev {}-eth4 master cust1'.format(rtr)) doCmd(tgen, rtr, 'ip link set dev {}-eth4 master cust1'.format(rtr))
@ -183,8 +198,8 @@ def versionCheck(vstr, rname='r1', compstr='<',cli=False):
router = tgen.gears[rname] router = tgen.gears[rname]
if router.has_mpls() == False: if MplsInit == False:
ret = 'MPLS not supported' ret = 'MPLS not initialized'
return ret return ret
ret = True ret = True