Example #1
0
File: startup.py Project: ndim/miro
def startup():
    """Startup Miro.

    This method starts up the eventloop and schedules the rest of the startup
    to run in the event loop.

    Frontends should call this method, then wait for 1 of 2 messages

    StartupSuccess is sent once the startup is done and the backend is ready
    to go.

    StartupFailure is sent if something bad happened.

    initialize() must be called before startup().
    """
    logging.info("Starting up %s", app.config.get(prefs.LONG_APP_NAME))
    logging.info("Version:    %s", app.config.get(prefs.APP_VERSION))
    logging.info("Revision:   %s", app.config.get(prefs.APP_REVISION))
    logging.info("Builder:    %s", app.config.get(prefs.BUILD_MACHINE))
    logging.info("Build Time: %s", app.config.get(prefs.BUILD_TIME))
    logging.info("Debugmode:  %s", app.debugmode)
    eventloop.connect('thread-started', startup_for_frontend)
    logging.info("Reading HTTP Password list")
    httpauth.init()
    httpauth.restore_from_file()
    logging.info("Starting libCURL thread")
    httpclient.init_libcurl()
    httpclient.start_thread()
    logging.info("Starting event loop thread")
    eventloop.startup()
    if DEBUG_DB_MEM_USAGE:
        mem_usage_test_event.wait()
    load_extensions()
Example #2
0
 def setUp(self):
     self.tempdir = tempfile.mkdtemp()
     if not os.path.exists(self.tempdir):
         os.makedirs(self.tempdir)
     self.setup_downloader_log()
     models.initialize()
     app.in_unit_tests = True
     # reload config and initialize it to temprary
     config.load_temporary()
     self.platform = app.config.get(prefs.APP_PLATFORM)
     database.set_thread(threading.currentThread())
     database.setup_managers()
     self.raise_db_load_errors = True
     app.db = None
     self.reload_database()
     self.setup_new_item_info_cache()
     searchengines._engines = [
         searchengines.SearchEngineInfo(u"all", u"Search All", u"", -1)
         ]
     # reset the event loop
     util.chatter = False
     self.saw_error = False
     self.error_signal_okay = False
     signals.system.connect('error', self.handle_error)
     app.controller = DummyController()
     self.httpserver = None
     httpauth.init()
Example #3
0
def startup():
    """Startup Miro.

    This method starts up the eventloop and schedules the rest of the startup
    to run in the event loop.

    Frontends should call this method, then wait for 1 of 2 messages

    StartupSuccess is sent once the startup is done and the backend is ready
    to go.

    StartupFailure is sent if something bad happened.

    initialize() must be called before startup().
    """
    logging.info("Starting up %s", app.config.get(prefs.LONG_APP_NAME))
    logging.info("Version:    %s", app.config.get(prefs.APP_VERSION))
    logging.info("Revision:   %s", app.config.get(prefs.APP_REVISION))
    logging.info("Builder:    %s", app.config.get(prefs.BUILD_MACHINE))
    logging.info("Build Time: %s", app.config.get(prefs.BUILD_TIME))
    logging.info("Debugmode:  %s", app.debugmode)
    eventloop.connect('thread-started', finish_startup)
    logging.info("Reading HTTP Password list")
    httpauth.init()
    httpauth.restore_from_file()
    logging.info("Starting libCURL thread")
    httpclient.init_libcurl()
    httpclient.start_thread()
    logging.info("Starting event loop thread")
    eventloop.startup()
    if DEBUG_DB_MEM_USAGE:
        mem_usage_test_event.wait()
    load_extensions()
