diff --git a/testsuite/expect/test3.4 b/testsuite/expect/test3.4 new file mode 100755 index 0000000000000000000000000000000000000000..2fe3a9d8984439f29667b1afa403aab442c820ec --- /dev/null +++ b/testsuite/expect/test3.4 @@ -0,0 +1,152 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# Validate scontrol update command for nodes. +# +# 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 "3.4" +set authorized 1 +set exit_code 0 +set file_in "test$test_id.input" +set job_id 0 +set new_prio 1 +set read_priority 0 + +print_header $test_id + +# +# Delete left-over input script +# Build input script file +# +exec $bin_rm -f $file_in +exec echo "#!$bin_bash" >$file_in +exec echo "$srun $bin_sleep 60" >>$file_in +exec $bin_chmod 700 $file_in + +# +# Submit a job so we have something to work with +# +spawn $srun --batch --output=/dev/null --error=/dev/null -t1 --hold $file_in +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 + } +} +exec $bin_rm -f $file_in +if {$job_id == 0} { + send_user "\nFAILURE: srun failed to initiate job\n" + exit 1 +} + +# +# Record that job's state +# +spawn $scontrol show job $job_id +expect { + + timeout { + send_user "\nFAILURE: scontrol not responding\n" + set exit_code 1 + } + eof { + wait + } +} + +# +# Change that job's priority +# +spawn $scontrol update JobId=$job_id Priority=$new_prio +expect { + -re "slurm_update error: ($alpha_numeric) ($alpha_numeric)" { + set access_err 0 + set err_msg1 $expect_out(1,string) + set err_msg2 $expect_out(2,string) + if {[string compare $err_msg1 "Access"] == 0} { + set access_err 1 + } + if {[string compare $err_msg2 "denied"] == 0} { + set access_err 1 + } + if {$access_err == 1} { + send_user "\nWARNING: User not authorized to modify jobs\n" + exit $exit_code + } else { + set authorized 0 + } + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + set exit_code 1 + } + eof { + wait + } +} + +# +# Validate that job's new priority +# +spawn $scontrol show job $job_id +expect { + -re "Priority=($number)" { + set read_priority $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + set exit_code 1 + } + eof { + wait + } +} +if {$new_prio != $read_priority} { + send_user "\nFAILURE: scontrol priority change error\n" + set exit_code 1 +} + +cancel_job $job_id +if {$exit_code == 0} { + send_user "\nSUCCESS\n" +} +exit $exit_code +