1#!perl 2 3use strict; 4use warnings; 5 6use Test::More; 7 8use DBIx::Class::QueryLog; 9use DBIx::Class::QueryLog::Analyzer; 10 11my $time = 0; 12 13my $ql = DBIx::Class::QueryLog->new( 14 __time => sub { $time }, 15); 16ok($ql->isa('DBIx::Class::QueryLog'), 'new'); 17 18$ql->query_start('SELECT * from foo'); 19$ql->query_end('SELECT * from foo'); 20ok(scalar(@{ $ql->log }) == 1, 'log count w/1 query'); 21 22$ql->txn_begin; 23$ql->query_start('SELECT * from foo'); 24$ql->query_end('SELECT * from foo'); 25 26$ql->query_start('SELECT * from bar'); 27$time += 1; 28$ql->query_end('SELECT * from bar'); 29 30$ql->txn_commit; 31 32my $ana = DBIx::Class::QueryLog::Analyzer->new({ 33 querylog => $ql 34}); 35isa_ok($ana, 'DBIx::Class::QueryLog::Analyzer'); 36isa_ok($ana->querylog, 'DBIx::Class::QueryLog'); 37 38cmp_ok(scalar(@{ $ana->get_sorted_queries }), '==', 3, 'Sorted Count'); 39 40my $analyzed = $ana->get_totaled_queries; 41my @keys = reverse sort { 42 $analyzed->{$a}->{'time_elapsed'} <=> $analyzed->{$b}->{'time_elapsed'} 43 } keys(%{ $ana->get_totaled_queries }); 44cmp_ok(scalar(@keys), '==', 2, '2 different queries'); 45 46cmp_ok($analyzed->{$keys[0]}->{'count'}, '==', 1, '1 executions'); 47 48cmp_ok($analyzed->{$keys[1]}->{'count'}, '==', 2, '2 executions'); 49 50ok($analyzed->{$keys[0]}->{'time_elapsed'}, 'Total time'); 51cmp_ok(scalar(@{$analyzed->{$keys[0]}->{'queries'}}), '==', 1, '1 stored queries'); 52cmp_ok(scalar(@{$analyzed->{$keys[1]}->{'queries'}}), '==', 2, '2 stored queries'); 53 54done_testing; 55