1 # $Id: Fetch.pm,v 1.11 2006-10-31 12:42:32 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 $conn->log("irspy_test", "Fetch test search succeeded");
53 #@syntax = qw(grs-1 sutrs usmarc xml); # simplify for debugging
54 foreach my $syntax (@syntax) {
55 $conn->irspy_rs_record($task->{rs}, 0,
56 { syntax => $syntax },
57 { start => 0, count => 1,
58 preferredRecordSyntax => $syntax },
59 ZOOM::Event::RECV_RECORD, \&record,
60 exception => \&error);
63 return ZOOM::IRSpy::Status::TASK_DONE;
68 my($conn, $task, $test_args, $event) = @_;
69 my $syn = $test_args->{'syntax'};
72 # Due to a bug in ZOOM-C (as of YAZ 2.1.38 of 31st October 2006),
73 # diagnostics in Present responses are not reported, so that we
74 # always end up in this callback rather than in error() where we
75 # should be. Luckily, we can test whether the retrieval really
76 # did work by rendering the record, which will yield an undefined
77 # result if the fetch failed.
78 my $record = _fetch_record($rs, 0, $syn);
79 my $text = $record->render();
81 $conn->log("irspy_test", "Successfully retrieved a $syn record");
83 print STDERR "Hits: ", $rs->size(), "\n";
84 print STDERR "Syntax: ", $syn, "\n";
88 $conn->log("irspy_test", "Retrieval of $syn record failed: ",
89 "exception unavailable");
92 $conn->record()->store_result('record_fetch',
94 'ok' => defined $text);
96 return ZOOM::IRSpy::Status::TASK_DONE;
101 my($rs, $index0, $syntax) = @_;
103 my $oldSyntax = $rs->option(preferredRecordSyntax => $syntax);
104 my $record = $rs->record(0);
105 $oldSyntax = "" if !defined $oldSyntax;
106 $rs->option(preferredRecordSyntax => $oldSyntax);
113 my($conn, $task, $test_args, $exception) = @_;
114 my $syn = $test_args->{'syntax'};
116 $conn->log("irspy_test", "Retrieval of $syn record failed: ", $exception);
117 $conn->record()->store_result('record_fetch',
120 return ZOOM::IRSpy::Status::TASK_DONE;