Test is BAD if database is unavailable.
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy / Test / Search / Bib1.pm
index fc1bf2c..4628f14 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Bib1.pm,v 1.12 2006-10-25 10:49:51 mike Exp $
+# $Id: Bib1.pm,v 1.17 2007-02-28 17:32:48 mike Exp $
 
 # See the "Main" test package for documentation
 
@@ -24,7 +24,7 @@ sub start {
     foreach my $attr (@attrs) {
        $conn->irspy_search_pqf("\@attr 1=$attr mineral",
                                 {'attr' => $attr}, {},
-                               ZOOM::Event::RECV_SEARCH, \&found,
+                               ZOOM::Event::ZEND, \&found,
                                exception => \&error);
     }
 }
@@ -37,9 +37,7 @@ sub found {
 
     $conn->log("irspy_test", "search on access-point $attr found $n record",
               $n==1 ? "" : "s");
-    $conn->record()->store_result('search', 'set'       => 'bib1',
-                                            'ap'        => $attr,
-                                            'ok'        => 1);
+    update($conn, $attr, 1);
 
     return ZOOM::IRSpy::Status::TASK_DONE;
 }
@@ -51,11 +49,22 @@ sub error {
 
     $conn->log("irspy_test", "search on access-point $attr had error: ",
               $exception);
-    $conn->record()->store_result('search', 'set'       => 'bib1',
-                                            'ap'        => $attr,
-                                            'ok'        => 0);
+    update($conn, $attr, 0);
+
+    return ZOOM::IRSpy::Status::TEST_BAD
+       if ($exception->code() == 1 || # permanent system error
+           $exception->code() == 109); # Database unavailable
+
     return ZOOM::IRSpy::Status::TASK_DONE;
 }
 
 
+sub update {
+    my ($conn, $attr, $ok) = @_;
+    $conn->record()->store_result('search', 'set'       => 'bib-1',
+                                            'ap'        => $attr,
+                                            'ok'        => $ok);
+}
+
+
 1;