You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ngcp-panel/t/api-rest2/testrunner

90 lines
2.3 KiB

#!/usr/bin/perl
use lib 't/api-rest2/lib';
use strict;
use warnings;
use TestFramework;
use threads;
use Thread::Queue;
use Data::Dumper;
my $server = $ARGV[0] || undef;
my $selected = $ARGV[1] || 'all';
if ( !$server ){
print "Usage: \$ perl testrunner.pl [<testsystem>] [<testset>]\n";
print "Usage example: \$ perl testrunner.pl 192.168.88.162\n";
print "Usage example: \$ perl testrunner.pl 192.168.88.162 fast\n";
print "Possible test set: all, stable, fast, t/api-rest2/Contracts.yaml\n";
print "Default test set: all\n";
exit(1);
}
my @test_files;
if ( $selected eq 'stable' ) {
print "Test selection: stable\n";
}
elsif ( $selected eq 'fast' ) {
print "Test selection: fast\n";
}
elsif ( $selected eq 'all' ) {
print "Test selection: all\n";
map { push @test_files, "./$_" } `ls ./t/api-rest2/*.yaml`;
}
else{
print "Test selection: $selected\n";
push @test_files, $selected;
}
print "################################################################################\n";
print "Finished main setup, now running tests ...\n";
local $ENV{CATALYST_SERVER_SUB}="https://$server:443";
local $ENV{CATALYST_SERVER}="https://$server:1443";
local $ENV{NGCP_SESSION_ID}=int(rand(1000)).time;
my @threads;
my $tests_queue = Thread::Queue->new();
for ( @test_files ) {
$tests_queue->enqueue($_);
}
$tests_queue->end();
for (1..2) {
push @threads, threads->create( {'context' => 'scalar'}, \&worker, $tests_queue, 0 );
}
my @exit_codes;
foreach ( @threads ){
push @exit_codes, $_->join();
}
sub worker {
my ( $tests_queue, $exit_code ) = @_;
while ( my $test_file = $tests_queue->dequeue_nb() ) {
chomp $test_file;
my $start_time = time;
print "Running tests from $test_file\n";
my $test_framework = TestFramework->new( {file_path => $test_file} );
my $result = $test_framework->run();
my $total_time = time - $start_time;
print "Finished test execution for $test_file\n";
if ( !$result->{success} ) {
$exit_code = 1;
print $result->{error_count}." errors were found!\n";
}
print "Tests for $test_file took $total_time seconds.\n\n";
}
return $exit_code;
}
if ( grep { $_ == 1 } @exit_codes ) {
exit 1;
}
exit 0;