]> git.puffer.fish Git - mirror/frr.git/commitdiff
tests: Check if default-originate works combined with peer-groups + route-maps 14966/head
authorDonatas Abraitis <donatas@opensourcerouting.org>
Fri, 8 Dec 2023 10:11:34 +0000 (12:11 +0200)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Fri, 8 Dec 2023 10:41:44 +0000 (12:41 +0200)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
tests/topotests/bgp_default_route_route_map_set/r1/bgpd.conf
tests/topotests/bgp_default_route_route_map_set/r1/zebra.conf
tests/topotests/bgp_default_route_route_map_set/r2/bgpd.conf
tests/topotests/bgp_default_route_route_map_set/r2/zebra.conf
tests/topotests/bgp_default_route_route_map_set/r3/bgpd.conf [new file with mode: 0644]
tests/topotests/bgp_default_route_route_map_set/r3/zebra.conf [new file with mode: 0644]
tests/topotests/bgp_default_route_route_map_set/test_bgp_default-originate_route-map_set.py

index 6f6d39440235fd08b19ad5034fe91188626a697a..c442e06a63b26d3fd52acb216972c9ba14d8c541 100644 (file)
@@ -1,12 +1,17 @@
-router bgp 65000
-  no bgp ebgp-requires-policy
-  neighbor 192.168.255.2 remote-as 65001
-  neighbor 192.168.255.2 timers 3 10
-  address-family ipv4 unicast
-    neighbor 192.168.255.2 default-originate route-map default
-  exit-address-family
+router bgp 65001
+ no bgp ebgp-requires-policy
+ neighbor 192.168.255.2 remote-as external
+ neighbor 192.168.255.2 timers 3 10
+ neighbor PG peer-group
+ neighbor PG remote-as external
+ neighbor PG timers 3 10
+ bgp listen range 192.168.255.0/24 peer-group PG
+ address-family ipv4 unicast
+  neighbor PG default-originate route-map default
+  neighbor 192.168.255.2 default-originate route-map default
+ exit-address-family
 !
 route-map default permit 10
 set metric 123
-  set as-path prepend 65000 65000 65000
+ set metric 123
+ set as-path prepend 65001 65001 65001
 !
index 0a283c06d57c15d87fe3c0a2807105fbe1f4a21b..4af88e523c8a3657e941723d1945f31fef181979 100644 (file)
@@ -5,5 +5,3 @@ interface lo
 interface r1-eth0
  ip address 192.168.255.1/24
 !
-ip forwarding
-!
index 00c96cc58b2c16d80859d8ca60a715da5e7ca8fb..3a18a113865be771fe648d769ba40dbda4410e1b 100644 (file)
@@ -1,8 +1,8 @@
-router bgp 65001
 no bgp ebgp-requires-policy
-  neighbor 192.168.255.1 remote-as 65000
 neighbor 192.168.255.1 timers 3 10
 address-family ipv4 unicast
-    redistribute connected
 exit-address-family
+router bgp 65002
+ no bgp ebgp-requires-policy
+ neighbor 192.168.255.1 remote-as external
+ neighbor 192.168.255.1 timers 3 10
+ address-family ipv4 unicast
+  redistribute connected
+ exit-address-family
 !
index 606c17bec9c148f89f77c57d1de058d90fdf1b44..c03dd7e197af29dc1d4ee6a1c8a837e097140340 100644 (file)
@@ -2,5 +2,3 @@
 interface r2-eth0
  ip address 192.168.255.2/24
 !
-ip forwarding
-!
diff --git a/tests/topotests/bgp_default_route_route_map_set/r3/bgpd.conf b/tests/topotests/bgp_default_route_route_map_set/r3/bgpd.conf
new file mode 100644 (file)
index 0000000..c477037
--- /dev/null
@@ -0,0 +1,8 @@
+router bgp 65003
+ no bgp ebgp-requires-policy
+ neighbor 192.168.255.1 remote-as external
+ neighbor 192.168.255.1 timers 3 10
+ address-family ipv4 unicast
+  redistribute connected
+ exit-address-family
+!
diff --git a/tests/topotests/bgp_default_route_route_map_set/r3/zebra.conf b/tests/topotests/bgp_default_route_route_map_set/r3/zebra.conf
new file mode 100644 (file)
index 0000000..5ae9daf
--- /dev/null
@@ -0,0 +1,4 @@
+!
+interface r3-eth0
+ ip address 192.168.255.3/24
+!
index 3bd900bda03762d97dd3f575dbb1c56effd7a283..e633b61d1b0300b1e5fba86285c23f9fbc89acf2 100644 (file)
@@ -26,12 +26,13 @@ pytestmark = [pytest.mark.bgpd]
 
 
 def build_topo(tgen):
-    for routern in range(1, 3):
+    for routern in range(1, 4):
         tgen.add_router("r{}".format(routern))
 
     switch = tgen.add_switch("s1")
     switch.add_link(tgen.gears["r1"])
     switch.add_link(tgen.gears["r2"])
+    switch.add_link(tgen.gears["r3"])
 
 
 def setup_module(mod):
@@ -62,14 +63,17 @@ def test_bgp_default_originate_route_map():
     if tgen.routers_have_failure():
         pytest.skip(tgen.errors)
 
-    router = tgen.gears["r2"]
+    r2 = tgen.gears["r2"]
+    r3 = tgen.gears["r3"]
 
-    def _bgp_converge(router):
+    def _bgp_converge(router, pfxCount):
         output = json.loads(router.vtysh_cmd("show ip bgp neighbor 192.168.255.1 json"))
         expected = {
             "192.168.255.1": {
                 "bgpState": "Established",
-                "addressFamilyInfo": {"ipv4Unicast": {"acceptedPrefixCounter": 1}},
+                "addressFamilyInfo": {
+                    "ipv4Unicast": {"acceptedPrefixCounter": pfxCount}
+                },
             }
         }
         return topotest.json_cmp(output, expected)
@@ -77,21 +81,25 @@ def test_bgp_default_originate_route_map():
     def _bgp_default_route_has_metric(router):
         output = json.loads(router.vtysh_cmd("show ip bgp 0.0.0.0/0 json"))
         expected = {
-            "paths": [{"aspath": {"string": "65000 65000 65000 65000"}, "metric": 123}]
+            "paths": [{"aspath": {"string": "65001 65001 65001 65001"}, "metric": 123}]
         }
         return topotest.json_cmp(output, expected)
 
-    test_func = functools.partial(_bgp_converge, router)
-    success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+    test_func = functools.partial(_bgp_converge, r2, 1)
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "Failed to see bgp convergence in r2"
 
-    assert result is None, 'Failed to see bgp convergence in "{}"'.format(router)
+    test_func = functools.partial(_bgp_default_route_has_metric, r2)
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "Failed to see applied metric for default route in r2"
 
-    test_func = functools.partial(_bgp_default_route_has_metric, router)
-    success, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+    test_func = functools.partial(_bgp_converge, r3, 2)
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "Failed to see bgp convergence in r3"
 
-    assert (
-        result is None
-    ), 'Failed to see applied metric for default route in "{}"'.format(router)
+    test_func = functools.partial(_bgp_default_route_has_metric, r3)
+    _, result = topotest.run_and_expect(test_func, None, count=30, wait=1)
+    assert result is None, "Failed to see applied metric for default route in r3"
 
 
 if __name__ == "__main__":