#!/usr/local/bin/perl use strict; use Test::Assertions qw(test); use Log::Trace; use Getopt::Std; use File::Path; use vars qw($opt_t $opt_T); getopts('tT'); #Do we have the tools to compute in-memory sizes? eval {require Devel::Size}; my $size_not_available = (defined $@); plan tests => 23; #Move into the t directory chdir($1) if ($0 =~ /(.*)(\/|\\)(.*)/); use lib qw(.); #Load the library of tests use constant SLEEP_INT => 2.0; use vars qw($callcount $callback); require "CacheAgainstFile.lib"; #Compile unshift @INC, "../lib"; require Cache::AgainstFile; require Cache::AgainstFile::Memory; ASSERT($INC{"Cache/AgainstFile/Memory.pm"}, "compiled version $Cache::AgainstFile::Memory::VERSION"); #Log::Trace import Log::Trace qw(print) if($opt_t); deep_import Log::Trace qw(print) if($opt_T); #Test directories my $dir = "data"; my $filename = "$dir/foo.dat"; #Set up test env mkpath($dir); touch($filename); ############################################################################ # Memory caching ############################################################################ my $mem_cache = new Cache::AgainstFile($callback, {Method => 'Memory'}); ASSERT($mem_cache->{method} eq 'Memory', "Memory backend"); test_basics($mem_cache, $filename, undef, $size_not_available); $mem_cache = new Cache::AgainstFile($callback, {Method => 'Memory', 'NoStat' => 1}); test_nostat($mem_cache, $filename); $mem_cache = new Cache::AgainstFile($callback, {Method => 'Memory', 'MaxItems' => 3}); test_max_items($mem_cache, $dir, 3); $mem_cache = new Cache::AgainstFile($callback, {Method => 'Cache::AgainstFile::Memory', 'MaxATime' => (2.5 * SLEEP_INT)}); #fq backend test_old_items($mem_cache, $dir, 5, 3); ############################################################################ # Clean up ############################################################################ END { TRACE("Cleaning up $dir"); rmtree($dir); }