#!/usr/bin/env expect
############################################################################
# Purpose:  Test lua JobSubmitPlugin
############################################################################
# Copyright (C) SchedMD LLC.
#
# 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
source ./globals_accounting

set test_lua_reject "${test_name}_scripts/reject.lua"
set test_lua_pass   "${test_name}_scripts/pass.lua"
set cwd             "[$bin_pwd]"
set job_name        $test_name
set is_skip         0

set ta1     "$test_name-account.1"
set tu1     [get_my_user_name]
set tq1     "$test_name-qos.1"
set tq2     "$test_name-qos.2"

# account options
array set acct_1 {}
set acct_1(Organization)  "Account_Org_A1"
set acct_1(Description)   "Test_Account_A1"
set acct_1(Qos) $tq1
set acct_1(Cluster) [get_config_param "ClusterName"]

# user options
array set user_req_1 {}
set user_req_1(Account) $ta1
set user_req_1(Qos) "$tq1,$tq2"

# qos options
array set qos_1 {}
set qos_1(Description)    "test_qos_1"
set qos_1(flags)          "denyonlimit"
set qos_1(maxtresperuser) "cpu=1"
array set qos_2 {}
set qos_2(Description)    "test_qos_2"

set access_err  0

set timeout $max_job_delay

# Create test assoc and accounts
proc create_accounts {} {
	global ta1 acct_1 tq1 tq2 tu1 user_req_1 qos_1 qos_2
	log_info "create account and QOS"

	# Create test assoc and accounts
	if [add_qos $tq1 [array get qos_1]] {
		fail "Unable to add qos ($tq1)"
	}
	if [add_qos $tq2 [array get qos_2]] {
		fail "Unable to add qos ($tq2)"
	}
	if [add_acct $ta1 [array get acct_1]] {
		fail "Unable to add account ($ta1)"
	}
	if [add_user $tu1 [array get user_req_1]] {
		fail "Unable to add user ($tu1)"
	}
}

# Cleanup test assoc and accounts
proc cleanup_accounts {} {
	global ta1 tq1 tq2

	#wait_for_account_done $ta1,$ta2

	log_info "remove QOS: $tq1, $tq2"
	remove_qos $tq1,$tq2

	log_info "remove account: $ta1"
	remove_acct "" $ta1
}

proc test_bin_pass { num bin args het_job count } {
	global job_name salloc ta1 tq2 srun number eol is_skip bin_true

	set got_init 0
	set got_sub1 0
	set got_sub2 0
	set got_sub3 0
	set rc -12345
	set is_builtin [string equal [get_config_param "SchedulerType"] "sched/builtin"]

	log_info "**** TEST PASS $num ****"
	eval spawn $bin [join $args " "]
	set pid [exp_pid]
	expect {
		-re "^(srun|salloc|sbatch): error: .*: Requested operation not supported on this system$eol" {
			if { $het_job && $is_builtin } {
				log_warn "Hetjobs are not supported with sched/builtin this failure is expected"
				set is_skip 1
				return 0
			}
		}
		-re "^(srun|salloc|sbatch): initialized$eol" {
			incr got_init
			exp_continue
		}
		# salloc: 0: submit1
		-re "^(srun|salloc|sbatch): ($number: |)submit1$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub1
			}
			exp_continue
		}
		-re "^(srun|salloc|sbatch): ($number: |)submit2$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub2
			}
			exp_continue
		}
		-re "^(srun|salloc|sbatch): ($number: |)submit3$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub3
			}
			exp_continue
		}
		timeout {
			fail "[file tail $bin] not responding"
		}
		eof {
			lassign [wait] pid spawnid os_error_flag rc
		}
	}

	log_info "$bin rc:$rc init:$got_init sub1:$got_sub1 sub2:$got_sub2 sub3:$got_sub3 expected:$count"

	if {($rc != 0) ||
	    ($got_sub1 != $count) ||
	    ($got_sub2 != $count) ||
	    ($got_sub3 != $count)} {
			fail "Invalid response from [file tail $bin]"
	}
}

proc test_bin_fail { num bin args het_job count } {
	global job_name ta1 tq1 tq2 srun number eol is_skip bin_true

	set got_init 0
	set got_sub1 0
	set got_sub2 0
	set got_sub3 0
	set rc -12345
	set is_builtin [string equal [get_config_param "SchedulerType"] "sched/builtin"]

	log_info "**** TEST FAIL $num ****"
	eval spawn $bin [join $args " "]
	set pid [exp_pid]
	expect {
		-re "^(srun|salloc|sbatch): error: .*: Requested operation not supported on this system$eol" {
			if { $het_job && $is_builtin } {
				log_warn "Hetjobs are not supported with sched/builtin this failure is expected"
				set is_skip 1
				return 0
			}
		}
		-re "^(srun|salloc|sbatch): error: initialized$eol" {
			incr got_init
			exp_continue
		}
		#srun: error: submit1\r\n
		#salloc: error: 0: submit1\r\n
		-re "^(srun|salloc|sbatch): error: ($number: |)submit1$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub1
			}
			exp_continue
		}
		-re "^(srun|salloc|sbatch): error: ($number: |)submit2$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub2
			}
			exp_continue
		}
		-re "^(srun|salloc|sbatch): error: ($number: |)submit3$eol" {
			if {!$het_job || $expect_out(2,string) != ""} {
				incr got_sub3
			}
			exp_continue
		}
		timeout {
			fail "[file tail $bin] not responding"
		}
		eof {
			lassign [wait] pid spawnid os_error_flag rc
		}
	}

	log_info "$bin rc:$rc init:$got_init sub1:$got_sub1 sub2:$got_sub2 sub3:$got_sub3 expected:$count"

	if {($rc == 0) ||
	    ($got_sub1 != $count) ||
	    ($got_sub2 != $count) ||
	    ($got_sub3 != $count)} {
		fail "Invalid response from [file tail $bin]"
	}
}

