blob: 91c88c2e6b8d495bb250adace2db15e543170ccb [file] [log] [blame]
import unittest
import mock
from autotest_lib.client.common_lib.cros.cfm import cras_node_collector
# pylint: disable=missing-docstring
class CrasNodeCollectorTest(unittest.TestCase):
"""Unit tests for cras_node_collector."""
def test_collect_output(self):
output_devices = (
'Output Devices:\n'
'ID Name\n'
'13 HDA Intel PCH: ALC283 Analog:3,0\n'
'12 HDA Intel HDMI: HDMI 2:2,8\n'
'11 HDA Intel HDMI: HDMI 1:2,7\n'
'10 HDA Intel HDMI: HDMI 0:2,3\n'
'8 Jabra SPEAK 410 USB: USB Audio:1,0\n'
'6 Jabra SPEAK 410 USB: USB Audio:0,0\n'
'Output Nodes:')
output_nodes = (
'Output Nodes:\n'
'Stable Id ID Vol Plugged L/R swapped Time Hotword '
'Type Name\n'
'(d5da8553) 13:0 100 no no 0 '
'HEADPHONE Headphone Jack\n'
'(5280b26d) 12:0 100 no no 0 '
'HDMI HDMI/DP,pcm=8 Jack\n'
'(78297d51) 11:0 100 no no 0 '
'HDMI HDMI/DP,pcm=7 Jack\n'
'(f2070728) 10:0 100 no no 1511264933 '
'HDMI HDMI/DP,pcm=3 Jack\n'
'(2fb77ef4) 10:1 100 no no 0 '
'HDMI HDMI\n'
'(051d1a79) 8:0 75 yes no 1511264933 '
'USB *(default)\n'
'(051d1a79) 6:0 100 yes no 1511264933 '
'USB (default)\n'
'Input Devices:')
mock_host = mock.Mock()
mock_host.run_output.side_effect = [output_devices, output_nodes]
collector = cras_node_collector.CrasNodeCollector(mock_host)
nodes = collector.get_output_nodes()
self.assertEquals(7, len(nodes))
node_ids = set([node.node_id for node in nodes])
node_types = set([node.node_type for node in nodes])
device_names = set([node.device_name for node in nodes])
self.assertEquals(node_ids, set(
['13:0', '12:0', '11:0', '10:0', '10:1', '8:0', '6:0']))
self.assertEquals(node_types, set(['HEADPHONE', 'USB', 'HDMI' ]))
def test_collect_input(self):
input_devices = (
'Input Devices:\n'
'ID Name\n'
'14 HDA Intel PCH: ALC283 Analog:3,0\n'
'9 Jabra SPEAK 410 USB: USB Audio:1,0\n'
'7 Jabra SPEAK 410 USB: USB Audio:0,0\n'
'5 Post DSP Loopback\n'
'4 Post Mix Pre DSP Loopback\n'
'Input Nodes:'
)
input_nodes = (
'Input Nodes:\n'
'Stable Id ID Gain Plugged L/R swapped Time Hotword '
'Type Name\n'
'(ca711b33) 14:0 0 no no 0 '
'MIC Mic Jack\n'
'(4b5d44d7) 9:0 0 yes no 1511264933 '
'USB Jabra SPEAK 410 USB: USB Audio:1,0: Mic\n'
'(ca24f0a3) 7:0 0 yes no 1511264933 '
'USB *Jabra SPEAK 410 USB: USB Audio:0,0: Mic\n'
'(8c74f766) 5:0 0 yes no 0 '
'POST_DSP_LOOPBACK Post DSP Loopback\n'
'(8a04af91) 4:0 0 yes no 0 '
'POST_MIX_LOOPBACK Post Mix Pre DSP Loopback\n'
'Attached clients:'
)
mock_host = mock.Mock()
mock_host.run_output.side_effect = [input_devices, input_nodes]
collector = cras_node_collector.CrasNodeCollector(mock_host)
nodes = collector.get_input_nodes()
self.assertEquals(5, len(nodes))
node_ids = set([node.node_id for node in nodes])
node_types = set([node.node_type for node in nodes])
device_names = set([node.device_name for node in nodes])
self.assertEquals(node_ids, set(
['4:0', '5:0', '7:0', '9:0', '14:0']))
self.assertEquals(node_types, set(
['MIC', 'USB', 'POST_DSP_LOOPBACK', 'POST_MIX_LOOPBACK']))
self.assertEquals(device_names, set(
['HDA Intel PCH: ALC283 Analog:3,0',
'Jabra SPEAK 410 USB: USB Audio:1,0',
'Jabra SPEAK 410 USB: USB Audio:0,0',
'Post DSP Loopback',
'Post Mix Pre DSP Loopback',]))
if __name__ == "__main__":
unittest.main()