diff --git a/python-packages/adb/device.py b/python-packages/adb/device.py index fad920b3d..7e6df3bf4 100644 --- a/python-packages/adb/device.py +++ b/python-packages/adb/device.py @@ -415,9 +415,6 @@ class AndroidDevice(object): cmd.append(directory) return self._simple_call(cmd) - def forward(self, local, remote): - return self._simple_call(['forward', local, remote]) - def tcpip(self, port): return self._simple_call(['tcpip', port]) @@ -436,21 +433,30 @@ class AndroidDevice(object): def unroot(self): return self._simple_call(['unroot']) - def forward_remove(self, local): - return self._simple_call(['forward', '--remove', local]) - - def forward_remove_all(self): - return self._simple_call(['forward', '--remove-all']) - def connect(self, host): return self._simple_call(['connect', host]) def disconnect(self, host): return self._simple_call(['disconnect', host]) + def forward(self, local, remote): + return self._simple_call(['forward', local, remote]) + + def forward_list(self): + return self._simple_call(['forward', '--list']) + + def forward_remove(self, local): + return self._simple_call(['forward', '--remove', local]) + + def forward_remove_all(self): + return self._simple_call(['forward', '--remove-all']) + def reverse(self, remote, local): return self._simple_call(['reverse', remote, local]) + def reverse_list(self): + return self._simple_call(['reverse', '--list']) + def reverse_remove_all(self): return self._simple_call(['reverse', '--remove-all']) diff --git a/python-packages/adb/test_device.py b/python-packages/adb/test_device.py index 310a682fb..da581c8d9 100644 --- a/python-packages/adb/test_device.py +++ b/python-packages/adb/test_device.py @@ -21,6 +21,7 @@ import hashlib import os import posixpath import random +import re import shlex import shutil import signal @@ -130,6 +131,46 @@ class DeviceTest(unittest.TestCase): self.device = adb.get_device() +class ForwardReverseTest(DeviceTest): + def test_forward(self): + msg = self.device.forward_list() + self.assertEqual('', msg.strip(), + 'Forwarding list must be empty to run this test.') + self.device.forward('tcp:5566', 'tcp:6655') + msg = self.device.forward_list() + self.assertTrue(re.search(r'tcp:5566.+tcp:6655', msg)) + self.device.forward('tcp:7788', 'tcp:8877') + msg = self.device.forward_list() + self.assertTrue(re.search(r'tcp:5566.+tcp:6655', msg)) + self.assertTrue(re.search(r'tcp:7788.+tcp:8877', msg)) + self.device.forward_remove('tcp:5566') + msg = self.device.forward_list() + self.assertFalse(re.search(r'tcp:5566.+tcp:6655', msg)) + self.assertTrue(re.search(r'tcp:7788.+tcp:8877', msg)) + self.device.forward_remove_all() + msg = self.device.forward_list() + self.assertEqual('', msg.strip()) + + def test_reverse(self): + msg = self.device.reverse_list() + self.assertEqual('', msg.strip(), + 'Reverse forwarding list must be empty to run this test.') + self.device.reverse('tcp:5566', 'tcp:6655') + msg = self.device.reverse_list() + self.assertTrue(re.search(r'tcp:5566.+tcp:6655', msg)) + self.device.reverse('tcp:7788', 'tcp:8877') + msg = self.device.reverse_list() + self.assertTrue(re.search(r'tcp:5566.+tcp:6655', msg)) + self.assertTrue(re.search(r'tcp:7788.+tcp:8877', msg)) + self.device.reverse_remove('tcp:5566') + msg = self.device.reverse_list() + self.assertFalse(re.search(r'tcp:5566.+tcp:6655', msg)) + self.assertTrue(re.search(r'tcp:7788.+tcp:8877', msg)) + self.device.reverse_remove_all() + msg = self.device.reverse_list() + self.assertEqual('', msg.strip()) + + class ShellTest(DeviceTest): def _interactive_shell(self, shell_args, input): """Runs an interactive adb shell.