1package CHI::t::Driver::Subcache::l1_cache;
2$CHI::t::Driver::Subcache::l1_cache::VERSION = '0.60';
3use strict;
4use warnings;
5use CHI::Test;
6use CHI::Test::Util qw(activate_test_logger);
7use File::Temp qw(tempdir);
8use base qw(CHI::t::Driver::Subcache);
9
10my $root_dir;
11
12sub testing_driver_class {
13    return 'CHI::Driver::File';
14}
15
16sub new_cache_options {
17    my $self = shift;
18
19    $root_dir ||=
20      tempdir( "chi-driver-subcache-l1-XXXX", TMPDIR => 1, CLEANUP => 1 );
21    return (
22        $self->SUPER::new_cache_options(),
23        root_dir => $root_dir,
24        l1_cache => { driver => 'Memory', global => 1 },
25    );
26}
27
28sub test_stats : Tests {
29    my $self = shift;
30
31    my $stats = $self->testing_chi_root_class->stats;
32    $stats->enable();
33
34    my ( $key, $value ) = $self->kvpair();
35    my $start_time = time();
36
37    my $cache;
38    $cache = $self->new_cache( namespace => 'Foo' );
39    $cache->get($key);
40    $cache->set( $key, $value, 80 );
41    $cache->get($key);
42
43    my $log = activate_test_logger();
44    $log->empty_ok();
45    $stats->flush();
46
47    $log->contains_ok(
48        qr/CHI stats: {"absent_misses":1,"end_time":\d+,"get_time_ms":\d+,"label":"File","namespace":"Foo","root_class":"CHI","set_key_size":6,"set_time_ms":\d+,"set_value_size":20,"sets":1,"start_time":\d+}/
49    );
50    $log->contains_ok(
51        qr/CHI stats: {"absent_misses":1,"end_time":\d+,"get_time_ms":\d+,"hits":1,"label":"File:l1_cache","namespace":"Foo","root_class":"CHI","set_key_size":6,"set_time_ms":\d+,"set_value_size":20,"sets":1,"start_time":\d+}/
52    );
53
54}
55
56# not working yet
57sub test_append { }
58
59# won't work in presence of l1 cache
60sub test_max_key_length { }
61
621;
63