From: Eric W. Biederman Date: Wed, 1 Aug 2018 16:43:36 +0000 (-0500) Subject: t/v[12]reindex.t: Test that the resulting msgmap is as expected X-Git-Tag: v1.2.0~469^2~8 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=344684fc77a999ac071f99803a0bff1a96dc5f7c;p=thirdparty%2Fpublic-inbox.git t/v[12]reindex.t: Test that the resulting msgmap is as expected Deeply inspect the entire message map in the reindexing tests as the actual message order is significant and can result in surprises. Signed-off-by: "Eric W. Biederman" --- diff --git a/t/v1reindex.t b/t/v1reindex.t index de4fafda5..877e70390 100644 --- a/t/v1reindex.t +++ b/t/v1reindex.t @@ -32,6 +32,7 @@ my $mime = PublicInbox::MIME->create( body => "hello world\n", ); my $minmax; +my $msgmap; { my %config = %$ibx_config; my $ibx = PublicInbox::Inbox->new(\%config); @@ -57,6 +58,19 @@ my $minmax; $minmax = [ $ibx->mm->minmax ]; ok(defined $minmax->[0] && defined $minmax->[1], 'minmax defined'); is_deeply($minmax, [ 1, 10 ], 'minmax as expected'); + + my ($min, $max) = @$minmax; + $msgmap = $ibx->mm->msg_range(\$min, $max); + is_deeply($msgmap, [ + [1, '1@example.com' ], + [2, '2@example.com' ], + [3, '3@example.com' ], + [6, '6@example.com' ], + [7, '7@example.com' ], + [8, '8@example.com' ], + [9, '9@example.com' ], + [10, '10@example.com' ], + ], 'msgmap as expected'); } { @@ -67,6 +81,9 @@ my $minmax; eval { $rw->index_sync({reindex => 1}) }; is($@, '', 'no error from reindexing'); $im->done; + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } my $xap = "$mainrepo/public-inbox/xapian".PublicInbox::Search::SCHEMA_VERSION(); @@ -85,6 +102,9 @@ ok(!-d $xap, 'Xapian directories removed'); delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap'); @@ -104,6 +124,9 @@ ok(!-d $xap, 'Xapian directories removed again'); ok(-d $xap, 'Xapian directories recreated'); delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap'); @@ -123,6 +146,9 @@ ok(!-d $xap, 'Xapian directories removed again'); ok(-d $xap, 'Xapian directories recreated'); delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = @$minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap'); @@ -145,6 +171,9 @@ ok(!-d $xap, 'Xapian directories removed again'); is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); my $mset = $ibx->search->query('hello world', {mset=>1}); isnt($mset->size, 0, 'got Xapian search results'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap'); @@ -167,6 +196,9 @@ ok(!-d $xap, 'Xapian directories removed again'); is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); my $mset = $ibx->search->reopen->query('hello world', {mset=>1}); is($mset->size, 0, "no Xapian search results"); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } # upgrade existing basic to medium @@ -185,6 +217,9 @@ ok(!-d $xap, 'Xapian directories removed again'); is_deeply(\@warn, [], 'no warnings'); my $mset = $ibx->search->reopen->query('hello world', {mset=>1}); isnt($mset->size, 0, 'search OK after basic -> medium'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } done_testing(); diff --git a/t/v2reindex.t b/t/v2reindex.t index 67d8be787..31e61d5b2 100644 --- a/t/v2reindex.t +++ b/t/v2reindex.t @@ -32,6 +32,7 @@ my $mime = PublicInbox::MIME->create( ); local $ENV{NPROC} = 2; my $minmax; +my $msgmap; { my %config = %$ibx_config; my $ibx = PublicInbox::Inbox->new(\%config); @@ -53,6 +54,19 @@ my $minmax; $minmax = [ $ibx->mm->minmax ]; ok(defined $minmax->[0] && defined $minmax->[1], 'minmax defined'); is_deeply($minmax, [ 1, 10 ], 'minmax as expected'); + + my ($min, $max) = @$minmax; + $msgmap = $ibx->mm->msg_range(\$min, $max); + is_deeply($msgmap, [ + [1, '1@example.com' ], + [2, '2@example.com' ], + [3, '3@example.com' ], + [6, '6@example.com' ], + [7, '7@example.com' ], + [8, '8@example.com' ], + [9, '9@example.com' ], + [10, '10@example.com' ], + ], 'msgmap as expected'); } { @@ -65,6 +79,9 @@ my $minmax; delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } my $xap = "$mainrepo/xap".PublicInbox::Search::SCHEMA_VERSION(); @@ -81,6 +98,9 @@ ok(!-d $xap, 'Xapian directories removed'); delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap'); @@ -99,6 +119,9 @@ ok(!-d $xap, 'Xapian directories removed again'); ok(-d $xap, 'Xapian directories recreated'); delete $ibx->{mm}; is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } my %sizes; @@ -121,6 +144,9 @@ ok(!-d $xap, 'Xapian directories removed again'); my $mset = $ibx->search->query('"hello world"', {mset=>1}); isnt($mset->size, 0, "phrase search succeeds on indexlevel=full"); for (<"$xap/*/*">) { $sizes{$ibx->{indexlevel}} += -s _ if -f $_ } + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap'); @@ -153,6 +179,10 @@ ok(!-d $xap, 'Xapian directories removed again'); isnt($mset->size, 0, "normal search works on indexlevel=medium"); for (<"$xap/*/*">) { $sizes{$ibx->{indexlevel}} += -s _ if -f $_ } ok($sizes{full} > $sizes{medium}, 'medium is smaller than full'); + + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } ok(unlink "$mainrepo/msgmap.sqlite3", 'remove msgmap'); @@ -176,6 +206,9 @@ ok(!-d $xap, 'Xapian directories removed again'); is($mset->size, 0, "search fails on indexlevel='basic'"); for (<"$xap/*/*">) { $sizes{$ibx->{indexlevel}} += -s _ if -f $_ } ok($sizes{medium} > $sizes{basic}, 'basic is smaller than medium'); + + my ($min, $max) = $ibx->mm->minmax; + is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged'); } done_testing();