class EventConnectionTest(unittest.TestCase): def setUp(self): self.platform = getPlatform() self.translator = Mock() self.domainCache = Mock() self.settings = MythSettings(self.platform, self.translator) privateConfig = OnDemandConfig() self.settings.put('mysql_host', privateConfig.get('mysql_host')) self.settings.put('mysql_port', privateConfig.get('mysql_port')) self.settings.setMySqlDatabase(privateConfig.get('mysql_database')) self.settings.setMySqlUser(privateConfig.get('mysql_user')) self.settings.put('mysql_password', privateConfig.get('mysql_password')) self.settings.put('paths_recordedprefix', privateConfig.get('paths_recordedprefix')) self.db = MythDatabase(self.settings, self.translator, self.domainCache) self.bus = EventBus() self.conn = EventConnection(self.settings, self.translator, self.platform, self.bus, self.db) def tearDown(self): self.conn.close() def test_read_a_system_event(self): x = 1 if 'MYTH_SNIFFER' in os.environ: x = 9999999 for i in xrange(x): msg = self.conn.readEvent() print(msg) log.debug(msg)
class MythEventPublisher(object): # Before recording starts: # # [u'BACKEND_MESSAGE', u'SYSTEM_EVENT REC_PENDING SECS 120 CARDID 7 CHANID 4282 STARTTIME 2011-05-27T20:00:00 SENDER athena', u'empty'] # # Delete recording # # [u'BACKEND_MESSAGE', u'RECORDING_LIST_CHANGE DELETE 1071 2011-05-27T15:30:00', u'empty'] # # Create/edit/delete schedule # # [u'BACKEND_MESSAGE', u'SCHEDULE_CHANGE', u'empty'] # def __init__(self, *args, **kwargs): [ setattr(self, k, v) for k, v in kwargs.items() if k in ['bus', 'settings', 'translator', 'platform'] ] self.closed = False @inject_conn def supportsSystemEvents(self): return self.conn().platform.supportsSystemEvents() @run_async def startup(self): log.debug('Starting MythEventPublisher..') self.eventConn = EventConnection(settings=self.settings, translator=self.translator, platform=self.platform, bus=self.bus) while not self.closed and not xbmc.abortRequested: try: tokens = self.eventConn.readEvent() if len(tokens) >= 2 and not tokens[1].startswith( u'UPDATE_FILE_SIZE'): log.debug('EVENT: %s' % tokens) if len(tokens) >= 3 and tokens[0] == 'BACKEND_MESSAGE': if tokens[1].startswith( 'SYSTEM_EVENT') and 'SCHEDULER_RAN' in tokens[1]: self.bus.publish({'id': Event.SCHEDULER_RAN}) elif tokens[1].startswith('COMMFLAG_START'): self.bus.publish({'id': Event.COMMFLAG_START}) elif tokens[1].startswith('SCHEDULE_CHANGE'): self.bus.publish({'id': Event.SCHEDULE_CHANGED}) except Exception, e: log.exception(e) log.debug('Exiting MythEventPublisher')
class MythEventPublisher(object): # Before recording starts: # # [u'BACKEND_MESSAGE', u'SYSTEM_EVENT REC_PENDING SECS 120 CARDID 7 CHANID 4282 STARTTIME 2011-05-27T20:00:00 SENDER athena', u'empty'] # # Delete recording # # [u'BACKEND_MESSAGE', u'RECORDING_LIST_CHANGE DELETE 1071 2011-05-27T15:30:00', u'empty'] # # Create/edit/delete schedule # # [u'BACKEND_MESSAGE', u'SCHEDULE_CHANGE', u'empty'] # def __init__(self, *args, **kwargs): [setattr(self, k, v) for k,v in kwargs.items() if k in ['bus', 'settings','translator','platform']] self.closed = False @inject_conn def supportsSystemEvents(self): return self.conn().platform.supportsSystemEvents() @run_async def startup(self): log.debug('Starting MythEventPublisher..') self.eventConn = EventConnection(settings=self.settings, translator=self.translator, platform=self.platform, bus=self.bus) while not self.closed and not xbmc.abortRequested: try: tokens = self.eventConn.readEvent() if len(tokens) >= 2 and not tokens[1].startswith(u'UPDATE_FILE_SIZE'): log.debug('EVENT: %s' % tokens) if len(tokens)>=3 and tokens[0] == 'BACKEND_MESSAGE': if tokens[1].startswith('SYSTEM_EVENT') and 'SCHEDULER_RAN' in tokens[1]: self.bus.publish({'id':Event.SCHEDULER_RAN}) elif tokens[1].startswith('COMMFLAG_START'): self.bus.publish({'id':Event.COMMFLAG_START}) elif tokens[1].startswith('SCHEDULE_CHANGE'): self.bus.publish({'id':Event.SCHEDULE_CHANGED}) except Exception, e: log.exception(e) log.debug('Exiting MythEventPublisher')