diff options
author | Donatas Abraitis <donatas.abraitis@gmail.com> | 2020-01-18 22:25:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-18 22:25:56 +0100 |
commit | 9e1ecdbaa402b9dbd7ac1f6c916ff6d9eb2eb946 (patch) | |
tree | 654d97332cfe81a22edd814d91b8cc1f79cebdae /tests | |
parent | Merge pull request #5703 from ton31337/feature/limit_outgoing_prefixes (diff) | |
parent | tests: Add another router to the basic pim tests (diff) | |
download | frr-9e1ecdbaa402b9dbd7ac1f6c916ff6d9eb2eb946.tar.xz frr-9e1ecdbaa402b9dbd7ac1f6c916ff6d9eb2eb946.zip |
Merge pull request #5707 from donaldsharp/nexthop_encoding
Nexthop encoding
Diffstat (limited to 'tests')
-rw-r--r-- | tests/topotests/pim-basic/r1/bgpd.conf | 3 | ||||
-rw-r--r-- | tests/topotests/pim-basic/r1/pimd.conf | 9 | ||||
-rw-r--r-- | tests/topotests/pim-basic/r1/rp-info.json | 9 | ||||
-rw-r--r-- | tests/topotests/pim-basic/r1/zebra.conf | 3 | ||||
-rw-r--r-- | tests/topotests/pim-basic/rp/bgpd.conf | 3 | ||||
-rw-r--r-- | tests/topotests/pim-basic/rp/pimd.conf | 9 | ||||
-rw-r--r-- | tests/topotests/pim-basic/rp/upstream.json | 17 | ||||
-rw-r--r-- | tests/topotests/pim-basic/rp/zebra.conf | 8 | ||||
-rw-r--r-- | tests/topotests/pim-basic/test_pim.py | 54 |
9 files changed, 112 insertions, 3 deletions
diff --git a/tests/topotests/pim-basic/r1/bgpd.conf b/tests/topotests/pim-basic/r1/bgpd.conf new file mode 100644 index 000000000..8acaac96a --- /dev/null +++ b/tests/topotests/pim-basic/r1/bgpd.conf @@ -0,0 +1,3 @@ +router bgp 65001 + neighbor 10.0.30.3 remote-as external + redistribute connected diff --git a/tests/topotests/pim-basic/r1/pimd.conf b/tests/topotests/pim-basic/r1/pimd.conf index 5740c66e2..cec765699 100644 --- a/tests/topotests/pim-basic/r1/pimd.conf +++ b/tests/topotests/pim-basic/r1/pimd.conf @@ -2,9 +2,12 @@ hostname r1 ! interface r1-eth0 ip igmp - ip pim sm + ip pim +! +interface r1-eth1 + ip pim ! interface lo - ip pim sm + ip pim ! -ip pim rp 10.254.0.1 +ip pim rp 10.254.0.3 diff --git a/tests/topotests/pim-basic/r1/rp-info.json b/tests/topotests/pim-basic/r1/rp-info.json new file mode 100644 index 000000000..1f713c2d2 --- /dev/null +++ b/tests/topotests/pim-basic/r1/rp-info.json @@ -0,0 +1,9 @@ +{ + "10.254.0.3":[ + { + "outboundInterface":"r1-eth1", + "group":"224.0.0.0\/4", + "source":"Static" + } + ] +} diff --git a/tests/topotests/pim-basic/r1/zebra.conf b/tests/topotests/pim-basic/r1/zebra.conf index 2bf71294d..b0a25f12a 100644 --- a/tests/topotests/pim-basic/r1/zebra.conf +++ b/tests/topotests/pim-basic/r1/zebra.conf @@ -3,6 +3,9 @@ hostname r1 interface r1-eth0 ip address 10.0.20.1/24 ! +interface r1-eth1 + ip address 10.0.30.1/24 +! interface lo ip address 10.254.0.1/32 ! diff --git a/tests/topotests/pim-basic/rp/bgpd.conf b/tests/topotests/pim-basic/rp/bgpd.conf new file mode 100644 index 000000000..6b16c067a --- /dev/null +++ b/tests/topotests/pim-basic/rp/bgpd.conf @@ -0,0 +1,3 @@ +router bgp 65003 + neighbor 10.0.30.1 remote-as external + redistribute connected diff --git a/tests/topotests/pim-basic/rp/pimd.conf b/tests/topotests/pim-basic/rp/pimd.conf new file mode 100644 index 000000000..3f1b4d65c --- /dev/null +++ b/tests/topotests/pim-basic/rp/pimd.conf @@ -0,0 +1,9 @@ +hostname rp +! +interface rp-eth0 + ip pim +! +interface lo + ip pim +! +ip pim rp 10.254.0.3 diff --git a/tests/topotests/pim-basic/rp/upstream.json b/tests/topotests/pim-basic/rp/upstream.json new file mode 100644 index 000000000..c33dea49e --- /dev/null +++ b/tests/topotests/pim-basic/rp/upstream.json @@ -0,0 +1,17 @@ +{ + "229.1.1.1":{ + "10.0.20.2":{ + "sourceStream":true, + "inboundInterface":"rp-eth0", + "rpfAddress":"10.0.20.2", + "source":"10.0.20.2", + "group":"229.1.1.1", + "state":"NotJ", + "joinState":"NotJoined", + "regState":"RegNoInfo", + "resetTimer":"--:--:--", + "refCount":1, + "sptBit":0 + } + } +} diff --git a/tests/topotests/pim-basic/rp/zebra.conf b/tests/topotests/pim-basic/rp/zebra.conf new file mode 100644 index 000000000..0a1359ecd --- /dev/null +++ b/tests/topotests/pim-basic/rp/zebra.conf @@ -0,0 +1,8 @@ +hostname rp +! +interface rp-eth0 + ip address 10.0.30.3/24 +! +interface lo + ip address 10.254.0.3/32 +! diff --git a/tests/topotests/pim-basic/test_pim.py b/tests/topotests/pim-basic/test_pim.py index 6d54b8f2f..0e0569e23 100644 --- a/tests/topotests/pim-basic/test_pim.py +++ b/tests/topotests/pim-basic/test_pim.py @@ -28,6 +28,8 @@ test_pim.py: Test pim import os import sys import pytest +import json +from functools import partial CWD = os.path.dirname(os.path.realpath(__file__)) sys.path.append(os.path.join(CWD, '../')) @@ -47,11 +49,27 @@ class PIMTopo(Topo): for routern in range(1, 3): tgen.add_router('r{}'.format(routern)) + tgen.add_router('rp') + + # r1 -> .1 + # r2 -> .2 + # rp -> .3 + # loopback network is 10.254.0.X/32 + # # r1 <- sw1 -> r2 + # r1-eth0 <-> r2-eth0 + # 10.0.20.0/24 sw = tgen.add_switch('sw1') sw.add_link(tgen.gears['r1']) sw.add_link(tgen.gears['r2']) + # r1 <- sw2 -> rp + # r1-eth1 <-> rp-eth0 + # 10.0.30.0/24 + sw = tgen.add_switch('sw2') + sw.add_link(tgen.gears['r1']) + sw.add_link(tgen.gears['rp']) + def setup_module(mod): "Sets up the pytest environment" @@ -68,9 +86,14 @@ def setup_module(mod): TopoRouter.RD_PIM, os.path.join(CWD, '{}/pimd.conf'.format(rname)) ) + router.load_config( + TopoRouter.RD_BGP, + os.path.join(CWD, '{}/bgpd.conf'.format(rname)) + ) # After loading the configurations, this function loads configured daemons. tgen.start_router() + #tgen.mininet_cli() def teardown_module(mod): @@ -80,6 +103,22 @@ def teardown_module(mod): # This function tears down the whole topology. tgen.stop_topology() +def test_pim_rp_setup(): + "Ensure basic routing has come up and the rp has an outgoing interface" + #Ensure rp and r1 establish pim neighbor ship and bgp has come up + #Finally ensure that the rp has an outgoing interface on r1 + tgen = get_topogen() + + r1 = tgen.gears['r1'] + json_file = '{}/{}/rp-info.json'.format(CWD, r1.name) + expected = json.loads(open(json_file).read()) + + test_func = partial(topotest.router_json_cmp, + r1, 'show ip pim rp-info json', expected) + _, result = topotest.run_and_expect(test_func, None, count=15, wait=5) + assertmsg = '"{}" JSON output mismatches'.format(r1.name) + assert result is None, assertmsg + #tgen.mininet_cli() def test_pim_send_mcast_stream(): "Establish a Multicast stream from r2 -> r1 and then ensure S,G is created as appropriate" @@ -90,6 +129,7 @@ def test_pim_send_mcast_stream(): if tgen.routers_have_failure(): pytest.skip(tgen.errors) + rp = tgen.gears['rp'] r2 = tgen.gears['r2'] r1 = tgen.gears['r1'] @@ -111,7 +151,21 @@ def test_pim_send_mcast_stream(): } assert topotest.json_cmp(out, expected) is None, 'failed to converge pim' + #tgen.mininet_cli() + +def test_pim_rp_sees_stream(): + "Ensure that the RP sees the stream and has acted accordingly" + tgen = get_topogen() + + rp = tgen.gears['rp'] + json_file = '{}/{}/upstream.json'.format(CWD, rp.name) + expected = json.loads(open(json_file).read()) + test_func = partial(topotest.router_json_cmp, + rp, 'show ip pim upstream json', expected) + _, result = topotest.run_and_expect(test_func, None, count=20, wait=.5) + assertmsg = '"{}" JSON output mismatches'.format(rp.name) + assert result is None, assertmsg def test_pim_igmp_report(): "Send a igmp report from r2->r1 and ensure that the *,G state is created on r1" |