File: test_helper.pl

package info (click to toggle)
libanyevent-riperedis-perl 0.48-3
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 296 kB
  • sloc: perl: 1,430; makefile: 2
file content (85 lines) | stat: -rw-r--r-- 1,206 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
use 5.008000;
use strict;
use warnings;

use lib 't/tlib';

use Test::More;
use Test::RedisRunner;
use AnyEvent;
use version 0.77;

sub run_redis_instance {
  my %params = @_;

  my $redis_server = eval {
    return Test::RedisRunner->new(
      conf => \%params,
    );
  };
  if ( !defined $redis_server ) {
    return;
  }

  my %conn_info = $redis_server->connect_info;

  return {
    server   => $redis_server,
    host     => $conn_info{host},
    port     => $conn_info{port},
    password => $params{requirepass},
  };
}

sub ev_loop {
  my $sub = shift;

  my $cv = AE::cv;

  $sub->($cv);

  my $timer = AE::timer( 15, 0,
    sub {
      diag( 'Emergency exit from event loop.' );
      $cv->send;
    }
  );

  $cv->recv;

  return;
}

sub get_redis_version {
  my $redis = shift;

  my $ver;

  ev_loop(
    sub {
      my $cv = shift;

      $redis->info(
        sub {
          my $info  = shift;
          my $err   = shift;

          if ( defined $err ) {
            diag( $err->message );
            $cv->send;

            return;
          }

          $ver = version->parse( 'v' . $info->{redis_version} );

          $cv->send;
        }
      );
    }
  );

  return $ver;
}

1;