diff options
author | Yan Yan <evitayan@google.com> | 2021-03-31 19:15:21 -0700 |
---|---|---|
committer | Maciej Żenczykowski <maze@google.com> | 2021-04-02 14:47:02 +0000 |
commit | c3bc6d71b3525ce39caccf096053e2acb31d5d0c (patch) | |
tree | 7d8eb8f1424f5a2cc90e06779c6d49e21d5cb233 | |
parent | 0552a1bbdf3b4df56a32156198a809073d0862f1 (diff) | |
download | tests-c3bc6d71b3525ce39caccf096053e2acb31d5d0c.tar.gz |
Ignore ICMPv6 packets in _ExpectEspPacketOnandroid-s-beta-2android-s-beta-1
This patch ignores ICMPv6 packet in _ExpectEspPacketOn to
deflake xfrm_tunnel_test.
xfrm_tunnel_test was flaky in checking outbound ESP packet
because _ExpectEspPacketOn only expected one outbound packet but
sometimes the test would also sent out
ICMPv6 (Multicast Listener Report Message v2) or
ICMPv6 (Neighbor Solicitation). This patch ignores ICMPv6 to
deflake the test.
Bug: 183604054
Test: Ran ARCH=um SUBARCH=x86_64 ./run_net_test.sh \n
--builder all_tests.sh on android-maineline for 50 times
and all tests passed.
Signed-off-by: Yan Yan <evitayan@google.com>
Change-Id: Ie4bd6f803b3327832498cde3aababe2aedce4733
-rw-r--r-- | net/test/xfrm_base.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/net/test/xfrm_base.py b/net/test/xfrm_base.py index 03e15c4..e61322e 100644 --- a/net/test/xfrm_base.py +++ b/net/test/xfrm_base.py @@ -270,6 +270,13 @@ def DecryptPacketWithNull(packet): class XfrmBaseTest(multinetwork_base.MultiNetworkBaseTest): """Base test class for all XFRM-related testing.""" + def _isIcmpv6(self, payload): + if not isinstance(payload, scapy.IPv6): + return False + if payload.nh == IPPROTO_ICMPV6: + return True + return payload.nh == IPPROTO_HOPOPTS and payload.payload.nh == IPPROTO_ICMPV6 + def _ExpectEspPacketOn(self, netid, spi, seq, length, src_addr, dst_addr): """Read a packet from a netid and verify its properties. @@ -284,7 +291,11 @@ class XfrmBaseTest(multinetwork_base.MultiNetworkBaseTest): Returns: scapy.IP/IPv6: the read packet """ - packets = self.ReadAllPacketsOn(netid) + packets = [] + for packet in self.ReadAllPacketsOn(netid): + if not self._isIcmpv6(packet): + packets.append(packet) + self.assertEqual(1, len(packets)) packet = packets[0] if length is not None: |