| | |
| |
|
| | use warnings; |
| | use strict; |
| |
|
| | BEGIN { |
| | use Cwd qw/ abs_path /; |
| | use File::Basename; |
| | my $script_dir = dirname(abs_path($0)); |
| | print STDERR "script_dir=$script_dir\n"; |
| | push @INC, $script_dir; |
| | } |
| |
|
| | use FindBin qw($Bin); |
| | use MosesRegressionTesting; |
| | use Getopt::Long; |
| | use File::Temp qw ( tempfile ); |
| | use POSIX qw ( strftime ); |
| |
|
| | my $extractorExe; |
| | my $test_name; |
| | my $data_dir; |
| | my $test_dir; |
| | my $results_dir; |
| |
|
| | GetOptions("extractor=s" => \$extractorExe, |
| | "test=s" => \$test_name, |
| | "data-dir=s"=> \$data_dir, |
| | "test-dir=s"=> \$test_dir, |
| | "results-dir=s"=> \$results_dir, |
| | ) or exit 1; |
| |
|
| | |
| | unless (defined $results_dir) |
| | { |
| | my $ts = get_timestamp($extractorExe); |
| | $results_dir = "$data_dir/results/$test_name/$ts"; |
| | } |
| |
|
| | `mkdir -p $results_dir`; |
| |
|
| | my $outPath = "$results_dir"; |
| |
|
| | my $extractorArgs = `cat $test_dir/$test_name/args.txt`; |
| | $_ = $extractorArgs; |
| | s/(\$\w+)/$1/eeg; |
| | $extractorArgs = $_; |
| |
|
| | my $cmdMain = "$extractorExe $extractorArgs \n"; |
| |
|
| | open CMD, ">$results_dir/cmd_line"; |
| | print CMD "$cmdMain"; |
| | close CMD; |
| |
|
| | `$cmdMain`; |
| |
|
| | my $truthPath = "$test_dir/$test_name/truth/"; |
| |
|
| |
|
| | if (-e $outPath) |
| | { |
| | my $cmd = "diff --exclude=.DS_Store --exclude=._* --exclude=cmd_line $outPath/ $truthPath/ | wc -l"; |
| | my $numDiff = `$cmd`; |
| |
|
| | if ($numDiff == 0) |
| | { |
| | |
| | print STDERR "SUCCESS\n"; |
| | exit 0; |
| | } |
| | else |
| | { |
| | print STDERR "FAILURE. Ran $cmdMain\n"; |
| | exit 1; |
| | } |
| | } |
| | else |
| | { |
| | print STDERR "FAILURE. Output does not exists. Ran $cmdMain\n"; |
| | exit 1; |
| | } |
| |
|
| | |
| | sub get_timestamp { |
| | my ($file) = @_; |
| | my ($dev,$ino,$mode,$nlink,$uid,$gid,$rdev,$size, |
| | $atime,$mtime,$ctime,$blksize,$blocks) |
| | = stat($file); |
| | my $timestamp = strftime("%Y%m%d-%H%M%S", gmtime $mtime); |
| | my $timestamp2 = strftime("%Y%m%d-%H%M%S", gmtime); |
| | my $username = `whoami`; chomp $username; |
| | return "moses.v$timestamp-$username-at-$timestamp2"; |
| | } |
| |
|
| |
|
| |
|