Home | History | Annotate | Download | only in network
      1 """Tests for rf_switch_utils."""
      2 
      3 import common
      4 import unittest
      5 
      6 import mock
      7 
      8 from autotest_lib.server.cros.network import rf_switch_utils
      9 
     10 
     11 class RfSwitchUtilsTest(unittest.TestCase):
     12     """Tests for RF Switch Utils."""
     13 
     14 
     15     def setUp(self):
     16         """Initial set up for the tests."""
     17         self.patcher1 = mock.patch('autotest_lib.server.frontend.AFE')
     18         self.patcher2 = mock.patch('autotest_lib.server.frontend.Host')
     19         self.mock_afe = self.patcher1.start()
     20         self.mock_host = self.patcher2.start()
     21 
     22 
     23     def tearDown(self):
     24         """End mock patcher."""
     25         self.patcher1.stop()
     26         self.patcher2.stop()
     27 
     28 
     29     def testAllocateRfSwitch(self):
     30         """Test to allocate a RF Switch."""
     31         afe_instance = self.mock_afe()
     32         mock_host_instance = self.mock_host()
     33         mock_host_instance.hostname = 'chromeos9-rfswitch1'
     34         # AFE returns list of RF Switch Hosts.
     35         afe_instance.get_hosts.return_value = [mock_host_instance]
     36         # Locking the first available RF Switch Host.
     37         afe_instance.lock_host.return_value = True
     38         rf_switch = rf_switch_utils.allocate_rf_switch()
     39         self.assertEquals(rf_switch, mock_host_instance)
     40         self.assertEquals(rf_switch.hostname, 'chromeos9-rfswitch1')
     41 
     42 
     43     def testRfSwitchCannotBeLocked(self):
     44         """Test logs when RF Switch cannot be locked."""
     45         afe_instance = self.mock_afe()
     46         mock_host_instance = self.mock_host()
     47         afe_instance.get_hosts.return_value = [mock_host_instance]
     48         mock_host_instance.hostname = 'chromeos9-rfswitch1'
     49         afe_instance.lock_host.return_value = False
     50         with mock.patch('logging.Logger.error') as mock_logger:
     51             rf_switch_utils.allocate_rf_switch()
     52             mock_logger.assert_called_with(
     53                     'RF Switch chromeos9-rfswitch1 could not be locked')
     54 
     55 
     56     def testRfSwitchesNotAvailable(self):
     57         """Test logs when no RF Switches are available to lock."""
     58         afe_instance = self.mock_afe()
     59         afe_instance.get_hosts.return_value = []
     60         with mock.patch('logging.Logger.debug') as mock_logger:
     61             rf_switch_utils.allocate_rf_switch()
     62             mock_logger.assert_called_with(
     63                     'No RF Switches are available for tests.')
     64 
     65 
     66     def testDeallocateRfSwitch(self):
     67         """Test to deallocate RF Switch."""
     68         afe_instance = self.mock_afe()
     69         mock_host_instance = self.mock_host()
     70         mock_host_instance.locked = False
     71         afe_instance.get_hosts.return_value = [mock_host_instance]
     72         self.assertEquals(
     73                 rf_switch_utils.deallocate_rf_switch(mock_host_instance), True)
     74 
     75 
     76     def testRfSwitchCannotBeDeallocated(self):
     77         """Test when RF Switch cannot be deallocated."""
     78         afe_instance = self.mock_afe()
     79         mock_host_instance = self.mock_host()
     80         mock_host_instance.locked = True
     81         afe_instance.get_hosts.return_value = [mock_host_instance]
     82         self.assertEquals(
     83                 rf_switch_utils.deallocate_rf_switch(mock_host_instance), False)
     84 
     85 
     86 if __name__ == '__main__':
     87   unittest.main()
     88