summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorandroid-build-team Robot <android-build-team-robot@google.com>2020-05-28 01:15:23 +0000
committerandroid-build-team Robot <android-build-team-robot@google.com>2020-05-28 01:15:23 +0000
commite09848b8a4f3a4fdecb3e3f1f54082aa802f4f5b (patch)
tree4e89fe4575db7e202bccb2e259e84d4df9520638
parent95682a4f2f6eabc681e977f004e6eae7b12df33c (diff)
parent0e828863e126e303303cba74a2d54e7a695a3a14 (diff)
downloadtests-android11-d1-s5-release.tar.gz
Change-Id: Ie214e8fce6cfd17b38168b6c8c3a9120bfdb3a13
-rwxr-xr-xnet/test/all_tests.py5
-rw-r--r--net/test/namespace.py21
2 files changed, 24 insertions, 2 deletions
diff --git a/net/test/all_tests.py b/net/test/all_tests.py
index 5f6c583..17d9701 100755
--- a/net/test/all_tests.py
+++ b/net/test/all_tests.py
@@ -18,6 +18,8 @@ import importlib
import sys
import unittest
+import namespace
+
test_modules = [
'anycast_test',
'bpf_test',
@@ -46,6 +48,9 @@ test_modules = [
]
if __name__ == '__main__':
+ # Check whether ADB over TCP is occupying TCP port 5555.
+ if namespace.HasEstablishedTcpSessionOnPort(5555):
+ namespace.IfPossibleEnterNewNetworkNamespace()
# First, run InjectTests on all modules, to ensure that any parameterized
# tests in those modules are injected.
for name in test_modules:
diff --git a/net/test/namespace.py b/net/test/namespace.py
index 986fb59..85db654 100644
--- a/net/test/namespace.py
+++ b/net/test/namespace.py
@@ -19,8 +19,11 @@
import ctypes
import ctypes.util
import os
+import socket
import net_test
+import sock_diag
+import tcp_test
# //include/linux/fs.h
MNT_FORCE = 1 # Attempt to forcibily umount
@@ -76,7 +79,7 @@ def Mount(src, tgt, fs, flags=MS_NODEV|MS_NOEXEC|MS_NOSUID|MS_RELATIME):
ret = libc.mount(src, tgt, fs, flags, None)
if ret < 0:
errno = ctypes.get_errno()
- raise OSError(errno, '%s mounting %s on %s (fs=%s flags=%x)'
+ raise OSError(errno, '%s mounting %s on %s (fs=%s flags=0x%x)'
% (os.strerror(errno), src, tgt, fs, flags))
@@ -105,7 +108,7 @@ def UnShare(flags):
ret = libc.unshare(flags)
if ret < 0:
errno = ctypes.get_errno()
- raise OSError(errno, '%s while unshare(%x)' % (os.strerror(errno), flags))
+ raise OSError(errno, '%s while unshare(0x%x)' % (os.strerror(errno), flags))
def DumpMounts(hdr):
@@ -146,3 +149,17 @@ def IfPossibleEnterNewNetworkNamespace():
print 'succeeded.'
return True
+
+
+def HasEstablishedTcpSessionOnPort(port):
+ sd = sock_diag.SockDiag()
+
+ sock_id = sd._EmptyInetDiagSockId()
+ sock_id.sport = port
+
+ states = 1 << tcp_test.TCP_ESTABLISHED
+
+ matches = sd.DumpAllInetSockets(socket.IPPROTO_TCP, "",
+ sock_id=sock_id, states=states)
+
+ return len(matches) > 0