Skip to content
Snippets Groups Projects
connection_tester.py 1.99 KiB
Newer Older
  • Learn to ignore specific revisions
  • import urllib
    import simplejson
    
    from modules.communication.liquidsoap.communicator import LiquidSoapCommunicator
    from libraries.database.broadcasts import ScheduleEntry
    
    from libraries.base.config import AuraConfig
    
    from libraries.exceptions.auraexceptions import LQConnectionError
    
    
    
    class ConnectionTester(AuraConfig):
    
    
        def __init__(self):
    
            super(ConnectionTester, self).__init__()
    
    
        def get_connection_status(self):
            status = dict()
    
            status["db"] = self.test_db_conn()
            status["pv"] = self.test_pv_conn()
            status["lqs"] = self.test_lqs_conn()
            status["tank"] = self.test_tank_conn()
            status["redis"] = self.test_redis_conn()
    
    
            return simplejson.dumps(status)
    
        def test_db_conn(self):
            try:
                ScheduleEntry.select_all()
            except:
                return False
    
            return True
    
        def test_lqs_conn(self):
            try:
                lsc = LiquidSoapCommunicator(self.config)
                s = lsc.get_mixer_status()
    
            except Exception as e:
                print(e)
    
            # return True if something is in dict
            if len(s) > 0:
    
                return True
    
    
            # if an empty dict came back, return False
    
            return False
    
        def test_pv_conn(self):
            return self.test_url_connection(self.config.get("calendarurl"))
    
        def test_tank_conn(self):
    
            # test load of playlist 1
    
            return self.test_url_connection(self.config.get("importerurl")+"1")
    
        def test_redis_conn(self):
            from modules.communication.redis.adapter import ClientRedisAdapter
            try:
                cra = ClientRedisAdapter()
                cra.publish("aura", "status")
            except:
                return False
    
            return True
    
        def test_url_connection(self, url):
            try:
                request = urllib.request.Request(url)
                response = urllib.request.urlopen(request)
                response.read()
            except Exception as e:
                print(e)
                return False
    
            return True