summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoel Scherpelz <jscherpelz@google.com>2017-03-06 07:01:29 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-03-06 07:01:29 +0000
commitde700d80a6871a22b6eb8de644232a034f848ef3 (patch)
tree1f4970a9786d735f0fe920265948b954f851ac60
parent7fda497bfbd15ed25463ed463c13986039837a47 (diff)
parent2dc877515d5cdda502608563e2937d8b8e3c5e3e (diff)
downloadtests-de700d80a6871a22b6eb8de644232a034f848ef3.tar.gz
Fix RIOTest.testZeroLengthPrefix breakage on 3.10 am: a6148e22f7
am: 2dc877515d Change-Id: I3963e1e0221e30ab28c7f662f71d502e52172ce7
-rwxr-xr-xnet/test/multinetwork_test.py29
1 files changed, 20 insertions, 9 deletions
diff --git a/net/test/multinetwork_test.py b/net/test/multinetwork_test.py
index f634d68..9afd906 100755
--- a/net/test/multinetwork_test.py
+++ b/net/test/multinetwork_test.py
@@ -43,6 +43,8 @@ TCP_MARK_ACCEPT_SYSCTL = "/proc/sys/net/ipv4/tcp_fwmark_accept"
# The IP[V6]UNICAST_IF socket option was added between 3.1 and 3.4.
HAVE_UNICAST_IF = net_test.LINUX_VERSION >= (3, 4, 0)
+MAX_PLEN_SYSCTL = "/proc/sys/net/ipv6/conf/default/accept_ra_rt_info_max_plen"
+HAVE_MAX_PLEN = os.path.isfile(MAX_PLEN_SYSCTL)
class ConfigurationError(AssertionError):
pass
@@ -612,13 +614,15 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
def GetRouteExpiration(self, route):
return float(route['RTA_CACHEINFO'].expires) / 100.0
+ @unittest.skipUnless(HAVE_MAX_PLEN and multinetwork_base.HAVE_AUTOCONF_TABLE,
+ "need support for RIO and per-table autoconf")
def testSetAcceptRaRtInfoMaxPlen(self):
for plen in xrange(-1, 130):
self.SetAcceptRaRtInfoMaxPlen(plen)
self.assertEquals(plen, self.GetAcceptRaRtInfoMaxPlen())
- @unittest.skipUnless(multinetwork_base.HAVE_AUTOCONF_TABLE,
- "no support for per-table autoconf")
+ @unittest.skipUnless(HAVE_MAX_PLEN and multinetwork_base.HAVE_AUTOCONF_TABLE,
+ "need support for RIO and per-table autoconf")
def testZeroRtLifetime(self):
PREFIX = "2001:db8:8901:2300::"
RTLIFETIME = 7372
@@ -631,8 +635,8 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
self.SendRIO(0, PLEN, PREFIX, PRF)
self.assertFalse(self.FindRoutesWithDestination(PREFIX))
- @unittest.skipUnless(multinetwork_base.HAVE_AUTOCONF_TABLE,
- "no support for per-table autoconf")
+ @unittest.skipUnless(HAVE_MAX_PLEN and multinetwork_base.HAVE_AUTOCONF_TABLE,
+ "need support for RIO and per-table autoconf")
def testMaxPrefixLenRejection(self):
PREFIX = "2001:db8:8901:2345::"
RTLIFETIME = 7372
@@ -644,8 +648,8 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
routes = self.FindRoutesWithDestination(PREFIX)
self.assertFalse(routes)
- @unittest.skipUnless(multinetwork_base.HAVE_AUTOCONF_TABLE,
- "no support for per-table autoconf")
+ @unittest.skipUnless(HAVE_MAX_PLEN and multinetwork_base.HAVE_AUTOCONF_TABLE,
+ "need support for RIO and per-table autoconf")
def testZeroLengthPrefix(self):
PREFIX = "::"
RTLIFETIME = self.RA_VALIDITY * 2
@@ -661,10 +665,17 @@ class RIOTest(multinetwork_base.MultiNetworkBaseTest):
self.SendRIO(RTLIFETIME, PLEN, PREFIX, PRF)
default = self.FindRoutesWithGateway()
self.assertTrue(default)
- self.assertGreater(self.GetRouteExpiration(default[0]), self.RA_VALIDITY)
+ if net_test.LINUX_VERSION < (3, 13, 0):
+ # Versions earlier than 3.13 overwrite the default route lifetime with
+ # zero and unset RTF_EXPIRES in rt6i_flags after receiving a RIO with a
+ # zero length prefix. Later versions explicitly check for a zero length
+ # prefix and handle that as a special case.
+ self.assertEquals(self.GetRouteExpiration(default[0]), 0)
+ else:
+ self.assertGreater(self.GetRouteExpiration(default[0]), self.RA_VALIDITY)
- @unittest.skipUnless(multinetwork_base.HAVE_AUTOCONF_TABLE,
- "no support for per-table autoconf")
+ @unittest.skipUnless(HAVE_MAX_PLEN and multinetwork_base.HAVE_AUTOCONF_TABLE,
+ "need support for RIO and per-table autoconf")
def testManyRIOs(self):
RTLIFETIME = 6809
PLEN = 56