#!/usr/bin/perl
use Time::HiRes qw( gettimeofday tv_interval );
use Cwd;
# In the non-installed case, we need to figure out what the library is at
# compile time so that "use lib" doesn't fail. To do this, we enclose the
# calculation of it in a BEGIN block.
BEGIN {
# this value is set by the installation scripts
my $was_installed = 0;
if ($was_installed) {
# In this case, libdir needs to be set to the directory that the modules
# were installed to, and confdir needs to be set to the directory that
# logger.conf et al. were installed in. The installation script
# replaces the LIBDIR and CONFDIR portions with the actual directories
$libdir = "XXX_LIBDIR_XXX";
$dirname = "";
} else {
# we need a fully-qualified directory name in case we daemonize so that we
# can still access scripts or other files specified in configuration files
# in a relative manner. Also, we need to know the location in reference to
# the binary so that users can launch the daemon from wherever but specify
# scripts and whatnot relative to the binary.
$dirname = dirname($0);
if (!($dirname =~ /^\//)) {
$dirname = getcwd . "/" . $dirname;
}
$libdir = dirname($0)."/../lib";
}
}
use lib "$libdir";
use perfSONAR_PS::Client::Echo;
my $uri = shift;
my $eventType = shift;
if (!defined $uri or $uri eq "-h") {
print "Usage: psping [-h] SERVICE_URI [ECHO_EVENT_TYPE]\n";
exit(-1);
}
my $echo_client = perfSONAR_PS::Client::Echo->new($uri, $eventType);
if (!defined $echo_client) {
print "Problem creating echo client for service\n";
exit(-1);
}
my ($stime, $etime);
$stime = [gettimeofday];
my ($status, $res) = $echo_client->ping();
if ($status != 0) {
print "Service $uri is down: $res\n";
exit(-1);
}
$etime = [gettimeofday];
$elapsed = tv_interval($stime, $etime);
print "Service $uri is up\n";
print "-Time to make request: $elapsed\n";