def METHOD_NAME():
    tgen = get_topogen()
    if tgen.routers_have_failure():
        pytest.skip(tgen.errors)
    def _bgp_converge(router):
        output = json.loads(
            tgen.gears[router].vtysh_cmd("show ip bgp neighbor 192.168.255.1 json")
        )
        expected = {"192.168.255.1": {"bgpState": "Established"}}
        return topotest.json_cmp(output, expected)
    def _bgp_has_routes(router):
        output = json.loads(
            tgen.gears[router].vtysh_cmd(
                "show ip bgp neighbor 192.168.255.1 routes json"
            )
        )
        expected = {"routes": {"172.16.255.254/32": [{"valid": True}]}}
        return topotest.json_cmp(output, expected)
    def _bgp_advertised_routes(router):
        output = json.loads(
            tgen.gears[router].vtysh_cmd(
                "show ip bgp neighbor 192.168.255.2 advertised-routes json"
            )
        )
        expected = {
            "advertisedRoutes": {},
            "totalPrefixCounter": 0,
            "filteredPrefixCounter": 0,
        }
        return topotest.json_cmp(output, expected)
    # Scenario 1.
    logger.info("Scenario 1: r2 receives 192.168.255.1/32 from r1")
    test_func = functools.partial(_bgp_converge, "r2")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "Failed bgp convergence (r2)"
    test_func = functools.partial(_bgp_has_routes, "r2")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "r2 does not receive 192.168.255.1/32"
    # Scenario 2.
    logger.info("Scenario 2: r3 must not send 192.168.255.1/32 to r4")
    test_func = functools.partial(_bgp_converge, "r4")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "Failed bgp convergence (r4)"
    test_func = functools.partial(_bgp_advertised_routes, "r3")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "r3 announced 192.168.255.1/32 to r4"
    # Scenario 3.
    logger.info("Scenario 3: r6 receives 192.168.255.1/32 from r5 (iBGP)")
    test_func = functools.partial(_bgp_converge, "r6")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "Failed bgp convergence (r6)"
    test_func = functools.partial(_bgp_has_routes, "r6")
    success, result = topotest.run_and_expect(test_func, None, count=120, wait=0.5)
    assert success is True, "r6 does not receive 192.168.255.1/32"