mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-12-28 14:32:38 +03:00
98387244c1
git-svn-id: https://mosesdecoder.svn.sourceforge.net/svnroot/mosesdecoder/trunk@2569 1f5c12ca-751b-0410-a591-d2e778427230
91 lines
2.7 KiB
Perl
Executable File
91 lines
2.7 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
use strict;
|
|
my $script_dir; BEGIN { use Cwd qw/ abs_path /; use File::Basename; $script_dir = dirname(abs_path($0)); push @INC, $script_dir; }
|
|
use Getopt::Long;
|
|
|
|
############################################################
|
|
my @tests = qw (
|
|
mert-moses-new
|
|
mert-moses-new-nocase
|
|
mert-moses-new-aggregate
|
|
mert-moses-new-continue
|
|
);
|
|
|
|
###########################################################
|
|
|
|
use MosesScriptsRegressionTesting;
|
|
use File::Temp qw ( tempfile );
|
|
use POSIX qw ( strftime );
|
|
|
|
my $test_dir;
|
|
my $moses_scripts_dir;
|
|
my $mert_scripts_dir;
|
|
my $data_dir;
|
|
my $BIN_TEST = $script_dir;
|
|
|
|
GetOptions("data-dir=s" => \$data_dir,
|
|
"moses-scripts-dir=s"=> \$moses_scripts_dir,
|
|
"mert-scripts-dir=s"=> \$mert_scripts_dir,
|
|
) or exit 1;
|
|
|
|
$data_dir = MosesScriptsRegressionTesting::find_data_directory($BIN_TEST, $data_dir);
|
|
|
|
my $test_run = "$BIN_TEST/run-single-test.pl --data-dir=$data_dir";
|
|
$test_dir = $script_dir . "/tests";
|
|
$test_run .= " --test-dir=$test_dir" if $test_dir;
|
|
$test_run .= " --moses-scripts-dir=$moses_scripts_dir" if $moses_scripts_dir;
|
|
$test_run .= " --mert-scripts-dir=$mert_scripts_dir" if $mert_scripts_dir;
|
|
|
|
print "Data directory: $data_dir\n";
|
|
print "Scripts directory: $moses_scripts_dir\n";
|
|
|
|
print "Running tests: @tests\n\n";
|
|
|
|
print "TEST NAME STATUS PATH TO RESULTS\n";
|
|
my $lb = "---------------------------------------------------------------------------------------------------------\n";
|
|
print $lb;
|
|
|
|
my $fail = 0;
|
|
my @failed;
|
|
foreach my $test (@tests) {
|
|
my $cmd = "$test_run --test=$test";
|
|
my ($res, $output, $results_path) = do_test($cmd);
|
|
format STDOUT =
|
|
@<<<<<<<<<<<<<<<<<<<<<< @<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
|
|
$test, $res, $results_path
|
|
.
|
|
write;
|
|
if ($res eq 'FAIL') {
|
|
print "$lb$output$lb";
|
|
$fail++;
|
|
push @failed, $test;
|
|
} else {
|
|
# TOTAL_WALLTIME result=BASELINE=11, TEST=12 DELTA=1 PCT CHANGE=9.09
|
|
if ($output =~ /TOTAL_WALLTIME\s+result\s*=\s*([^\n]+)/o) {
|
|
print "\t\tTiming statistics: $1\n";
|
|
}
|
|
}
|
|
}
|
|
|
|
my $total = scalar @tests;
|
|
my $fail_percentage = int(100 * $fail / $total);
|
|
my $pass_percentage = int(100 * ($total-$fail) / $total);
|
|
print "\n$pass_percentage% of the tests passed.\n";
|
|
print "$fail_percentage% of the tests failed.\n";
|
|
if ($fail_percentage>0) { print "\nPLEASE INVESTIGATE THESE FAILED TESTS: @failed\n"; }
|
|
|
|
sub do_test {
|
|
my ($test) = @_;
|
|
my $o = `$test 2>&1`;
|
|
my $res = 'PASS';
|
|
$res = 'FAIL' if ($? > 0);
|
|
my $od = '';
|
|
if ($o =~ /RESULTS AVAILABLE IN: (.*)$/m) {
|
|
$od = $1;
|
|
$o =~ s/^RESULTS AVAIL.*$//mo;
|
|
}
|
|
return ($res, $o, $od);
|
|
}
|
|
|