summaryrefslogtreecommitdiff
path: root/tests/topotests/bgp_ipv6_rtadv
diff options
context:
space:
mode:
authorPhilippe Guibert <philippe.guibert@6wind.com>2025-01-17 17:26:50 +0100
committerPhilippe Guibert <philippe.guibert@6wind.com>2025-01-20 09:32:28 +0100
commit50928a93c67ef505a5cab5baeb8820cc40d75dde (patch)
tree40b221e5c32731a1002232fabb1b8bfcfd47076d /tests/topotests/bgp_ipv6_rtadv
parent0bf47adc64b05736285fe392365b8733b6f7c507 (diff)
topotests: bgp_ipv6_rtadv, add control over bgp updates
Add a test to control the json values of the incoming BGP update received by an unnumbered BGP. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
Diffstat (limited to 'tests/topotests/bgp_ipv6_rtadv')
-rw-r--r--tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json35
-rw-r--r--tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json35
-rw-r--r--tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py39
3 files changed, 109 insertions, 0 deletions
diff --git a/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json
new file mode 100644
index 0000000000..affe5cf8df
--- /dev/null
+++ b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv4_routes.json
@@ -0,0 +1,35 @@
+{
+ "vrfId": 0,
+ "vrfName": "default",
+ "routerId": "10.254.254.1",
+ "defaultLocPrf": 100,
+ "localAS": 101,
+ "routes": {
+ "10.254.254.2/32": [{
+ "valid": true,
+ "bestpath": true,
+ "selectionReason":"First path received",
+ "pathFrom":"external",
+ "prefix":"10.254.254.2",
+ "prefixLen":32,
+ "network":"10.254.254.2/32",
+ "metric":0,
+ "weight":0,
+ "path":"102",
+ "origin":"incomplete",
+ "nexthops":[{
+ "ip":"2001:db8:1::2",
+ "hostname":"r2",
+ "afi":"ipv6",
+ "scope":"global"
+ },{
+ "interface":"r1-eth0",
+ "hostname":"r2",
+ "afi":"ipv6",
+ "scope":"link-local",
+ "used":true
+ }]}]
+ },
+ "totalRoutes": 2,
+ "totalPaths": 2
+}
diff --git a/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json
new file mode 100644
index 0000000000..bccfb45771
--- /dev/null
+++ b/tests/topotests/bgp_ipv6_rtadv/r1/bgp_ipv6_routes.json
@@ -0,0 +1,35 @@
+{
+ "vrfId": 0,
+ "vrfName": "default",
+ "routerId": "10.254.254.1",
+ "defaultLocPrf": 100,
+ "localAS": 101,
+ "routes": {
+ "2001:db8:1::/64": [{
+ "valid":true,
+ "bestpath":true,
+ "selectionReason":"First path received",
+ "pathFrom":"external",
+ "prefix":"2001:db8:1::",
+ "prefixLen":64,
+ "network":"2001:db8:1::/64",
+ "metric":0,
+ "weight":0,
+ "path":"102",
+ "origin":"incomplete",
+ "nexthops":[{
+ "ip":"2001:db8:1::2",
+ "hostname":"r2",
+ "afi":"ipv6",
+ "scope":"global"
+ },{
+ "interface":"r1-eth0",
+ "hostname":"r2",
+ "afi":"ipv6",
+ "scope":"link-local",
+ "used":true
+ }]}]
+ },
+ "totalRoutes": 1,
+ "totalPaths": 1
+}
diff --git a/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py b/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py
index 045ac91fc7..5992c30116 100644
--- a/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py
+++ b/tests/topotests/bgp_ipv6_rtadv/test_bgp_ipv6_rtadv.py
@@ -75,6 +75,45 @@ def teardown_module(_mod):
def test_protocols_convergence():
"""
+ Assert that BGP protocol has converged
+ by checking the incoming BGP updates have been received.
+ """
+ tgen = get_topogen()
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ # Check BGP IPv4 routing table.
+ logger.info("Checking BGP IPv4 routes for convergence")
+ router = tgen.gears["r1"]
+
+ json_file = "{}/{}/bgp_ipv4_routes.json".format(CWD, router.name)
+ expected = json.loads(open(json_file).read())
+ test_func = partial(
+ topotest.router_json_cmp,
+ router,
+ "show bgp ipv4 json",
+ expected,
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5)
+ assertmsg = '"{}" JSON output mismatches'.format(router.name)
+ assert result is None, assertmsg
+
+ # Check BGP IPv6 routing table.
+ json_file = "{}/{}/bgp_ipv6_routes.json".format(CWD, router.name)
+ expected = json.loads(open(json_file).read())
+ test_func = partial(
+ topotest.router_json_cmp,
+ router,
+ "show bgp ipv6 json",
+ expected,
+ )
+ _, result = topotest.run_and_expect(test_func, None, count=160, wait=0.5)
+ assertmsg = '"{}" JSON output mismatches'.format(router.name)
+ assert result is None, assertmsg
+
+
+def test_route_convergence():
+ """
Assert that all protocols have converged
statuses as they depend on it.
"""