blob: 9b244633b66d48987ff67a3fd0ea1a3dc08f8cae [file] [log] [blame]
"""Tests for rf_switch_controller class."""
import unittest
import mock
from autotest_lib.server import frontend
from autotest_lib.server import site_utils
from autotest_lib.server.cros.network import rf_switch_controller
class RfSwitchControllerTest(unittest.TestCase):
"""Tests for RF Switch Controller class."""
RF_SWITCH_CLIENT = 'rf_switch_client'
RF_SWITCH_APS = 'rf_switch_aps'
def setUp(self):
"""Initial setup required to test the methods.
Create three hosts: RF Switch, AP Box and Client Box. Assign the
hostnames and labels. Create an instance of RfSwitchController and
add mock hosts.
"""
self.rf_switch_host = frontend.Host('', '')
self.ap_box_host = frontend.Host('', '')
self.client_box_host = frontend.Host('', '')
self.rf_switch_host.hostname = 'chromeos9-rfswitch'
self.ap_box_host.hostname = 'chromeos9-apbox1'
self.client_box_host.hostname = 'chromeos9-clientbox1'
self.rf_switch_host.labels = ['rf_switch', 'rf_switch_1']
self.ap_box_host.labels = ['rf_switch_1', 'ap_box_1', 'rf_switch_aps']
self.client_box_host.labels = [
'rf_switch_1', 'client_box_1', 'rf_switch_client']
@mock.patch('autotest_lib.server.frontend.AFE')
def testGetAPBoxes(self, mock_afe):
"""Test to get all AP Boxes connected to the RF Switch."""
afe_instance = mock_afe()
afe_instance.get_hosts.return_value = [
self.ap_box_host, self.client_box_host]
rf_switch_manager = rf_switch_controller.RFSwitchController(
self.rf_switch_host)
ap_boxes = rf_switch_manager.get_ap_boxes()
self.assertEquals(len(ap_boxes), 1)
ap_box = ap_boxes[0]
self.assertEquals(ap_box.ap_box_host.hostname, 'chromeos9-apbox1')
@mock.patch('autotest_lib.server.frontend.AFE')
def testGetClientBoxes(self, mock_afe):
"""Test to get all Client Boxes connected to the RF Switch."""
afe_instance = mock_afe()
afe_instance.get_hosts.return_value = [
self.ap_box_host, self.client_box_host]
rf_switch_manager = rf_switch_controller.RFSwitchController(
self.rf_switch_host)
client_boxes = rf_switch_manager.get_client_boxes()
self.assertEquals(len(client_boxes), 1)
client_box = client_boxes[0]
self.assertEquals(
client_box.client_box_host.hostname, 'chromeos9-clientbox1')
@mock.patch('autotest_lib.server.frontend.AFE')
def testRfSwitchNotConnectedToAPBoxes(self, mock_afe):
"""Testing scenario when RF Switch is not connnected to AP Boxes."""
afe_instance = mock_afe()
afe_instance.get_hosts.return_value = [self.client_box_host]
with mock.patch('logging.Logger.error') as mock_logger:
rf_switch_manager = rf_switch_controller.RFSwitchController(
self.rf_switch_host)
mock_logger.assert_called_with(
'No AP boxes available for the RF Switch.')
ap_boxes = rf_switch_manager.get_ap_boxes()
self.assertEquals(len(ap_boxes), 0)
@mock.patch('autotest_lib.server.frontend.AFE')
def testClientBoxWithInvalidLabels(self, mock_afe):
"""Test when RF Switch connected to Client Box with invalid labels."""
afe_instance = mock_afe()
self.client_box_host.labels = ['rf_switch_1', 'client_1', 'rf_client']
afe_instance.get_hosts.return_value = [self.client_box_host]
with mock.patch('logging.Logger.error') as mock_logger:
rf_switch_manager = rf_switch_controller.RFSwitchController(
self.rf_switch_host)
mock_logger.assert_called_with(
'No Client boxes available for the RF Switch.')
client_boxes = rf_switch_manager.get_client_boxes()
self.assertEquals(len(client_boxes), 0)
if __name__ == '__main__':
unittest.main()