diff options
author | Lorenzo Colitti <lorenzo@google.com> | 2018-02-26 19:43:04 +0900 |
---|---|---|
committer | Lorenzo Colitti <lorenzo@google.com> | 2018-02-26 19:43:04 +0900 |
commit | 000a9cac14c7a85af4fb5bf49962e785dc736cb7 (patch) | |
tree | 54fdd75b76c545109af6fe83a46029401321b2f9 | |
parent | 9d73b138cb69496454cb1c66cd0c4af08b425142 (diff) | |
download | tests-000a9cac14c7a85af4fb5bf49962e785dc736cb7.tar.gz |
Make sock_diag_test.py pass on 4.9 devices that don't have SCTP.
The test code currently checks that we can see marks set on SCTP
sockets. This doesn't work on devices that don't have SCTP. This
has never been a problem on VM tests because the VM tests enable
the SCTP config option.
Bug: 36510518
Test: sock_diag_test.py passes on android-4.9
Test: sock_diag tests pass on 4.9 device
Change-Id: I82fd77939be549a0b2c6a2ab0395b66e7b2bdc80
-rwxr-xr-x | net/test/sock_diag_test.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/net/test/sock_diag_test.py b/net/test/sock_diag_test.py index 5a7bf18..9419587 100755 --- a/net/test/sock_diag_test.py +++ b/net/test/sock_diag_test.py @@ -36,6 +36,7 @@ NUM_SOCKETS = 30 NO_BYTECODE = "" HAVE_SO_COOKIE_SUPPORT = net_test.LINUX_VERSION >= (4, 9, 0) +IPPROTO_SCTP = 132 def HaveUdpDiag(): # There is no way to tell whether a dump succeeded: if the appropriate handler @@ -50,8 +51,18 @@ def HaveUdpDiag(): s.close() return have_udp_diag +def HaveSctp(): + if net_test.LINUX_VERSION < (4, 7, 0): + return False + try: + s = socket(AF_INET, SOCK_STREAM, IPPROTO_SCTP) + s.close() + return True + except IOError: + return False HAVE_UDP_DIAG = HaveUdpDiag() +HAVE_SCTP = HaveSctp() class SockDiagBaseTest(multinetwork_base.MultiNetworkBaseTest): @@ -899,8 +910,6 @@ class SockDiagMarkTest(tcp_test.TcpBaseTest, SockDiagBaseTest): d545cac net: inet: diag: expose the socket mark to privileged processes. """ - IPPROTO_SCTP = 132 - def FilterEstablishedSockets(self, mark, mask): instructions = [(sock_diag.INET_DIAG_BC_MARK_COND, 1, 2, (mark, mask))] bytecode = self.sock_diag.PackBytecode(instructions) @@ -1023,14 +1032,13 @@ class SockDiagMarkTest(tcp_test.TcpBaseTest, SockDiagBaseTest): s.close() # Basic test for SCTP. sctp_diag was only added in 4.7. - if net_test.LINUX_VERSION >= (4, 7, 0): - s = socket(family, SOCK_STREAM, self.IPPROTO_SCTP) + if HAVE_SCTP: + s = socket(family, SOCK_STREAM, IPPROTO_SCTP) s.bind((addr, 0)) s.listen(1) mark = self.SetRandomMark(s) self.assertSocketMarkIs(s, mark) - sockets = self.sock_diag.DumpAllInetSockets(self.IPPROTO_SCTP, - NO_BYTECODE) + sockets = self.sock_diag.DumpAllInetSockets(IPPROTO_SCTP, NO_BYTECODE) self.assertEqual(1, len(sockets)) self.assertEqual(mark, sockets[0][1].get("INET_DIAG_MARK", None)) s.close() |