]> Sergey Matveev's repositories - public-inbox.git/commitdiff
t/v[12]reindex.t: Test that the resulting msgmap is as expected
authorEric W. Biederman <ebiederm@xmission.com>
Wed, 1 Aug 2018 16:43:36 +0000 (11:43 -0500)
committerEric Wong <e@80x24.org>
Thu, 2 Aug 2018 02:18:11 +0000 (02:18 +0000)
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" <ebiederm@xmission.com>
t/v1reindex.t
t/v2reindex.t

index de4fafda5ae953bdd453e55eaf4b4b2c9d236fcf..877e70390910d20fb05ba446eaddffdff78fc7d3 100644 (file)
@@ -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();
index 67d8be787a782c084ac42e763a4a5f98378214af..31e61d5b2578947b25e8fe41f56053c96c9818e5 100644 (file)
@@ -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();