#!/bin/bash
############################################################################
# Purpose: Test of SLURM functionality
#          Executes the full battery of tests.
#
# Output:  "Failures:#\nCompletions:#" with a count of tests executed 
#          successfully and failures respectively. The exit code is zero 
#          only if all tests executed successfully.
############################################################################
# Copyright (C) 2002 The Regents of the University of California.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Morris Jette <jette1@llnl.gov>
# UCRL-CODE-217948.
# 
# This file is part of SLURM, a resource management program.
# For details, see <http://www.llnl.gov/linux/slurm/>.
#  
# SLURM is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2 of the License, or (at your option)
# any later version.
# 
# SLURM is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
# details.
# 
# You should have received a copy of the GNU General Public License along
# with SLURM; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
############################################################################

FAILURES=0
COMPLETIONS=0

# Make sure we are in the desired directory before possibly 
# removing files the user does not want to lose.
if [ ! -x ./regression ]; then
	echo "FAILURE: cd to 'testsuite/expect' before starting 'regression'"
	exit 1
fi
if [ ! -x ./globals ]; then
	echo "FAILURE: copy 'globals.example' to 'globals' and modify as needed"
	exit 1
fi


# Remove any recently edited back-up files
/bin/rm -f test*.*% test*input test*output test*error 

# Run the tests in this directory
/bin/date
for major in `seq 1 20`; do
	for minor in `seq 1 100`; do
		TEST=test${major}.${minor}
		if [ ! -f $TEST ]; then continue; fi

		expect $TEST
		if [ $? -eq 0 ]
		then
			COMPLETIONS=$((COMPLETIONS+1))
		else
			FAILURES=$((FAILURES+1))
		fi
		/bin/echo "============================================"
	done
done

# Report the results
/bin/date
echo ""
echo ""
echo "Completions:$COMPLETIONS"
echo "Failures:   $FAILURES"

if [ $FAILURES -eq 0 ]
then
	/bin/rm -f test*input test*output test*error 
	exit 0
else
	exit 1
fi
