From 8bd4a5d13cf135b8c6e0397cbb3dd83abb35a3d1 Mon Sep 17 00:00:00 2001 From: Alejandro Sanchez <alex@schedmd.com> Date: Fri, 19 Feb 2016 14:21:05 -0800 Subject: [PATCH] initial implementation for bkill tests --- testsuite/expect/README | 1 + testsuite/expect/globals | 1 + testsuite/expect/test36.3 | 158 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 160 insertions(+) create mode 100644 testsuite/expect/test36.3 diff --git a/testsuite/expect/README b/testsuite/expect/README index f8005eb9444..d354be0757e 100644 --- a/testsuite/expect/README +++ b/testsuite/expect/README @@ -788,3 +788,4 @@ test36.# Testing of openlava/LSF wrappers and Perl APIs. ========================================================== test36.1 lsid wrapper test test36.2 bjobs wrapper test +test36.3 bkill wrapper test diff --git a/testsuite/expect/globals b/testsuite/expect/globals index 8cf1ca455c9..33f62f45f65 100755 --- a/testsuite/expect/globals +++ b/testsuite/expect/globals @@ -114,6 +114,7 @@ cset qrerun "${slurm_dir}/bin/qrerun" cset lsid "${slurm_dir}/bin/lsid" cset bjobs "${slurm_dir}/bin/bjobs" +cset bkill "${slurm_dir}/bin/bkill" # If length of string partition is zero, use output of function # default_partition, otherwise use the partition explicitly diff --git a/testsuite/expect/test36.3 b/testsuite/expect/test36.3 new file mode 100644 index 00000000000..76bd24e728c --- /dev/null +++ b/testsuite/expect/test36.3 @@ -0,0 +1,158 @@ +#!/usr/bin/env expect +############################################################################ +# Purpose: Test of SLURM functionality +# bkill wrapper test +# +# 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) 2011-2016 SchedMD LLC +# Written by Alejandro Sanchez <alex@schedmd.com> +# +# This file is part of SLURM, a resource management program. +# For details, see <http://slurm.schedmd.com/>. +# Please also read the included file: DISCLAIMER. +# +# 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. +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +############################################################################ +source ./globals + +set test_id "36.3" +set file_in "test$test_id.input" +set job_id 0 +set exit_code 0 + +print_header $test_id + +if {[file executable $sbatch] == 0} { + send_user "\nWARNING: $sbatch does not exist\n" + exit 0 +} + +if {[file executable $bkill] == 0} { + send_user "\nWARNING: $bkill does not exist\n" + exit 0 +} + +if {[file executable $scontrol] == 0} { + send_user "\nWARNING: $scontrol does not exist\n" + exit 0 +} + +# +# Submit a slurm job +# +exec $bin_rm -f $file_in +make_bash_script $file_in " + $bin_sleep 20 +" + +set job_submitted 0 +spawn $sbatch -N1 $file_in +expect { + -re "Submitted batch job ($number)" { + set job_id $expect_out(1,string) + set job_submitted 1 + exp_continue + } + timeout { + send_user "\nFAILURE: sbatch not responding\n" + set exit_code 1 + exp_continue + } + eof { + wait + } +} +if { $job_id == 0 } { + send_user "\nFAILURE: failed to submit job\n" + exit 1 +} + +if {$job_submitted == 1} { + # + # Test bkill $job_id + # + set job_sent_kill 0 + spawn $bkill $job_id + expect { + -re "Job <$job_id> is being terminated" { + set job_sent_kill 1 + exp_continue + } + timeout { + send_user "\nFAILURE: bkill not responding\n" + exit 1 + } + eof { + wait + } + } +} else { + send_user "\nFAILURE: unable to submit a test job through sbatch\n" + exit 1 +} + +if {$job_sent_kill == 1} { + # + # Test job state is now CANCELLED + # + set state_match 0 + set cycle_count 8 + for {set inx 0} {$inx < $cycle_count} {incr inx} { + spawn $scontrol show job $job_id + expect { + -re "JobState=CANCELLED" { + incr state_match + set exit_code 0 + break + } + -re "JobState=" { + sleep 2 + set exit_code 1 + exp_continue + } + timeout { + send_user "\nFAILURE scontrol not responding\n" + set exit_code 1 + } + eof { + wait + } + } + } + if {$exit_code == 1} { + if {$cycle_count == 8} { + send_user "\nFAILURE: job not switched to CANCELLED\n" + exit 1 + } + } +} else { + send_user "\nFAILURE: unable bkill $job_id\n" + cancel_job $job_id + exit 1 +} + +if {$state_match != 1} { + send_user "\nFAILURE job should be CANCELLED, but is not\n" + set exit_code 1 +} + +if {$exit_code == 0} { + send_user "\nSUCCESS\n" +} + +exit $exit_code -- GitLab