mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 06:50:17 +00:00
tests: add protodown topotest using sharpd
Add a protodown topotest using sharpd. Signed-off-by: Stephen Worley <sworley@nvidia.com>
This commit is contained in:
parent
e4d87b5894
commit
0605d4b846
@ -31,6 +31,7 @@ import sys
|
|||||||
from functools import partial
|
from functools import partial
|
||||||
import pytest
|
import pytest
|
||||||
import json
|
import json
|
||||||
|
import platform
|
||||||
|
|
||||||
# Save the Current Working Directory to find configuration files.
|
# Save the Current Working Directory to find configuration files.
|
||||||
CWD = os.path.dirname(os.path.realpath(__file__))
|
CWD = os.path.dirname(os.path.realpath(__file__))
|
||||||
@ -45,6 +46,20 @@ from time import sleep
|
|||||||
|
|
||||||
|
|
||||||
pytestmark = [pytest.mark.sharpd]
|
pytestmark = [pytest.mark.sharpd]
|
||||||
|
krel = platform.release()
|
||||||
|
|
||||||
|
|
||||||
|
def config_macvlan(tgen, r_str, device, macvlan):
|
||||||
|
"Creates specified macvlan interace on physical device"
|
||||||
|
|
||||||
|
if topotest.version_cmp(krel, "5.1") < 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
router = tgen.gears[r_str]
|
||||||
|
router.run(
|
||||||
|
"ip link add {} link {} type macvlan mode bridge".format(macvlan, device)
|
||||||
|
)
|
||||||
|
router.run("ip link set {} up".format(macvlan))
|
||||||
|
|
||||||
|
|
||||||
def setup_module(mod):
|
def setup_module(mod):
|
||||||
@ -62,6 +77,8 @@ def setup_module(mod):
|
|||||||
TopoRouter.RD_SHARP, os.path.join(CWD, "{}/sharpd.conf".format(rname))
|
TopoRouter.RD_SHARP, os.path.join(CWD, "{}/sharpd.conf".format(rname))
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Macvlan interface for protodown func test */
|
||||||
|
config_macvlan(tgen, "r1", "r1-eth0", "r1-eth0-macvlan")
|
||||||
# Initialize all routers.
|
# Initialize all routers.
|
||||||
tgen.start_router()
|
tgen.start_router()
|
||||||
|
|
||||||
@ -269,6 +286,46 @@ def test_route_map_usage():
|
|||||||
assert ok, result
|
assert ok, result
|
||||||
|
|
||||||
|
|
||||||
|
def test_protodown():
|
||||||
|
"Run protodown basic functionality test and report results."
|
||||||
|
pdown = False
|
||||||
|
count = 0
|
||||||
|
tgen = get_topogen()
|
||||||
|
if topotest.version_cmp(krel, "5.1") < 0:
|
||||||
|
tgen.errors = "kernel 5.1 needed for protodown tests"
|
||||||
|
pytest.skip(tgen.errors)
|
||||||
|
|
||||||
|
r1 = tgen.gears["r1"]
|
||||||
|
|
||||||
|
# Set interface protodown on
|
||||||
|
r1.vtysh_cmd("sharp interface r1-eth0-macvlan protodown")
|
||||||
|
|
||||||
|
# Timeout to wait for dplane to handle it
|
||||||
|
while count < 10:
|
||||||
|
count += 1
|
||||||
|
output = r1.vtysh_cmd("show interface r1-eth0-macvlan")
|
||||||
|
if re.search(r"protodown reasons:.*sharp", output):
|
||||||
|
pdown = True
|
||||||
|
break
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
assert pdown is True, "Interface r1-eth0-macvlan not set protodown"
|
||||||
|
|
||||||
|
# Set interface protodown off
|
||||||
|
r1.vtysh_cmd("no sharp interface r1-eth0-macvlan protodown")
|
||||||
|
|
||||||
|
# Timeout to wait for dplane to handle it
|
||||||
|
while count < 10:
|
||||||
|
count += 1
|
||||||
|
output = r1.vtysh_cmd("show interface r1-eth0-macvlan")
|
||||||
|
if not re.search(r"protodown reasons:.*sharp", output):
|
||||||
|
pdown = False
|
||||||
|
break
|
||||||
|
sleep(1)
|
||||||
|
|
||||||
|
assert pdown is False, "Interface r1-eth0-macvlan not set protodown off"
|
||||||
|
|
||||||
|
|
||||||
def test_memory_leak():
|
def test_memory_leak():
|
||||||
"Run the memory leak test and report results."
|
"Run the memory leak test and report results."
|
||||||
tgen = get_topogen()
|
tgen = get_topogen()
|
||||||
|
Loading…
Reference in New Issue
Block a user