test_exabgp_demo.py::ExaBGPDemo

::startup
::prepare:#68:r2 ExaBGP (Start)
::prepare:#79:r3 ExaBGP (Start)
::bgp_check:#92:r1/bgpd/vtysh[show ip bgp summary json]
::exabgp_announcement:#99:r3 ExaBGP (Execute)
::exabgp_announcement:#121:r1/bgpd/vtysh[show ip bgp json]
::shutdown

::startup

passed after 1.12s
('test_exabgp_demo.py', -inf, 'startup')

::prepare

::prepare:#68:r2 ExaBGP (Start)

passed after 0.13s
('test_exabgp_demo.py', 68, '#68:r2 ExaBGP (Start)')

::prepare:#79:r3 ExaBGP (Start)

passed after 0.13s
('test_exabgp_demo.py', 79, '#79:r3 ExaBGP (Start)')

::bgp_check

::bgp_check:#92:r1/bgpd/vtysh[show ip bgp summary json]

passed after 0.20s, CLI command: show ip bgp summary json
Expected output:
{'ipv4Unicast': {'peers': {'10.101.0.2': {'state': 'Established'}, '10.101.0.3': {'state': 'Established'}}}}
('test_exabgp_demo.py', 92, '#92:r1/bgpd/vtysh[show ip bgp summary json]')

::exabgp_announcement

::exabgp_announcement:#99:r3 ExaBGP (Execute)

passed after 0.11s
('test_exabgp_demo.py', 99, '#99:r3 ExaBGP (Execute)')

::exabgp_announcement:#121:r1/bgpd/vtysh[show ip bgp json]

passed after 0.00s, CLI command: show ip bgp json
Expected output:
{'routes': {'100.10.0.0/24': [{'valid': True, 'network': '100.10.0.0/24', 'peerId': '10.101.0.3', 'path': '65002', 'origin': 'IGP', 'nexthops': [{'ip': '10.101.0.3'}]}]}}
('test_exabgp_demo.py', 121, '#121:r1/bgpd/vtysh[show ip bgp json]')

::shutdown

passed after 1.15s
('test_exabgp_demo.py', inf, 'shutdown')
net router-r1 r1 10.255.0.1/32 fd00::1/128 r1-s1 fe:01:00:bc:01:00 10.101.0.1/16 fdbc:1::fc01:ff:febc:100/64 lan-s1 s1 10.101.0.0/16 fdbc:1::/64 router-r1:r1-s1--lan-s1 router-r3 r3 10.255.0.3/32 fd00::3/128 r3-s1 fe:03:00:bc:01:00 10.101.0.3/16 fdbc:1::fc03:ff:febc:100/64 router-r3:r3-s1--lan-s1 router-r2 r2 10.255.0.2/32 fd00::2/128 r2-s1 fe:02:00:bc:01:00 10.101.0.2/16 fdbc:1::fc02:ff:febc:100/64 router-r2:r2-s1--lan-s1