1 # $Id: Fetch.pm,v 1.13 2006-11-02 15:02:09 mike Exp $
3 # See the "Main" test package for documentation
5 package ZOOM::IRSpy::Test::Record::Fetch;
11 use ZOOM::IRSpy::Test;
12 our @ISA = qw(ZOOM::IRSpy::Test);
19 # Here I want to get a use attribute from the session, which we've
20 # managed to search for in the Search/Bib1 or Search/Dan1 tests.
21 # But how? So far we search for title: 1=4
22 $conn->irspy_search_pqf("\@attr 1=4 mineral", {}, {},
23 ZOOM::Event::RECV_SEARCH, \&completed_search,
24 exception => \&error);
28 sub completed_search {
29 my($conn, $task, $udata, $event) = @_;
31 my $n = $task->{rs}->size();
32 $conn->log("irspy_test", "Fetch test search found $n records");
54 #@syntax = qw(grs-1 sutrs usmarc xml); # simplify for debugging
55 foreach my $syntax (@syntax) {
56 $conn->irspy_rs_record($task->{rs}, 0,
57 { syntax => $syntax },
58 { start => 0, count => 1,
59 preferredRecordSyntax => $syntax },
60 ZOOM::Event::RECV_RECORD, \&record,
61 exception => \&error);
64 return ZOOM::IRSpy::Status::TASK_DONE;
69 my($conn, $task, $test_args, $event) = @_;
70 my $syn = $test_args->{'syntax'};
73 # Due to a bug in ZOOM-C (as of YAZ 2.1.38 of 31st October 2006),
74 # diagnostics in Present responses are not reported, so that we
75 # always end up in this callback rather than in error() where we
76 # should be. Luckily, we can test whether the retrieval really
77 # did work by rendering the record, which will yield an undefined
78 # result if the fetch failed.
79 my $record = _fetch_record($rs, 0, $syn);
80 my $text = $record->render();
82 $conn->log("irspy_test", "Successfully retrieved a $syn record");
84 print STDERR "Hits: ", $rs->size(), "\n";
85 print STDERR "Syntax: ", $syn, "\n";
89 $conn->log("irspy_test", "Retrieval of $syn record failed: ",
90 "exception unavailable");
93 $conn->record()->store_result('record_fetch',
95 'ok' => defined $text ? 1 : 0);
97 return ZOOM::IRSpy::Status::TASK_DONE;
102 my($rs, $index0, $syntax) = @_;
104 my $oldSyntax = $rs->option(preferredRecordSyntax => $syntax);
105 my $record = $rs->record(0);
106 $oldSyntax = "" if !defined $oldSyntax;
107 $rs->option(preferredRecordSyntax => $oldSyntax);
114 my($conn, $task, $test_args, $exception) = @_;
115 my $syn = $test_args->{'syntax'};
117 $conn->log("irspy_test", "Retrieval of $syn record failed: ", $exception);
118 $conn->record()->store_result('record_fetch',
121 return ZOOM::IRSpy::Status::TASK_DONE;