#!/usr/bin/perl -w
@def=("simple", "thread", "mpi");
splice(@def,0,scalar(@ARGV),@ARGV);
if($def[0] eq "petal")
{
    $remote=1;
    @def=("simple", "thread", "mpi");
}
else
{
    $remote=0;
}

if($def[0] eq "all" || scalar(@ARGV)==0)
{
    @def=("simple", "thread", "mpi");
}
else
{
    if(scalar(@ARGV)==1)
    {
	$def[1] = $def[2] = "";
    }
    if(scalar(@ARGV)==2)
    {
	$def[2] = "";
    }
}
if(($def[0] eq "simple") || ($def[1] eq "simple") || ($def[2] eq "simple"))
{
    if($remote==1)
    {
	print "does not work yet. use runtest locally\n";
#	system("ssh petal 'cd \$HOME/src/migrate-new; make clean ; make pretty'"); 
    }
    else
    {
	print "SINGLE CPU ----------------------------------------\n";
	system("cd \$HOME/src/migrate-new; make clean 2>&1 > make-simple.log; make 2>&1 >> make-simple.log");
    }
    print "Bayes inference using IAM mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
	   (time ../migrate-n parmfile.iam -nomenu) 2>&1 > iam.log;");
    
    print "Bayes inference using SSM mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
	   (time ../migrate-n parmfile.ssm -nomenu) 2>&1 > ssm.log;");
    print "Bayes inference using F84/DNA mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
	   (time ../migrate-n parmfile.dna -nomenu) 2>&1 > dna.log;");
    print "ML inference using IAM mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
    (time ../migrate-n parmfile.iam-ml -nomenu) 2>&1 > iam-ml.log;");
    
    print "ML inference using SSM mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
	(time ../migrate-n parmfile.ssm-ml -nomenu) 2>&1 > ssm-ml.log;");
    print "ML inference using F84/DNA mutation model:\n";
    system("cd \$HOME/src/migrate-new/testsuite;\
	(time ../migrate-n parmfile.dna-ml -nomenu) 2>&1 > dna-ml.log");
}
if(($def[0] eq "thread") || ($def[1] eq "thread") || ($def[2] eq "thread"))
{
    system("cd \$HOME/src/migrate-new; make clean  2>&1 > make-thread.log;make thread  2>&1 >> make-thread.log;\
cd \$HOME/src/migrate-new/testsuite;\
(time ../migrate-n parmfile.iam -nomenu) 2>&1 >> iam.log;\
    (time ../migrate-n parmfile.ssm -nomenu) 2>&1 >> ssm.log;\
    (time ../migrate-n parmfile.dna -nomenu) 2>&1 >> dna.log;\
    (time ../migrate-n parmfile.iam-ml -nomenu) 2>&1 >> iam-ml.log;\
    (time ../migrate-n parmfile.ssm-ml -nomenu) 2>&1 >> ssm-ml.log;\
    (time ../migrate-n parmfile.dna-ml -nomenu) 2>&1 >> dna-ml.log");
}


if(($def[0] eq "mpi") || ($def[1] eq "mpi") || ($def[2] eq "mpi"))
{
    system("cd \$HOME/src/migrate-new;\
make clean  2>&1 > make-mpi.log;\
make mpis  2>&1 >> make-mpi.log;\
make mpis \"MPICC=mpic++\"  2>&1 >> make-mpi.log;\
cd \$HOME/src/migrate-new/testsuite;\
(time mpirun -np 4 ../migrate-n parmfile.iam -nomenu) 2>&1 >> iam.log;\
(time mpirun -np 4 ../migrate-n parmfile.ssm -nomenu) 2>&1 >> ssm.log;\
(time mpirun -np 4 ../migrate-n parmfile.dna -nomenu) 2>&1 >> dna.log;\
(time mpirun -np 4  ../migrate-n parmfile.iam-ml -nomenu) 2>&1 >> iam-ml.log;\
(time mpirun -np 4  ../migrate-n parmfile.ssm-ml -nomenu) 2>&1 >> ssm-ml.log;\
(time mpirun -np 4  ../migrate-n parmfile.dna-ml -nomenu) 2>&1 >> dna-ml.log");
}
system("egrep \\(ERROR\\|WARNING\\) *.log > report");

 
