]> Sergey Matveev's repositories - public-inbox.git/blobdiff - t/multi-mid.t
v2: SDBM-based multi Message-ID queue
[public-inbox.git] / t / multi-mid.t
index df865efb26877a51be4aff3871882ad0c23da750..87240c2c44855d9eed03219c00d879d476054cd0 100644 (file)
@@ -1,5 +1,6 @@
 # Copyright (C) 2020 all contributors <meta@public-inbox.org>
 # License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
+use strict;
 use Test::More;
 use PublicInbox::MIME;
 use PublicInbox::TestCommon;
@@ -7,6 +8,7 @@ use PublicInbox::InboxWritable;
 require_git(2.6);
 require_mods(qw(DBD::SQLite));
 require PublicInbox::SearchIdx;
+my $delay = $ENV{TEST_DELAY_CONVERT};
 
 my $addr = 'test@example.com';
 my $bad = PublicInbox::MIME->new(<<EOF);
@@ -14,14 +16,12 @@ Message-ID: <a\@example.com>
 Message-ID: <b\@example.com>
 From: a\@example.com
 To: $addr
-Date: Fri, 02 Oct 1993 00:00:00 +0000
 Subject: bad
 
 EOF
 
 my $good = PublicInbox::MIME->new(<<EOF);
 Message-ID: <b\@example.com>
-Date: Fri, 02 Oct 1993 00:00:00 +0000
 From: b\@example.com
 To: $addr
 Subject: good
@@ -37,13 +37,18 @@ for my $order ([$bad, $good], [$good, $bad]) {
                indexlevel => 'basic',
                -primary_address => $addr,
        }, my $creat_opt = {});
+       my @old;
        if ('setup v1 inbox') {
                my $im = $ibx->importer(0);
-               ok($im->add($_), 'added '.$_->header('Subject')) for @$order;
+               for (@$order) {
+                       ok($im->add($_), 'added '.$_->header('Subject'));
+                       sleep($delay) if $delay;
+               }
                $im->done;
                my $s = PublicInbox::SearchIdx->new($ibx, 1);
                $s->index_sync;
                $before = [ $ibx->mm->minmax ];
+               @old = ($ibx->over->get_art(1), $ibx->over->get_art(2));
                $ibx->cleanup;
        }
        my $rdr = { 1 => \(my $out = ''), 2 => \(my $err = '') };
@@ -56,6 +61,22 @@ for my $order ([$bad, $good], [$good, $bad]) {
        $ibx->{inboxdir} = "$tmpdir/v2";
        is_deeply([$ibx->mm->minmax], $before,
                'min, max article numbers unchanged');
+
+       my @v2 = ($ibx->over->get_art(1), $ibx->over->get_art(2));
+       is_deeply(\@v2, \@old, 'v2 conversion times match');
+
+       system(qw(git clone -sq --mirror), "$tmpdir/v2/git/0.git",
+               "$tmpdir/v2-clone/git/0.git") == 0 or die "clone: $?";
+       $cmd = [ '-init', '-V2', 'v2c', "$tmpdir/v2-clone",
+               'http://example.com/v2c', 'v2c@example.com' ];
+       ok(run_script($cmd, $env), 'init clone');
+       $cmd = [ '-index', "$tmpdir/v2-clone" ];
+       sleep($delay) if $delay;
+       ok(run_script($cmd, $env), 'index the clone');
+       $ibx->cleanup;
+       $ibx->{inboxdir} = "$tmpdir/v2-clone";
+       my @v2c = ($ibx->over->get_art(1), $ibx->over->get_art(2));
+       is_deeply(\@v2c, \@old, 'v2 clone times match');
 }
 
 done_testing();