Port kernel networking tests to Python 3.

Bug: 203436762
Bug: 243057700
Test: atest vts_kernel_net_tests, UML tests
Change-Id: I69c03747656790e39ba8c128652821e2b51c7b60
diff --git a/net/test/Android.bp b/net/test/Android.bp
index 62972f5..0844ce7 100644
--- a/net/test/Android.bp
+++ b/net/test/Android.bp
@@ -16,35 +16,35 @@
 }
 
 
-// Main target used for VTS tests. Still uses Python 2.
+// Legacy Python 2 target.
+// Will be deleted once the Python 3 target gets some soak time.
+python_test {
+    name: "vts_kernel_net_tests_python2",
+    defaults: ["kernel_net_tests_defaults"],
+    version: {
+        py2: {
+            embedded_launcher: true,
+            enabled: true,
+        },
+        py3: {
+            enabled: false,
+        },
+    },
+}
+
+// Main target used for VTS tests.
 python_test {
     name: "vts_kernel_net_tests",
     defaults: ["kernel_net_tests_defaults"],
     version: {
         py2: {
-            embedded_launcher: true,
-            enabled: true,
+            enabled: false,
         },
         py3: {
-            enabled: false,
+            embedded_launcher: true,
+            enabled: true,
         },
     },
     test_config: "vts_kernel_net_tests.xml",
     test_suites: ["vts", "general-tests"],
 }
-
-// Python 3 target for development only.
-// TODO: switch the main target to Python 3.
-python_test {
-    name: "vts_kernel_net_tests_python3",
-    defaults: ["kernel_net_tests_defaults"],
-    version: {
-        py2: {
-            enabled: false,
-        },
-        py3: {
-            embedded_launcher: true,
-            enabled: true,
-        },
-    },
-}
diff --git a/net/test/all_tests.py b/net/test/all_tests.py
index a764a1d..158c746 100755
--- a/net/test/all_tests.py
+++ b/net/test/all_tests.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2018 The Android Open Source Project
 #
diff --git a/net/test/all_tests.sh b/net/test/all_tests.sh
index 63576b0..aa63cdd 100755
--- a/net/test/all_tests.sh
+++ b/net/test/all_tests.sh
@@ -18,6 +18,10 @@
 readonly RETRIES=2
 test_prefix=
 
