| #!/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)" |
| } |