Example #4
0
 def setUp(self):
     self.setup_log_filter()
     self.tempdir = tempfile.mkdtemp()
     if not os.path.exists(self.tempdir):
         os.makedirs(self.tempdir)
     self.setup_downloader_log()
     models.initialize()
     app.in_unit_tests = True
     app.device_manager = devices.DeviceManager()
     models.Item._path_count_tracker.reset()
     testobjects.test_started(self)
     # Tweak Item to allow us to make up fake paths for FileItems
     models.Item._allow_nonexistent_paths = True
     # setup the deleted file checker
     item.setup_deleted_checker()
     item.start_deleted_checker()
     # Skip worker proccess for feedparser
     feed._RUN_FEED_PARSER_INLINE = True
     signals.system.connect('new-dialog', self.handle_new_dialog)
     # reload config and initialize it to temprary
     config.load_temporary()
     self.setup_config_watcher()
     self.platform = app.config.get(prefs.APP_PLATFORM)
     self.set_temp_support_directory()
     # for the unittests, both the database code and any UI code should run
     # in the main thread.
     threadcheck.set_eventloop_thread(threading.currentThread())
     threadcheck.set_ui_thread(threading.currentThread())
     self.raise_db_load_errors = True
     app.db = None
     self.allow_db_upgrade_error_dialog = False
     self.reload_database()
     self.setup_new_item_info_cache()
     self.setup_dummy_message_handlers()
     item.setup_metadata_manager(self.tempdir)
     searchengines._engines = [
         searchengines.SearchEngineInfo(u"all", u"Search All", u"", -1)
         ]
     # reset the event loop
     util.chatter = False
     self.saw_error = False
     self.error_signal_okay = False
     signals.system.connect('error', self.handle_error)
     app.controller = DummyController()
     self.httpserver = None
     httpauth.init()
     # reset any logging records from our setUp call()
     self.log_filter.reset_records()
     # create an extension manager that searches our tempdir for extensions
     # NOTE: this doesn't actually load any extensions, since the directory
     # is currently empty.  If you want to use the ExtensionManager you
     # need to put a .miroext file in the tempdir then call
     # app.extension_manager.load_extension()
     app.extension_manager = extensionmanager.ExtensionManager(
             [self.tempdir], [])
     # Create a download state object (but don't start the downloader
     # for the individual test unless necessary.  In this case we override
     # the class to run the downloader).
     app.download_state_manager = downloader.DownloadStateManager()
     self.mock_patchers = []
Example #5
0
 def setUp(self):
     self.setup_log_filter()
     self.tempdir = tempfile.mkdtemp()
     if not os.path.exists(self.tempdir):
         os.makedirs(self.tempdir)
     self.setup_downloader_log()
     models.initialize()
     app.in_unit_tests = True
     app.device_manager = devices.DeviceManager()
     models.Item._path_count_tracker.reset()
     testobjects.test_started(self)
     # Tweak Item to allow us to make up fake paths for FileItems
     models.Item._allow_nonexistent_paths = True
     # setup the deleted file checker
     item.setup_deleted_checker()
     item.start_deleted_checker()
     # Skip worker proccess for feedparser
     feed._RUN_FEED_PARSER_INLINE = True
     signals.system.connect('new-dialog', self.handle_new_dialog)
     # reload config and initialize it to temprary
     config.load_temporary()
     self.setup_config_watcher()
     self.platform = app.config.get(prefs.APP_PLATFORM)
     self.set_temp_support_directory()
     # for the unittests, both the database code and any UI code should run
     # in the main thread.
     threadcheck.set_eventloop_thread(threading.currentThread())
     threadcheck.set_ui_thread(threading.currentThread())
     self.raise_db_load_errors = True
     app.db = None
     self.allow_db_upgrade_error_dialog = False
     self.reload_database()
     self.setup_new_item_info_cache()
     self.setup_dummy_message_handlers()
     item.setup_metadata_manager(self.tempdir)
     searchengines._engines = [
         searchengines.SearchEngineInfo(u"all", u"Search All", u"", -1)
     ]
     # reset the event loop
     util.chatter = False
     self.saw_error = False
     self.error_signal_okay = False
     signals.system.connect('error', self.handle_error)
     app.controller = DummyController()
     self.httpserver = None
     httpauth.init()
     # reset any logging records from our setUp call()
     self.log_filter.reset_records()
     # create an extension manager that searches our tempdir for extensions
     # NOTE: this doesn't actually load any extensions, since the directory
     # is currently empty.  If you want to use the ExtensionManager you
     # need to put a .miroext file in the tempdir then call
     # app.extension_manager.load_extension()
     app.extension_manager = extensionmanager.ExtensionManager(
         [self.tempdir], [])
     # Create a download state object (but don't start the downloader
     # for the individual test unless necessary.  In this case we override
     # the class to run the downloader).
     app.download_state_manager = downloader.DownloadStateManager()
     self.mock_patchers = []
