summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLorenzo Colitti <lorenzo@google.com>2018-02-26 19:43:04 +0900
committerLorenzo Colitti <lorenzo@google.com>2018-02-26 19:43:04 +0900
commit000a9cac14c7a85af4fb5bf49962e785dc736cb7 (patch)
tree54fdd75b76c545109af6fe83a46029401321b2f9
parent9d73b138cb69496454cb1c66cd0c4af08b425142 (diff)
downloadtests-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-xnet/test/sock_diag_test.py20
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()