summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2014-04-21 14:13:06 +0900
committerLorenzo Colitti <lorenzo@google.com>2015-02-02 17:47:26 +0900
commitf3b5413c600aadb8b56dbbfdb761ffb582166eb0 (patch)
tree4a4e53efa1fa02aadc61ca75f4c79222fb3254f1 /tests
parent7a799dc4db3d08e3308af6fc1e7a1fa1e404442c (diff)
downloadextras-f3b5413c600aadb8b56dbbfdb761ffb582166eb0.tar.gz
Add a test for UID routing configuration.
Change-Id: I79914799c653ccd5326368652a93d441f0565a3c
Diffstat (limited to 'tests')
-rwxr-xr-xtests/net_test/mark_test.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/tests/net_test/mark_test.py b/tests/net_test/mark_test.py
index efae54d7..730caf90 100755
--- a/tests/net_test/mark_test.py
+++ b/tests/net_test/mark_test.py
@@ -1098,5 +1098,62 @@ class PMTUTest(MultiNetworkTest):
self.assertEquals(1280, self.GetSocketMTU(s))
+class UidRoutingTest(net_test.NetworkTest):
+
+ def setUp(self):
+ self.iproute = iproute.IPRoute()
+
+ @staticmethod
+ def Random():
+ return random.randint(100 * 1000, 200 * 1000)
+
+ def GetRules(self, version, priority):
+ rules = self.iproute.DumpRules(version)
+ out = [(rule, attributes) for rule, attributes in rules
+ if attributes.get(iproute.FRA_PRIORITY, 0) == priority]
+ return out
+
+ def CheckInitialTablesHaveNoUIDs(self, version):
+ rules = []
+ for priority in [0, 32766, 32767]:
+ rules.extend(self.GetRules(version, priority))
+ for _, attributes in rules:
+ self.assertNotIn(iproute.EXPERIMENTAL_FRA_UID_START, attributes)
+ self.assertNotIn(iproute.EXPERIMENTAL_FRA_UID_END, attributes)
+
+ def testIPv4InitialTablesHaveNoUIDs(self):
+ self.CheckInitialTablesHaveNoUIDs(4)
+
+ def testIPv6InitialTablesHaveNoUIDs(self):
+ self.CheckInitialTablesHaveNoUIDs(6)
+
+ def CheckGetAndSetRules(self, version):
+ priority = self.Random()
+ start, end = tuple(sorted([self.Random(), self.Random()]))
+ table = self.Random()
+ self.iproute.UidRangeRule(version, True, start, end, table,
+ priority=priority)
+
+ try:
+ rules = self.GetRules(version, priority)
+ self.assertTrue(rules)
+ _, attributes = rules[-1]
+ self.assertEquals(priority, attributes[iproute.FRA_PRIORITY])
+ self.assertEquals(start, attributes[iproute.EXPERIMENTAL_FRA_UID_START])
+ self.assertEquals(end, attributes[iproute.EXPERIMENTAL_FRA_UID_END])
+ self.assertEquals(table, attributes[iproute.FRA_TABLE])
+ finally:
+ self.iproute.UidRangeRule(version, False, start, end, table,
+ priority=priority)
+
+ @unittest.skipUnless(HAVE_EXPERIMENTAL_UID_ROUTING, "no UID routing")
+ def testIPv4GetAndSetRules(self):
+ self.CheckGetAndSetRules(4)
+
+ @unittest.skipUnless(HAVE_EXPERIMENTAL_UID_ROUTING, "no UID routing")
+ def testIPv6GetAndSetRules(self):
+ self.CheckGetAndSetRules(6)
+
+
if __name__ == "__main__":
unittest.main()