summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYan Yan <evitayan@google.com>2021-03-31 19:15:21 -0700
committerMaciej Żenczykowski <maze@google.com>2021-04-02 14:47:02 +0000
commitc3bc6d71b3525ce39caccf096053e2acb31d5d0c (patch)
tree7d8eb8f1424f5a2cc90e06779c6d49e21d5cb233
parent0552a1bbdf3b4df56a32156198a809073d0862f1 (diff)
downloadtests-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.py13
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: