diff --git a/testsuite/expect/test7.1 b/testsuite/expect/test7.1 new file mode 100755 index 0000000000000000000000000000000000000000..d58f6a481a27380eba83a6451eb408f07fd1685b --- /dev/null +++ b/testsuite/expect/test7.1 @@ -0,0 +1,174 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# Test priorities assigned to jobs. Uses srun --hold and --batch options. +# +# 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. +############################################################################ +# 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 "7.1" +set exit_code 0 +set job_id1 0 +set job_id2 0 +set job_id3 0 +set prio1 -1 +set prio2 -1 +set prio3 -1 + +print_header $test_id + +# +# Spawn three srun batch job, one held +# +spawn $srun --batch -t1 --output=/dev/null --error=/dev/null $bin_pwd +expect { + -re "jobid ($number) submitted" { + set job_id1 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: srun not responding\n" + kill_srun + exit 1 + } + eof { + wait + } +} +spawn $srun --batch -t1 --output=/dev/null --error=/dev/null $bin_pwd +expect { + -re "jobid ($number) submitted" { + set job_id2 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: srun not responding\n" + kill_srun + exit 1 + } + eof { + wait + } +} +spawn $srun --batch -t1 --output=/dev/null --error=/dev/null --hold $bin_pwd +expect { + -re "jobid ($number) submitted" { + set job_id3 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: srun not responding\n" + kill_srun + exit 1 + } + eof { + wait + } +} + + +# +# Get priority of each job +# +if {$job_id1 != 0} { + spawn $scontrol show job $job_id1 + expect { + -re "Priority=($number)" { + set prio1 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + cancel_job $job_id1 + set exit_code 1 + } + eof { + wait + } + } + cancel_job $job_id1 +} else { + set exit_code 1 +} +if {$job_id2 != 0} { + spawn $scontrol show job $job_id2 + expect { + -re "Priority=($number)" { + set prio2 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + cancel_job $job_id2 + set exit_code 1 + } + eof { + wait + } + } + cancel_job $job_id2 +} else { + set exit_code 1 +} +if {$job_id3 != 0} { + spawn $scontrol show job $job_id3 + expect { + -re "Priority=($number)" { + set prio3 $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + cancel_job $job_id3 + set exit_code 1 + } + eof { + wait + } + } + cancel_job $job_id3 +} else { + set exit_code 1 +} + +# +# Confirm reasonable values for the job priorities +# +if {$prio1 <= $prio2} { + send_user "\FAILURE: Job priorities are not decreasing: $prio1 <= $prio2 \n" + set exit_code 1 +} +if {$prio3 != 0} { + send_user "\FAILURE: Held job has non-zero priority: $prio3\n" + set exit_code 1 +} + +if {$exit_code == 0} { + send_user "\nSUCCESS\n" +} +exit $exit_code