blob: f017e7ea94efe8a87b1f828df53fef4c5286daba [file] [log] [blame]
#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
# sacctmgr load data file
############################################################################
# Copyright (C) 2008-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://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_accounting
set file_in "$test_dir/input"
set file_in2 "$test_dir/input2"
set file_in3 "$test_dir/input3"
set lis list
set as assoc
set fmt format
set cln clean
set tre tree
set was withassoc
set wco withcoordinator
set par Parent
set roo root
set clu Cluster
set tc1 "${test_name}-cluster-1"
set acc Account
set nams ames
set ta1 "${test_name}-account.1"
set ta2 "${test_name}-account.2"
set ta3 "${test_name}-account.3"
set ta4 "${test_name}-account.4"
set dsc Description
set ds1 scienceacct
set ds2 physicsacct
set ds3 theoryacct
set ds4 appliedacct
set org Organization
set or1 scienceorg
set or2 physicsorg
set or3 theoryorg
set or4 appliedorg
set usr user
set tu1 "${test_name}-user.1"
set tu2 "${test_name}-user.2"
set tu3 "${test_name}-user.3"
set tu4 "${test_name}-user.4"
set qs QOS
set qs1 normal
set qs2 test21.22.qos
set qs3 test21.22.qos2
set pat parent
set al AdminLevel
set aln None
set ala Administrator
set alo Operator
set coo Coordinator
set col Coordinator
set dac DefaultAccount
set pts Partition
set pde pdebug
set pba pbatch
set fs Fairshare
set gm GrpCPUMins
set gc GrpCPUs
set gj GrpJobs
set gs GrpSubmitJobs
set gn GrpNodes
set gw GrpWall
set mm MaxCPUMins
set mc MaxCPUs
set mj MaxJobs
set ms MaxSubmitJobs
set mn MaxNodes
set mw MaxWall
set class Classification
set class1 Capacity
set class2 Capability
set class3 Capapacity
set fs1 1000
set fs2 2375
set fs3 3240
set fs4 4321
set fs5 5678
set fs6 6789
set gm1 1100
set gc1 10
set gj1 120
set gs1 130
set gn1 140
set gw1 60
set mc1 150
set mm1 110000
set mj1 160
set ms1 170
set mn1 180
set mw1 70
set mt1 01:10:00
set gm2 2000
set gc2 20
set gj2 210
set gs2 220
set gn2 230
set gw2 120
set gt2 02:00:00
set mc2 240
set mm2 220000
set mj2 250
set ms2 260
set mn2 270
set mw2 140
set mt2 02:20:00
set gm3 3300
set gc3 30
set gj3 310
set gs3 320
set gn3 330
set gw3 180
set gt3 03:00:00
set mc3 340
set mm3 330000
set mj3 350
set ms3 360
set mn3 370
set mw3 210
set mt3 03:30:00
set gm4 4000
set gc4 40
set gj4 410
set gs4 420
set gn4 430
set gw4 240
set gt4 04:00:00
set mc4 440
set mm4 420000
set mj4 450
set ms4 460
set mn4 470
set mw4 280
set mt4 04:40:00
set gm5 5500
set gc5 50
set gj5 510
set gs5 520
set gn5 530
set gw5 300
set gt5 05:00:00
set mc5 540
set mm5 550000
set mj5 550
set ms5 560
set mn5 570
set mw5 350
set mt5 05:50:00
set gm6 6600
set gc6 60
set gj6 610
set gs6 620
set gn6 630
set gw6 1440
set gt6 1-00:00:00
set mc6 640
set mm6 660000
set mj6 650
set ms6 660
set mn6 670
set mw6 2880
set mt6 2-00:00:00
set access_err 0
set timeout 120
array set qos2_info1 {
Description qos_temp
Flags DenyOnLimit,EnforceUsageThreshold,NoDecay
GraceTime 70
GrpJobsAccrue 2
GrpJobs 120
GrpSubmitJobs 130
GrpTres cpu=1
GrpTresMins cpu=2
GrpTresRunMins cpu=3
GrpWall 60
LimitFactor 2.000000
MaxJobsPerAccount 160
MaxJobsPerUser 250
MaxJobsAccruePerAccount 160
MaxJobsAccruePerUser 250
MaxSubmitJobsPerAccount 180
MaxSubmitJobsPerUser 4
MaxTresMinsPerJob cpu=1
MaxTresPerAccount cpu=2
MaxTresPerJob cpu=3
MaxTresPerNode cpu=4
MaxTresPerUser cpu=5
MaxTRESRunMinsPerAccount cpu=1
MaxTRESRunMinsPerUser cpu=3
MaxWallDurationPerJob 30
MinPrioThresh 30
MinTRESPerJob cpu=10
Preempt normal
PreemptMode cancel
PreemptExemptTime 60
Priority 10010
UsageFactor 0.500000
UsageThreshold 2.500000
}
array set qos2_info2 {
Description qos_temp2
Flags DenyOnLimit
GraceTime 80
GrpJobsAccrue 3
GrpJobs 110
GrpSubmitJobs 110
GrpTres cpu=2
GrpTresMins cpu=1
GrpTresRunMins cpu=4
GrpWall 70
LimitFactor 2.400000
MaxJobsPerAccount 120
MaxJobsPerUser 210
MaxJobsAccruePerAccount 120
MaxJobsAccruePerUser 230
MaxSubmitJobsPerAccount 190
MaxSubmitJobsPerUser 2
MaxTresMinsPerJob cpu=4
MaxTresPerAccount cpu=1
MaxTresPerJob cpu=4
MaxTresPerNode cpu=5
MaxTresPerUser cpu=6
MaxTRESRunMinsPerAccount cpu=2
MaxTRESRunMinsPerUser cpu=4
MaxWallDurationPerJob 70
MinPrioThresh 10
MinTRESPerJob cpu=60
PreemptMode requeue
PreemptExemptTime 10
Priority 10110
UsageFactor 0.250000
UsageThreshold 2.300000
}
set qos2_info2(Preempt) $qs3
#
# Check accounting config and bail if not found.
#
if {[get_config_param "AccountingStorageType"] ne "accounting_storage/slurmdbd"} {
skip "This test can't be run without a usable AccountStorageType"
}
if {[get_admin_level] ne "Administrator"} {
skip "This test can't be run without being an Accounting administrator.\nUse: sacctmgr mod user \$USER set admin=admin"
}
#
# Use sacctmgr to remove the test cluster
#
proc _remove_cluster {name} {
global access_err sacctmgr timeout
set matches 0
set nothing 0
if { ![string length $name] } {
fail "We need a name to remove"
}
spawn $sacctmgr -i delete cluster $name
expect {
-re "privilege to perform this action" {
set access_err 1
exp_continue
}
-re "(There was a problem|Unknown condition|Bad format on|Bad MaxWall|Unknown option)" {
fail "There was a problem with the sacctmgr command"
}
-re "Problem getting" {
fail "There was a problem getting information from the database"
}
-re "Problem adding" {
fail "There was an unknown problem"
}
-re "No associations" {
fail "Your command didn't return anything"
}
-re "Deleting clusters" {
incr matches
exp_continue
}
-re " Nothing deleted" {
incr matches
set nothing 1
exp_continue
}
timeout {
fail "sacctmgr delete not responding"
}
eof {
wait
}
}
if {$access_err != 0} {
return 1
}
if {$matches != 1} {
fail "sacctmgr had a problem deleting cluster ($matches != 1)"
}
if { !$nothing } {
if {![check_acct_associations]} {
fail "Our associations don't line up"
}
}
}
#
# Use sacctmgr to remove an account
#
proc _remove_acct { cluster name } {
global sacctmgr timeout
set matches 0
set nothing 1
set check "Deleting account"
if { ![string length $name] } {
fail "We need a name to remove"
}
set command "$name"
if { [string length $cluster] } {
set command "$command cluster=$cluster"
set check "Deleting account associations"
}
eval spawn $sacctmgr -i delete account $command
expect {
-re "(There was a problem|Unknown condition|Bad format on|Bad MaxWall|Unknown option)" {
fail "There was a problem with the sacctmgr command"
}
-re "Problem getting" {
fail "There was a problem getting information from the database"
}
-re "Problem adding" {
fail "There was an unknown problem"
}
-re "No associations" {
fail "Your command didn't return anything"
}
-re "$check" {
incr matches
exp_continue
}
-re " Nothing deleted" {
incr matches
set nothing 1
exp_continue
}
timeout {
fail "sacctmgr add not responding"
}
eof {
wait
}
}
if {$matches != 1} {
fail "sacctmgr had a problem deleting account ($matches != 1)"
}
if { !$nothing } {
if {![check_acct_associations]} {
fail "Our associations don't line up"
}
}
}
#
# Use sacctmgr to remove an user
#
proc _remove_user { acct user } {
global sacctmgr timeout
set matches 0
set nothing 1
set check "Deleting user"
if { ![string length $user] } {
fail "We need a name to remove"
}
set command "$user"
if { [string length $acct] } {
set command "$command account=$acct"
set check "Deleting user associations"
}
eval spawn $sacctmgr -i delete user $command
expect {
-re "(There was a problem|Unknown condition|Bad format on|Bad MaxWall|Unknown option)" {
fail "There was a problem with the sacctmgr command"
}
-re "Problem getting" {
fail "There was a problem getting information from the database"
}
-re "Problem adding" {
fail "There was an unknown problem"
}
-re "No associations" {
fail "Your command didn't return anything"
}
-re "$check" {
incr matches
exp_continue
}
-re " Nothing deleted" {
incr matches
set nothing 1
exp_continue
}
timeout {
fail "sacctmgr delete not responding"
}
eof {
wait
}
}
if {$matches != 1} {
fail "sacctmgr had a problem deleting user ($matches != 1)"
}
if { !$nothing } {
if {![check_acct_associations]} {
fail "Our associations don't line up"
}
}
}
#
# Use sacctmgr to remove the test cluster
#
proc _remove_qos {name} {
global access_err sacctmgr timeout
set matches 0
set nothing 0
if { ![string length $name] } {
fail "We need a name to remove"
}
spawn $sacctmgr -i delete qos $name
expect {
-re "privilege to perform this action" {
set access_err 1
exp_continue
}
-re "(There was a problem|Unknown condition|Bad format on|Bad MaxWall|Unknown option)" {
fail "There was a problem with the sacctmgr command"
}
-re "Problem getting" {
fail "There was a problem getting information from the database"
}
-re "Problem adding" {
fail "There was an unknown problem"
}
-re "No associations" {
fail "Your command didn't return anything"
}
-re " Deleting QOS" {
incr matches
exp_continue
}
-re " Nothing deleted" {
incr matches
set nothing 1
exp_continue
}
timeout {
fail "sacctmgr delete not responding"
}
eof {
wait
}
}
if {$access_err != 0} {
return 1
}
if {$matches != 1} {
fail "sacctmgr had a problem deleting qos ($matches != 1)"
}
}
proc cleanup {} {
global tu1 tu2 tu3 tu4 ta1 ta2 ta3 ta4 tc1 file_in file_in2 file_in3 qs2 qs3
_remove_user "" "$tu1,$tu2,$tu3,$tu4"
_remove_acct "" "$ta1,$ta2,$ta3,$ta4"
_remove_cluster "$tc1"
_remove_qos "$qs2,$qs3"
#
# Delete left-over input script files
#
file delete $file_in file_in2 file_in3
}
# Make sure we have a clean system and permission to do this work
cleanup
if {$access_err != 0} {
skip "Not authorized to perform this test"
}
#
# Build input script file - to create original associations
#
set qs2_str "$qs - '$qs2'"
foreach option [array names qos2_info1] {
set value $qos2_info1($option)
append qs2_str ":$option=$value"
}
exec echo "$qs - '$qs1'" >>$file_in
exec echo "$qs - '$qs3'" >>$file_in
exec echo "$qs2_str" >>$file_in
exec echo "$clu - '$tc1':$class=$class1:$fs=$fs6:$gm=$gm6:$gc=$gc6:$gj=$gj6:$gn=$gn6:$gs=$gs6:$gw=$gw6:$mm=$mm6:$mc=$mc6:$mj=$mj6:$mn=$mn6:$ms=$ms6:$mw=$mw6:$qs=$qs1" >>$file_in
exec echo "$par - '$roo'" >>$file_in
exec echo "$acc - '$ta1':$dsc=$ds1:$org=$or1:$fs=$fs5:$gm=$gm5:$gc=$gc5:$gj=$gj5:$gn=$gn5:$gs=$gs5:$gw=$gw5:$mm=$mm5:$mc=$mc5:$mj=$mj5:$mn=$mn5:$ms=$ms5:$mw=$mw5:$qs=$qs1" >>$file_in
exec echo "$acc - '$ta2':$dsc=$ds2:$org=$or2:$fs=$fs4:$gm=$gm4:$gc=$gc4:$gj=$gj4:$gn=$gn4:$gs=$gs4:$gw=$gw4:$mm=$mm4:$mc=$mc4:$mj=$mj4:$mn=$mn4:$ms=$ms4:$mw=$mw4:$qs=$qs1" >>$file_in
exec echo "$par - '$ta1'" >>$file_in
exec echo "$acc - '$ta3':$dsc=$ds3:$org=$or3:$fs=$fs3:$gm=$gm3:$gc=$gc3:$gj=$gj3:$gn=$gn3:$gs=$gs3:$gw=$gw3:$mm=$mm3:$mc=$mc3:$mj=$mj3:$mn=$mn3:$ms=$ms3:$mw=$mw3:$qs=$qs1" >>$file_in
exec echo "$par - '$ta2'" >>$file_in
exec echo "$usr - '$tu1':$coo=$ta2:$dac=$ta2:$fs=$fs1:$mm=$mm2:$mc=$mc2:$mj=$mj2:$mn=$mn2:$ms=$ms2:$mw=$mw2:$qs=$qs1:$al=$alo" >>$file_in
exec echo "$par - '$ta3'" >>$file_in
exec echo "$usr - '$tu2':$coo=$ta3:$dac=$ta3:$fs=$fs2:$mm=$mm1:$mc=$mc1:$mj=$mj1:$mn=$mn1:$ms=$ms1:$mw=$mw1:$qs=$qs1:$al=$ala" >>$file_in
#
# Second input file - to modify and add associations to the original
#
set qs2_str "$qs - '$qs2'"
foreach option [array names qos2_info2] {
set value $qos2_info2($option)
append qs2_str ":$option=$value"
}
exec echo "$qs2_str" >>$file_in2
exec echo "$clu - '$tc1':$class=$class2" >>$file_in2
exec echo "$par - '$roo'" >>$file_in2
exec echo "$acc - '$ta1'" >>$file_in2
exec echo "$acc - '$ta3':$dsc=$ds1:$org=$or1:$fs=$fs5:$gm=$gm5:$gc=$gc5:$gj=$gj5:$gn=$gn5:$gs=$gs5:$gw=$gw5:$mm=$mm5:$mc=$mc5:$mj=$mj5:$mn=$mn5:$ms=$ms5:$mw=$mw5:$qs=$qs1" >>$file_in2
exec echo "$par - '$ta1'" >>$file_in2
exec echo "$acc - '$ta2'" >>$file_in2
exec echo "$par - '$ta2'" >>$file_in2
exec echo "$usr - '$tu3':$coo=$ta1,$ta2,$ta3:$dac=$ta2:$fs=$fs2:$mm=$mm2:$mc=$mc2:$mj=$mj2:$mn=$mn2:$ms=$ms2:$mw=$mw2:$qs=$qs1:$al=$ala" >>$file_in2
exec echo "$par - '$ta3'" >>$file_in2
exec echo "$usr - '$tu2':$dac=$ta3:$fs=$fs3:$mm=$mm3:$mc=$mc3:$mj=$mj3:$mn=$mn3:$ms=$ms3:$mw=$mw3:$qs=$qs1:$al=$alo" >>$file_in2
exec echo "$usr - '$tu3':$dac=$ta3:$fs=$fs3:$mm=$mm3:$mc=$mc3:$mj=$mj3:$mn=$mn3:$ms=$ms3:$mw=$mw3:$qs=$qs1" >>$file_in2
exec echo "$par - '$ta1'" >>$file_in2
exec echo "$usr - '$tu3':$dac=$ta1:$fs=$fs2:$mm=$mm1:$mc=$mc1:$mj=$mj1:$mn=$mn1:$ms=$ms1:$mw=$mw1:$qs=$qs1" >>$file_in2
#
# Third input file - to replace all previous
#
exec echo "$clu - '$tc1':$class=$class3:$fs=$fs6:$gm=$gm6:$gc=$gc6:$gj=$gj6:$gn=$gn6:$gs=$gs6:$gw=$gw6:$mm=$mm6:$mc=$mc6:$mj=$mj6:$mn=$mn6:$ms=$ms6:$mw=$mw6:$qs=$qs1" >>$file_in3
exec echo "$par - '$roo'" >>$file_in3
exec echo "$acc - '$ta1':$dsc=$ds1:$org=$or1:$fs=$fs5:$gm=$gm5:$gc=$gc5:$gj=$gj5:$gn=$gn5:$gs=$gs5:$gw=$gw5:$mm=$mm5:$mc=$mc5:$mj=$mj5:$mn=$mn5:$ms=$ms5:$mw=$mw5:$qs=$qs1" >>$file_in3
exec echo "$acc - '$ta3':$dsc=$ds3:$org=$or3:$fs=$fs5:$gm=$gm5:$gc=$gc5:$gj=$gj5:$gn=$gn5:$gs=$gs5:$gw=$gw5:$mm=$mm5:$mc=$mc5:$mj=$mj5:$mn=$mn5:$ms=$ms5:$mw=$mw5:$qs=$qs1" >>$file_in3
exec echo "$par - '$ta1'" >>$file_in3
exec echo "$acc - '$ta3':$dsc=$ds1:$org=$or1:$fs=$fs5:$gm=$gm5:$gc=$gc5:$gj=$gj5:$gn=$gn5:$gs=$gs5:$gw=$gw5:$mm=$mm5:$mc=$mc5:$mj=$mj5:$mn=$mn5:$ms=$ms5:$mw=$mw5:$qs=$qs1" >>$file_in3
exec echo "$acc - '$ta2':$dsc=$ds2:$org=$or2:$fs=$fs4:$gm=$gm4:$gc=$gc4:$gj=$gj4:$gn=$gn4:$gs=$gs4:$gw=$gw4:$mm=$mm4:$mc=$mc4:$mj=$mj4:$mn=$mn4:$ms=$ms4:$mw=$mw4:$qs=$qs1:$al=$alo" >>$file_in3
exec echo "$usr - '$tu3':$coo=$ta1,$ta2,$ta3:$dac=$ta1:$fs=$fs2:$mm=$mm1:$mc=$mc1:$mj=$mj1:$mn=$mn1:$ms=$ms1:$mw=$mw1:$qs=$qs1:$al=$ala" >>$file_in3
exec echo "$par - '$ta2'" >>$file_in3
exec echo "$usr - '$tu1':$coo=$ta2:$dac=$ta2:$fs=$fs1:$mm=$mm2:$mc=$mc2:$mj=$mj2:$mn=$mn2:$ms=$ms2:$mw=$mw2:$qs=$qs1:$al=$alo" >>$file_in3
exec echo "$usr - '$tu3':$dac=$ta2:$fs=$fs2:$mm=$mm2:$mc=$mc2:$mj=$mj2:$mn=$mn2:$ms=$ms2:$mw=$mw2:$qs=$qs1" >>$file_in3
exec echo "$par - '$ta3'" >>$file_in3
exec echo "$usr - '$tu2':$coo=$ta3:$dac=$ta3:$fs=$fs3:$mm=$mm3:$mc=$mc3:$mj=$mj3:$mn=$mn3:$ms=$ms3:$mw=$mw3:$qs=$qs1" >>$file_in3
exec echo "$usr - '$tu3':$dac=$ta3:$fs=$fs3:$mm=$mm3:$mc=$mc3:$mj=$mj3:$mn=$mn3:$ms=$ms3:$mw=$mw3:$qs=$qs1" >>$file_in3
set matches 0
spawn $sacctmgr -i load $file_in
expect {
-re "(Unable to read *.* * No such file or directory)" {
fail "There was a problem with the file"
}
-re "error" {
fail "There was a problem with the file"
}
-re "Problem with requests" {
fail "There was a problem with the request"
}
-re "For cluster $tc1" {
incr matches
exp_continue
}
"Classification: $class1" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 1"
}
eof {
wait
}
}
if {$matches != 2} {
fail "File load 1 incorrect ($matches != 2)"
}
#
# Use sacctmgr to list the test original association additions
#
set matches 0
spawn $sacctmgr -n -p $lis $as $clu=$tc1 $fmt=$clu,$acc,$usr,$pts,$fs,$gm,$gc,$gj,$gn,$gs,$gw,$mc,$mm,$mj,$mn,$ms,$mw,$qs
expect {
-re "There was a problem" {
fail "There was a problem with the sacctmgr command"
}
-re "($tc1.$roo...$fs6.$gm6.$gc6.$gj6.$gn6.$gs6.$gt6.$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$roo.$roo..1.......$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta1...$fs5.$gm5.$gc5.$gj5.$gn5.$gs5.$gt5.$mc5.$mm5.$mj5.$mn5.$ms5.$mt5.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta3...$fs3.$gm3.$gc3.$gj3.$gn3.$gs3.$gt3.$mc3.$mm3.$mj3.$mn3.$ms3.$mt3.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta3.$tu2..$fs2.......$mc1.$mm1.$mj1.$mn1.$ms1.$mt1.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta2...$fs4.$gm4.$gc4.$gj4.$gn4.$gs4.$gt4.$mc4.$mm4.$mj4.$mn4.$ms4.$mt4.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta2.$tu1..$fs1.......$mc2.$mm2.$mj2.$mn2.$ms2.$mt2.$qs1)" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 2"
}
eof {
wait
}
}
if {$matches != 7} {
fail "Associations addition 7 incorrect ($matches != 7)"
}
#
# Use sacctmgr to list the test original Admin Levels and Account Coordinators
#
set matches 0
spawn $sacctmgr -n -p $lis $usr $fmt=$usr,$col,$al $wco
expect {
-re "There was a problem" {
fail "There was a problem with the sacctmgr command"
}
-re "($tu1.$ta2.$alo)" {
incr matches
exp_continue
}
-re "($tu2.$ta3.$ala)" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 3"
}
eof {
wait
}
}
if {$matches != 2} {
fail "Administrator and coordinator 2 incorrect ($matches != 2)"
}
#
# Use sacctmgr to list the test original association additions
#
check_qos_limits $qs2 [array get qos2_info1]
set matches 0
spawn $sacctmgr -i load $file_in2
expect {
-re "(Unable to read *.* * No such file or directory)" {
fail "There was a problem with the file"
}
-re "error" {
fail "There was a problem with the file"
}
-re "Problem with requests" {
fail "There was a problem with the request"
}
-re "For cluster $tc1" {
incr matches
exp_continue
}
"$class1 -> $class2" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr load not responding 4"
}
eof {
wait
}
}
if {$matches != 2} {
fail "File load 2 incorrect ($matches != 2)"
}
#
# Use sacctmgr to list the test modifications to the original association
#
check_qos_limits $qs2 [array get qos2_info2]
set matches 0
spawn $sacctmgr -n -P $lis $as $clu=$tc1 $fmt=$clu,$acc,$usr,$fs,$gm,$gc,$gj,$gn,$gs,$gw,$mc,$mm,$mj,$mn,$ms,$mw,$qs
expect {
-re "There was a problem" {
fail "there was a problem with the sacctmgr command"
}
-re "($tc1.$roo..$fs6.$gm6.$gc6.$gj6.$gn6.$gs6.$gt6.$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$roo.$roo.1.......$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
log_debug "2"
exp_continue
}
-re "($tc1.$ta1..$fs5.$gm5.$gc5.$gj5.$gn5.$gs5.$gt5.$mc5.$mm5.$mj5.$mn5.$ms5.$mt5.$qs1)" {
incr matches
log_debug "3"
exp_continue
}
-re "($tc1.$ta1.$tu3.$fs2.......$mc1.$mm1.$mj1.$mn1.$ms1.$mt1.$qs1)" {
incr matches
log_debug "4"
exp_continue
}
-re "($tc1.$ta2..$fs4.$gm4.$gc4.$gj4.$gn4.$gs4.$gt4.$mc4.$mm4.$mj4.$mn4.$ms4.$mt4.$qs1)" {
incr matches
log_debug "5"
exp_continue
}
-re "($tc1.$ta2.$tu1.$fs1.......$mc2.$mm2.$mj2.$mn2.$ms2.$mt2.$qs1)" {
incr matches
log_debug "6"
exp_continue
}
-re "($tc1.$ta2.$tu3.$fs2.......$mc2.$mm2.$mj2.$mn2.$ms2.$mt2.$qs1)" {
incr matches
log_debug "7"
exp_continue
}
-re "($tc1.$ta3..$fs5.$gm5.$gc5.$gj5.$gn5.$gs5.$gt5.$mc5.$mm5.$mj5.$mn5.$ms5.$mt5.$qs1)" {
incr matches
log_debug "8"
exp_continue
}
-re "($tc1.$ta3.$tu2.$fs3.......$mc3.$mm3.$mj3.$mn3.$ms3.$mt3.$qs1)" {
incr matches
log_debug "9"
exp_continue
}
-re "($tc1.$ta3.$tu3.$fs3.......$mc3.$mm3.$mj3.$mn3.$ms3.$mt3.$qs1)" {
incr matches
log_debug "10"
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 5"
}
eof {
wait
}
}
if {$matches != 10} {
fail "Association modification 10 incorrect ($matches != 10)"
}
#
# Use sacctmgr to list the test modification Admin Levels and Account Coordinators
#
set matches 0
spawn $sacctmgr -n -p $lis $usr $fmt=$usr,$col,$al $wco
expect {
-re "There was a problem" {
fail "There was a problem with the sacctmgr command"
}
-re "($tu1.$ta2.$alo)" {
incr matches
exp_continue
}
-re "($tu2.$ta3.$alo)" {
incr matches
exp_continue
}
-re "($tu3.$ta1,$ta2,$ta3.$ala)" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 6"
}
eof {
wait
}
}
if {$matches != 3} {
fail "Administrator and coordinator 3 incorrect ($matches != 3)"
}
set matches 0
spawn $sacctmgr -i load $file_in3 clean
expect {
-re "(Unable to read *.* * No such file or directory)" {
fail "There was a problem with the file"
}
-re "error" {
fail "There was a problem with the file"
}
-re "Problem with requests" {
fail "There was a problem with the request"
}
-re "For cluster $tc1" {
incr matches
exp_continue
}
"Classification: $class3" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 7"
}
eof {
wait
}
}
if {$matches != 2} {
fail "File load 2 incorrect ($matches != 2)"
}
#
# Use sacctmgr to list the test modifications to the original association
#
set matches 0
spawn $sacctmgr -n -p $lis $as $clu=$tc1 $fmt=$clu,$acc,$usr,$pts,$fs,$gm,$gc,$gj,$gn,$gs,$gw,$mc,$mm,$mj,$mn,$ms,$mw,$qs
expect {
-re "There was a problem" {
fail "there was a problem with the sacctmgr command"
}
-re "($tc1.$roo...$fs6.$gm6.$gc6.$gj6.$gn6.$gs6.$gt6.$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$roo.$roo..1.......$mc6.$mm6.$mj6.$mn6.$ms6.$mt6.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta1...$fs5.$gm5.$gc5.$gj5.$gn5.$gs5.$gt5.$mc5.$mm5.$mj5.$mn5.$ms5.$mt5.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta1.$tu3..$fs2.......$mc1.$mm1.$mj1.$mn1.$ms1.$mt1.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta2...$fs4.$gm4.$gc4.$gj4.$gn4.$gs4.$gt4.$mc4.$mm4.$mj4.$mn4.$ms4.$mt4.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta2.$tu1..$fs1.......$mc2.$mm2.$mj2.$mn2.$ms2.$mt2.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta2.$tu3..$fs2.......$mc2.$mm2.$mj2.$mn2.$ms2.$mt2.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta3...$fs5.$gm5.$gc5.$gj5.$gn5.$gs5.$gt5.$mc5.$mm5.$mj5.$mn5.$ms5.$mt5.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta3.$tu2..$fs3.......$mc3.$mm3.$mj3.$mn3.$ms3.$mt3.$qs1)" {
incr matches
exp_continue
}
-re "($tc1.$ta3.$tu3..$fs3.......$mc3.$mm3.$mj3.$mn3.$ms3.$mt3.$qs1)" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 8"
}
eof {
wait
}
}
if {$matches != 10} {
fail "Clean association addition 10 incorrect ($matches != 10)"
}
#
# Use sacctmgr to list the test modification Admin Levels and Account Coordinators
#
set matches 0
spawn $sacctmgr -n -p $lis $usr $fmt=$usr,$col,$al $wco
expect {
-re "There was a problem" {
fail "There was a problem with the sacctmgr command"
}
-re "($tu1.$ta2.$alo)" {
incr matches
exp_continue
}
-re "($tu2.$ta3.$alo)" {
incr matches
exp_continue
}
-re "($tu3.$ta1,$ta2,$ta3.$ala)" {
incr matches
exp_continue
}
timeout {
fail "sacctmgr list associations not responding 9"
}
eof {
wait
}
}
if {$matches != 3} {
fail "Administrator and coordinator 3 incorrect ($matches != 3)"
}