Many radical changes to the IRSpy engine, enabling a far more asynchronous approach...
[irspy-moved-to-github.git] / lib / ZOOM / IRSpy / Test / Search / Title.pm
index 2bf4f09..4875598 100644 (file)
@@ -1,4 +1,4 @@
-# $Id: Title.pm,v 1.4 2006-09-13 16:30:27 mike Exp $
+# $Id: Title.pm,v 1.5 2006-10-06 11:33:08 mike Exp $
 
 # See the "Main" test package for documentation
 
@@ -9,34 +9,41 @@ use strict;
 use warnings;
 
 use ZOOM::IRSpy::Test;
-our @ISA;
-@ISA = qw(ZOOM::IRSpy::Test);
+our @ISA = qw(ZOOM::IRSpy::Test);
 
 
-sub run {
-    my $this = shift();
-    my $irspy = $this->irspy();
-    my $pod = $irspy->pod();
+sub start {
+    my $class = shift();
+    my($conn) = @_;
 
-    $pod->callback(ZOOM::Event::RECV_SEARCH, \&found);
-    $pod->search_pqf('@attr 1=4 computer');
-    my $err = $pod->wait($irspy);
-    ### Should notice failure and log it.
-
-    return 0;
+    $conn->irspy_search_pqf('@attr 1=4 mineral',
+                           ZOOM::Event::RECV_SEARCH, \&found,
+                           "exception", \&error);
 }
 
 
 sub found {
-    my($conn, $irspy, $rs, $event) = @_;
+    my($conn, $task, $event) = @_;
 
-    my $n = $rs->size();
-    $irspy->log("irspy_test", $conn->option("host"),
-               " title search found $n record", $n==1 ? "" : "s");
-    my $rec = $irspy->record($conn);
+    my $n = $task->{rs}->size();
+    $conn->log("irspy_test",
+              "title search found $n record", $n==1 ? "" : "s");
+    my $rec = $conn->record();
     $rec->append_entry("irspy:status", "<irspy:search_title ok='1'>" .
-                      $irspy->isodate(time()) . "</irspy:search_title>");
-    return 0;
+                      isodate(time()) . "</irspy:search_title>");
+
+    return ZOOM::IRSpy::Status::TASK_DONE;
+}
+
+
+sub error {
+    my($conn, $task, $exception) = @_;
+
+    $conn->log("irspy_test", "error: $exception");
+    my $rec = $conn->record();
+    $rec->append_entry("irspy:status", "<irspy:search_title ok='0'>" .
+                      isodate(time()) . "</irspy:search_title>");
+    return ZOOM::IRSpy::Status::TEST_BAD;
 }