), "Failed overriding incoming AS-PATH with route-map replace with configured ASN"
+def test_bgp_set_aspath_replace_access_list():
+ tgen = get_topogen()
+
+ if tgen.routers_have_failure():
+ pytest.skip(tgen.errors)
+
+ rname = "r1"
+ r1 = tgen.gears[rname]
+
+ r1.vtysh_cmd(
+ """
+conf
+ bgp as-path access-list FIRST permit ^65
+ route-map r2 permit 20
+ set as-path replace as-path-access-list FIRST 65002
+ """
+ )
+
+ expected = {
+ "routes": {
+ "172.16.255.31/32": [{"path": "65002 65500"}],
+ "172.16.255.32/32": [{"path": "65002 65002"}],
+ }
+ }
+
+ def _bgp_regexp_1(router):
+ output = json.loads(router.vtysh_cmd("show bgp ipv4 unicast json"))
+
+ return topotest.json_cmp(output, expected)
+
+ test_func = functools.partial(_bgp_regexp_1, tgen.gears["r1"])
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+
+ assert result is None, "Failed overriding incoming AS-PATH with regex 1 route-map"
+ r1.vtysh_cmd(
+ """
+conf
+ bgp as-path access-list SECOND permit 2
+ route-map r2 permit 10
+ set as-path replace as-path-access-list SECOND 65001
+ """
+ )
+
+ expected = {
+ "routes": {
+ "172.16.255.31/32": [{"path": "65001 65003"}],
+ "172.16.255.32/32": [{"path": "65002 65002"}],
+ }
+ }
+
+ test_func = functools.partial(_bgp_regexp_1, tgen.gears["r1"])
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+
+ assert result is None, "Failed overriding incoming AS-PATH with regex 2 route-map"
+
+ r1.vtysh_cmd(
+ """
+conf
+ bgp as-path access-list TER permit 3
+ route-map r2 permit 10
+ set as-path replace as-path-access-list TER
+ """
+ )
+ expected = {
+ "routes": {
+ "172.16.255.31/32": [{"path": "65002 65001"}],
+ "172.16.255.32/32": [{"path": "65002 65002"}],
+ }
+ }
+
+ test_func = functools.partial(_bgp_regexp_1, tgen.gears["r1"])
+ _, result = topotest.run_and_expect(test_func, None, count=30, wait=0.5)
+
+ assert result is None, "Failed overriding incoming AS-PATH with regex 3 route-map"
+
+
if __name__ == "__main__":
args = ["-s"] + sys.argv[1:]
sys.exit(pytest.main(args))