| """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() |