def _common_params_setup(self, uses_bittorrent): self.context = "context" self.session = FakeSession() self.instance = {"uuid": "uuid"} self.image_id = "image_id" self.uuid_stack = ["uuid_stack"] self.sr_path = "sr_path" self.params = { 'image_id': self.image_id, 'uuid_stack': self.uuid_stack, 'sr_path': self.sr_path } self.bt_params = copy.copy(self.params) self.bt_params['torrent_url'] = "%s.torrent" % self.image_id self.vdis = {'root': {'uuid': 'vdi'}} vm_utils._make_uuid_stack().AndReturn(self.uuid_stack) vm_utils.get_sr_path(self.session).AndReturn(self.sr_path) vm_utils._image_uses_bittorrent( self.context, self.instance).AndReturn(uses_bittorrent) if uses_bittorrent: def set_url(instance, image_id, params): params['torrent_url'] = "%s.torrent" % image_id vm_utils._add_torrent_url( self.instance, self.image_id, self.params).WithSideEffects(set_url).AndReturn(True)
def _setup_bittorrent(self): vm_utils._image_uses_bittorrent(self.context, self.instance).AndReturn(True) def _add_torrent_url(instance, image_id, params): params["torrent_url"] = "%s.torrent" % image_id vm_utils._add_torrent_url(self.instance, self.image_id, mox.IgnoreArg()).AndReturn(True) vm_utils._add_bittorrent_params(self.image_id, self.params) self.session.call_plugin_serialized_with_retry("bittorrent", "download_vhd", 0, None, **self.params).AndReturn( self.vdis )
def test_default_fetch_url(self): image_id = "1-2-3-4-5" params = {} self.assertTrue(vm_utils._add_torrent_url({}, image_id, params)) expected = urlparse.urljoin(CONF.xenapi_torrent_base_url, "%s.torrent" % image_id) self.assertEqual(expected, params['torrent_url']) self.assertEqual(vm_utils.get_torrent_url, vm_utils._TORRENT_URL_FN) # call it again now that the fetcher fn is cached: params = {} self.assertTrue(vm_utils._add_torrent_url({}, image_id, params))
def _setup_bittorrent(self): vm_utils._image_uses_bittorrent(self.context, self.instance).AndReturn(True) def _add_torrent_url(instance, image_id, params): params['torrent_url'] = "%s.torrent" % image_id vm_utils._add_torrent_url(self.instance, self.image_id, mox.IgnoreArg()).AndReturn(True) vm_utils._add_bittorrent_params(self.image_id, self.params) self.session.call_plugin_serialized_with_retry( 'bittorrent', 'download_vhd', 0, None, **self.params).AndReturn(self.vdis)
def test_with_extension(self): def mock_iter_single(namespace): return [MockEntryPoint()] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_single) image_id = "1-2-3-4-5" params = {} self.assertTrue(vm_utils._add_torrent_url({}, image_id, params)) expected = "http://www.foobar.com/%s" % image_id self.assertEqual(expected, params['torrent_url']) self.assertEqual(another_fetcher, vm_utils._TORRENT_URL_FN)
def test_default_fetch_url(self): def mock_iter_none(namespace): return [] self.stubs.Set(pkg_resources, "iter_entry_points", mock_iter_none) image_id = "1-2-3-4-5" params = {} self.assertTrue(vm_utils._add_torrent_url({}, image_id, params)) expected = urlparse.urljoin(CONF.xenapi_torrent_base_url, "%s.torrent" % image_id) self.assertEqual(expected, params["torrent_url"]) self.assertEqual(vm_utils.get_torrent_url, vm_utils._TORRENT_URL_FN)
def test_default_fetch_url(self): def mock_iter_none(namespace): return [] self.stubs.Set(pkg_resources, 'iter_entry_points', mock_iter_none) image_id = "1-2-3-4-5" params = {} self.assertTrue(vm_utils._add_torrent_url({}, image_id, params)) expected = urlparse.urljoin(CONF.xenapi_torrent_base_url, "%s.torrent" % image_id) self.assertEqual(expected, params['torrent_url']) self.assertEqual(vm_utils.get_torrent_url, vm_utils._TORRENT_URL_FN)
def _common_params_setup(self, uses_bittorrent): self.context = "context" self.session = FakeSession() self.instance = {"uuid": "uuid"} self.image_id = "image_id" self.uuid_stack = ["uuid_stack"] self.sr_path = "sr_path" self.params = {'image_id': self.image_id, 'uuid_stack': self.uuid_stack, 'sr_path': self.sr_path} self.bt_params = copy.copy(self.params) self.bt_params['torrent_url'] = "%s.torrent" % self.image_id self.vdis = {'root': {'uuid': 'vdi'}} vm_utils._make_uuid_stack().AndReturn(self.uuid_stack) vm_utils.get_sr_path(self.session).AndReturn(self.sr_path) vm_utils._image_uses_bittorrent(self.context, self.instance).AndReturn(uses_bittorrent) if uses_bittorrent: def set_url(instance, image_id, params): params['torrent_url'] = "%s.torrent" % image_id vm_utils._add_torrent_url(self.instance, self.image_id, self.params).WithSideEffects(set_url).AndReturn(True)
def test_fetch_url_failure(self): # fetcher function fails: vm_utils._TORRENT_URL_FN = bad_fetcher self.assertFalse(vm_utils._add_torrent_url({}, '1-2-3-4-5', {}))
def test_fetch_url_failure(self): # fetcher function fails: vm_utils._TORRENT_URL_FN = bad_fetcher self.assertFalse(vm_utils._add_torrent_url({}, "1-2-3-4-5", {}))