def run(self): self.index_create() manager = Manager() apiclient = apc() config = user().mm_config WatchSyncer(signal=getsig('watch'), chunking_number=config['chunking_number'], timeout=config['request_max_wait']) airtime_receiver = AirtimeMessageReceiver(config, manager) airtime_notifier = AirtimeNotifier(config, airtime_receiver) adb = AirtimeDB(apiclient) store = { u'stor': adb.storage_path(), u'watched_dirs': adb.list_watched(), } self.logger.info("initializing mm with directories: %s" % str(store)) self.logger.info("Initing with the following airtime response:%s" % str(store)) airtime_receiver.change_storage({'directory': store[u'stor']}) for watch_dir in store[u'watched_dirs']: if not os.path.exists(watch_dir): # Create the watch_directory here try: os.makedirs(watch_dir) except Exception: self.logger.error("Could not create watch directory: '%s' \ (given from the database)." % watch_dir) if os.path.exists(watch_dir): airtime_receiver.new_watch({'directory': watch_dir}, restart=True) else: self.logger.info("Failed to add watch on %s" % str(watch_dir)) EventDrainer(airtime_notifier, interval=float(config['rmq_event_wait'])) # Launch the toucher that updates the last time when the script was # ran every n seconds. # TODO : verify that this does not interfere with bootstrapping because the # toucher thread might update the last_ran variable too fast ToucherThread(path=user().touch_file_path(), interval=int(config['touch_interval'])) success = False while not success: try: apiclient.register_component('media-monitor') success = True except Exception, e: self.logger.error(str(e)) import time time.sleep(10)
def test_directory_get_files(self): sdb = AirtimeDB(self.ac) print(sdb.list_storable_paths()) for wdir in sdb.list_storable_paths(): files = sdb.directory_get_files(wdir) print( "total files: %d" % len(files) ) self.assertTrue( len(files) >= 0 ) self.assertTrue( isinstance(files, set) ) exist, deleted = partition(os.path.exists, files) print("(exist, deleted) = (%d, %d)" % ( len(exist), len(deleted) ) )
def test_directory_get_files(self): sdb = AirtimeDB(self.ac) print(sdb.list_storable_paths()) for wdir in sdb.list_storable_paths(): files = sdb.directory_get_files(wdir) print("total files: %d" % len(files)) self.assertTrue(len(files) >= 0) self.assertTrue(isinstance(files, set)) exist, deleted = partition(os.path.exists, files) print("(exist, deleted) = (%d, %d)" % (len(exist), len(deleted)))
def run(self): self.index_create() manager = Manager() apiclient = apc() config = user().mm_config WatchSyncer(signal=getsig('watch'), chunking_number=config['chunking_number'], timeout=config['request_max_wait']) airtime_receiver = AirtimeMessageReceiver(config,manager) airtime_notifier = AirtimeNotifier(config, airtime_receiver) adb = AirtimeDB(apiclient) store = { u'stor' : adb.storage_path(), u'watched_dirs' : adb.list_watched(), } self.logger.info("initializing mm with directories: %s" % str(store)) self.logger.info( "Initing with the following airtime response:%s" % str(store)) airtime_receiver.change_storage({ 'directory':store[u'stor'] }) for watch_dir in store[u'watched_dirs']: if not os.path.exists(watch_dir): # Create the watch_directory here try: os.makedirs(watch_dir) except Exception: self.logger.error("Could not create watch directory: '%s' \ (given from the database)." % watch_dir) if os.path.exists(watch_dir): airtime_receiver.new_watch({ 'directory':watch_dir }, restart=True) else: self.logger.info("Failed to add watch on %s" % str(watch_dir)) EventDrainer(airtime_notifier, interval=float(config['rmq_event_wait'])) # Launch the toucher that updates the last time when the script was # ran every n seconds. # TODO : verify that this does not interfere with bootstrapping because the # toucher thread might update the last_ran variable too fast ToucherThread(path=user().touch_file_path(), interval=int(config['touch_interval'])) success = False while not success: try: apiclient.register_component('media-monitor') success = True except Exception, e: self.logger.error(str(e)) import time time.sleep(10)
def __request_now_bootstrap(self, directory_id=None, directory=None, all_files=True): if (not directory_id) and (not directory): raise ValueError("You must provide either directory_id or \ directory") sdb = AirtimeDB(apc.AirtimeApiClient.create_right_config()) if directory : directory = os.path.normpath(directory) if directory_id == None : directory_id = sdb.to_id(directory) if directory == None : directory = sdb.to_directory(directory_id) try: bs = Bootstrapper( sdb, self.manager.watch_signal() ) bs.flush_watch( directory=directory, last_ran=self.cfg.last_ran() ) except Exception as e: self.fatal_exception("Exception bootstrapping: (dir,id)=(%s,%s)" % (directory, directory_id), e) raise DirectoryIsNotListed(directory, cause=e)
class TestAirtimeDB(unittest.TestCase): def setUp(self): self.ac = ac.AirtimeApiClient(logger=get_logger(), config_path=prepare_tests.real_config) def test_syncdb_init(self): sdb = AirtimeDB(self.ac) self.assertTrue( len(sdb.list_storable_paths()) > 0 ) def test_list(self): self.sdb = AirtimeDB(self.ac) for watch_dir in self.sdb.list_storable_paths(): self.assertTrue( os.path.exists(watch_dir) ) def test_directory_get_files(self): sdb = AirtimeDB(self.ac) print(sdb.list_storable_paths()) for wdir in sdb.list_storable_paths(): files = sdb.directory_get_files(wdir) print( "total files: %d" % len(files) ) self.assertTrue( len(files) >= 0 ) self.assertTrue( isinstance(files, set) ) exist, deleted = partition(os.path.exists, files) print("(exist, deleted) = (%d, %d)" % ( len(exist), len(deleted) ) )
class TestAirtimeDB(unittest.TestCase): def setUp(self): self.ac = ac.AirtimeApiClient(logger=get_logger(), config_path=prepare_tests.real_config) def test_syncdb_init(self): sdb = AirtimeDB(self.ac) self.assertTrue(len(sdb.list_storable_paths()) > 0) def test_list(self): self.sdb = AirtimeDB(self.ac) for watch_dir in self.sdb.list_storable_paths(): self.assertTrue(os.path.exists(watch_dir)) def test_directory_get_files(self): sdb = AirtimeDB(self.ac) print(sdb.list_storable_paths()) for wdir in sdb.list_storable_paths(): files = sdb.directory_get_files(wdir) print("total files: %d" % len(files)) self.assertTrue(len(files) >= 0) self.assertTrue(isinstance(files, set)) exist, deleted = partition(os.path.exists, files) print("(exist, deleted) = (%d, %d)" % (len(exist), len(deleted)))
def test_list(self): self.sdb = AirtimeDB(self.ac) for watch_dir in self.sdb.list_storable_paths(): self.assertTrue( os.path.exists(watch_dir) )
def test_syncdb_init(self): sdb = AirtimeDB(self.ac) self.assertTrue( len(sdb.list_storable_paths()) > 0 )
def test_list(self): self.sdb = AirtimeDB(self.ac) for watch_dir in self.sdb.list_storable_paths(): self.assertTrue(os.path.exists(watch_dir))
def test_syncdb_init(self): sdb = AirtimeDB(self.ac) self.assertTrue(len(sdb.list_storable_paths()) > 0)