Exemplo n.º 1
0
    def _create_queue(self, queue_type, group):
        """
        Create a queue (not thread safe)
        :param queue_type:
        :param group:
        :return:
        """
        info("Creating queue {}".format(self.queue_name(queue_type, group)))
        try:
            return LibreNMS.RedisQueue(self.queue_name(queue_type, group),
                                       namespace='librenms.queue',
                                       host=self.config.redis_host,
                                       port=self.config.redis_port,
                                       db=self.config.redis_db,
                                       password=self.config.redis_pass,
                                       unix_socket_path=self.config.redis_socket
                                       )
        except ImportError:
            if self.config.distributed:
                critical("ERROR: Redis connection required for distributed polling")
                critical("Please install redis-py, either through your os software repository or from PyPI")
                exit(2)
        except Exception as e:
            if self.config.distributed:
                critical("ERROR: Redis connection required for distributed polling")
                critical("Could not connect to Redis. {}".format(e))
                exit(2)

        return Queue()
Exemplo n.º 2
0
    def test_redis_queue(self):
        if 'redis' not in sys.modules:
            self.assertTrue(True, 'Skipped Redis tests')
        else:
            rc = redis.Redis()
            rc.delete('queue:testing')  # make sure no previous data exists
            qm = LibreNMS.RedisQueue('testing', namespace='queue')

            thread = threading.Thread(target=self.queue_thread, args=(qm, None, False))
            thread.daemon = True
            thread.start()

            thread = threading.Thread(target=self.queue_thread, args=(qm, '2'))
            thread.daemon = True
            thread.start()
            qm.put(2)

            qm.put(3)
            qm.put(4)
            sleep(0.05)
            self.assertEqual(2, qm.qsize())
            self.assertEqual('3', qm.get())
            self.assertEqual('4', qm.get(), "Did not get second item in queue")
            self.assertEqual(None, qm.get_nowait(), "Did not get None when queue should be empty")
            self.assertTrue(qm.empty(), "Queue should be empty")