source: t/big_value.t @ 746aa9

Revision 746aa9, 2.2 KB checked in by Tomash Brechko <tomash.brechko@…>, 4 years ago (diff)

Add max_size parameter.

See  http://rt.cpan.org/Ticket/Display.html?id=35588.

  • Property mode set to 100644
Line 
1use warnings;
2use strict;
3
4use Test::More;
5
6use FindBin;
7
8use lib "$FindBin::Bin";
9use Memd;
10
11if ($Memd::memd) {
12    plan tests => 13;
13} else {
14    plan skip_all => 'Not connected';
15}
16
17
18use constant THRESHOLD => 1024 * 1024 - 1024;
19
20my $key = 'big_value';
21my $value = 'x' x THRESHOLD;
22my $small_value = 'x' x (THRESHOLD - 2048);
23my $big_value = 'x' x (THRESHOLD + 2048);
24
25my %smaller_params = %Memd::params;
26$smaller_params{max_size} = THRESHOLD - 2048;
27$smaller_params{namespace} .= 'smaller/';
28my $smaller_memd = new Cache::Memcached::Fast(\%smaller_params);
29
30my %bigger_params = %Memd::params;
31$bigger_params{max_size} = THRESHOLD + 2048;
32$bigger_params{namespace} .= 'bigger/';
33my $bigger_memd = new Cache::Memcached::Fast(\%bigger_params);
34
35$Memd::memd->enable_compress(0);
36$smaller_memd->enable_compress(0);
37$bigger_memd->enable_compress(0);
38
39ok($Memd::memd->set($key, $value), 'Store value uncompressed');
40ok($Memd::memd->get($key) eq $value, 'Fetch');
41ok(! $smaller_memd->set($key, $value),
42   'Values equal to or greater than THRESHOLD should be rejected by module');
43ok(! $bigger_memd->set($key, $big_value),
44   'Values greater than 1MB should be rejected by server');
45
46my @res = $smaller_memd->set_multi(["$key-1", $small_value],
47                                   ["$key-2", $big_value],
48                                   ["$key-3", $small_value]);
49ok($res[0] and not defined $res[1] and $res[2]);
50ok($smaller_memd->delete_multi("$key-1", "$key-3"));
51
52SKIP: {
53    my $warning;
54
55    {
56        local $SIG{__WARN__} = sub { die $_[0] };
57
58        eval {
59            $Memd::memd->enable_compress(1);
60            $smaller_memd->enable_compress(1);
61            $bigger_memd->enable_compress(1);
62        }
63    }
64
65    if ($@) {
66        if ($@ =~ /^Compression module was not found/) {
67            skip $@, 6;
68        } else {
69            warn "$@\n";
70        }
71    }
72
73    ok($smaller_memd->set($key, $value), 'Store compressed value');
74    ok($bigger_memd->set($key, $big_value), 'Store compressed value');
75
76    ok($smaller_memd->get($key) eq $value, 'Fetch and uncompress');
77    ok($bigger_memd->get($key) eq $big_value, 'Fetch and uncompress');
78
79    ok($smaller_memd->delete($key), 'Delete');
80    ok($bigger_memd->delete($key), 'Delete');
81}
82
83ok($Memd::memd->delete($key), 'Delete');
Note: See TracBrowser for help on using the repository browser.