diff --git a/testsuite/expect/test1.34 b/testsuite/expect/test1.34 new file mode 100755 index 0000000000000000000000000000000000000000..ce3d4adc1eeb548776b4299ec7c81b68e91801a5 --- /dev/null +++ b/testsuite/expect/test1.34 @@ -0,0 +1,118 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# Verify that arguments get forwarded to job script (--batch option). +# +# Output: "TEST: #.#" followed by "SUCCESS" if test was successful, OR +# "FAILURE: ..." otherwise with an explanation of the failure, OR +# anything else indicates a failure mode that must be investigated. +# +# Note: This script generates and then deletes files in the working directory +# named test1.34.input, test1.34.output, and test1.34.error +############################################################################ +# Copyright (C) 2002 The Regents of the University of California. +# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). +# Written by Moe Jette <jette1@llnl.gov> +# UCRL-CODE-2002-040. +# +# 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. +############################################################################ +source ./globals + +set test_id "1.34" +set file_in "test$test_id.input" +set file_out "test$test_id.output" +set file_err "test$test_id.error" + +set arg1 "arg_one" +set arg2 "arg_two" +set arg_match 0 +set exit_code 0 +set job_id 0 + +print_header $test_id + +# +# Delete left-over input script plus stdout/err files +# Build input script file +# +exec $bin_rm -f $file_in $file_out $file_err +exec echo "#!$bin_bash" >$file_in +exec echo "$bin_echo \$1,\$2" >>$file_in +exec $bin_chmod 700 $file_in + +# +# Spawn a srun batch job with arguments +# +set timeout $max_job_delay +spawn $srun --batch --output=$file_out --error=$file_err -t1 $file_in $arg1 $arg2 +expect { + -re "jobid ($number) submitted" { + set job_id $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: srun not responding\n" + kill_srun + set exit_code 1 + exp_continue + } + eof { + wait + } +} + +if {$job_id == 0} { + send_user "\nFAILURE: batch submit failure\n" + exit 1 +} + +# +# Wait for job to complete +# +if {[wait_for_job $job_id "DONE"] != 0} { + send_user "\nFAILURE: waiting for job to complete\n" + set exit_code 1 +} + +# +# Check arguments returned in stdout +# +if {[wait_for_file $file_out] == 0} { + spawn $bin_cat $file_out + expect { + -re "$arg1,$arg2" { + set arg_match 1 + exp_continue + } + eof { + wait + } + } +} + +if {$arg_match == 0} { + send_user "\nFAILURE: Failed to pass script arguments\n" + set exit_code 1 +} + +if {$exit_code == 0} { + send_user "\nSUCCESS\n" + exec $bin_rm -f $file_in $file_out $file_err +} +exit $exit_code