MCPcopy Create free account
hub / github.com/FDio/vpp / test_echo_fail

Method test_echo_fail

test/test_bfd.py:1733–1779  ·  view source on GitHub ↗

session goes down if echo function fails

(self)

Source from the content-addressed store, hash-verified

1731 )
1732
1733 def test_echo_fail(self):
1734 """session goes down if echo function fails"""
1735
1736 if self.multihop:
1737 self.skipTest(
1738 f"Skipping because echo functionality is not supported with multihop"
1739 )
1740
1741 bfd_session_up(self)
1742 self.test_session.update(required_min_echo_rx=150000)
1743 self.test_session.send_packet()
1744 detection_time = (
1745 self.test_session.detect_mult
1746 * self.vpp_session.required_min_rx
1747 / USEC_IN_SEC
1748 )
1749 self.vapi.bfd_udp_set_echo_source(sw_if_index=self.loopback0.sw_if_index)
1750 # echo function should be used now, but we will drop the echo packets
1751 verified_diag = False
1752 for dummy in range(3):
1753 loop_until = time.time() + 0.75 * detection_time
1754 while time.time() < loop_until:
1755 p = self.pg0.wait_for_packet(1)
1756 self.logger.debug(ppp("Got packet:", p))
1757 if p[UDP].dport == BFD.udp_dport_echo:
1758 # dropped
1759 pass
1760 elif p.haslayer(BFD):
1761 if "P" in p.sprintf("%BFD.flags%"):
1762 self.assertGreaterEqual(
1763 p[BFD].required_min_rx_interval, 1000000
1764 )
1765 final = self.test_session.create_packet()
1766 final[BFD].flags = "F"
1767 self.test_session.send_packet(final)
1768 if p[BFD].state == BFDState.down:
1769 self.assert_equal(
1770 p[BFD].diag, BFDDiagCode.echo_function_failed, BFDDiagCode
1771 )
1772 verified_diag = True
1773 else:
1774 raise Exception(ppp("Received unknown packet:", p))
1775 self.test_session.send_packet()
1776 events = self.vapi.collect_events()
1777 self.assert_equal(len(events), 1, "number of bfd events")
1778 self.assert_equal(events[0].state, BFDState.down, BFDState)
1779 self.assertTrue(verified_diag, "Incorrect diagnostics code received")
1780
1781 def test_echo_stop(self):
1782 """echo function stops if peer sets required min echo rx zero"""

Callers

nothing calls this directly

Calls 8

pppFunction · 0.90
bfd_session_upFunction · 0.85
collect_eventsMethod · 0.80
updateMethod · 0.45
send_packetMethod · 0.45
wait_for_packetMethod · 0.45
create_packetMethod · 0.45
assert_equalMethod · 0.45

Tested by

no test coverage detected