#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          validate that a job step will report a TIMEOUT state
#          inside accounting when job exceeds timelimit
############################################################################
# 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

set job_id        0
set file_in       "$test_dir/job_script"
set sacct_update_timeout 3

set accounting_storage_enforce [get_config_param "AccountingStorageEnforce"]
if {[param_contains $accounting_storage_enforce "nosteps"] || [param_contains $accounting_storage_enforce "nojobs"]} {
	skip "This test can not be run with nosteps or nojobs (AccountingStorageEnforce)"
}
if {[get_config_param "AccountingStorageType"] ne "accounting_storage/slurmdbd"} {
	skip "This test requires use of Slurmdbd"
}

proc cleanup {} {
	global job_id

	cancel_job $job_id
}

make_bash_script $file_in "$srun -t00:01:00 sleep 300"

set job_id [submit_job -fail "-o /dev/null -t00:02:00 $file_in"]

wait_for_job -fail $job_id "DONE"

subtest {![wait_for_command_match -timeout $sacct_update_timeout "$sacct --jobs=$job_id.0 --format=State --noheader --parsable2" "TIMEOUT"]} "Verify that the srun step timed out"
subtest {![wait_for_command_match -timeout $sacct_update_timeout "$sacct --jobs=$job_id.batch --format=State --noheader --parsable2" "FAILED"]} "Verify that the batch step failed"
subtest {![wait_for_command_match -timeout $sacct_update_timeout "$sacct --jobs=$job_id --format=State --allocations --noheader --parsable2" "FAILED"]} "Verify that the job failed"
