diff --git a/testsuite/expect/test4.13 b/testsuite/expect/test4.13 index 07ff5966fbb901ab54551b04118ac285b48fa6ff..79420dfb286e1522ab7f612d1824f7553f47dddc 100755 --- a/testsuite/expect/test4.13 +++ b/testsuite/expect/test4.13 @@ -42,7 +42,7 @@ array set node_info { CPULoad cpusload CoresPerSocket cores TmpDisk disk - Features features + AvailableFeatures features FreeMem freemem Gres gres NodeAddr nodeaddr @@ -67,161 +67,52 @@ array set part_info { RootOnly root } +if {![is_super_user]} { + skip "This test can't be run without being a super user of the cluster" +} proc cleanup { } { global scontrol test_part - spawn $scontrol delete partitionname=$test_part - expect { - timeout { - log_error "scontrol is not responding" - } - eof { - wait - } - } -} - -if {![is_super_user]} { - skip "This test can't be run without being a super user of the cluster" + run_command "$scontrol delete partitionname=$test_part" } log_info "=== Testing Node Information ===" -set first_option 1 +set nodes_dict [get_nodes $test_node] foreach option [array names node_info] { - - if {$first_option == 1} { - set first_option 0 - } else { - log_user 0 - } - spawn $scontrol show node $test_node - expect { - -re "\\m$option=($re_word_str)\\M" { - set node_sinfo_vals($node_info($option)) $expect_out(1,string) - exp_continue - } - timeout { - fail "scontrol is not responding" - } - eof { - wait - } - } - log_user 1 + set node_sinfo_vals($node_info($option)) [dict get $nodes_dict $test_node $option] } -set first_option 1 foreach option [array names node_sinfo_vals] { - # Gres option (and potentially others) may include "(" and ")" as # characters, they need to be escaped to be used as part of a regexp - set regexp [string map {\( \\( \) \\)} $node_sinfo_vals($option)] + set val_re [string map {\( \\( \) \\)} $node_sinfo_vals($option)] - set match 0 - spawn $sinfo -n$test_node -O$option:256 -h - expect { - -nocase -re "$regexp" { - set match 1 - exp_continue - } - timeout { - fail "sinfo is not responding" - } - eof { - wait - } - } - - if {$match != 1} { - log_error "Node information $option output does not match sinfo output. Looking for value: $option = $node_sinfo_vals($option)" - set exit_code 1 + set output [string trim [run_command_output -fail "$sinfo -n$test_node -O$option:256 -h"]] + if {$option eq "cpusload" || $option eq "freemem"} { + # CPULoad and FreeMem can change from one system call to another + subtest [regexp {\d+(?:\.\d+)?} $output] "Verify node $option field" "Expected a number but observed $output" + } else { + subtest [regexp -nocase $val_re $output] "Verify node $option field" "Expected $val_re but observed $output" } } # # Add test partition # -spawn $scontrol create partitionname=$test_part nodes=$test_node -expect { - timeout { - fail "scontrol is not responding" - } - eof { - wait - } -} - -set match 0 -spawn $scontrol show partitionname=$test_part -expect { - -re "PartitionName=$test_part" { - set match 1 - exp_continue - } - timeout { - fail "scontrol is not responding" - } - eof { - wait - } -} -if {$match != 1} { +run_command -fail "$scontrol create partitionname=$test_part nodes=$test_node" +set output [run_command_output -fail "$scontrol show partitionname=$test_part"] +if {![regexp "PartitionName=$test_part" $output]} { fail "Test partition was not created" } log_info "=== Testing Partition Information ===" -set first_option 1 +set parts_dict [get_partitions $test_part] foreach option [array names part_info] { - - set part_sinfo_vals($part_info($option)) "UNKNOWN" - set match 0 - if {$first_option == 1} { - set first_option 0 - } else { - log_user 0 - } - spawn $scontrol show partition $test_part - expect { - -re "\\m$option=($re_word_str)\\M" { - set part_sinfo_vals($part_info($option)) \ - $expect_out(1,string) - exp_continue - } - timeout { - fail "scontrol is not responding" - } - eof { - wait - } - } - log_user 1 + set part_sinfo_vals($part_info($option)) [dict get $parts_dict $test_part $option] } -set first_option 1 foreach option [array names part_sinfo_vals] { - - set match 0 - spawn $sinfo -p$test_part -O$option -h - expect { - -nocase -re "$part_sinfo_vals($option)" { - set match 1 - exp_continue - } - timeout { - fail "sinfo is not responding" - } - eof { - wait - } - } - - if {$match != 1} { - log_error "Partition information $option output does not match sinfo output. Looking for value: $option = $part_sinfo_vals($option)" - set exit_code 1 - } -} - -if {$exit_code != 0} { - fail "Test failed due to previous errors (\$exit_code = $exit_code)" + set output [string trim [run_command_output -fail "$sinfo -p$test_part -O$option -h"]] + subtest [regexp -nocase $part_sinfo_vals($option) $output] "Verify partition $option field" "Expected $part_sinfo_vals($option) but observed $output" }