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