File: libmemcached_test.pm

package info (click to toggle)
libcache-memcached-libmemcached-perl 0.04001-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 340 kB
  • sloc: perl: 2,274; makefile: 2
file content (74 lines) | stat: -rw-r--r-- 1,833 bytes parent folder | download | duplicates (3)
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
package libmemcached_test;

use strict;
use warnings;
use base 'Exporter';

use Cache::Memcached::libmemcached;
use Test::More;

our @EXPORT = qw(
    libmemcached_test_create
    libmemcached_test_key
    libmemcached_version_ge
    libmemcached_test_servers
);

sub libmemcached_test_servers {
    my $servers = $ENV{PERL_LIBMEMCACHED_TEST_SERVERS};
    # XXX add the default port as well to stop uninit
    # warnings from the test suite
    $servers ||= 'localhost:11211';
    return split(/\s*,\s*/, $servers);
}


sub libmemcached_test_create {
    my ($args) = @_;

    my $min_version = delete $args->{min_version};

    $args->{ servers } = [ libmemcached_test_servers() ];

    if ($ENV{LIBMEMCACHED_BINARY_PROTOCOL}) {
        $args->{binary_protocol} = 1;
    }

    my $cache = Cache::Memcached::libmemcached->new($args);
    my $time  = time();
    $cache->set( foo => $time );
    my $value = $cache->get( 'foo' );

    plan skip_all => "Can't talk to any memcached servers"
        if (! defined $value || $time ne $value);

    plan skip_all => "memcached server version less than $min_version"
        if $min_version && not libmemcached_version_ge($cache, $min_version);

    return $cache;
}


sub libmemcached_version_ge {
    my ($memc, $min_version) = @_;
    my @min_version = split /\./, $min_version;

    my @memcached_version = $memc->memcached_version;

    for (0,1,2) {
        return 1 if $memcached_version[$_] > $min_version[$_];
        return 0 if $memcached_version[$_] < $min_version[$_];
    }
    return 1; # identical versions
}


sub libmemcached_test_key {
    # return a value suitable for use as a memcached key
    # that is unique for each run of the script
    # but returns the same value for the life of the script
    our $time_rand ||= ($^T + rand());
    return $time_rand;
}

1;