Home | Trees | Indices | Help |
---|
|
1 # Elisa - Home multimedia server 2 # Copyright (C) 2006-2008 Fluendo Embedded S.L. (www.fluendo.com). 3 # All rights reserved. 4 # 5 # This file is available under one of two license agreements. 6 # 7 # This file is licensed under the GPL version 3. 8 # See "LICENSE.GPL" in the root of this distribution including a special 9 # exception to use Elisa with Fluendo's plugins. 10 # 11 # The GPL part of Elisa is also available under a commercial licensing 12 # agreement from Fluendo. 13 # See "LICENSE.Elisa" in the root directory of this distribution package 14 # for details on that license. 15 16 from elisa.core.tests.elisa_test_case import ElisaTestCase 17 from elisa.core import plugin 18 from elisa.core import media_manager, metadata_manager, media_uri, media_scanner 19 from elisa.core import media_db, db_backend 20 from elisa.base_components import media_provider, metadata_provider 21 from elisa.core.tests.test_metadata_provider import FooMetadataProvider 22 import tempfile, shutil, os, tempfile 23 24 from twisted.internet import defer 25 30 35 3941 name = 'foo2' 42 components = {'another_foo_media_provider': {'path':AnotherFooMediaProvider}, 43 'foo_metadata_provider': {'path': FooMetadataProvider}}4446 name = 'lfs' 47 components = { 48 'local_media': 49 {'path': 'elisa.plugins.base.local_media:LocalMedia'}, 50 'gst_metadata': 51 {'path': 'elisa.plugins.good.gstreamer_plugin.gst_metadata:GstMetadata'} 52 }53133 134 dfr = self._media_manager.add_source(self.tmp_uri) 135 dfr.addCallback(add_source_done) 136 137 return dfr 13856 ElisaTestCase.__init__(self, methodName=methodName) 57 self._db_file = os.path.join(tempfile.gettempdir(), 'test.db') 58 try: 59 db = db_backend.DBBackend(db_backend='sqlite', 60 database=self._db_file) 61 except db_backend.DBBackendError, error: 62 self.skip = error6365 ElisaTestCase.setUp(self) 66 67 from elisa.core.common import application 68 application.plugin_registry.register_plugin(LFS) 69 application.plugin_registry.register_plugin(FooPlugin) 70 application.plugin_registry.register_plugin(FooPlugin2) 71 72 c = application.plugin_registry.create_component 73 74 self._metadata_manager = metadata_manager.MetadataManager() 75 self._metadata_manager.register_component(c('foo2:foo_metadata_provider')) 76 self._metadata_manager.register_component(c('lfs:gst_metadata')) 77 78 self._media_manager = media_manager.MediaManager(self._metadata_manager) 79 80 self._media_manager.register_component(c('foo:foo_media_provider')) 81 self._media_manager.register_component(c('foo2:another_foo_media_provider')) 82 self._media_manager.register_component(c('lfs:local_media')) 83 84 self._media_manager.start() 85 self._media_manager._media_scanner._main_loop_running = True 86 87 88 self._tmp_dir = tempfile.mkdtemp() 89 open(os.path.join(self._tmp_dir, 'test.mp3'), 'w').close() 90 91 self.tmp_uri = media_uri.MediaUri(u'file://%s' % self._tmp_dir)9294 self._metadata_manager.stop() 95 self._media_manager.stop() 96 shutil.rmtree(self._tmp_dir) 97 ElisaTestCase.tearDown(self)98100 # FIXME: looks like this could be tested through the public API? 101 self.assertEquals(len(self._media_manager._components), 3) 102 for provider in self._media_manager._components: 103 self.failUnless(isinstance(provider, media_provider.MediaProvider)) 104 105 foo_uri = media_uri.MediaUri(u'foo://bar') 106 foo_provider = self._media_manager._get_media_provider(foo_uri) 107 self.failUnless(isinstance(foo_provider, FooMediaProvider)) 108 109 bar_uri = media_uri.MediaUri(u'bar://boo') 110 bar_provider = self._media_manager._get_media_provider(bar_uri) 111 self.failUnless(isinstance(bar_provider, AnotherFooMediaProvider))112 113 117 129 131 def add_source_done(result): 132 self.failUnless(self._media_manager.get_source_for_uri(self.tmp_uri))140 def add_source_done(result): 141 self.failUnless(self._media_manager.get_source_for_uri(self.tmp_uri)) 142 source = self._media_manager.get_source_for_uri(self.tmp_uri) 143 144 dfr = self._media_manager.remove_source(self.tmp_uri) 145 dfr.addCallback(remove_source_done) 146 147 return dfr148 149 def remove_source_done(result): 150 source = self._media_manager.get_source_for_uri(self.tmp_uri) 151 self.failIf(source.available) 152 153 dfr = self._media_manager.add_source(self.tmp_uri, ['audio']) 154 dfr.addCallback(add_source_done) 155 156 return dfr 157159 def add_source_done(result): 160 dfr = self._media_manager.update_source(self.tmp_uri) 161 dfr.addCallback(update_source_done) 162 163 return dfr164 165 def update_source_done(result): 166 # ok, test completed 167 return 168 169 dfr = self._media_manager.add_source(self.tmp_uri) 170 dfr.addCallback(add_source_done) 171 172 return dfr 173175 def add_source_done(result): 176 source = self._media_manager.get_source_for_uri(self.tmp_uri) 177 self.failUnless(source) 178 179 db = self._media_manager.media_db 180 foo_uri = media_uri.MediaUri(u'file:///tmp/foo.avi') 181 r = db.add_media(foo_uri, 'foo', source, 'video') 182 self.assertEquals(r, True) 183 184 foo_row = self._media_manager.get_media_information(foo_uri) 185 self.assertEquals(foo_row.uri, str(foo_uri))186 187 dfr = self._media_manager.add_source(self.tmp_uri, ['video']) 188 dfr.addCallback(add_source_done) 189 190 return dfr 191
Home | Trees | Indices | Help |
---|
Generated by Epydoc 3.0beta1 on Wed Jan 16 19:11:06 2008 | http://epydoc.sourceforge.net |