xref: /aosp_15_r20/external/autotest/server/cros/tradefed/adb_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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