X-Git-Url: http://git.indexdata.com/?p=irspy-moved-to-github.git;a=blobdiff_plain;f=lib%2FZOOM%2FIRSpy.pm;h=736585c69ff5e92f226e5c8355c9c67877430941;hp=da29f02d8328049b7b76b429b35e583ca195fe66;hb=0e124b9481a9b50b4d2110bdb264d31e0b35663f;hpb=10db92a1882ad7483176e8ba2432a8d06aafff57 diff --git a/lib/ZOOM/IRSpy.pm b/lib/ZOOM/IRSpy.pm index da29f02..736585c 100644 --- a/lib/ZOOM/IRSpy.pm +++ b/lib/ZOOM/IRSpy.pm @@ -1,4 +1,4 @@ -# $Id: IRSpy.pm,v 1.77 2007-03-15 11:36:58 mike Exp $ +# $Id: IRSpy.pm,v 1.81 2007-04-18 15:23:41 mike Exp $ package ZOOM::IRSpy; @@ -16,7 +16,7 @@ use Net::Z3950::ZOOM 1.13; # For the ZOOM version-check only use ZOOM::IRSpy::Node; use ZOOM::IRSpy::Connection; use ZOOM::IRSpy::Stats; -use ZOOM::IRSpy::Utils qw(cql_target render_record); +use ZOOM::IRSpy::Utils qw(cql_target render_record irspy_xpath_context); our @ISA = qw(); our $VERSION = '0.02'; @@ -242,7 +242,7 @@ sub _rewrite_record { sub _really_rewrite_record { - my($conn, $rec) = @_; + my($conn, $rec, $oldid) = @_; my $p = $conn->package(); $p->option(action => "specialUpdate"); @@ -251,6 +251,23 @@ sub _really_rewrite_record { $p->send("update"); $p->destroy(); + # This is the expression in the ID-making stylesheet + # ../../zebra/zeerex2id.xsl + my $xc = irspy_xpath_context($rec); + my $id = $xc->find("concat(e:serverInfo/e:host, ':', + e:serverInfo/e:port, '/', + e:serverInfo/e:database)"); + if (defined $oldid && $id ne $oldid) { + # Delete old record; + warn "IDs differ (old='$oldid' new='$id')"; + my $p = $conn->package(); + $p->option(action => "recordDelete"); + $p->option(recordIdOpaque => $oldid); + $p->option(record => ""); # Work around Zebra bug + $p->send("update"); + $p->destroy(); + } + $p = $conn->package(); $p->send("commit"); $p->destroy(); @@ -300,8 +317,12 @@ sub check { or die "No tests defined for '$tname'"; $this->{tree}->resolve(); #$this->{tree}->print(0); - my $nskipped = 0; + my $topname = $this->{tree}->name(); + my $timeout = "ZOOM::IRSpy::Test::$topname"->timeout(); + $this->log("irspy", "beginnning with test '$topname' (timeout $timeout)"); + + my $nskipped = 0; my @conn = @{ $this->{connections} }; my $nruns = 0; @@ -337,7 +358,8 @@ sub check { $conn->destroy(); $conn[$i0] = create ZOOM::IRSpy::Connection($this, - shift @{ $this->{queue} }, async => 1); + shift @{ $this->{queue} }, async => 1, + timeout => $timeout); $conn[$i0]->option(current_test_address => ""); $conn[$i0]->log("irspy", "entering active pool - ", scalar(@{ $this->{queue} }),