#!/usr/bin/python # pylint: disable=missing-docstring import unittest import common from autotest_lib.server.hosts import cros_host from autotest_lib.server.hosts import servo_host CROSSYSTEM_RESULT = ''' fwb_tries = 0 # Fake comment fw_vboot2 = 1 # Fake comment fwid = Google_Reef.9933.0.0 # Fake comment fwupdate_tries = 0 # fw_tried = B # fw_try_count = 0 # ''' NON_UNI_LSB_RELEASE_OUTPUT = ''' CHROMEOS_RELEASE_BOARD=reef ''' UNI_LSB_RELEASE_OUTPUT = ''' CHROMEOS_RELEASE_BOARD=coral CHROMEOS_RELEASE_UNIBUILD=1 ''' class MockCmd(object): """Simple mock command with base command and results""" def __init__(self, cmd, exit_status, stdout): self.cmd = cmd self.stdout = stdout self.exit_status = exit_status class MockHost(cros_host.CrosHost): """Simple host for running mock'd host commands""" def __init__(self, *args): self._mock_cmds = {c.cmd: c for c in args} def run(self, command, **kwargs): """Finds the matching result by command value""" mock_cmd = self._mock_cmds[command] file_out = kwargs.get('stdout_tee', None) if file_out: file_out.write(mock_cmd.stdout) return mock_cmd class GetPlatformModelTests(unittest.TestCase): """Unit tests for CrosHost.get_platform_model""" def test_mosys_succeeds(self): host = MockHost( MockCmd('cat /etc/lsb-release', 0, UNI_LSB_RELEASE_OUTPUT), MockCmd('mosys platform model', 0, 'coral\n')) self.assertEqual(host.get_platform(), 'coral') def test_mosys_fails(self): host = MockHost( MockCmd('cat /etc/lsb-release', 0, UNI_LSB_RELEASE_OUTPUT), MockCmd('mosys platform model', 1, ''), MockCmd('crossystem', 0, CROSSYSTEM_RESULT)) self.assertEqual(host.get_platform(), 'reef') def test_non_unibuild(self): host = MockHost( MockCmd('cat /etc/lsb-release', 0, NON_UNI_LSB_RELEASE_OUTPUT), MockCmd('crossystem', 0, CROSSYSTEM_RESULT)) self.assertEqual(host.get_platform(), 'reef') def test_cat_lsb_fails(self): host = MockHost( MockCmd('cat /etc/lsb-release', 1, ''), MockCmd('crossystem', 0, CROSSYSTEM_RESULT)) self.assertEqual(host.get_platform(), 'reef') class DictFilteringTestCase(unittest.TestCase): """Tests for dict filtering methods on CrosHost.""" def test_get_chameleon_arguments(self): got = cros_host.CrosHost.get_chameleon_arguments({ 'chameleon_host': 'host', 'spam': 'eggs', }) self.assertEqual(got, {'chameleon_host': 'host'}) def test_get_plankton_arguments(self): got = cros_host.CrosHost.get_plankton_arguments({ 'plankton_host': 'host', 'spam': 'eggs', }) self.assertEqual(got, {'plankton_host': 'host'}) def test_get_servo_arguments(self): got = cros_host.CrosHost.get_servo_arguments({ servo_host.SERVO_HOST_ATTR: 'host', 'spam': 'eggs', }) self.assertEqual(got, {servo_host.SERVO_HOST_ATTR: 'host'}) if __name__ == "__main__": unittest.main()