summaryrefslogtreecommitdiff
path: root/tests/run_test.pl
diff options
context:
space:
mode:
authorbrunsch <brunsch@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-06-13 01:19:43 +0000
committerbrunsch <brunsch@ae88bc3d-4319-0410-8dbf-d08b4c9d3795>2000-06-13 01:19:43 +0000
commite58bf0f642defb1ac6ee8e2938ba4608fa057e2e (patch)
tree96ad161bfdd422f396a2da38e8f06e64abb9a3cd /tests/run_test.pl
parentf94fbdae1362b6f6a79ac55b72a5eaa17b99f977 (diff)
downloadATCD-e58bf0f642defb1ac6ee8e2938ba4608fa057e2e.tar.gz
ChangeLogTag:Mon Jun 12 18:17:42 2000 Darrell Brunsch <brunsch@cs.wustl.edu>
Diffstat (limited to 'tests/run_test.pl')
-rwxr-xr-xtests/run_test.pl210
1 files changed, 210 insertions, 0 deletions
diff --git a/tests/run_test.pl b/tests/run_test.pl
new file mode 100755
index 00000000000..bb9886cb9e7
--- /dev/null
+++ b/tests/run_test.pl
@@ -0,0 +1,210 @@
+eval '(exit $?0)' && eval 'exec perl -S $0 ${1+"$@"}'
+ & eval 'exec perl -S $0 $argv:q'
+ if 0;
+
+# $Id$
+# -*- perl -*-
+# This file is for running the tests in the ACE tests directory.
+
+unshift @INC, '../bin';
+require ACEutils;
+
+use Cwd;
+use English;
+use Getopt::Std;
+
+if (!getopts ('tc:') || $opt_h) {
+ print "run_test.pl [-h] [-c config] [-t] [file1 file2 ...]\n";
+ print "\n";
+ print "Runs the tests listed in run_test.lst\n";
+ print "\n";
+ print "Options:\n";
+ print " -c config Run the tests for the <config> platform\n";
+ print " -h display this help\n";
+ print " -t Runs all the tests passed via the cmd line\n";
+ print "\n";
+ print "Configs: MSVC\n";
+ exit (1);
+}
+
+if ($OSNAME eq 'MSWin32') {
+ $config = 'MSVC';
+}
+
+if ($opt_c) {
+ $config = $opt_c;
+}
+else {
+ print "Defaulting to configuration: $config\n";
+}
+
+if (!($ACE_ROOT = $ENV{ACE_ROOT})) {
+ my $cd = getcwd ();
+ chdir ('..');
+ $ACE_ROOT = getcwd ().$DIR_SEPARATOR;
+ chdir ($cd);
+ warn "ACE_ROOT not defined, defaulting to ACE_ROOT=$ACE_ROOT";
+}
+
+if (!($tmp = $ENV{TMP})) {
+ $tmp="/tmp";
+}
+
+################################################################################
+
+@tests = ();
+
+# Loads the list and runs it
+sub read_run_test_list ()
+{
+ my $line;
+ open (LIST, "<run_test.lst")
+ || die "Cannot open run_test.lst";
+
+ while (<LIST>) {
+ next if (/^#/ || /^\s*$/); # ignore comments and blank lines
+
+ chomp;
+ my @stuff = split ":";
+
+ if (!/$config/) {
+ my $program = shift @stuff;
+ $program =~ s/\s*//g; #remove any extra whitepace
+ push @tests, $program;
+ }
+ }
+
+ close (LIST);
+}
+
+sub run_program ($)
+{
+ my $program = shift;
+
+ $program_exe = $EXEPREFIX.$program.$EXE_EXT;
+
+ unlink "core";
+ local $log = "log/".$program.".log";
+ unlink $log;
+
+ ### Try to run the program
+
+ if (! -x $program_exe) {
+ print STDERR "Error: $program_exe does not exist\n";
+ return;
+ }
+
+ print STDERR "Running $program\n";
+ $P = Process::Create ($program_exe, "");
+ $status = $P->TimedWait (300);
+
+ if ($status == -1) {
+ print STDERR "Error: $program FAILED (time out)\n";
+ $P->Kill (); $P->TimedWait (1);
+ } elsif ($status != 0) {
+ print STDERR "Error: $program FAILED with exit status $status\n";
+ }
+
+ check_log ($log);
+}
+
+sub check_log ($)
+{
+ my $log = shift;
+ ### Check the logs
+ if (-e "core") {
+ print STDERR "$program dumped core!!!!\n";
+ }
+ if (! -e $log ) {
+ print STDERR "Error: No log file ($log) is present\n";
+ } else {
+ if (open (LOG, "<". $log) == 0) {
+ print STDERR "Error: Cannot open log file $log\n";
+ } else {
+ my $starting_matched = 0;
+ my $ending_matched = 0;
+ my $bad_matched = 0;
+
+ while (<LOG>) {
+ chomp;
+
+ if (m/Starting/) {
+ $starting_matched = 1;
+ }
+
+ if (m/Ending/) {
+ $ending_matched = 1;
+ }
+
+ if (m/assertion failed|timeout|Bad file number/) {
+ $bad_matched = 1;
+ }
+
+ if ($log =~ /Cached_Accept_Conn_Test/
+ && m/No such file or directory/) {
+ $bad_matched = 1;
+ }
+
+ if (m/not supported/) {
+ print STDERR "Error: ($log): $_\n";
+ }
+ }
+
+ close (LOG); # ignore errors
+
+ if ($starting_matched == 0) {
+ print STDERR "Error ($log): no line with 'starting'\n";
+ }
+
+ if ($ending_matched == 0) {
+ print STDERR "Error ($log): no line with 'Ending'\n";
+ }
+
+ if ($bad_matched == 1) {
+ print STDERR "Error ($log): unexpected output\n";
+ }
+
+ }
+ }
+}
+
+sub delete_temp_files ()
+{
+ unlink "ace_pipe_name";
+ unlink "pattern";
+
+ if (!opendir (DIR, $tmp)) {
+ warn "Cannot open temp directory $tmp\n";
+ return;
+ }
+
+ my @files =readdir (DIR);
+ closedir (DIR);
+
+ my $file = "";
+ foreach $file (@files) {
+ if ($file =~ /^ace_temp_file/
+ || $file =~ /^Naming_Test/)
+ {
+ unlink $tmp.$DIR_SEPARATOR.$file;
+ }
+ }
+}
+
+################################################################################
+
+if (!$opt_t) {
+ read_run_test_list ();
+}
+else {
+ @tests = @ARGV;
+}
+
+foreach $test (@tests) {
+ run_program ($test);
+}
+
+delete_temp_files ();
+
+exit ();
+