+# The tests currently have hundreds of ResourceWarnings that make it hard
+# to see errors/failures. Disable this warning for now.
+export PYTHONWARNINGS="ignore::ResourceWarning"
+
 function checkArgOrExit() {
   if [[ $# -lt 2 ]]; then
     echo "Missing argument for option $1" >&2
diff --git a/net/test/anycast_test.py b/net/test/anycast_test.py
index 6222580..f9382d8 100755
--- a/net/test/anycast_test.py
+++ b/net/test/anycast_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
diff --git a/net/test/bpf.py b/net/test/bpf.py
index 1b3747e..41f19eb 100755
--- a/net/test/bpf.py
+++ b/net/test/bpf.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/bpf_test.py b/net/test/bpf_test.py
index c6b37ac..291e540 100755
--- a/net/test/bpf_test.py
+++ b/net/test/bpf_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/csocket_test.py b/net/test/csocket_test.py
index 49c5dba..57afaa9 100755
--- a/net/test/csocket_test.py
+++ b/net/test/csocket_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/cstruct_test.py b/net/test/cstruct_test.py
index da684c6..b96e8bc 100755
--- a/net/test/cstruct_test.py
+++ b/net/test/cstruct_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/forwarding_test.py b/net/test/forwarding_test.py
index b35e19f..3bd7f59 100755
--- a/net/test/forwarding_test.py
+++ b/net/test/forwarding_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
diff --git a/net/test/genetlink.py b/net/test/genetlink.py
index aa46726..d250ce1 100755
--- a/net/test/genetlink.py
+++ b/net/test/genetlink.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/iproute.py b/net/test/iproute.py
index 4483d93..d61698c 100644
--- a/net/test/iproute.py
+++ b/net/test/iproute.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
diff --git a/net/test/leak_test.py b/net/test/leak_test.py
index 65d3cb0..0e72c21 100755
--- a/net/test/leak_test.py
+++ b/net/test/leak_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/multinetwork_base.py b/net/test/multinetwork_base.py
index ce10365..7dc3576 100644
--- a/net/test/multinetwork_base.py
+++ b/net/test/multinetwork_base.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
@@ -59,6 +59,10 @@
 HAVE_AUTOCONF_TABLE = os.path.isfile(AUTOCONF_TABLE_SYSCTL)
 
 
+class ConfigurationError(AssertionError):
+  pass
+
+
 class UnexpectedPacketError(AssertionError):
   pass
 
diff --git a/net/test/multinetwork_test.py b/net/test/multinetwork_test.py
index 03d2048..8996fab 100755
--- a/net/test/multinetwork_test.py
+++ b/net/test/multinetwork_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
@@ -41,9 +41,6 @@
 SYNCOOKIES_SYSCTL = "/proc/sys/net/ipv4/tcp_syncookies"
 TCP_MARK_ACCEPT_SYSCTL = "/proc/sys/net/ipv4/tcp_fwmark_accept"
 
-class ConfigurationError(AssertionError):
-  pass
-
 
 class OutgoingTest(multinetwork_base.MultiNetworkBaseTest):
 
diff --git a/net/test/namespace.py b/net/test/namespace.py
index 80fcb51..916d152 100644
--- a/net/test/namespace.py
+++ b/net/test/namespace.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2020 The Android Open Source Project
 #
diff --git a/net/test/neighbour_test.py b/net/test/neighbour_test.py
index 536f3c8..ac15897 100755
--- a/net/test/neighbour_test.py
+++ b/net/test/neighbour_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
diff --git a/net/test/net_test.py b/net/test/net_test.py
index 29685e7..ff9bc6b 100644
--- a/net/test/net_test.py
+++ b/net/test/net_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
@@ -349,10 +349,18 @@
 
 
 def RunIptablesCommand(version, args):
-  iptables = {4: "iptables", 6: "ip6tables"}[version]
-  iptables_path = "/sbin/" + iptables
-  if not os.access(iptables_path, os.X_OK):
-    iptables_path = "/system/bin/" + iptables
+  if version == 4:
+    iptables_path = "/sbin/iptables"
+    if not os.access(iptables_path, os.X_OK):
+      iptables_path = "/system/bin/iptables"
+  elif version == 6:
+    iptables_path = "/sbin/ip6tables-legacy"
+    if not os.access(iptables_path, os.X_OK):
+      iptables_path = "/system/bin/ip6tables-legacy"
+    if not os.access(iptables_path, os.X_OK):
+      iptables_path = "/sbin/ip6tables"
+    if not os.access(iptables_path, os.X_OK):
+      iptables_path = "/system/bin/ip6tables"
   return os.spawnvp(os.P_WAIT, iptables_path, [iptables_path] + args.split(" "))
 
 # Determine network configuration.
diff --git a/net/test/net_test.sh b/net/test/net_test.sh
index 49ac8f8..7185fd5 100755
--- a/net/test/net_test.sh
+++ b/net/test/net_test.sh
@@ -120,9 +120,9 @@
 
   # In kernel/include/uapi/linux/random.h RNDADDENTROPY is defined as
   # _IOW('R', 0x03, int[2]) =(R is 0x52)= 0x40085203 = 1074287107
-  /usr/bin/python 3>/dev/random <<EOF
-import fcntl, struct
-rnd = '${entropy}'.decode('base64')
+  /usr/bin/python3 3>/dev/random <<EOF
+import base64, fcntl, struct
+rnd = base64.b64decode('${entropy}')
 fcntl.ioctl(3, 0x40085203, struct.pack('ii', len(rnd) * 8, len(rnd)) + rnd)
 EOF
 
diff --git a/net/test/netlink.py b/net/test/netlink.py
index ae3b885..2360400 100644
--- a/net/test/netlink.py
+++ b/net/test/netlink.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
diff --git a/net/test/netlink_test.py b/net/test/netlink_test.py
index 1aa6b0b..98de3ae 100755
--- a/net/test/netlink_test.py
+++ b/net/test/netlink_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2022 The Android Open Source Project
 #
diff --git a/net/test/nf_test.py b/net/test/nf_test.py
index cd6c976..8cc283f 100755
--- a/net/test/nf_test.py
+++ b/net/test/nf_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2018 The Android Open Source Project
 #
diff --git a/net/test/packets.py b/net/test/packets.py
index 701d689..2a2ca1e 100644
--- a/net/test/packets.py
+++ b/net/test/packets.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
diff --git a/net/test/parameterization_test.py b/net/test/parameterization_test.py
index 8f9e130..3b1951e 100755
--- a/net/test/parameterization_test.py
+++ b/net/test/parameterization_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2018 The Android Open Source Project
 #
diff --git a/net/test/pf_key.py b/net/test/pf_key.py
index ef0d831..cc8e76c 100755
--- a/net/test/pf_key.py
+++ b/net/test/pf_key.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/pf_key_test.py b/net/test/pf_key_test.py
index 52981a7..77cf82c 100755
--- a/net/test/pf_key_test.py
+++ b/net/test/pf_key_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/ping6_test.py b/net/test/ping6_test.py
index fbfa652..d7cc35c 100755
--- a/net/test/ping6_test.py
+++ b/net/test/ping6_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
diff --git a/net/test/policy_crash_test.py b/net/test/policy_crash_test.py
index 2771475..dbd6892 100755
--- a/net/test/policy_crash_test.py
+++ b/net/test/policy_crash_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2019 The Android Open Source Project
 #
diff --git a/net/test/removed_feature_test.py b/net/test/removed_feature_test.py
index beaa894..d47824b 100755
--- a/net/test/removed_feature_test.py
+++ b/net/test/removed_feature_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/resilient_rs_test.py b/net/test/resilient_rs_test.py
index f029e51..f6e022b 100755
--- a/net/test/resilient_rs_test.py
+++ b/net/test/resilient_rs_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/run_net_test.sh b/net/test/run_net_test.sh
index ce3ff31..847e59c 100755
--- a/net/test/run_net_test.sh
+++ b/net/test/run_net_test.sh
@@ -85,7 +85,7 @@
 NUMTAPINTERFACES=0
 
 # The root filesystem disk image we'll use.
-ROOTFS=${ROOTFS:-net_test.rootfs.20150203}
+ROOTFS=${ROOTFS:-net_test.rootfs.20221014}
 COMPRESSED_ROOTFS=$ROOTFS.xz
 URL=https://dl.google.com/dl/android/$COMPRESSED_ROOTFS
 
diff --git a/net/test/sock_diag.py b/net/test/sock_diag.py
index 924d652..ae59897 100755
--- a/net/test/sock_diag.py
+++ b/net/test/sock_diag.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
diff --git a/net/test/sock_diag_test.py b/net/test/sock_diag_test.py
index 87419fe..d3add91 100755
--- a/net/test/sock_diag_test.py
+++ b/net/test/sock_diag_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
@@ -259,7 +259,7 @@
         b"00040400"
     )
     states = 1 << tcp_test.TCP_ESTABLISHED
-    self.assertEquals(expected, binascii.hexlify(bytecode))
+    self.assertEqual(expected, binascii.hexlify(bytecode))
     self.assertEqual(76, len(bytecode))
     self.socketpairs = self._CreateLotsOfSockets(SOCK_STREAM)
     filteredsockets = self.sock_diag.DumpAllInetSockets(IPPROTO_TCP, bytecode,
diff --git a/net/test/srcaddr_selection_test.py b/net/test/srcaddr_selection_test.py
index 06f16de..f515c47 100755
--- a/net/test/srcaddr_selection_test.py
+++ b/net/test/srcaddr_selection_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2014 The Android Open Source Project
 #
diff --git a/net/test/sysctls_test.py b/net/test/sysctls_test.py
index ca68137..3345de7 100755
--- a/net/test/sysctls_test.py
+++ b/net/test/sysctls_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2021 The Android Open Source Project
 #
diff --git a/net/test/tcp_fastopen_test.py b/net/test/tcp_fastopen_test.py
index 371746e..f5fc00f 100755
--- a/net/test/tcp_fastopen_test.py
+++ b/net/test/tcp_fastopen_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/tcp_metrics.py b/net/test/tcp_metrics.py
index 1076a55..87c753a 100755
--- a/net/test/tcp_metrics.py
+++ b/net/test/tcp_metrics.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/tcp_nuke_addr_test.py b/net/test/tcp_nuke_addr_test.py
index 28577b5..6010d5f 100755
--- a/net/test/tcp_nuke_addr_test.py
+++ b/net/test/tcp_nuke_addr_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/tcp_repair_test.py b/net/test/tcp_repair_test.py
index 059134f..cc5ed41 100755
--- a/net/test/tcp_repair_test.py
+++ b/net/test/tcp_repair_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2019 The Android Open Source Project
 #
diff --git a/net/test/tcp_test.py b/net/test/tcp_test.py
index 4c7dbc3..5a073e6 100644
--- a/net/test/tcp_test.py
+++ b/net/test/tcp_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2015 The Android Open Source Project
 #
diff --git a/net/test/xfrm.py b/net/test/xfrm.py
index d1e1871..abd487a 100755
--- a/net/test/xfrm.py
+++ b/net/test/xfrm.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2016 The Android Open Source Project
 #
diff --git a/net/test/xfrm_algorithm_test.py b/net/test/xfrm_algorithm_test.py
index 4351d54..8466953 100755
--- a/net/test/xfrm_algorithm_test.py
+++ b/net/test/xfrm_algorithm_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/xfrm_base.py b/net/test/xfrm_base.py
index cb9f65b..4ce194b 100644
--- a/net/test/xfrm_base.py
+++ b/net/test/xfrm_base.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/xfrm_test.py b/net/test/xfrm_test.py
index 61213f8..803bb18 100755
--- a/net/test/xfrm_test.py
+++ b/net/test/xfrm_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #
diff --git a/net/test/xfrm_tunnel_test.py b/net/test/xfrm_tunnel_test.py
index 7ede733..cc5139d 100755
--- a/net/test/xfrm_tunnel_test.py
+++ b/net/test/xfrm_tunnel_test.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 #
 # Copyright 2017 The Android Open Source Project
 #