if {![have_lua]} {
	skip "LUA must be installed and enabled to test lua job_submit plugin."
}

if {[get_config_param "AccountingStorageType"] ne "accounting_storage/slurmdbd"} {
	skip "This test can't be run without a usable AccountStorageType"
}
if {![param_contains [get_config_param "AccountingStorageEnforce"] "limits"]} {
	skip "This test can't be run without enforcing limits"
}

# Verify cluster is able to run largest test job
set nodes [get_nodes_by_request "--ntasks-per-node=5 -N3"]
if { [llength $nodes] != 3 } {
	skip "System too small for test, it needs '--ntasks-per-node=5 -N3'"
}

proc cleanup {} {
	global config_dir

	cleanup_accounts
	restore_conf $config_dir/job_submit.lua
	restore_conf $config_dir/slurm.conf
	reconfigure
}

cleanup_accounts
create_accounts

set config_dir [get_conf_path]
save_conf $config_dir/job_submit.lua
save_conf $config_dir/slurm.conf

# Activate lua plugin
run_command "$bin_rm $config_dir/job_submit.lua"
run_command -fail "$bin_cp $test_lua_reject $config_dir/job_submit.lua"
exec $bin_sed -i {s/^\(JobSubmitPlugins\)/#\1/gI} $config_dir/slurm.conf
exec $bin_echo "\n### test7.20 additions####\nJobSubmitPlugins=lua" >> $config_dir/slurm.conf
reconfigure -fail

# Sleep for 1 second to make sure that modify time is different from last copy.
sleep 1
file mtime $config_dir/job_submit.lua [timestamp]

# Check that all job types are rejected
test_bin_fail "R1" $salloc {-t1 -J $job_name -A $ta1 --qos $tq2 -n5 "$bin_true"} 0 1
test_bin_fail "R2" $salloc {-t1 -J $job_name -A $ta1 --qos $tq2 -n5 : -n3 : -n1 "$bin_true"} 1 1
test_bin_fail "R3" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq2 -n5 $bin_true} 0 1
test_bin_fail "R4" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq2 -n5 : -n3 : -n1 $bin_true} 1 1
test_bin_fail "R5" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 --wrap $bin_true} 0 1
test_bin_fail "R6" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 --array 10 --wrap $bin_true} 0 1
test_bin_fail "R7" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 : -n3 : -n1 --wrap $bin_true} 1 1
test_bin_fail "R8" $sbatch {-t1 -J $job_name --comment=PASS -o /dev/null -W -A $ta1 --qos $tq2 -n1 : --comment=ERROR -n3 : --comment=ERROR -n5 --wrap $bin_true} 1 2

run_command -fail "$bin_cp $test_lua_pass $config_dir/job_submit.lua"
# Sleep for 1 second to make sure that modify time is different from last copy.
sleep 1
file mtime $config_dir/job_submit.lua [timestamp]

# Check that passing works
test_bin_pass "P1" $salloc {-t1 -J $job_name -A $ta1 --qos $tq2 -n5 "$bin_true"} 0 1
test_bin_pass "P2" $salloc {-t1 -J $job_name -A $ta1 --qos $tq2 -n5 : -n3 : -n1 "$bin_true"} 1 3
test_bin_pass "P3" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq2 -n5 $bin_true} 0 1
test_bin_pass "P4" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq2 -n5 : -n3 : -n1 $bin_true} 1 3
test_bin_pass "P5" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 --wrap $bin_true} 0 1
test_bin_pass "P6" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 --array 10 --wrap $bin_true} 0 1
test_bin_pass "P7" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq2 -n5 : -n3 : -n1 --wrap $bin_true} 1 3

# Check that messages are still sent with failing QOS but passing filter
test_bin_fail "F1" $salloc {-t1 -J $job_name -A $ta1 --qos $tq1 -n5 "$bin_true"} 0 1
test_bin_fail "F2" $salloc {-t1 -J $job_name -A $ta1 --qos $tq1 -n5 : -n3 : -n1 "$bin_true"} 1 1
test_bin_fail "F3" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq1 -n5 $bin_true} 0 1
test_bin_fail "F4" $srun {-t1 -J $job_name --mpi=none -A $ta1 --qos $tq1 -n5 : -n3 : -n1 $bin_true} 1 1
test_bin_fail "F5" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq1 -n5 --wrap $bin_true} 0 1
test_bin_fail "F6" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq1 -n5 --array 10 --wrap $bin_true} 0 1
test_bin_fail "F7" $sbatch {-t1 -J $job_name -o /dev/null -W -A $ta1 --qos $tq1 -n5 : -n3 : -n1 --wrap $bin_true} 1 3

if {$is_skip} {
	skip "Some subtests were skipped"
}
