• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1"""Tests for rf_switch_controller class."""
2
3import unittest
4
5import mock
6
7from autotest_lib.server import frontend
8from autotest_lib.server import site_utils
9from autotest_lib.server.cros.network import rf_switch_controller
10
11
12class RfSwitchControllerTest(unittest.TestCase):
13    """Tests for RF Switch Controller class."""
14
15
16    RF_SWITCH_CLIENT = 'rf_switch_client'
17    RF_SWITCH_APS = 'rf_switch_aps'
18
19
20    def setUp(self):
21        """Initial setup required to test the methods.
22
23        Create three hosts: RF Switch, AP Box and Client Box. Assign the
24        hostnames and labels. Create an instance of RfSwitchController and
25        add mock hosts.
26        """
27        self.rf_switch_host = frontend.Host('', '')
28        self.ap_box_host = frontend.Host('', '')
29        self.client_box_host = frontend.Host('', '')
30
31        self.rf_switch_host.hostname = 'chromeos9-rfswitch'
32        self.ap_box_host.hostname = 'chromeos9-apbox1'
33        self.client_box_host.hostname = 'chromeos9-clientbox1'
34
35        self.rf_switch_host.labels = ['rf_switch', 'rf_switch_1']
36        self.ap_box_host.labels = ['rf_switch_1', 'ap_box_1', 'rf_switch_aps']
37        self.client_box_host.labels = [
38                'rf_switch_1', 'client_box_1', 'rf_switch_client']
39
40
41    @mock.patch('autotest_lib.server.frontend.AFE')
42    def testGetAPBoxes(self, mock_afe):
43        """Test to get all AP Boxes connected to the RF Switch."""
44        afe_instance = mock_afe()
45        afe_instance.get_hosts.return_value = [
46                self.ap_box_host, self.client_box_host]
47        rf_switch_manager = rf_switch_controller.RFSwitchController(
48                self.rf_switch_host)
49        ap_boxes = rf_switch_manager.get_ap_boxes()
50        self.assertEquals(len(ap_boxes), 1)
51        ap_box = ap_boxes[0]
52        self.assertEquals(ap_box.ap_box_host.hostname, 'chromeos9-apbox1')
53
54
55    @mock.patch('autotest_lib.server.frontend.AFE')
56    def testGetClientBoxes(self, mock_afe):
57        """Test to get all Client Boxes connected to the RF Switch."""
58        afe_instance = mock_afe()
59        afe_instance.get_hosts.return_value = [
60                self.ap_box_host, self.client_box_host]
61        rf_switch_manager = rf_switch_controller.RFSwitchController(
62                self.rf_switch_host)
63        client_boxes = rf_switch_manager.get_client_boxes()
64        self.assertEquals(len(client_boxes), 1)
65        client_box = client_boxes[0]
66        self.assertEquals(
67                client_box.client_box_host.hostname, 'chromeos9-clientbox1')
68
69
70    @mock.patch('autotest_lib.server.frontend.AFE')
71    def testRfSwitchNotConnectedToAPBoxes(self, mock_afe):
72        """Testing scenario when RF Switch is not connnected to AP Boxes."""
73        afe_instance = mock_afe()
74        afe_instance.get_hosts.return_value = [self.client_box_host]
75        with mock.patch('logging.Logger.error') as mock_logger:
76            rf_switch_manager = rf_switch_controller.RFSwitchController(
77                    self.rf_switch_host)
78            mock_logger.assert_called_with(
79                    'No AP boxes available for the RF Switch.')
80        ap_boxes = rf_switch_manager.get_ap_boxes()
81        self.assertEquals(len(ap_boxes), 0)
82
83
84    @mock.patch('autotest_lib.server.frontend.AFE')
85    def testClientBoxWithInvalidLabels(self, mock_afe):
86        """Test when RF Switch connected to Client Box with invalid labels."""
87        afe_instance = mock_afe()
88        self.client_box_host.labels = ['rf_switch_1', 'client_1', 'rf_client']
89        afe_instance.get_hosts.return_value = [self.client_box_host]
90        with mock.patch('logging.Logger.error') as mock_logger:
91            rf_switch_manager = rf_switch_controller.RFSwitchController(
92                    self.rf_switch_host)
93            mock_logger.assert_called_with(
94                'No Client boxes available for the RF Switch.')
95        client_boxes = rf_switch_manager.get_client_boxes()
96        self.assertEquals(len(client_boxes), 0)
97
98
99if __name__ == '__main__':
100  unittest.main()
101