diff --git a/testsuite/expect/inc3.11.7 b/testsuite/expect/inc3.11.7 index 2323d2999b58f0e6cbc94b9d13b79e9b8fa33aa8..f29584505db4525e46ef6f833fb8aa5ed686e340 100644 --- a/testsuite/expect/inc3.11.7 +++ b/testsuite/expect/inc3.11.7 @@ -35,17 +35,33 @@ proc inc3_11_7 {} { global bin_rm file_in bin_sleep sbatch number scontrol global alpha_numeric_under scancel global cluster_cpus cores_per_node def_partition - - set num_nodes [available_nodes $def_partition] - set core_res_num [ expr ($cores_per_node / 2) ] + global res_name res_thread_cnt send_user "\n+++++ STARTING TEST 7 +++++\n" - # Make the reservation + + # Make a reservation, just to get node size infomation + set ret_code [create_res "StartTime=now Duration=1 NodeCnt=1 User=$user_name" 0] + if {$ret_code != 0} { + send_user "\n\033\[31mFAILURE: Unable to create a valid reservation\033\[m\n" + exit $ret_code + } + # Delete the reservation + set ret_code [delete_res $res_name] + if {$ret_code != 0} { + exit $ret_code + } + + # Now make a reservation using half the cores on that node + # There is no way to specify a the Nodes in a reservation with CoreCnt, + # so hope that we get a node with the same size + set core_res_num [ expr ($cores_per_node / 2) ] set ret_code [create_res "StartTime=now Duration=60 NodeCnt=1 CoreCnt=$core_res_num User=$user_name" 0] if {$ret_code != 0} { send_user "\n\033\[31mFAILURE: Unable to create a valid reservation\033\[m\n" exit $ret_code } + set core_res_num [ expr ($cores_per_node / 2) ] + set thread_res_num [ expr $core_res_num * $res_thread_cnt ] # Make the job script exec $bin_rm -f $file_in @@ -102,7 +118,7 @@ proc inc3_11_7 {} { sleep 1 # (Second test) Submit the batch job: a job using all cores allocated by the reservation - set sbatch_pid [spawn $sbatch -n$core_res_num --reservation=$res_name --output=/dev/null $file_in] + set sbatch_pid [spawn $sbatch -n$thread_res_num --reservation=$res_name --output=/dev/null $file_in] expect { -re "Submitted batch job ($number)" { set job_id $expect_out(1,string) @@ -152,7 +168,7 @@ proc inc3_11_7 {} { sleep 1 # (Third test) Submit the batch job: a job using all cores not allocated by the reservation - set sbatch_pid [spawn $sbatch -n$core_res_num --nodelist=$res_nodes --output=/dev/null $file_in] + set sbatch_pid [spawn $sbatch -n$thread_res_num --nodelist=$res_nodes --output=/dev/null $file_in] expect { -re "Submitted batch job ($number)" { set job_id $expect_out(1,string) @@ -199,9 +215,9 @@ proc inc3_11_7 {} { cancel_job $job_id - set core_res_num [ expr ($core_res_num + 1) ] # (Fourth test) Submit a batch job: a job using more cores than allocated by the reservation - set sbatch_pid [spawn $sbatch -n$core_res_num --reservation=$res_name --output=/dev/null $file_in] + set thread_res_num [ expr ($thread_res_num + 1) ] + set sbatch_pid [spawn $sbatch -n$thread_res_num --reservation=$res_name --output=/dev/null $file_in] expect { -re "Submitted batch job ($number)" { set job_id $expect_out(1,string) @@ -252,7 +268,7 @@ proc inc3_11_7 {} { # (Fifth test) Submit a batch job: a job specifying node in reservation and # using more cores than allocated by the reservation - set sbatch_pid [spawn $sbatch -n$core_res_num --nodelist=$res_nodes --nodes=1 --output=/dev/null $file_in] + set sbatch_pid [spawn $sbatch -n$thread_res_num --nodelist=$res_nodes --nodes=1 --output=/dev/null $file_in] expect { -re "Submitted batch job ($number)" { set job_id $expect_out(1,string) diff --git a/testsuite/expect/inc3.11.8 b/testsuite/expect/inc3.11.8 index cdcbfe34957bd7b42df2abfef2fd1e94060c7c6e..fcbc646a1f2c3203cd38ef9d5b92f01280f5f23b 100644 --- a/testsuite/expect/inc3.11.8 +++ b/testsuite/expect/inc3.11.8 @@ -35,9 +35,7 @@ proc inc3_11_8 {} { global bin_rm file_in bin_sleep sbatch number scontrol global alpha_numeric_under scancel global cluster_cpus cores_per_node def_partition - - set num_nodes [available_nodes $def_partition] - set core_res_num [ expr ($cores_per_node / 2) ] + global res_nodes res_thread_cnt send_user "\n+++++ STARTING TEST 8 +++++\n" @@ -45,9 +43,24 @@ proc inc3_11_8 {} { exec $bin_rm -f $file_in make_bash_script $file_in "$bin_sleep 100" + # Make a reservation, just to get node size infomation + set ret_code [create_res "StartTime=now Duration=1 NodeCnt=1 User=$user_name" 0] + if {$ret_code != 0} { + send_user "\n\033\[31mFAILURE: Unable to create a valid reservation\033\[m\n" + exit $ret_code + } + # Delete the reservation + set ret_code [delete_res $res_name] + if {$ret_code != 0} { + exit $ret_code + } + + set num_nodes [available_nodes $def_partition] + set core_res_num [ expr $cores_per_node / 2 ] + set thread_res_num [ expr $core_res_num * $res_thread_cnt ] - # (First test) Submit the batch job: a simple job using just 1 core inside the reservation - set sbatch_pid [spawn $sbatch --nodes=$num_nodes --time=30:00 --ntasks-per-node=$core_res_num --output=/dev/null $file_in] + # (First test) Submit the batch job: a simple job using half the threads on the nodes + set sbatch_pid [spawn $sbatch --nodelist=$res_nodes --time=30:00 --ntasks-per-node=$thread_res_num --output=/dev/null $file_in] expect { -re "Submitted batch job ($number)" { set job_id $expect_out(1,string) @@ -98,6 +111,7 @@ proc inc3_11_8 {} { # Delete the reservation set ret_code [delete_res $res_name] if {$ret_code != 0} { + cancel_job $job_id exit $ret_code } @@ -131,7 +145,7 @@ proc inc3_11_8 {} { if {$ret_code != 0} { send_user "\n\033\[32mSUCCESS: Reservation can not be created as expected\033\[m\n" } else { - send_user "\n\033\[31mFAILURE: Reservation can be created when it shouldnot \033\[m\n" + send_user "\n\033\[31mFAILURE: Reservation can be created when it should not\033\[m\n" set exit_code 1 # Delete the reservation diff --git a/testsuite/expect/test3.11 b/testsuite/expect/test3.11 index 0f38c9ea25837e593279c2355ef07cacb98a170a..9805ab7b5748c91bb0b2ca7e15e1b8dd08140a0b 100755 --- a/testsuite/expect/test3.11 +++ b/testsuite/expect/test3.11 @@ -43,15 +43,17 @@ source ./inc3.11.8 -set test_id "3.11" -set file_in "test$test_id.input" -set exit_code 0 -set res_name "" -set res_name_save "" -set user_name "" -set def_partition "" -set def_node "" -set ii 0 +set test_id "3.11" +set file_in "test$test_id.input" +set exit_code 0 +set res_name "" +set res_name_save "" +set res_nodes "" +set res_thread_cnt 0 +set user_name "" +set def_partition "" +set def_node "" +set ii 0 print_header $test_id @@ -63,11 +65,12 @@ print_header $test_id proc create_res { res_params failure_expected } { #exp_internal 1 global scontrol - global alpha_numeric_under + global alpha_numeric_under number global res_name global res_nodes global res_nodecnt global res_corecnt + global res_thread_cnt set ret_code 0 set res_name "" @@ -161,6 +164,21 @@ proc create_res { res_params failure_expected } { wait } } + + spawn $scontrol show node $res_nodes + expect { + -re "ThreadsPerCore=($number)" { + set res_thread_cnt $expect_out(1,string) + exp_continue + } + timeout { + send_user "\nFAILURE: scontrol not responding\n" + set ret_code 1 + } + eof { + wait + } + } #exp_internal 0 return $ret_code