From fad9acd35e56a289ade90a62d056b2a6663d448c Mon Sep 17 00:00:00 2001 From: "Eric Wong (Contractor, The Linux Foundation)" Date: Fri, 6 Apr 2018 21:44:38 +0000 Subject: www: favor reading more from SQLite, and less from Xapian Favor simpler internal APIs this time around, this cuts a fair amount of code out and takes another step towards removing Xapian as a dependency for v2 repos. --- t/psgi_v2.t | 1 + t/search.t | 16 ++++++---------- t/v2writable.t | 18 ++++++++---------- 3 files changed, 15 insertions(+), 20 deletions(-) (limited to 't') diff --git a/t/psgi_v2.t b/t/psgi_v2.t index bdf23deb..faa139fb 100644 --- a/t/psgi_v2.t +++ b/t/psgi_v2.t @@ -129,6 +129,7 @@ test_psgi(sub { $www->call(@_) }, sub { is(scalar(@from_), 3, 'three From_ lines in t.mbox.gz'); # search interface + $config->each_inbox(sub { $_[0]->search->reopen }); $res = $cb->(POST('/v2test/?q=m:a-mid@b&x=m')); $in = $res->content; $status = IO::Uncompress::Gunzip::gunzip(\$in => \$out); diff --git a/t/search.t b/t/search.t index 2f7b795e..fda32d36 100644 --- a/t/search.t +++ b/t/search.t @@ -89,10 +89,9 @@ sub filter_mids { { $rw_commit->(); $ro->reopen; - my $found = $ro->first_smsg_by_mid('root@s'); - ok($found, "message found"); - is($root_id, $found->{doc_id}, 'doc_id set correctly'); - is($found->mid, 'root@s', 'mid set correctly'); + my $found = $ro->query('m:root@s'); + is(scalar(@$found), 1, "message found"); + is($found->[0]->mid, 'root@s', 'mid set correctly'); my ($res, @res); my @exp = sort qw(root@s last@s); @@ -276,10 +275,9 @@ sub filter_mids { ], body => "LOOP!\n")); ok($doc_id > 0, "doc_id defined with circular reference"); - my $smsg = $rw->first_smsg_by_mid('circle@a'); + my $smsg = $rw->query('m:circle@a', {limit=>1})->[0]; is($smsg->references, '', "no references created"); - my $msg = PublicInbox::SearchMsg->load_doc($smsg->{doc}); - is($s, $msg->subject, 'long subject not rewritten'); + is($s, $smsg->subject, 'long subject not rewritten'); } { @@ -293,9 +291,7 @@ sub filter_mids { my $mime = Email::MIME->new($str); my $doc_id = $rw->add_message($mime); ok($doc_id > 0, 'message indexed doc_id with UTF-8'); - my $smsg = $rw->first_smsg_by_mid('testmessage@example.com'); - my $msg = PublicInbox::SearchMsg->load_doc($smsg->{doc}); - + my $msg = $rw->query('m:testmessage@example.com', {limit => 1})->[0]; is($mime->header('Subject'), $msg->subject, 'UTF-8 subject preserved'); } diff --git a/t/v2writable.t b/t/v2writable.t index ab85e9af..4a42c016 100644 --- a/t/v2writable.t +++ b/t/v2writable.t @@ -108,14 +108,13 @@ if ('ensure git configs are correct') { $mime->header_set('References', ''); ok($im->add($mime), 'message with multiple Message-ID'); $im->done; - my @found; my $srch = $ibx->search; - $srch->reopen->each_smsg_by_mid('abcde@1', sub { push @found, @_; 1 }); - is(scalar(@found), 1, 'message found by first MID'); - $srch->reopen->each_smsg_by_mid('abcde@2', sub { push @found, @_; 1 }); - is(scalar(@found), 2, 'message found by second MID'); - is($found[0]->{doc_id}, $found[1]->{doc_id}, 'same document'); - ok($found[1]->{doc_id} > 0, 'doc_id is positive'); + my $mset1 = $srch->reopen->query('m:abcde@1', { mset => 1 }); + is($mset1->size, 1, 'message found by first MID'); + my $mset2 = $srch->reopen->query('m:abcde@2', { mset => 1 }); + is($mset2->size, 1, 'message found by second MID'); + is((($mset1->items)[0])->get_docid, (($mset2->items)[0])->get_docid, + 'same document'); } SKIP: { @@ -224,9 +223,8 @@ EOF like($smsg->num, qr/\A\d+\z/, 'numeric number in return message'); is($ibx->mm->mid_for($smsg->num), undef, 'no longer in Msgmap by num'); my $srch = $ibx->search->reopen; - my @found = (); - $srch->each_smsg_by_mid($smsg->mid, sub { push @found, @_; 1 }); - is(scalar(@found), 0, 'no longer found in Xapian'); + my $mset = $srch->query('m:'.$smsg->mid, { mset => 1}); + is($mset->size, 0, 'no longer found in Xapian'); my @log1 = qw(log -1 --pretty=raw --raw -r --no-abbrev --no-renames); is($srch->{over_ro}->get_art($smsg->num), undef, 'removal propagated to Over DB'); -- cgit v1.2.3-24-ge0c7