| #!/usr/bin/env expect |
| ############################################################################ |
| # Purpose: Test of Fair Tree multifactor |
| # |
| # Note: This script generates and then deletes files in the working directory |
| # named test24.4.prog |
| ############################################################################ |
| # Modified by Brigham Young University |
| # Ryan Cox <ryan_cox@byu.edu> and Levi Morrison <levi_morrison@byu.edu> |
| # |
| # Copyright (C) 2009 Lawrence Livermore National Security. |
| # Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER). |
| # Written by Danny Auble <da@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 |
| |
| set test_prog "$test_name.prog" |
| set matches 0 |
| set expected_matches 35 |
| |
| set damp [get_config_param "FairShareDampeningFactor"] |
| if {$damp != 1} { |
| skip "Unable to run with FairShareDampeningFactor=$damp (must be 1)" |
| } |
| |
| proc cleanup {} { |
| global test_prog |
| |
| file delete $test_prog |
| } |
| |
| # |
| # Delete left-over programs and rebuild them |
| # |
| file delete $test_prog |
| |
| if [compile_against_libslurm -full $test_prog "-ldl -lm -export-dynamic \ |
| ${build_dir}/src/slurmctld/locks.o \ |
| ${build_dir}/src/sshare/process.o -lgcov"] { |
| fail "Cannot compile test program" |
| } |
| |
| # Usage: test24.4.prog |
| spawn ./$test_prog |
| expect { |
| "No last decay" { |
| log_debug "This error is expected. No worries" |
| exp_continue |
| } |
| "error: Can't save decay state" { |
| log_debug "This error is expected. No worries" |
| exp_continue |
| } |
| |
| "root|||0.000000|240||1.000000||||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "root|u1|10|0.048077|0|0.000000|0.000000|1.000000|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "root|u2|10|0.048077|10|0.041667|0.041667|0.666667|1.153846||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aA||40|0.192308|45|0.187500|0.187500||1.025641||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aAA||30|0.750000|20|0.083333|0.444444||1.687500||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aAA|uAA1|1|1.000000|20|0.083333|1.000000|0.619048|1.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aAB||10|0.250000|25|0.104167|0.555556||0.450000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aAB|uAB1|1|0.500000|25|0.104167|1.000000|0.523810|0.500000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aAB|uAB2|1|0.500000|0|0.000000|0.000000|0.571429|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aB||60|0.288462|25|0.104167|0.104167||2.769231||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aBA||25|0.416667|25|0.104167|1.000000||0.416667||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aBA|uBA1|1|1.000000|25|0.104167|1.000000|0.714286|1.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aBB||35|0.583333|0|0.000000|0.000000||inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aBB|uBB1|1|1.000000|0|0.000000|0.000000|0.761905|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aC||0|0.000000|30|0.125000|0.125000||0.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aC|uC1|0|0.000000|30|0.125000|1.000000|0.047619|0.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aD||50|0.240385|110|0.458333|0.458333||0.524476||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aD|uD1|parent|0.240385|20|0.083333|0.181818|0.476190|||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aD|uD2|40|0.235294|20|0.083333|0.181818|0.238095|1.294118||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aD|uD3|50|0.294118|25|0.104167|0.227273|0.333333|1.294118||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aDA||parent|0.240385|45|0.187500|0.409091||||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aDA|uDA1|parent|0.240385|10|0.041667|0.090909|0.476190|||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aDA|uDA2|30|0.176471|10|0.041667|0.090909|0.380952|1.941176||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aDA|uDA3|50|0.294118|25|0.104167|0.227273|0.333333|1.294118||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aE||10|0.048077|0|0.000000|0.000000||inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aE|aE1|10|0.500000|0|0.000000|0.000000|1.000000|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aE|aE2|10|0.500000|0|0.000000|0.000000|1.000000|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aF||20|0.096154|0|0.000000|0.000000||inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aF|uF1|10|0.333333|0|0.000000|0.000000|1.000000|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aF|uF2|20|0.666667|0|0.000000|0.000000|1.000000|inf||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aG||8|0.038462|20|0.083333|0.083333||0.461538||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aG|uG1|10|0.500000|10|0.041667|0.500000|0.190476|1.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aGA||10|0.500000|10|0.041667|0.500000||1.000000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aGA|uGA1|20|0.500000|4|0.016667|0.400000|0.190476|1.250000||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| "aGA|uGA2|20|0.500000|6|0.025000|0.600000|0.095238|0.833333||cpu=0|" { |
| incr matches |
| exp_continue |
| } |
| |
| timeout { |
| fail "spawn IO not responding" |
| } |
| eof { |
| wait |
| } |
| } |
| |
| if {$matches != $expected_matches} { |
| log_debug " |
| * Account aA, aB, and aC are general purpose algorithm tests with various shares, usage values, children counts, and depths |
| * Account aD is used to test USE_PARENT. Any account that is USE_PARENT should have its children effectively reparented to the parent's parent. Any user with USE_PARENT should be ranked highest in its account, subject to ties with any other association with level_fs==1.0. uD2 and uD3 do NOT have the same level_fs; sshare doesn't show enough digits to visually distinguish. |
| * Account aE and its children should have fairshare==1.0 as a result of tie handling code. |
| * Account aF is similar to aE except its shares are different; they should still be 1.0. |
| * Accounts aE and aF and their descendants and u1 (root) should have fairshare==1.0 or ranking is broken. |
| * Account aG is set up so that uGA1 and uG1 will have equivalent fs factors due to the tie handling code but uGA2 will not." |
| fail "We didn't get the correct priorities from the plugin ($matches != $expected_matches)" |
| } |