File: scaling.t

package info (click to toggle)
libkiokudb-perl 0.57-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 1,396 kB
  • sloc: perl: 13,314; makefile: 12
file content (80 lines) | stat: -rw-r--r-- 1,689 bytes parent folder | download | duplicates (2)
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
75
76
77
78
79
80
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;

use KiokuDB;
use KiokuDB::Test::Fixture::ObjectGraph;

use Set::Object qw(set);

use Data::Stream::Bulk::Callback;

{
    package KiokuDB::Backend::Hash::Frugal;
    use Moose;

    extends qw(KiokuDB::Backend::Hash);

    override all_entries => sub {
        my $self = shift;

        my @entries = super()->all;

        Data::Stream::Bulk::Callback->new(
            callback => sub {
                if ( @entries ) {
                    return [ shift @entries ];
                } else {
                    return;
                }
            },
        );
    }
}

my $f = KiokuDB::Test::Fixture::ObjectGraph->new;

my $dir = KiokuDB->new(
    backend => KiokuDB::Backend::Hash::Frugal->new,
);

{
    my $s = $dir->new_scope;
    $dir->insert( @{ ($f->create)[0] } );
}

my $count = do {
    my $s = $dir->new_scope;
    scalar $dir->all_objects->all;
};

is_deeply( [ $dir->live_objects->live_objects ], [], "no live objects" );

is( $count, 22, "number of objects in DB" );

{
    my $s = $dir->new_scope;

    my $stream = $dir->all_objects;

    is_deeply( [ $dir->live_objects->live_objects ], [], "no live objects" );

    while ( my $block = $stream->next ) {
        is( scalar(@$block), 1, "one object loaded" );

        my $l = set($dir->live_objects->live_objects);

        ok( $l->includes($block->[0]), "live objects includes object" );

        cmp_ok( $l->size, ">=", 1, "at least one live object " . $l->size );
        cmp_ok( $l->size, "<", $count, "less than the total number of objects" );
    }

    is_deeply( [ $dir->live_objects->live_objects ], [], "no live objects" );
}


done_testing;