示例#1
0
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)
示例#2
0
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)
示例#3
0
    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)
示例#4
0
 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)
示例#5
0
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')
示例#6
0
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')
示例#7
0
 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)
示例#8
0
    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)