Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ec4d6fc1 authored by Jizheng Chu's avatar Jizheng Chu
Browse files

Print port status when fail to tcp forward for debugging purpose

Bug: 200173918
Test: gd/cert/run
Change-Id: Ie876354c47324b61e40c449af97ec0ee2364b5e7
parent 8427fdfa
Loading
Loading
Loading
Loading
+38 −21
Original line number Diff line number Diff line
@@ -429,6 +429,7 @@ class GdAndroidDevice(GdDeviceBase):
        :param num_retry: number of times to reboot and retry this before dying
        :return: host port int
        """
        try:
            error_or_port = self.adb.tcp_forward(host_port, device_port)
            if not error_or_port:
                logging.debug("host port %d was already forwarded" % host_port)
@@ -443,9 +444,17 @@ class GdAndroidDevice(GdDeviceBase):
                    self.reboot()
                    self.adb.remount()
                    return self.tcp_forward_or_die(host_port, device_port, num_retry=num_retry)
            asserts.fail(
                'Unable to forward host port %d to device port %d, error %s' % (host_port, device_port, error_or_port))
                asserts.fail('Unable to forward host port %d to device port %d, error %s' % (host_port, device_port,
                                                                                             error_or_port))
            return error_or_port
        except AdbError:
            logging.warning(
                "[%s] Failed to TCP forward host port %d to device port %d" % (self.label, host_port, device_port))
            forward_list = self.adb.forward("--list")
            logging.warning("[%s] forward port list: %s" % (self.label, forward_list))
            port_status_cmd = "netstat -ntlp | grep %s" % device_port
            port_status = subprocess.Popen(port_status_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
            logging.warning("port %s status: %s" % (device_port, port_status))

    def tcp_reverse_or_die(self, device_port, host_port, num_retry=1):
        """
@@ -455,12 +464,20 @@ class GdAndroidDevice(GdDeviceBase):
        :param num_retry: number of times to reboot and retry this before dying
        :return: device port int
        """
        try:
            error_or_port = self.adb.reverse("tcp:%d tcp:%d" % (device_port, host_port))
            if not error_or_port:
                logging.debug("device port %d was already reversed" % device_port)
                return device_port
        try:
            error_or_port = int(error_or_port)
        except AdbError:
            logging.warning(
                "[%s] Failed to TCP reverse device port %d to host port %d" % (self.label, device_port, host_port))
            reverse_list = self.adb.reverse("--list")
            logging.warning("[%s] reverse port list: %s" % (self.label, reverse_list))
            port_status_cmd = "netstat -ntlp | grep %s" % device_port
            port_status = subprocess.Popen(port_status_cmd, shell=True, stdout=subprocess.PIPE).stdout.read()
            logging.warning("port %s status: %s" % (device_port, port_status))
        except ValueError:
            if num_retry > 0:
                # If requested, reboot an retry