Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

redis-server runner for testing

branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

README
NAME
    Test::RedisServer - redis-server runner for tests.

SYNOPSIS
        use Redis;
        use Test::RedisServer;
        use Test::More;
    
        my $redis_server;
        eval {
            $redis_server = Test::RedisServer->new;
        } or plan skip_all => 'redis-server is required to this test';
    
        my $redis = Redis->new( $redis_server->connect_info );
    
        is $redis->ping, 'PONG', 'ping pong ok';
    
        done_testing;

DESCRIPTION
METHODS
  new(%options)
        my $redis_server = Test::RedisServer->new(%options);

    Create a new redis-server instance, and start it by default (auto_start
    option avoid this)

    Available options are:

    *   auto_start => 0 | 1 (Default: 1)

        Automatically start redis-server instance (by default). You can
        disable this feature by "auto_start => 0", and start instance
        manually by "start" or "exec" method below.

    *   conf => 'HashRef'

        This is redis.conf key value pair. Any key-value pair supported that
        redis-server supports.

        If you want to use this redis.conf:

            port 9999
            databases 16
            save 900 1

        Your conf parameter will be:

            Test::RedisServer->new( conf => {
                port      => 9999,
                databases => 16,
                save      => '900 1',
            });

    *   timeout => 'Int'

        Timeout seconds detecting redis-server is awake or not. (Default: 3)

    *   tmpdir => 'String'

        Temporal directory, where redis config will be stored. By default it
        is created for you, but you start Test::RedisServer via exec (e.g.
        with Test::TCP), you should provide it to be automatically deleted:

  start
    Start redis-server instance manually.

  exec
    Just exec to redis-server instance. This method is useful to use this
    module with Test::TCP, Proclet or etc.

        use File::Temp;
        use Test::TCP;
        my $tmp_dir = File::Temp->newdir( CLEANUP => 1 );

        test_tcp(
            client => sub {
                my ($port, $server_pid) = @_;
                ...
            },
            server => sub {
                my ($port) = @_;
                my $redis = Test::RedisServer->new(
                    auto_start => 0,
                    conf       => { port => $port },
                    tmpdir     => $tmp_dir,
                );
                $redis->exec;
            },
        );

  stop
    Stop redis-server instance.

    This method automatically called when object was DESTROY.

  connect_info
    Return connection info for client library to connect this redis-server
    instance.

    This parameter is designed to pass directly to Redis module.

        my $redis_server = Test::RedisServer->new;
        my $redis = Redis->new( $redis_server->connect_info );

  pid
    Return redis-server instance's process id, or undef when redis-server is
    not running.

  wait_exit
    Block until redis instance exited.

SEE ALSO
    Test::mysqld for mysqld.

    Test::Memcached for Memcached.

    This module steals lots of stuffs from above modules.

    Test::Mock::Redis, another approach for testing redis application.

INTERNAL METHODS
  BUILD
  DEMOLISH
AUTHOR
    Daisuke Murase <typester@cpan.org>

COPYRIGHT AND LICENSE
    Copyright (c) 2012 KAYAC Inc. All rights reserved.

    This program is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

    The full text of the license can be found in the LICENSE file included
    with this module.

Something went wrong with that request. Please try again.