mirror of https://github.com/PCSX2/pcsx2.git
tests: help + replay command
Remove useless debug info too
This commit is contained in:
parent
44f1281915
commit
807ec04229
|
@ -13,19 +13,39 @@ use Cwd 'abs_path';
|
||||||
use Term::ANSIColor;
|
use Term::ANSIColor;
|
||||||
|
|
||||||
sub help {
|
sub help {
|
||||||
# always useful
|
my $msg = << 'EOS';
|
||||||
|
|
||||||
|
The script run_test.pl is a test runner that work in conjunction with ps2autotests (https://github.com/unknownbrackets/ps2autotests)
|
||||||
|
|
||||||
|
Mandatory Option
|
||||||
|
--exe <STRING> : the PCSX2 binary that you want to test
|
||||||
|
--cfg <STRING> : a path to the a default ini configuration of PCSX2
|
||||||
|
--suite <STRING> : a path to ps2autotests test (root directory)
|
||||||
|
|
||||||
|
Optional Option
|
||||||
|
--cpu=1 : the number of parallel tests launched. Might create additional issue
|
||||||
|
--timeout=20 : a global timeout for hang tests
|
||||||
|
--show_diff : show debug information
|
||||||
|
|
||||||
|
--debug_me : print script info
|
||||||
|
EOS
|
||||||
|
print $msg;
|
||||||
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
my $mt_timeout :shared;
|
my $mt_timeout :shared;
|
||||||
my ($o_suite, $o_help, $o_exe, $o_cfg, $o_max_cpu, $o_timeout, $o_show_diff);
|
my ($o_suite, $o_help, $o_exe, $o_cfg, $o_max_cpu, $o_timeout, $o_show_diff, $o_debug_me);
|
||||||
|
|
||||||
$o_max_cpu = 1;
|
$o_max_cpu = 1;
|
||||||
$o_timeout = 20;
|
$o_timeout = 20;
|
||||||
|
$o_help = 0;
|
||||||
|
$o_debug_me = 0;
|
||||||
|
|
||||||
my $status = Getopt::Long::GetOptions(
|
my $status = Getopt::Long::GetOptions(
|
||||||
'cfg=s' => \$o_cfg,
|
'cfg=s' => \$o_cfg,
|
||||||
'cpu=i' => \$o_max_cpu,
|
'cpu=i' => \$o_max_cpu,
|
||||||
|
'debug_me' => \$o_debug_me,
|
||||||
'exe=s' => \$o_exe,
|
'exe=s' => \$o_exe,
|
||||||
'help' => \$o_help,
|
'help' => \$o_help,
|
||||||
'timeout=i' => \$o_timeout,
|
'timeout=i' => \$o_timeout,
|
||||||
|
@ -36,7 +56,7 @@ my $status = Getopt::Long::GetOptions(
|
||||||
#####################################################
|
#####################################################
|
||||||
# Check option
|
# Check option
|
||||||
#####################################################
|
#####################################################
|
||||||
unless ($status) {
|
if (not $status or $o_help) {
|
||||||
help();
|
help();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,10 +71,11 @@ unless (defined $o_exe) {
|
||||||
}
|
}
|
||||||
|
|
||||||
unless (defined $o_cfg) {
|
unless (defined $o_cfg) {
|
||||||
print "Error: require a deafult cfg directory\n";
|
print "Error: require a default cfg directory\n";
|
||||||
help();
|
help();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$o_exe = abs_path($o_exe);
|
||||||
$o_cfg = abs_path($o_cfg);
|
$o_cfg = abs_path($o_cfg);
|
||||||
$mt_timeout = $o_timeout;
|
$mt_timeout = $o_timeout;
|
||||||
|
|
||||||
|
@ -67,6 +88,7 @@ $mt_timeout = $o_timeout;
|
||||||
my $g_test_db;
|
my $g_test_db;
|
||||||
print "INFO: search tests in $o_suite and run them in $o_max_cpu CPU)\n";
|
print "INFO: search tests in $o_suite and run them in $o_max_cpu CPU)\n";
|
||||||
find({ wanted => \&add_test_cmd_for_elf, no_chdir => 1 }, $o_suite);
|
find({ wanted => \&add_test_cmd_for_elf, no_chdir => 1 }, $o_suite);
|
||||||
|
print "\n";
|
||||||
|
|
||||||
# Round 2: Run the tests (later in thread)
|
# Round 2: Run the tests (later in thread)
|
||||||
foreach my $test (keys(%$g_test_db)) {
|
foreach my $test (keys(%$g_test_db)) {
|
||||||
|
@ -87,9 +109,10 @@ wait_all_threads();
|
||||||
collect_result();
|
collect_result();
|
||||||
|
|
||||||
# Pretty print
|
# Pretty print
|
||||||
print "\n\n Status | ================= Test ======================\n";
|
print "\n\n Status | =========================== Test ================================\n";
|
||||||
foreach my $test (sort(keys(%$g_test_db))) {
|
foreach my $test (sort(keys(%$g_test_db))) {
|
||||||
my $info = $g_test_db->{$test};
|
my $info = $g_test_db->{$test};
|
||||||
|
my $cfg = $info->{"CFG_DIR"};
|
||||||
my $out = $info->{"OUT"};
|
my $out = $info->{"OUT"};
|
||||||
my $exp = $info->{"EXPECTED"};
|
my $exp = $info->{"EXPECTED"};
|
||||||
|
|
||||||
|
@ -104,6 +127,7 @@ foreach my $test (sort(keys(%$g_test_db))) {
|
||||||
print " KO | $test\n";
|
print " KO | $test\n";
|
||||||
if ($o_show_diff) {
|
if ($o_show_diff) {
|
||||||
print color('bold magenta'); print "-----------------------------------------------------------------------\n"; print color('reset');
|
print color('bold magenta'); print "-----------------------------------------------------------------------\n"; print color('reset');
|
||||||
|
print test_cmd($test, $cfg) . "\n\n";
|
||||||
system("diff -u $out $exp");
|
system("diff -u $out $exp");
|
||||||
print color('bold magenta'); print "-----------------------------------------------------------------------\n"; print color('reset');
|
print color('bold magenta'); print "-----------------------------------------------------------------------\n"; print color('reset');
|
||||||
}
|
}
|
||||||
|
@ -138,7 +162,7 @@ sub add_test_cmd_for_elf {
|
||||||
#return 0 unless ($file =~ /branchdelay/);
|
#return 0 unless ($file =~ /branchdelay/);
|
||||||
|
|
||||||
my $dir = $File::Find::dir;
|
my $dir = $File::Find::dir;
|
||||||
print "INFO: found $file in $dir\n";
|
print "INFO: found $file in $dir\n" if $o_debug_me;
|
||||||
|
|
||||||
$g_test_db->{$File::Find::name}->{"CFG_DIR"} = $File::Find::name =~ s/\.elf/_cfg/r;
|
$g_test_db->{$File::Find::name}->{"CFG_DIR"} = $File::Find::name =~ s/\.elf/_cfg/r;
|
||||||
$g_test_db->{$File::Find::name}->{"EXPECTED"} = $File::Find::name =~ s/\.elf/.expected/r;
|
$g_test_db->{$File::Find::name}->{"EXPECTED"} = $File::Find::name =~ s/\.elf/.expected/r;
|
||||||
|
@ -191,9 +215,9 @@ sub run_elf {
|
||||||
my $dump = 0;
|
my $dump = 0;
|
||||||
open(my $run, ">$out") or die "Impossible to open $!";
|
open(my $run, ">$out") or die "Impossible to open $!";
|
||||||
|
|
||||||
# FIXME timeout
|
my $command = test_cmd($elf, $cfg);
|
||||||
my $pid = open(my $log, "$o_exe --elf $elf --cfgpath=$cfg |") or die "Impossible to pipe $!";
|
my $pid = open(my $log, "$command |") or die "Impossible to pipe $!";
|
||||||
print "INFO: Execute $elf (PID=$pid) with cfg ($cfg)\n";
|
print "INFO: Execute $elf (PID=$pid) with cfg ($cfg)\n" if $o_debug_me;
|
||||||
|
|
||||||
# Kill me
|
# Kill me
|
||||||
$SIG{'KILL'} = sub {
|
$SIG{'KILL'} = sub {
|
||||||
|
@ -215,12 +239,18 @@ sub run_elf {
|
||||||
}
|
}
|
||||||
if ($line =~ /-- TEST END/) {
|
if ($line =~ /-- TEST END/) {
|
||||||
$dump = 0;
|
$dump = 0;
|
||||||
print "Info kill process $pid\n";
|
print "INFO: kill process $pid\n" if $o_debug_me;
|
||||||
kill 'KILL', $pid;
|
kill 'KILL', $pid;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub test_cmd {
|
||||||
|
my $elf = shift;
|
||||||
|
my $cfg = shift;
|
||||||
|
return "$o_exe --elf $elf --cfgpath=$cfg"
|
||||||
|
}
|
||||||
|
|
||||||
#####################################################
|
#####################################################
|
||||||
# Thread management
|
# Thread management
|
||||||
#####################################################
|
#####################################################
|
||||||
|
|
Loading…
Reference in New Issue