def setUp(self): config = Config('test', 'rhevm', server='localhost', username='******', password='******', owner='owner', env='env') self.rhevm = RhevM(self.logger, config)
class TestRhevM(TestBase): def setUp(self): config = Config('test', 'rhevm', server='localhost', username='******', password='******', owner='owner', env='env') self.rhevm = RhevM(self.logger, config) def run_once(self, queue=None): ''' Run RHEV-M in oneshot mode ''' self.rhevm._oneshot = True self.rhevm._queue = queue or Queue() self.rhevm._terminate_event = Event() self.rhevm._oneshot = True self.rhevm._interval = 0 self.rhevm._run() @patch('requests.get') def test_connect(self, get): get.return_value.text = '<xml></xml>' get.return_value.status_code = 200 self.run_once() self.assertEqual(get.call_count, 3) get.assert_has_calls([ call('https://*****:*****@patch('requests.get') def test_connection_refused(self, get): get.return_value.post.side_effect = requests.ConnectionError self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_invalid_login(self, get): get.return_value.status_code = 401 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_404(self, get): get.return_value.text = '' get.return_value.status_code = 404 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_500(self, get): get.return_value.text = '' get.return_value.status_code = 500 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_getHostGuestMapping(self, get): expected_hostname = 'hostname.domainname' expected_hypervisorId = uuids['host'] expected_guestId = uuids['vm'] expected_guest_state = Guest.STATE_SHUTOFF get.side_effect = [ MagicMock(text=CLUSTERS_XML), MagicMock(text=HOSTS_XML), MagicMock(text=VMS_XML), ] expected_result = Hypervisor( hypervisorId=expected_hypervisorId, name=expected_hostname, guestIds=[ Guest( expected_guestId, self.rhevm, expected_guest_state, ) ], facts={ Hypervisor.CPU_SOCKET_FACT: '1', Hypervisor.HYPERVISOR_TYPE_FACT: 'qemu', Hypervisor.HYPERVISOR_VERSION_FACT: '1.2.3', } ) result = self.rhevm.getHostGuestMapping()['hypervisors'][0] self.assertEqual(expected_result.toDict(), result.toDict()) def test_proxy(self): proxy = Proxy() self.addCleanup(proxy.terminate) proxy.start() oldenv = os.environ.copy() self.addCleanup(lambda: setattr(os, 'environ', oldenv)) os.environ['https_proxy'] = proxy.address self.assertRaises(VirtError, self.run_once) self.assertIsNotNone(proxy.last_path, "Proxy was not called") self.assertEqual(proxy.last_path, 'localhost:8443') @patch('requests.get') def test_new_status(self, get): expected_hostname = 'hostname.domainname' expected_hypervisorId = uuids['host'] expected_guestId = uuids['vm'] expected_guest_state = Guest.STATE_RUNNING get.side_effect = [ MagicMock(text=CLUSTERS_XML), MagicMock(text=HOSTS_XML), MagicMock(text=VMS_XML_STATUS), ] expected_result = Hypervisor( hypervisorId=expected_hypervisorId, name=expected_hostname, guestIds=[ Guest( expected_guestId, self.rhevm, expected_guest_state, ) ], facts={ Hypervisor.CPU_SOCKET_FACT: '1', Hypervisor.HYPERVISOR_TYPE_FACT: 'qemu', Hypervisor.HYPERVISOR_VERSION_FACT: '1.2.3', } ) result = self.rhevm.getHostGuestMapping()['hypervisors'][0] self.assertEqual(expected_result.toDict(), result.toDict())
class TestRhevM(TestBase): def setUp(self): config = Config('test', 'rhevm', server='localhost', username='******', password='******', owner='owner', env='env') self.rhevm = RhevM(self.logger, config) def run_once(self, queue=None): ''' Run RHEV-M in oneshot mode ''' self.rhevm._oneshot = True self.rhevm._queue = queue or Queue() self.rhevm._terminate_event = Event() self.rhevm._oneshot = True self.rhevm._interval = 0 self.rhevm._run() @patch('requests.get') def test_connect(self, get): get.return_value.text = '<xml></xml>' get.return_value.status_code = 200 self.run_once() self.assertEqual(get.call_count, 3) get.assert_has_calls([ call('https://*****:*****@patch('requests.get') def test_connection_refused(self, get): get.return_value.post.side_effect = requests.ConnectionError self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_invalid_login(self, get): get.return_value.status_code = 401 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_404(self, get): get.return_value.text = '' get.return_value.status_code = 404 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_500(self, get): get.return_value.text = '' get.return_value.status_code = 500 self.assertRaises(VirtError, self.run_once) @patch('requests.get') def test_getHostGuestMapping(self, get): expected_hostname = 'hostname.domainname' expected_hypervisorId = uuids['host'] expected_guestId = uuids['vm'] expected_guest_state = Guest.STATE_SHUTOFF get.side_effect = [ MagicMock(text=CLUSTERS_XML), MagicMock(text=HOSTS_XML), MagicMock(text=VMS_XML), ] expected_result = Hypervisor(hypervisorId=expected_hypervisorId, name=expected_hostname, guestIds=[ Guest( expected_guestId, self.rhevm, expected_guest_state, ) ], facts={ Hypervisor.CPU_SOCKET_FACT: '1', Hypervisor.HYPERVISOR_TYPE_FACT: 'qemu', Hypervisor.HYPERVISOR_VERSION_FACT: '1.2.3', }) result = self.rhevm.getHostGuestMapping()['hypervisors'][0] self.assertEqual(expected_result.toDict(), result.toDict()) def test_proxy(self): proxy = Proxy() self.addCleanup(proxy.terminate) proxy.start() oldenv = os.environ.copy() self.addCleanup(lambda: setattr(os, 'environ', oldenv)) os.environ['https_proxy'] = proxy.address self.assertRaises(VirtError, self.run_once) self.assertIsNotNone(proxy.last_path, "Proxy was not called") self.assertEqual(proxy.last_path, 'localhost:8443') @patch('requests.get') def test_new_status(self, get): expected_hostname = 'hostname.domainname' expected_hypervisorId = uuids['host'] expected_guestId = uuids['vm'] expected_guest_state = Guest.STATE_RUNNING get.side_effect = [ MagicMock(text=CLUSTERS_XML), MagicMock(text=HOSTS_XML), MagicMock(text=VMS_XML_STATUS), ] expected_result = Hypervisor(hypervisorId=expected_hypervisorId, name=expected_hostname, guestIds=[ Guest( expected_guestId, self.rhevm, expected_guest_state, ) ], facts={ Hypervisor.CPU_SOCKET_FACT: '1', Hypervisor.HYPERVISOR_TYPE_FACT: 'qemu', Hypervisor.HYPERVISOR_VERSION_FACT: '1.2.3', }) result = self.rhevm.getHostGuestMapping()['hypervisors'][0] self.assertEqual(expected_result.toDict(), result.toDict())