Example #6
0
 def test_store(self):
     self.setup_answer("user", "password")
     self.grab_url(self.httpserver.build_url('protected/index.txt'))
     self.assertEquals(self.dialogs_seen, 1)
     # write out the data
     store_path = self.make_temp_path('.json')
     httpauth.write_to_file(store_path)
     # reset the data, check that we get a new dialog
     httpauth.init()
     self.grab_url(self.httpserver.build_url('protected/index.txt'))
     self.assertEquals(self.dialogs_seen, 2)
     # reset the data, then restore from file.  We shouldn't get a new
     # dialog this time
     httpauth.init()
     httpauth.restore_from_file(store_path)
     self.grab_url(self.httpserver.build_url('protected/index.txt'))
     self.assertEquals(self.dialogs_seen, 2)
Example #7
0
 def setUp(self):
     self.setup_log_filter()
     self.tempdir = tempfile.mkdtemp()
     if not os.path.exists(self.tempdir):
         os.makedirs(self.tempdir)
     self.setup_downloader_log()
     models.initialize()
     app.in_unit_tests = True
     # Tweak Item to allow us to make up fake paths for FileItems
     models.Item._allow_nonexistent_paths = True
     # setup movie data stuff
     self.metadata_progress_updater = FakeMetadataProgressUpdater()
     app.metadata_progress_updater = self.metadata_progress_updater
     moviedata.movie_data_updater = moviedata.MovieDataUpdater()
     # Skip worker proccess for feedparser
     feed._RUN_FEED_PARSER_INLINE = True
     # reload config and initialize it to temprary
     config.load_temporary()
     self.platform = app.config.get(prefs.APP_PLATFORM)
     database.set_thread(threading.currentThread())
     database.setup_managers()
     self.raise_db_load_errors = True
     app.db = None
     self.reload_database()
     self.setup_new_item_info_cache()
     searchengines._engines = [
         searchengines.SearchEngineInfo(u"all", u"Search All", u"", -1)
     ]
     # reset the event loop
     util.chatter = False
     self.saw_error = False
     self.error_signal_okay = False
     signals.system.connect('error', self.handle_error)
     app.controller = DummyController()
     self.httpserver = None
     httpauth.init()
     # reset any logging records from our setUp call()
     self.log_filter.reset_records()
Example #8
0
 def setUp(self):
     self.setup_log_filter()
     self.tempdir = tempfile.mkdtemp()
     if not os.path.exists(self.tempdir):
         os.makedirs(self.tempdir)
     self.setup_downloader_log()
     models.initialize()
     app.in_unit_tests = True
     # Tweak Item to allow us to make up fake paths for FileItems
     models.Item._allow_nonexistent_paths = True
     # setup movie data stuff
     self.metadata_progress_updater = FakeMetadataProgressUpdater()
     app.metadata_progress_updater = self.metadata_progress_updater
     moviedata.movie_data_updater = moviedata.MovieDataUpdater()
     # Skip worker proccess for feedparser
     feed._RUN_FEED_PARSER_INLINE = True
     # reload config and initialize it to temprary
     config.load_temporary()
     self.platform = app.config.get(prefs.APP_PLATFORM)
     database.set_thread(threading.currentThread())
     database.setup_managers()
     self.raise_db_load_errors = True
     app.db = None
     self.reload_database()
     self.setup_new_item_info_cache()
     searchengines._engines = [
         searchengines.SearchEngineInfo(u"all", u"Search All", u"", -1)
         ]
     # reset the event loop
     util.chatter = False
     self.saw_error = False
     self.error_signal_okay = False
     signals.system.connect('error', self.handle_error)
     app.controller = DummyController()
     self.httpserver = None
     httpauth.init()
     # reset any logging records from our setUp call()
     self.log_filter.reset_records()