Skip to content
Snippets Groups Projects
Commit 130d5384 authored by Morris Jette's avatar Morris Jette
Browse files

Fix portion of core reservation test

Test previously failed with heterogeous nodes (i.e. different
core counts on different nodes).
bug 2597
parent 65e9e100
No related branches found
No related tags found
No related merge requests found
......@@ -31,11 +31,10 @@
############################################################################
proc inc3_11_8 {} {
global user_name exit_code res_name res_nodes res_nodecnt res_corecnt
global user_name exit_code res_name
global bin_rm file_in bin_sleep sbatch number scontrol
global alpha_numeric_under scancel
global cluster_cpus cores_per_node def_partition
global res_nodes res_thread_cnt
global cluster_cpus def_partition
send_user "\n+++++ STARTING TEST 8 (Within: inc3.11.8) +++++\n"
......@@ -49,19 +48,73 @@ proc inc3_11_8 {} {
send_user "\n\033\[31mFAILURE: Unable to create a valid reservation (Within: inc3.11.8)\033\[m\n"
exit $ret_code
}
set host_name ""
spawn $scontrol show res $res_name
expect {
-re "Nodes=($alpha_numeric_under)" {
set host_name $expect_out(1,string)
exp_continue
}
timeout {
send_user "\n\033\[31mFAILURE: scontrol not responding (Within: inc3.11.8)\033\[m\n"
set exit_code 1
}
eof {
wait
}
}
# Delete the reservation
set ret_code [delete_res $res_name]
if {$ret_code != 0} {
exit $ret_code
}
if {[string compare $host_name ""] == 0} {
send_user "\n\033\[31mFAILURE: Failed to get host name (Within: inc3.11.8)\033\[m\n"
exit 1
}
set num_nodes [available_nodes $def_partition ""]
set cpu_tot 1
set boards 1
set sockets 1
set cores_per_socket 1
set threads_per_core 1
spawn $scontrol show node $host_name
expect {
-re " CoresPerSocket=($number)" {
set cores_per_socket $expect_out(1,string)
exp_continue
}
-re " CPUTot=($number)" {
set cpu_tot $expect_out(1,string)
exp_continue
}
-re " Sockets=($number)" {
set sockets $expect_out(1,string)
exp_continue
}
-re " Boards=($number)" {
set boards $expect_out(1,string)
exp_continue
}
-re " ThreadsPerCore=($number)" {
set threads_per_core $expect_out(1,string)
exp_continue
}
timeout {
send_user "\n\033\[31mFAILURE: scontrol not responding (Within: inc3.11.8)\033\[m\n"
set exit_code 1
}
eof {
wait
}
}
set cores_per_node [ expr $boards * $sockets * $cores_per_socket ]
set core_res_num [ expr $cores_per_node / 2 ]
set thread_res_num [ expr $core_res_num * $res_thread_cnt ]
set cpu_res_num [ expr $cpu_tot / 2 ]
# (First test) Submit the batch job: a simple job using half the threads on the nodes
# (First test) Submit the batch job: a simple job using half the CPUs on the selected node
set job_id 0
set sbatch_pid [spawn $sbatch --nodes=1-$num_nodes --time=10:00 --ntasks-per-node=$thread_res_num --output=/dev/null $file_in]
set sbatch_pid [spawn $sbatch -w $host_name --time=10:00 --ntasks-per-node=$cpu_res_num --output=/dev/null $file_in]
expect {
-re "Submitted batch job ($number)" {
set job_id $expect_out(1,string)
......@@ -86,28 +139,15 @@ proc inc3_11_8 {} {
cancel_job $job_id
exit 1
}
send_user "\nJOB is running as expected\n"
send_user "\nJob is running as expected\n"
# Make the reservation using free cores in a node
set ret_code [create_res "StartTime=now Duration=60 NodeCnt=1 CoreCnt=$core_res_num User=$user_name" 0]
set ret_code [create_res "StartTime=now Duration=60 Nodes=$host_name CoreCnt=$core_res_num User=$user_name" 0]
if {$ret_code != 0} {
send_user "\n\033\[31mFAILURE: Unable to create a valid reservation (Within: inc3.11.8)\033\[m\n"
cancel_job $job_id
exit $ret_code
}
if {$res_nodecnt != 1} {
send_user "\n\033\[31mFAILURE: reservation created with $res_nodecnt nodes when just 1 was requested (Within: inc3.11.8)\033\[m\n"
cancel_job $job_id
exit 1
}
if {$res_corecnt != $core_res_num} {
send_user "\n\033\[31mFAILURE: reservation created with $res_corecnt cores when just $core_res_num was requested (Within: inc3.11.8)\033\[m\n"
cancel_job $job_id
exit 1
}
send_user "\n\033\[32mSUCCESS: reservation was created as expected (Within: inc3.11.8)\033\[m\n"
# Delete the reservation
......@@ -119,7 +159,7 @@ proc inc3_11_8 {} {
set core_res_num [expr $core_res_num + 1]
# Make the reservation using more cores then free in a node
set ret_code [create_res "StartTime=now Duration=60 NodeCnt=1 CoreCnt=$core_res_num User=$user_name" 1]
set ret_code [create_res "StartTime=now Duration=60 Nodes=$host_name CoreCnt=$core_res_num User=$user_name" 1]
if {$ret_code != 0} {
send_user "\n\033\[32mSUCCESS: Reservation can not be created as expected (Within: inc3.11.8)\033\[m\n"
} else {
......@@ -132,7 +172,7 @@ proc inc3_11_8 {} {
# Make the reservation using more cores than free in a node (now)
# but those cores being free at reservation start time
set ret_code [create_res "StartTime=now+3600 Duration=60 NodeCnt=1 CoreCnt=$core_res_num User=$user_name" 0]
set ret_code [create_res "StartTime=now+3600 Duration=60 Nodes=$host_name CoreCnt=$core_res_num User=$user_name" 0]
if {$ret_code != 0} {
send_user "\n\033\[31mFAILURE: Reservation can not be created when it should (Within: inc3.11.8)\033\[m\n"
set exit_code 1
......@@ -143,7 +183,7 @@ proc inc3_11_8 {} {
}
# Make the reservation using more cores than free at reservation start time
set ret_code [create_res "StartTime=now+300 Duration=60 NodeCnt=1 CoreCnt=$core_res_num User=$user_name" 1]
set ret_code [create_res "StartTime=now+300 Duration=60 Nodes=$host_name CoreCnt=$core_res_num User=$user_name" 1]
if {$ret_code != 0} {
send_user "\n\033\[32mSUCCESS: Reservation can not be created as expected (Within 3.11.8)\033\[m\n"
} else {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment