예제 #1
0
def test_fd_leak(limit_fds):
    """Servers must not leak file descriptors"""
    for i in range(limit_fds + 1):
        server = birdisle.Server()
        client = server.connect()
        server.close()
        client.close()
예제 #2
0
def main():
    server = birdisle.Server()
    s = socket.socket()
    s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    s.bind(('127.0.0.1', 6380))
    s.listen(5)
    try:
        while True:
            conn, addr = s.accept()
            with contextlib.closing(conn):
                server.add_connection(os.dup(conn.fileno()))
    except KeyboardInterrupt:
        server.close()
def birdisle_server():
    password = config.get_consumer_config().get('REDIS_PASSWORD')
    server = birdisle.Server(f'requirepass {password}')
    yield server
    server.close()
예제 #4
0
def test_bad_config():
    with pytest.raises(RuntimeError):
        birdisle.Server('not a valid config file')
예제 #5
0
def test_config_string():
    server = birdisle.Server('dbfilename birdisletest.rdb')
    r = birdisle.redis.StrictRedis(server=server)
    dbfilename = r.config_get('dbfilename')['dbfilename']
    assert dbfilename == 'birdisletest.rdb'
    server.close()
예제 #6
0
def server():
    server = birdisle.Server()
    yield server
    server.close()
예제 #7
0
    def __init__(self,
                 host='localhost',
                 port=6379,
                 db=0,
                 password=None,
                 socket_timeout=None,
                 socket_connect_timeout=None,
                 socket_keepalive=None,
                 socket_keepalive_options=None,
                 connection_pool=None,
                 unix_socket_path=None,
                 encoding='utf-8',
                 encoding_errors='strict',
                 charset=None,
                 errors=None,
                 decode_responses=False,
                 retry_on_timeout=False,
                 ssl=False,
                 ssl_keyfile=None,
                 ssl_certfile=None,
                 ssl_cert_reqs=None,
                 ssl_ca_certs=None,
                 max_connections=None,
                 server=None):
        if not connection_pool:
            # Adapted from redis-py
            if charset is not None:
                warnings.warn(
                    DeprecationWarning(
                        '"charset" is deprecated. Use "encoding" instead'))
                encoding = charset
            if errors is not None:
                warnings.warn(
                    DeprecationWarning(
                        '"errors" is deprecated. Use "encoding_errors" instead'
                    ))
                encoding_errors = errors

            if server is None:
                server = birdisle.Server()
            kwargs = {
                'db': db,
                'password': password,
                'socket_timeout': socket_timeout,
                'encoding': encoding,
                'encoding_errors': encoding_errors,
                'decode_responses': decode_responses,
                'retry_on_timeout': retry_on_timeout,
                'max_connections': max_connections,
                'connection_class': LocalSocketConnection,
                'server': server
            }
            connection_pool = redis.connection.ConnectionPool(**kwargs)
        super(RedisMixin,
              self).__init__(host, port, db, password, socket_timeout,
                             socket_connect_timeout, socket_keepalive,
                             socket_keepalive_options, connection_pool,
                             unix_socket_path, encoding, encoding_errors,
                             charset, errors, decode_responses,
                             retry_on_timeout, ssl, ssl_keyfile, ssl_certfile,
                             ssl_cert_reqs, ssl_ca_certs, max_connections)