-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tests: add test for northbound ordering fix
Signed-off-by: Christian Hopps <[email protected]>
- Loading branch information
Showing
2 changed files
with
75 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
log timestamp precision 6 | ||
log file frr.log | ||
|
||
interface r1-eth0 | ||
ip address 1.1.1.1/24 | ||
exit |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
# -*- coding: utf-8 eval: (blacken-mode 1) -*- | ||
# SPDX-License-Identifier: ISC | ||
# | ||
# February 24 2024, Christian Hopps <[email protected]> | ||
# | ||
# Copyright (c) 2024, LabN Consulting, L.L.C. | ||
# | ||
""" | ||
Test Northbound Config Operations | ||
""" | ||
import json | ||
import os | ||
|
||
import pytest | ||
from lib.topogen import Topogen | ||
from lib.topotest import json_cmp | ||
|
||
pytestmark = [pytest.mark.mgmtd] | ||
|
||
CWD = os.path.dirname(os.path.realpath(__file__)) | ||
|
||
|
||
@pytest.fixture(scope="module") | ||
def tgen(request): | ||
"Setup/Teardown the environment and provide tgen argument to tests" | ||
|
||
topodef = { | ||
"s1": ("r1",) | ||
} | ||
|
||
tgen = Topogen(topodef, request.module.__name__) | ||
tgen.start_topology() | ||
|
||
router_list = tgen.routers() | ||
for rname, router in router_list.items(): | ||
router.load_frr_config("frr.conf") | ||
|
||
tgen.start_router() | ||
yield tgen | ||
tgen.stop_topology() | ||
|
||
|
||
def test_access_list_config_ordering(tgen): | ||
if tgen.routers_have_failure(): | ||
pytest.skip(tgen.errors) | ||
|
||
r1 = tgen.gears["r1"] | ||
|
||
output = r1.vtysh_multicmd([ | ||
"conf t", | ||
"access-list test seq 1 permit host 10.0.0.1"]) | ||
output = r1.vtysh_cmd("show ip access-list test json") | ||
got = json.loads(output) | ||
expected = json.loads('{"ZEBRA":{"test":{"type":"Standard", "addressFamily":"IPv4", "rules":[{"sequenceNumber":1, "filterType":"permit", "address":"10.0.0.1", "mask":"0.0.0.0"}]}}}') | ||
result = json_cmp(got, expected) | ||
assert result is None | ||
|
||
# | ||
# If the northbound mis-orders the create/delete then this test fails. | ||
# https://github.com/FRRouting/frr/pull/15423/commits/38b85e0c2bc555b8827dbd2cb6515b6febf548b4 | ||
# | ||
output = r1.vtysh_multicmd([ | ||
"conf t", | ||
"access-list test seq 1 permit 10.0.0.0/8"]) | ||
output = r1.vtysh_cmd("show ip access-list test json") | ||
got = json.loads(output) | ||
expected = json.loads('{"ZEBRA":{"test":{"type":"Zebra", "addressFamily":"IPv4", "rules":[{"sequenceNumber":1, "filterType":"permit", "prefix":"10.0.0.0/8", "exact-match":false}]}}}') | ||
result = json_cmp(got, expected) | ||
assert result is None |