in t/lib/MockAsyncCxn.pm [62:133]
sub perform_request {
#===================================
my $self = shift;
my $params = shift;
my $d = deferred;
eval {
my $response = shift @{ $self->mock_responses }
or die "Mock responses exhausted";
if ( my $node = $response->{node} ) {
die "Mock response handled by wrong node ["
. $self->node_num . "]: "
. Dumper($response)
unless $node eq $self->node_num;
}
my $log_msg;
# Sniff request
if ( my $nodes = $response->{sniff} ) {
$log_msg = "SNIFF: [" . ( join ", ", @$nodes ) . "]";
$response->{code} ||= 200;
my $i = 1;
unless ( $response->{error} ) {
$response->{content} = $self->serializer->encode(
{ nodes => {
map {
'node_'
. $i++ => { http_address => "inet[/$_]" }
} @$nodes
}
}
);
}
}
# Normal request
elsif ( $response->{code} ) {
$log_msg
= "REQUEST: " . ( $response->{error} || $response->{code} );
}
# Ping request
else {
$log_msg = "PING: " . ( $response->{ping} ? 'OK' : 'NOT_OK' );
$response
= $response->{ping}
? { code => 200 }
: { code => 500, error => 'Cxn' };
}
$self->logger->debugf( "[%s-%s] %s", $self->node_num, $self->host,
$log_msg );
$d->resolve(
$self->process_response(
$params, # request
$response->{code}, # code
$response->{error}, # msg
$response->{content}, # body
{
'content-type' => 'application/json',
$PRODUCT_CHECK_HEADER => $PRODUCT_CHECK_VALUE
}
)
);
1;
} || do { $d->reject( $@ || 'Unknown error' ) };
return $d->promise;
}