-# $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;
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';
sub _really_rewrite_record {
- my($conn, $rec) = @_;
+ my($conn, $rec, $oldid) = @_;
my $p = $conn->package();
$p->option(action => "specialUpdate");
$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 => "<dummy/>"); # Work around Zebra bug
+ $p->send("update");
+ $p->destroy();
+ }
+
$p = $conn->package();
$p->send("commit");
$p->destroy();
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;
$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} }),