#!/usr/bin/env expect
############################################################################
# Purpose: Test of Slurm functionality
#          sacctmgr show config
############################################################################
# Copyright (C) 2008 Lawrence Livermore National Security.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Joseph Donaghy <donaghy1@llnl.gov>
# CODE-OCEC-09-009. All rights reserved.
#
# 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

#
# Use sacctmgr to create a cluster
#
set slurm_conf_matches    0
set slurmdbd_conf_matches 0
spawn $sacctmgr show config
expect {
	-re "You are not running a supported accounting_storage plugin" {
		set slurm_conf_matches    2
		set slurmdbd_conf_matches 2
		exp_continue
	}
	-re "AccountingStorageType *= *accounting_storage/slurmdbd" {
		incr slurm_conf_matches
		exp_continue
	}
	-re "AccountingStorageType" {
		incr slurm_conf_matches
		set slurmdbd_conf_matches 2
		exp_continue
	}
	-re "SLURM_CONF" {
		incr slurm_conf_matches
		exp_continue
	}
	-re "DbdHost" {
		incr slurmdbd_conf_matches
		exp_continue
	}
	-re "SLURMDBD_CONF" {
		incr slurmdbd_conf_matches
		exp_continue
	}
	timeout {
		fail "sacctmgr add not responding"
	}
	eof {
		wait
	}
}
if {$slurm_conf_matches != 2} {
	fail "sacctmgr failed to show slurm_conf values"
}
if {$slurmdbd_conf_matches != 2} {
	fail "sacctmgr failed to show slurmdbd configuration"
}
