]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/v1reindex.t
treewide: run update-copyrights from gnulib for 2019
[public-inbox.git] / t / v1reindex.t
index 8e78aa761333942678dc83abcd4af0a5363948bc..240e28f92d6cd16c486bd731cf98c5cae10ac8be 100644 (file)
@@ -1,23 +1,20 @@
-# Copyright (C) 2018 all contributors <meta@public-inbox.org>
+# Copyright (C) 2018-2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
 use strict;
 use warnings;
 use Test::More;
 use PublicInbox::MIME;
 use PublicInbox::ContentId qw(content_digest);
-use File::Temp qw/tempdir/;
 use File::Path qw(remove_tree);
-
-foreach my $mod (qw(DBD::SQLite Search::Xapian)) {
-       eval "require $mod";
-       plan skip_all => "$mod missing for v1reindex.t" if $@;
-}
+use PublicInbox::TestCommon;
+require_git(2.6);
+require_mods(qw(DBD::SQLite Search::Xapian));
 use_ok 'PublicInbox::SearchIdx';
 use_ok 'PublicInbox::Import';
-my $mainrepo = tempdir('pi-v1reindex-XXXXXX', TMPDIR => 1, CLEANUP => 1);
-is(system(qw(git init -q --bare), $mainrepo), 0);
+my ($inboxdir, $for_destroy) = tmpdir();
+is(system(qw(git init -q --bare), $inboxdir), 0);
 my $ibx_config = {
-       mainrepo => $mainrepo,
+       inboxdir => $inboxdir,
        name => 'test-v1reindex',
        -primary_address => 'test@example.com',
        indexlevel => 'full',
@@ -63,6 +60,7 @@ my ($mark1, $mark2, $mark3, $mark4);
        $minmax = [ $ibx->mm->minmax ];
        ok(defined $minmax->[0] && defined $minmax->[1], 'minmax defined');
        is_deeply($minmax, [ 1, 10 ], 'minmax as expected');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
 
        my ($min, $max) = @$minmax;
        $msgmap = $ibx->mm->msg_range(\$min, $max);
@@ -87,11 +85,13 @@ my ($mark1, $mark2, $mark3, $mark4);
        is($@, '', 'no error from reindexing');
        $im->done;
 
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
+
        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();
+my $xap = "$inboxdir/public-inbox/xapian".PublicInbox::Search::SCHEMA_VERSION();
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed');
 {
@@ -107,12 +107,13 @@ ok(!-d $xap, 'Xapian directories removed');
 
        delete $ibx->{mm};
        is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
 
        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');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -129,12 +130,13 @@ ok(!-d $xap, 'Xapian directories removed again');
        ok(-d $xap, 'Xapian directories recreated');
        delete $ibx->{mm};
        is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
 
        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');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -151,12 +153,13 @@ ok(!-d $xap, 'Xapian directories removed again');
        ok(-d $xap, 'Xapian directories recreated');
        delete $ibx->{mm};
        is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
 
        my ($min, $max) = @$minmax;
        is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged');
 }
 
-ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -174,6 +177,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        ok(-d $xap, 'Xapian directories recreated');
        delete $ibx->{mm};
        is_deeply([ $ibx->mm->minmax ], $minmax, 'minmax unchanged');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
        my $mset = $ibx->search->query('hello world', {mset=>1});
        isnt($mset->size, 0, 'got Xapian search results');
 
@@ -181,7 +185,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged');
 }
 
-ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -199,8 +203,8 @@ 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 $mset = $ibx->search->reopen->query('hello world', {mset=>1});
-       is($mset->size, 0, "no Xapian search results");
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
+       isnt($ibx->search, 'no search for basic');
 
        my ($min, $max) = $ibx->mm->minmax;
        is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged');
@@ -214,7 +218,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my @warn;
        local $SIG{__WARN__} = sub { push @warn, @_ };
        my %config = %$ibx_config;
-       $config{indexleve} = 'medium';
+       $config{indexlevel} = 'medium';
        my $ibx = PublicInbox::Inbox->new(\%config);
        my $rw = PublicInbox::SearchIdx->new($ibx, 1);
        eval { $rw->index_sync };
@@ -223,12 +227,14 @@ ok(!-d $xap, 'Xapian directories removed again');
        my $mset = $ibx->search->reopen->query('hello world', {mset=>1});
        isnt($mset->size, 0, 'search OK after basic -> medium');
 
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
+
        my ($min, $max) = $ibx->mm->minmax;
        is_deeply($ibx->mm->msg_range(\$min, $max), $msgmap, 'msgmap unchanged');
 }
 
 # An incremental indexing test
-ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -246,6 +252,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 4, 'max as expected');
+       is($ibx->mm->num_highwater, 4, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -269,6 +276,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 3, 'max as expected');
+       is($ibx->mm->num_highwater, 4, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -291,6 +299,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 10, 'max as expected');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -319,6 +328,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 10, 'max as expected');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -334,7 +344,7 @@ ok(!-d $xap, 'Xapian directories removed again');
 
 
 # Another incremental indexing test
-ok(unlink "$mainrepo/public-inbox/msgmap.sqlite3", 'remove msgmap');
+ok(unlink "$inboxdir/public-inbox/msgmap.sqlite3", 'remove msgmap');
 remove_tree($xap);
 ok(!-d $xap, 'Xapian directories removed again');
 {
@@ -352,6 +362,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 3, 'max as expected');
+       is($ibx->mm->num_highwater, 4, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -374,6 +385,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 10, 'max as expected');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],
@@ -402,6 +414,7 @@ ok(!-d $xap, 'Xapian directories removed again');
        my ($min, $max) = $ibx->mm->minmax;
        is($min, 1, 'min as expected');
        is($max, 10, 'max as expected');
+       is($ibx->mm->num_highwater, 10, 'num_highwater as expected');
        is_deeply($ibx->mm->msg_range(\$min, $max),
                  [
                   [1, '1@example.com' ],