blob: 472d07404f6259ea7b659ecd23a988cedd5cf98d [file] [log] [blame]
#!/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()