#!/usr/bin/expect
############################################################################
# Purpose: Test of SLURM functionality
#          Check BG partition display in smap in commandline mode 
#          (-Db -c option).
# 
# Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
#          "FAILURE: ..." otherwise with an explanation of the failure, OR
#          anything else indicates a failure mode that must be investigated.
############################################################################
# Copyright (C) 2002-2006 The Regents of the University of California.
# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
# Written by Danny Auble <da@llnl.gov>
# UCRL-CODE-226842.
# 
# This file is part of SLURM, a resource management program.
# For details, see <http://www.llnl.gov/linux/slurm/>.
#  
# 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 test_id       "10.6"
set exit_code     0
set matches       0
set non_bg       0

print_header $test_id

#
# Check the smap format of header for displaying bg partitions
# in curses format.
#
 
spawn $smap -Db -c
expect {
	-re "BG SYSTEM" {
		set non_bg 1
		exp_continue
	}
	-re "PARTITION" {
		incr matches
		exp_continue
	}
	-re "BG_BLOCK" {
		incr matches
		exp_continue
	}
	-re "STATE" {
		incr matches
		exp_continue
	}
	-re "USER" {
		incr matches
		exp_continue
	}
	-re "CONN" {
		incr matches
		exp_continue
	}
	-re "NODE_USE" {
		incr matches
		exp_continue
	}
	-re "NODES" {
		incr matches
		exp_continue
	}
	-re "NODELIST" {
		incr matches
		exp_continue	        
	}
	-re "BP_LIST" {
		incr matches
		exp_continue
	}
	-re "error" {
		send_user "\nFAILURE: smap error\n"
		set exit_code 1
		exp_continue
	}
	-re "fatal" {
		send_user "\nFAILURE: smap error\n"
		set exit_code 1
		exp_continue
	}
	timeout {
		send_user "\nFAILURE: smap not responding\n"
		set exit_code 1
	}
	eof {
		wait
      	}
}

if {$non_bg != 0} {
	send_user "\nWARNING: Must be on a BG SYSTEM to run this command\n"
	exit 0
}
if {$matches != 8} {
	send_user "\nFAILURE: smap bg partition display in commandline mode\n"
	set exit_code 1
}

if {$exit_code == 0} {
	send_user "\nSUCCESS\n"
}
exit $exit_code
