APP-REST-RestTestSuite
view release on metacpan or search on metacpan
script/rest-client view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use File::Basename;
use Getopt::Long;
use POSIX;
use APP::REST::RestTestSuite;
use Data::Dumper;
$Data::Dumper::Indent = 1;
my ( $config_file, $log_dir, $action, $suite );
my $client = File::Basename::basename($0);
my %options = (
'c|configfile=s' => \$config_file,
'l|logdir=s' => \$log_dir,
'r|run-test-suite' => \$action->{runtestsuite},
't|test-load=s' => \$action->{testload},
's|get-sample-config' => \$action->{getsampleconfig},
'd|debug' => \$action->{debug},
'h|help' => \&usage,
'V|version' =>
sub { print "Version : ", APP::REST::RestTestSuite->VERSION, "\n"; exit; },
);
mini_usage() unless @ARGV;
GetOptions(%options) or mini_usage();
sub mini_usage {
print STDERR <<HELP;
Usage: $client [options] command [...]
Try `$client --help` for more options.
HELP
exit;
}
sub usage {
print STDERR <<HELP;
Usage: $client [options] command [...]
Options:
-h,--help Display this usage.
-V,--version Print the version of the tool.
-c,--configfile=<file> Input the config file with full path.
-l,--logdir=<dir> Input full path of the directory where you want to log the test results.
-t,--test-load=n Test the average response time by simulating 'n' number of requests on the web server.
Commands:
-r,--run-test-suite Test the configured web services defined in the config file.
-g,--get-sample-config Get a sample config file to configure your web services as test suite.
***Note:
By default tool uses the sample-config file. You need to get that and configure the suite.
Examples:
$client --get-sample-config
# Get sample config file for configuring web services in the current directory.
$client --run-test-suite --configfile=<rest_config_file>
# Execute the test suite against the supplied config file.
# Supply the full path of config file if it is not present in current directory.
$client --test-load=10 --configfile=<rest_config_file>
# Send parallel requests (10* number of web services configured in config file).
# Give average response time by simulating huge traffic in the web server.
$client --run-test-suite --configfile=<rest_config_file> --logdir=<log-directory-path>
$client --test-load=10 --configfile=<rest_config_file> --logdir=<log-directory-path>
# Create LOG files in the path specified by executing the test cases.
HELP
exit;
}
print
"\n===============================Rest Test Automation Tool=============================\n";
if ( $^O =~ /Win/ ) {
$config_file =~ s/\//\\/g if ($config_file);
$log_dir =~ s/\//\\/g if ($log_dir);
}
if ( $config_file && $log_dir ) {
print "Parsing Config File : $config_file\n";
print "Using log dir as : $log_dir\n";
$suite = new APP::REST::RestTestSuite(
REST_CONFIG_FILE => $config_file,
LOG_FILE_PATH => $log_dir,
);
} elsif ($config_file) {
print "Parsing Config File : $config_file\n\n";
$suite = new APP::REST::RestTestSuite( REST_CONFIG_FILE => $config_file, );
} elsif ($log_dir) {
print <<HELP;
Using log dir as : $log_dir
script/rest-client view on Meta::CPAN
#If config file has 10 test cases, formula for $tc_count is 10*$load
my $total_tc = 0;
while ( $load > 0 ) {
foreach my $num ( sort { $a <=> $b } keys(%test_cases) ) {
my $tc = $test_cases{$num};
$total_tc++;
$load_test_cases{$total_tc} = $tc;
}
$load--;
}
# require Data::Dumper;
# $Data::Dumper::Indent = 1;
# print Dumper $suite;
# foreach my $num (sort { $a <=> $b } keys(%load_test_cases)) {
# print Dumper $load_test_cases{$num};
# }
# print sort{ $a <=> $b } keys %load_test_cases;
# exit;
$suite->execute_test_cases_in_parallel(%load_test_cases);
my ( $config, $total, $skip, $pass, $fail ) = $suite->get_result_summary();
print "=" x 70, "\n";
print "Summary of web service load test \n";
print "=" x 70, "\n";
print "Total test cases in config: $config\n";
print "Total test cases executed : $total\n";
print "Total test cases skipped : $skip\n";
print "=" x 70, "\n";
exit;
} elsif ( $action->{getsampleconfig} ) {
$suite->get_sample_test_suite();
print "Sample Config file to configure the web services got created\n";
print "in ", $suite->get_sample_config_file(), "\n";
print "Edit and rename this file as project specific test suite.\n\n";
exit;
} else {
print "\nUse below options to execute the test cases\n\n";
print "$client --configfile=<rest_config_file> --run-test-suite\n\n";
exit;
}
__END__
=head1 NAME
rest-client - Test automation tool for restful web services
=head1 SYNOPSIS
Usage: rest-client [options] command [...]
Options:
-h,--help Display this usage.
-V,--version Print the version of the tool.
-c,--configfile=<file> Input the config file with full path.
-l,--logdir=<dir> Input full path of the directory where you want to log the test results.
-t,--test-load=n Test the average response time by simulating 'n' number of requests on the web server.
Commands:
-r,--run-test-suite Test the configured web services defined in the config file.
-g,--get-sample-config Get a sample config file to configure your web services as test suite.
***Note:
By default tool uses the sample-config file. You need to get that and configure the suite.
Examples:
rest-client --get-sample-config
# Get sample config file for configuring web services in the current directory.
rest-client --run-test-suite --configfile=<rest_config_file>
# Execute the test suite against the supplied config file.
# Supply the full path of config file if it is not present in current directory.
rest-client --test-load=10 --configfile=<rest_config_file>
# Send parallel requests (10* number of web services configured in config file).
# Give average response time by simulating huge traffic in the web server.
rest-client --run-test-suite --configfile=<rest_config_file> --logdir=<log-directory-path>
rest-client --test-load=10 --configfile=<rest_config_file> --logdir=<log-directory-path>
# Create LOG files in the path specified by executing the test cases.
=head1 SEE ALSO
L<https://github.com/rkmithun/APP-REST-RestTestSuite>
=cut
( run in 1.198 second using v1.01-cache-2.11-cpan-fe3c2283af0 )