APP-REST-RestTestSuite

 view release on metacpan or  search on metacpan

script/rest-client  view on Meta::CPAN


  Using the default test suite. This is just for a demo purpose.
  Use below options to specify the config file and log path.

  $client --configfile=<rest_config_file> --logdir=<log-directory-path>

HELP
    $suite = new APP::REST::RestTestSuite( LOG_FILE_PATH => $log_dir, );

} else {
    unless ( $action->{getsampleconfig} ) {
        print <<HELP;
  Using the default test suite. This is just for a demo purpose.
  Use below options to specify the config file and log path.

  $client --configfile=<rest_config_file> --logdir=<log-directory-path>

  Use below option to get a sample config. Edit the config file to configure your web services

  $client --get-sample-config

HELP
    }
    $suite = new APP::REST::RestTestSuite();
}

if ( $action->{debug} ) {

    print Dumper $suite;
    exit;

} elsif ( $action->{runtestsuite} ) {

    $suite->execute_test_cases( $suite->get_test_cases() );
    my ( $config, $total, $skip, $pass, $fail ) = $suite->get_result_summary();
    print "=" x 70, "\n";
    print "Summary of web service Suite    \n";
    print "=" x 70, "\n";
    print "Total test cases configured : $config\n";
    print "Total test cases executed   : $total\n";
    print "Total test cases skipped    : $skip\n";
    print "Total test cases pass       : $pass\n";
    print "Total test cases failed     : $fail\n";
    print "=" x 70, "\n";
    exit;

} elsif ( $action->{testload} ) {

    die "--test-load accepts only numeric argument\n"
      unless ( $action->{testload} =~ /^\d+$/ );
    my %test_cases = $suite->get_test_cases();

    #increase the count to load your API $load times with the number of TC
    my $tc_in_config = scalar keys %test_cases;
    my $load         = $action->{testload};

    #$load = floor(500 / $tc_in_config);

    my %load_test_cases;

    #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 [...]



( run in 0.876 second using v1.01-cache-2.11-cpan-119454b85a5 )