From d68c95b9256673118f62c561a36fe6aba1faf4bc Mon Sep 17 00:00:00 2001 From: "Joseph P. Donaghy" <donaghy1@llnl.gov> Date: Tue, 3 Aug 2010 22:26:58 +0000 Subject: [PATCH] test21.29 test to clear values of QoS with sacctmgr modify. --- testsuite/expect/Makefile.am | 1 + testsuite/expect/test21.29 | 250 +++++++++++++++++++++++++++++++++++ 2 files changed, 251 insertions(+) create mode 100755 testsuite/expect/test21.29 diff --git a/testsuite/expect/Makefile.am b/testsuite/expect/Makefile.am index 6fb205707ec..0c8c75857ba 100644 --- a/testsuite/expect/Makefile.am +++ b/testsuite/expect/Makefile.am @@ -329,6 +329,7 @@ EXTRA_DIST = \ test21.26 \ test21.27 \ test21.28 \ + test21.29 \ test22.1 \ test22.2 \ test23.1 \ diff --git a/testsuite/expect/test21.29 b/testsuite/expect/test21.29 new file mode 100755 index 00000000000..7630653f863 --- /dev/null +++ b/testsuite/expect/test21.29 @@ -0,0 +1,250 @@ +#!/usr/bin/expect +############################################################################ +# Purpose: Test of SLURM functionality +# sacctmgr clear (modify) QoS values +# +# +# 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) 2010 Lawrence Livermore National Security. +# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). +# Written by Joseph Donaghy <donaghy1@llnl.gov> +# CODE-OCEC-09-009. All rights reserved. +# +# This file is part of SLURM, a resource management program. +# For details, see <https://computing.llnl.gov/linux/slurm/>. +# 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_accounting + +set test_id "test21.29" +set exit_code 0 +set nm name +set qs QOS +set qs1 tnormal +set rs -1 +set dsc description +set ds1 tqos1 +set gc GrpCpus +set gc1 80 +set gcm GrpCpuMins +set gcm1 240000 +set gj GrpJobs +set gj1 500 +set gn GrpNodes +set gn1 10 +set gs GrpSubmit +set gs1 800 +set gw GrpWall +set gw1 01:00:00 +set mc MaxCpus +set mc1 80 +set mcm MaxCpuMins +set mcm1 60000 +set mj MaxJobs +set mj1 50 +set mn MaxNodes +set mn1 2 +set ms MaxSubmit +set ms1 100 +set msj MaxSubmitJobs +set msj1 100 +set mw Maxwall +set mw1 01:00:00 +set pre Preempt +set pe1 normal +set pm PreemptMode +set pm1 cluster +set pri Priority +set pi1 2500 +set pi3 0 +set uf UsageFactor +set uf1 5.000000 +set uf3 1.000000 +set access_err 0 + +print_header $test_id + +set timeout 60 + +# +# Check accounting config and bail if not found. +# +if { [test_account_storage] == 0 } { + send_user "\nWARNING: This test can't be run without a usable AccountStorageType\n" + exit 0 +} + +if { [string compare [check_accounting_admin_level] "Administrator"] } { + send_user "\nWARNING: This test can't be run without being an Accounting administrator.\nUse sacctmgr mod user \$USER_NAME admin=admin.\n" + exit 0 +} + +# verify a clean QOS entity and permission to do this work +remove_qos "$qs1" +if {$access_err != 0} { + send_user "\nWARNING: not authorized to perform this test\n" + exit $exit_code +} + +#add qos +exec $sacctmgr -i add qos $nm=$qs1 $dsc=$ds1 $gc=$gc1 $gcm=$gcm1 $gj=$gj1 $gn=$gn1 $gs=$gs1 $gw=$gw1 $mc=$mc1 $mcm=$mcm1 $mj=$mj1 $mn=$mn1 $ms=$ms1 $msj=$msj1 $mw=$mw1 $pre=$pe1 $pm=$pm1 $pri=$pi1 $uf=$uf1 + +# Use sacctmgr list to verify the test qos fields +# +set matches 0 +set my_pid [spawn $sacctmgr -n -p list qos $qs1 format="$gc,$gcm,$gj,$gn,$gs,$gw,$mc,$mcm,$mj,$mn,$ms,$msj,$mw,$pre,$pm,$pri,$uf" ] +expect { + -re "No valid entity in list command" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "invalid keyword" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Unknown condition" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Unknown field" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "($gc1.$gcm1.$gj1.$gn1.$gs1.01.00.00.$mc1.$mcm1.$mj1.$mn1.$ms1.$msj1.01.00.00.$pe1.$pm1.$pi1.$uf1)" { + incr matches + exp_continue + } + timeout { + send_user "\nFAILURE: sacctmgr list associations not responding\n" + slow_kill $my_pid + incr exit_code 1 + } + eof { + wait + } +} + +if {$matches != 1} { + send_user "\n\n QoS matches is $matches.\n\n" + send_user "\nFAILURE: QOS field incorrect.\n" + send_user "\nFAILURE: sacctmgr list associations not responding\n" + incr exit_code 1 +} + +#modify qos +set matches 0 +set my_pid [eval spawn $sacctmgr -i mod qos where $nm=$qs1 set $gc=$rs $gcm=$rs $gj=$rs $gn=$rs $gs=$rs $gw=$rs $mc=$rs $mcm=$rs $mj=$rs $mn=$rs $ms=$rs $msj=$rs $mw=$rs $pri=$rs $uf=$rs] +expect { + -re "No valid entity in list command" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "invalid keyword" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Unknown condition" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Nothing modified" { + send_user "FAILURE: sacctmgr command unable to modify\n" + incr exit_code 1 + } + -re "Unknown field" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Modified qos" { + incr matches + exp_continue + } + timeout { + send_user "\nFAILURE: sacctmgr modify associations not responding\n" + slow_kill $my_pid + incr exit_code 1 + } + eof { + wait + } +} + +if {$matches != 1} { + send_user "\n\n QoS matches is $matches.\n\n" + send_user "\nFAILURE: QOS modify not working.\n" + incr exit_code 1 +} + +# +# Use sacctmgr to list the test qos modifications +# +# Use sacctmgr list to verify the test qos fields +# +set matches 0 +set my_pid [spawn $sacctmgr -n -p list qos $qs1 format="$gc,$gcm,$gj,$gn,$gs,$gw,$mc,$mcm,$mj,$mn,$ms,$msj,$mw,$pre,$pm,$pri,$uf" ] +expect { + -re "No valid entity in list command" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "invalid keyword" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Unknown condition" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "Unknown field" { + send_user "FAILURE: there was a problem with the sacctmgr command\n" + incr exit_code 1 + } + -re "(.............$pe1.$pm1.$pi3.$uf3)" { + incr matches + exp_continue + } + timeout { + send_user "\nFAILURE: sacctmgr list associations not responding\n" + slow_kill $my_pid + incr exit_code 1 + } + eof { + wait + } +} + +if {$matches != 1} { + send_user "\n\n QoS matches is $matches.\n\n" + send_user "\nFAILURE: QOS field incorrect.\n" + send_user "\nFAILURE: sacctmgr list associations not responding\n" + incr exit_code 1 +} + +# Next is clean up and the end + +incr exit_code [remove_qos "$qs1"] + +if {$exit_code == 0} { + send_user "\nSUCCESS\n" +} else { + send_user "\nFAILURE\n" +} +exit $exit_code + -- GitLab