diff --git a/testsuite/expect/test15.21 b/testsuite/expect/test15.21
new file mode 100755
index 0000000000000000000000000000000000000000..f9ef8211fdd53613f56704a2bb4f50d560da850c
--- /dev/null
+++ b/testsuite/expect/test15.21
@@ -0,0 +1,160 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Test of contiguous option with multiple nodes (--contiguous option).
+#
+# Output:  "TEST: #.#" followed by "SUCCESS" if test was successful, OR
+#          "WARNING: ..." with an explanation of why the test can't be made, OR
+#          "FAILURE: ..." otherwise with an explanation of the failure, OR
+#          anything else indicates a failure mode that must be investigated.
+#
+# NOTE:    This assumes node names are of the form <alpha><number>, where 
+#          the value of <number> indicates the nodes relative location. 
+#          Change tha node name parsing logic as needed for other formats.
+############################################################################
+# Copyright (C) 2002 The Regents of the University of California.
+# Produced at Lawrence Livermore National Laboratory (cf, DISCLAIMER).
+# Written by Morris Jette <jette1@llnl.gov>
+# UCRL-CODE-217948.
+# 
+# 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.,
+# 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA.
+############################################################################
+source ./globals
+
+set test_id     "15.21"
+set exit_code   0
+
+print_header $test_id
+
+if {[test_front_end] != 0} {
+	send_user "\nWARNING: This test is incompatable with front-end systems\n"
+	exit 0
+}
+
+set available [available_nodes [default_partition]]
+if {$available < 3} {
+    send_user "\nWARNING: This test requires 3 nodes, but only $available available\n"
+    exit 0
+}
+
+#
+# Submit a 3 contiguous node job
+#
+set host_0_name      ""
+set host_1_name      ""
+set host_2_name      ""
+set host_0_num       0
+set host_1_num       0
+set host_2_num       0
+set job_id           0
+set timeout $max_job_delay
+spawn $salloc -N3-3 --contiguous --immediate -t1 $slaunch -l $bin_printenv SLURMD_NODENAME
+expect {
+	-re "Granted job allocation ($number)" {
+		set job_id $expect_out(1,string)
+		exp_continue
+	}
+	-re "Failed to allocate resources" {
+		send_user "\nWARNING: can't test salloc task distribution\n"
+		exit $exit_code
+	}
+	-re "($number): ($alpha)($number)" {
+		set task_id $expect_out(1,string)
+		if {$task_id == 0} {
+			set host_0_name $expect_out(2,string)
+			set host_0_num  $expect_out(3,string)
+		}
+		if {$task_id == 1} {
+			set host_1_name $expect_out(2,string)
+			set host_1_num  $expect_out(3,string)
+		}
+		if {$task_id == 2} {
+			set host_2_name $expect_out(2,string)
+			set host_2_num  $expect_out(3,string)
+		}
+		exp_continue
+	}
+	-re "($number): ($alpha)" {
+		set task_id $expect_out(1,string)
+		if {$task_id == 0} {
+			set host_0_name $expect_out(2,string)
+		}
+		if {$task_id == 1} {
+			set host_1_name $expect_out(2,string)
+		}
+		if {$task_id == 2} {
+			set host_2_name $expect_out(2,string)
+		}
+		exp_continue
+	}
+	timeout {
+		if {$job_id == 0} {
+			kill_salloc
+		} else {
+			cancel_job $job_id
+		}
+		if {$waiting == 1} {
+			send_user "\nWARNING: salloc still not responding, quiting\n"
+			exit 0
+		} else {
+			send_user "\nFAILURE: salloc not responding\n"
+			exit 1
+		}
+	}
+	eof {
+		wait
+	}
+}
+
+#
+# Verify node count
+#
+if {[test_front_end] != 0} {
+	send_user "\nWARNING: Additional testing is incompatable with front-end systems\n"
+	exit $exit_code
+}
+
+if {[string compare $host_0_name ""] == 0} {
+	send_user "\nFAILURE: Did not get hostname of task 0\n"
+	set exit_code   1	
+}
+if {[string compare $host_1_name ""] == 0} {
+	send_user "\nFAILURE: Did not get hostname of task 1\n"
+	set exit_code   1	
+}
+if {[string compare $host_2_name ""] == 0} {
+	send_user "\nFAILURE: Did not get hostname of task 2\n"
+	set exit_code   1	
+}
+
+#
+# Verify node sequence number
+#
+if {$host_1_num != [expr $host_0_num + 1]} {
+	send_user "\nFAILURE: node sequence number not contiguous\n"
+	set exit_code   1	
+}
+if {$host_2_num != [expr $host_1_num + 1]} {
+	send_user "\nFAILURE: node sequence number not contiguous\n"
+	set exit_code   1	
+}
+
+if {$exit_code == 0} {
+	send_user "\nSUCCESS\n"
+}
+exit $exit_code