def test_create_file_handle_webhandle(self, fake_tarfile, fake_exists, fake_webhandle): """Ova - ``_create_file_handle`` instantiates WebHandle if the supplied file does not exist""" fake_exists.return_value = False my_ova = ova.Ova("http://some/file") self.assertTrue(fake_exists.called) self.assertTrue(fake_webhandle.called)
def test_create_file_handle_filehandle(self, fake_tarfile, fake_exists, fake_filehandle): """Ova - ``_create_file_handle`` instantiates FileHandle if the supplied file exists""" fake_exists.return_value = True my_ova = ova.Ova("/some/file") self.assertTrue(fake_exists.called) self.assertTrue(fake_filehandle.called)
def test_vmdks_property_ro(self, fake_create_file_handle, fake_tarfile): """Ova - ``vmdks`` property is read-only""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') with self.assertRaises(AttributeError): my_ova.vmdks = ['doh']
def test_close(self, fake_create_file_handle, fake_tarfile): """Ova - ``close`` closes the file handle""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') my_ova.close() self.assertTrue(my_ova._handle.close.called)
def test_ovf_property(self, fake_create_file_handle, fake_tarfile): """Ova - ``ovf`` property returns the contents of the OVF file within the OVA""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') expected = 'woot' result = my_ova.ovf self.assertEqual(expected, result)
def test_networks_property(self, fake_create_file_handle, fake_tarfile): """Ova - ``networks`` property parses the OVF and returns all the network names""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'Network ovf:name="wooter"\nNetwork ovf:name="anotherWoot"' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') expected = ['wooter', 'anotherWoot'] result = my_ova.networks self.assertEqual(expected, result)
def test_chime_progress(self, fake_create_file_handle, fake_tarfile, fake_timer): """Ova - ``_chime_progress`` starts a Timer""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') my_ova._chime_progress('some lease object') self.assertTrue(fake_timer.called)
def test_vmdks_property(self, fake_create_file_handle, fake_tarfile): """Ova - ``vmdks`` property returns the disk names""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') expected = ['some.vmdk'] result = my_ova.vmdks self.assertEqual(expected, result)
def test_init_extracts_vmdks(self, fake_create_file_handle, fake_tarfile): """Ova - ``__init__`` extracts the OVF file from the OVA""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') expected = ['some.vmdk'] result = list(my_ova._disks.keys()) self.assertEqual(expected, result)
def test_timer(self, fake_create_file_handle, fake_tarfile, fake_chime_progress): """Ova - ``_timer`` schedules another Timer while upload is still progressing""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() my_ova = ova.Ova('/some/file') my_ova._timer(fake_lease) self.assertTrue(fake_chime_progress.called)
def test_upload_disk_none(self, fake_create_file_handle, fake_tarfile, fake_urlopen): """Ova - ``_upload_disk`` preps the OVA for deployment again""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_disk = MagicMock() fake_disk.path = 'someOther.vmdk' my_ova = ova.Ova('/some/file') my_ova._upload_disk(fake_disk) self.assertFalse(fake_urlopen.called)
def test_deploy_progress_property(self, fake_create_file_handle, fake_tarfile): """Ova - ``deploy_progress`` property returns the deploy progress""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') my_ova._prog = 50 result = my_ova.deploy_progress expected = 50 self.assertEqual(result, expected)
def test_timer_race(self, fake_create_file_handle, fake_tarfile, fake_chime_progress): """Ova - ``_timer`` handles race between upload completion and chiming progress""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() fake_lease.Progress.side_effect = [vmodl.fault.ManagedObjectNotFound()] my_ova = ova.Ova('/some/file') my_ova._timer(fake_lease) self.assertFalse(fake_lease.Abort.called)
def test_timer_error(self, fake_create_file_handle, fake_tarfile, fake_chime_progress): """Ova - ``_timer`` does not schedule another Timer when the upload has failed""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() fake_lease.state = 'error' my_ova = ova.Ova('/some/file') my_ova._timer(fake_lease) self.assertFalse(fake_chime_progress.called)
def test_timer_exception(self, fake_create_file_handle, fake_tarfile, fake_sys): """Ova - ``_timer`` aborts the upload if there's any Exceptions""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() fake_lease.Progress.side_effect = [Exception('testing')] my_ova = ova.Ova('/some/file') my_ova._timer(fake_lease) self.assertTrue(fake_lease.Abort.called) self.assertTrue(fake_sys.stderr.flush.called)
def test_deploy(self, fake_create_file_handle, fake_tarfile, fake_upload_disk, fake_chime_progress, fake_reset): """Ova - ``deploy`` happy path test""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() fake_deploy_spec = MagicMock() fake_deploy_spec.fileItem = [MagicMock()] my_ova = ova.Ova('/some/file') my_ova.deploy(fake_deploy_spec, fake_lease, 'my-vcenter-host') self.assertTrue(fake_upload_disk.called) self.assertTrue(fake_reset.called)
def test_deploy_exception(self, fake_create_file_handle, fake_tarfile, fake_upload_disk, fake_chime_progress, fake_reset): """Ova - ``deploy`` abofts if any Exception is raised""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_lease = MagicMock() fake_deploy_spec = MagicMock() fake_deploy_spec.fileItem = [MagicMock()] fake_upload_disk.side_effect = Exception('testing') my_ova = ova.Ova('/some/file') with self.assertRaises(Exception): my_ova.deploy(fake_deploy_spec, fake_lease, 'my-vcenter-host') self.assertTrue(fake_lease.Abort.called)
def test_get_device_url_raises(self, fake_create_file_handle, fake_tarfile): """Ova - ``_get_device_url`` raises RuntimeError if nothing matches""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_device1 = MagicMock() fake_device1.importKey = 'foo' fake_device1.url = 'https://foo' fake_lease = MagicMock() fake_lease.info.deviceUrl = [fake_device1] fake_file_item = MagicMock() fake_file_item.deviceId = 'bar' my_ova = ova.Ova('/some/file') my_ova._lease = fake_lease with self.assertRaises(RuntimeError): my_ova._get_device_url(fake_file_item)
def test_reset(self, fake_create_file_handle, fake_tarfile): """Ova - ``_reset`` preps the OVA for deployment again""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar my_ova = ova.Ova('/some/file') my_ova._spec = 'some spec' my_ova._lease = 'some lease' my_ova._host = 'some-vc-host' my_ova._prog = 100 my_ova._reset() self.assertEqual(my_ova._spec, None) self.assertEqual(my_ova._lease, None) self.assertEqual(my_ova._host, None) self.assertEqual(my_ova._prog, None) self.assertTrue(my_ova._disks['some.vmdk'].seek.called)
def test_get_device_url(self, fake_create_file_handle, fake_tarfile): """Ova - ``_get_device_url`` returns the upload URL when the import key matches""" fake_tar = MagicMock() fake_tar.getnames.return_value = ['some.vmdk', 'the.ovf'] fake_tar.extractfile.return_value.read.return_value.decode.return_value = 'woot' fake_tarfile.open.return_value = fake_tar fake_device1 = MagicMock() fake_device1.importKey = 'foo' fake_device1.url = 'https://foo' fake_device2 = MagicMock() fake_device2.importKey = 'bar' fake_device2.url = 'https://bar' fake_lease = MagicMock() fake_lease.info.deviceUrl = [fake_device1, fake_device2] fake_file_item = MagicMock() fake_file_item.deviceId = 'bar' my_ova = ova.Ova('/some/file') my_ova._lease = fake_lease result = my_ova._get_device_url(fake_file_item) expected = 'https://bar' self.assertEqual(result, expected)