#!perl -T
eval
"use Cache::MemoryCache"
;
plan
skip_all
=>
"Cache::MemoryCache required for testing expiry policies"
if
$@;
plan
tests
=> 9;
my
(
$cache
,
$key
);
my
%vals
= (
'valid-2 prune-10'
=>
'value for valid-2 prune-10 key'
,
'valid-10 prune-2'
=>
'value for valid-10 prune-2 key'
,
);
ok(
$cache
= Cache::CacheFactory->new(
storage
=>
'memory'
,
pruning
=>
'time'
,
validity
=>
'time'
,
),
"construct cache"
);
$key
=
'valid-2 prune-10'
;
$cache
->set(
key
=>
$key
,
data
=>
$vals
{
$key
},
valid_until
=>
'2 seconds'
,
prune_after
=>
'10 seconds'
,
);
$key
=
'valid-10 prune-2'
;
$cache
->set(
key
=>
$key
,
data
=>
$vals
{
$key
},
valid_until
=>
'10 seconds'
,
prune_after
=>
'2 seconds'
,
);
$key
=
'valid-2 prune-10'
;
is(
$cache
->get(
$key
),
$vals
{
$key
},
"immediate $key fetch"
);
$key
=
'valid-10 prune-2'
;
is(
$cache
->get(
$key
),
$vals
{
$key
},
"immediate $key fetch"
);
$cache
->purge();
$key
=
'valid-2 prune-10'
;
is(
$cache
->get(
$key
),
$vals
{
$key
},
"post-purge immediate $key fetch"
);
$key
=
'valid-10 prune-2'
;
is(
$cache
->get(
$key
),
$vals
{
$key
},
"post-purge immediate $key fetch"
);
sleep
( 3 );
$key
=
'valid-2 prune-10'
;
is(
$cache
->get(
$key
),
undef
,
"delayed $key fetch"
);
$key
=
'valid-10 prune-2'
;
is(
$cache
->get(
$key
),
$vals
{
$key
},
"delayed $key fetch"
);
$cache
->purge();
$key
=
'valid-2 prune-10'
;
is(
$cache
->get(
$key
),
undef
,
"post-purge delayed $key fetch"
);
$key
=
'valid-10 prune-2'
;
is(
$cache
->get(
$key
),
undef
,
"post-purge delayed $key fetch"
);
foreach
$key
(
keys
(
%vals
) )
{
$cache
->remove(
$key
);
}