1*9c5db199SXin Li# Lint as: python2, python3 2*9c5db199SXin Li# Copyright 2022 The Chromium OS Authors. All rights reserved. 3*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be 4*9c5db199SXin Li# found in the LICENSE file. 5*9c5db199SXin Li 6*9c5db199SXin Liimport unittest 7*9c5db199SXin Li 8*9c5db199SXin Lifrom unittest.mock import Mock, patch 9*9c5db199SXin Lifrom autotest_lib.server.cros.tradefed import adb 10*9c5db199SXin Li 11*9c5db199SXin Li 12*9c5db199SXin Liclass AdbTest(unittest.TestCase): 13*9c5db199SXin Li """Tests for ADB module.""" 14*9c5db199SXin Li 15*9c5db199SXin Li # Verify that ipv4 is put into IP:PORT format. 16*9c5db199SXin Li def test_get_adb_target_ipv4(self): 17*9c5db199SXin Li mock_host = Mock() 18*9c5db199SXin Li mock_host.port = 3467 19*9c5db199SXin Li mock_host.hostname = '123.76.0.29' 20*9c5db199SXin Li target = adb.get_adb_target(mock_host) 21*9c5db199SXin Li self.assertEqual(target, '123.76.0.29:3467') 22*9c5db199SXin Li 23*9c5db199SXin Li # Verify that ipv6 is put into [IP]:PORT format. 24*9c5db199SXin Li def test_get_adb_target_ipv6(self): 25*9c5db199SXin Li mock_host = Mock() 26*9c5db199SXin Li mock_host.port = 1234 27*9c5db199SXin Li mock_host.hostname = '2409::3' 28*9c5db199SXin Li target = adb.get_adb_target(mock_host) 29*9c5db199SXin Li self.assertEqual(target, '[2409::3]:1234') 30*9c5db199SXin Li 31*9c5db199SXin Li # Verify that a host name works. 32*9c5db199SXin Li def test_get_adb_target_hostname(self): 33*9c5db199SXin Li mock_host = Mock() 34*9c5db199SXin Li mock_host.port = 4792 35*9c5db199SXin Li mock_host.hostname = 'some.hostname.cros' 36*9c5db199SXin Li target = adb.get_adb_target(mock_host) 37*9c5db199SXin Li self.assertEqual(target, 'some.hostname.cros:4792') 38*9c5db199SXin Li 39*9c5db199SXin Li # Verify that a list of hosts work. 40*9c5db199SXin Li def test_get_adb_targets(self): 41*9c5db199SXin Li mock_host1 = Mock() 42*9c5db199SXin Li mock_host2 = Mock() 43*9c5db199SXin Li mock_host3 = Mock() 44*9c5db199SXin Li mock_host1.port = 1111 45*9c5db199SXin Li mock_host2.port = 2222 46*9c5db199SXin Li mock_host3.port = 3333 47*9c5db199SXin Li mock_host1.hostname = 'host1' 48*9c5db199SXin Li mock_host2.hostname = 'host2' 49*9c5db199SXin Li mock_host3.hostname = 'host3' 50*9c5db199SXin Li 51*9c5db199SXin Li targets = adb.get_adb_targets([mock_host1, mock_host2, mock_host3]) 52*9c5db199SXin Li self.assertEqual(targets, ['host1:1111', 'host2:2222', 'host3:3333']) 53*9c5db199SXin Li 54*9c5db199SXin Li def test_add_paths(self): 55*9c5db199SXin Li instance = adb.Adb() 56*9c5db199SXin Li instance.add_path('/some/install/path') 57*9c5db199SXin Li instance.add_path('/another/directory') 58*9c5db199SXin Li 59*9c5db199SXin Li self.assertEqual(set(['/some/install/path', '/another/directory']), 60*9c5db199SXin Li instance.get_paths()) 61*9c5db199SXin Li 62*9c5db199SXin Li @patch('autotest_lib.server.utils.run') 63*9c5db199SXin Li def test_run(self, mock_run): 64*9c5db199SXin Li instance = adb.Adb() 65*9c5db199SXin Li instance.add_path('/some/install/path') 66*9c5db199SXin Li 67*9c5db199SXin Li mock_host = Mock() 68*9c5db199SXin Li mock_host.port = 3467 69*9c5db199SXin Li mock_host.hostname = '123.76.0.29' 70*9c5db199SXin Li 71*9c5db199SXin Li instance.run(mock_host, args=('some', 'command'), timeout=240) 72*9c5db199SXin Li mock_run.assert_called_with('adb', 73*9c5db199SXin Li args=('-s', '123.76.0.29:3467', 'some', 74*9c5db199SXin Li 'command'), 75*9c5db199SXin Li timeout=240, 76*9c5db199SXin Li extra_paths=['/some/install/path']) 77*9c5db199SXin Li 78*9c5db199SXin Li @patch('autotest_lib.server.utils.run') 79*9c5db199SXin Li def test_run_without_host(self, mock_run): 80*9c5db199SXin Li instance = adb.Adb() 81*9c5db199SXin Li instance.add_path('/some/install/path') 82*9c5db199SXin Li 83*9c5db199SXin Li instance.run(None, args=('some', 'command'), timeout=240) 84*9c5db199SXin Li mock_run.assert_called_with('adb', 85*9c5db199SXin Li args=('-H', 'localhost', '-P', '5037', 86*9c5db199SXin Li 'some', 'command'), 87*9c5db199SXin Li timeout=240, 88*9c5db199SXin Li extra_paths=['/some/install/path']) 89