xref: /aosp_15_r20/external/autotest/server/hosts/labstation_host_unittest.py (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1*9c5db199SXin Li# Copyright (c) 2020 The Chromium OS Authors. All rights reserved.
2*9c5db199SXin Li# Use of this source code is governed by a BSD-style license that can be
3*9c5db199SXin Li# found in the LICENSE file.
4*9c5db199SXin Li
5*9c5db199SXin Liimport unittest
6*9c5db199SXin Liimport common
7*9c5db199SXin Lifrom autotest_lib.server.hosts import labstation_host
8*9c5db199SXin Li
9*9c5db199SXin Li
10*9c5db199SXin LiLabstationHost = labstation_host.LabstationHost
11*9c5db199SXin Li
12*9c5db199SXin Li
13*9c5db199SXin Liclass MockRPMClient(object):
14*9c5db199SXin Li    """Mocking out the rpm_client to avoid actual API calls"""
15*9c5db199SXin Li    def __init__(self, expected_state=None):
16*9c5db199SXin Li        self._expected_state = expected_state
17*9c5db199SXin Li
18*9c5db199SXin Li    def set_power(self, host, new_state):
19*9c5db199SXin Li        assert new_state == self._expected_state
20*9c5db199SXin Li
21*9c5db199SXin Li
22*9c5db199SXin Liclass MockMainSsh(object):
23*9c5db199SXin Li    def __init__(self):
24*9c5db199SXin Li        self.ssh_option = ""
25*9c5db199SXin Li
26*9c5db199SXin Li    def maybe_start(self, *args, **kwargs):
27*9c5db199SXin Li        pass
28*9c5db199SXin Li
29*9c5db199SXin Li    def close(self, *args, **kwargs):
30*9c5db199SXin Li        pass
31*9c5db199SXin Li
32*9c5db199SXin Li
33*9c5db199SXin Liclass LabstationHostSkipInit(LabstationHost):
34*9c5db199SXin Li    """LabstationHostSkipInit is like a labstation host, but
35*9c5db199SXin Li    skips initialization.
36*9c5db199SXin Li
37*9c5db199SXin Li    This gives us the ability to inject our own mocks during host
38*9c5db199SXin Li    setup.
39*9c5db199SXin Li    """
40*9c5db199SXin Li    def __init__(self):
41*9c5db199SXin Li        self._is_localhost = False
42*9c5db199SXin Li        self._main_ssh = MockMainSsh()
43*9c5db199SXin Li        self.env = {}
44*9c5db199SXin Li        self.user = "a"
45*9c5db199SXin Li        self.port = 7
46*9c5db199SXin Li        self.known_hosts_file = None
47*9c5db199SXin Li        self.hostname = "a"
48*9c5db199SXin Li
49*9c5db199SXin Li    def run(self, *args, **kwargs):
50*9c5db199SXin Li        class FakeResult(object):
51*9c5db199SXin Li            def __init__(self):
52*9c5db199SXin Li                self.stdout = ""
53*9c5db199SXin Li        return FakeResult()
54*9c5db199SXin Li
55*9c5db199SXin Li    def wait_down(self, *args, **kwargs):
56*9c5db199SXin Li        return True
57*9c5db199SXin Li
58*9c5db199SXin Li    def wait_up(self, *args, **kwargs):
59*9c5db199SXin Li        return True
60*9c5db199SXin Li
61*9c5db199SXin Li
62*9c5db199SXin Liclass LabstationHostUnittest(unittest.TestCase):
63*9c5db199SXin Li    def test_rpm_power_on_and_wait(self):
64*9c5db199SXin Li        m = MockRPMClient(expected_state='ON')
65*9c5db199SXin Li        labstation = LabstationHostSkipInit()
66*9c5db199SXin Li        labstation.rpm_power_on_and_wait(_rpm_client=m)
67*9c5db199SXin Li
68*9c5db199SXin Li    def test_rpm_power_off_and_wait(self):
69*9c5db199SXin Li        m = MockRPMClient(expected_state='OFF')
70*9c5db199SXin Li        labstation = LabstationHostSkipInit()
71*9c5db199SXin Li        labstation.rpm_power_off_and_wait(_rpm_client=m)
72*9c5db199SXin Li
73*9c5db199SXin Li
74*9c5db199SXin Liif __name__ == "__main__":
75*9c5db199SXin Li    unittest.main()
76