diff --git a/testsuite/expect/Makefile.am b/testsuite/expect/Makefile.am
index 89776782082691389aa121d723e803d4fc9ef04c..e2d2e4c51476759f99bd375a5eeb39f02be528ba 100644
--- a/testsuite/expect/Makefile.am
+++ b/testsuite/expect/Makefile.am
@@ -147,6 +147,7 @@ EXTRA_DIST = \
 	test2.21			\
 	test2.22			\
 	test2.23			\
+	test2.24			\
 	test3.1				\
 	test3.2				\
 	test3.3				\
diff --git a/testsuite/expect/Makefile.in b/testsuite/expect/Makefile.in
index 17c208c6bccad880e7b962a374e7180c45cefe54..1f9001eb7d0c4a19e8d596fb3b08580a418a7c16 100644
--- a/testsuite/expect/Makefile.in
+++ b/testsuite/expect/Makefile.in
@@ -531,6 +531,7 @@ EXTRA_DIST = \
 	test2.21			\
 	test2.22			\
 	test2.23			\
+	test2.24			\
 	test3.1				\
 	test3.2				\
 	test3.3				\
diff --git a/testsuite/expect/README b/testsuite/expect/README
index a74f60ebb6baa1e4aba09b0c65875431bb3f8e0e..9687c124d3f850f10a191617bdae2019ef2c72a3 100644
--- a/testsuite/expect/README
+++ b/testsuite/expect/README
@@ -235,6 +235,7 @@ test2.20   Validate scontrol show hostnames.
 test2.21   Validate scontrol requeue of failed or completed job.
 test2.22   Validate scontrol requeuehold requeues job to held pending state.
 test2.23   Validate scontrol requeuehold State=SpecialExit.
+test2.24   Validate the scontrol write config creates accurate config
 
 
 test3.#    Testing of scontrol options (best run as SlurmUser or root).
diff --git a/testsuite/expect/globals b/testsuite/expect/globals
index abdd7064a0e233bf54b250d31018e21f6ec62c22..9471c8fb7c22ff1044406867da038c5e7ec41d17 100755
--- a/testsuite/expect/globals
+++ b/testsuite/expect/globals
@@ -224,6 +224,7 @@ set digit                "\[0-9\]"
 set end_of_line          "\[\r\n\]"
 set float                "\[0-9\]+\\.?\[0-9\]*"
 set number               "\[0-9\]+"
+set format_time          "\[0-9\]+\\:\[0-9\]+\\:\[0-9\]+"
 set number_with_suffix   "\[0-9\]+\[KM\]*"
 set slash                "/"
 set whitespace		 "\[ \t\n\r\f\v\]+"
diff --git a/testsuite/expect/test2.24 b/testsuite/expect/test2.24
new file mode 100755
index 0000000000000000000000000000000000000000..ab112efbd399f2d15344a96fb08f3f589b8c4096
--- /dev/null
+++ b/testsuite/expect/test2.24
@@ -0,0 +1,163 @@
+#!/usr/bin/expect
+############################################################################
+# Purpose: Test of SLURM functionality
+#          Checks that scontrol write config creates a slurm.conf
+#          with the correct values
+#
+#
+# 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) 2014 SchedMD LLC
+# Written by Nathan Yee <nyee32@schedmd.com>
+#
+# This file is part of SLURM, a resource management program.
+# For details, see <http://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 test_id       2.24
+set option        ""
+set value         ""
+array set conf_val {}
+set new_conf      ""
+set opt_cnt       0
+set exit_code     0
+
+print_header $test_id
+
+if {[is_super_user] == 0} {
+	send_user "\nWARNING: this test requires that the user be root or "
+	send_user "the SlurmUser\n"
+}
+
+#
+# User scontrol show config to get some values to check
+# against the new created file
+#
+log_user 0
+set val ""
+set option ""
+spawn $scontrol show config
+expect {
+
+	-re "($alpha_numeric_under) *= ($format_time)" {
+		set option $expect_out(1,string)
+		set val $expect_out(2,string)
+		set conf_val($option) $val
+		incr opt_cnt
+		exp_continue
+	}
+	-re "($alpha_numeric_under) *= ($alpha_numeric_under)" {
+		set option $expect_out(1,string)
+		set val $expect_out(2,string)
+
+		# Exclude ENV variable that appear in scontrol show config
+		# Also "SuspendTime=NONE" gets written as "SuspendTime=0"
+		if {$option != "BOOT_TIME" &&
+		    $option != "HASH_VAL"  &&
+		    $option != "MULTIPLE_SLURMD" &&
+		    $option != "NEXT_JOB_ID" &&
+		    $option != "SLURM_CONF" &&
+		    $option != "SLURM_VERSION" &&
+		    $option != "SuspendTime"} {
+			set conf_val($option) $val
+			incr opt_cnt
+		}
+		exp_continue
+	}
+	timeout {
+		send_user "\nFAILURE: scontrol is not responding\n"
+		set exit_code 1
+	}
+	eof {
+		wait
+	}
+}
+log_user 1
+
+#
+# Execute scontrol write config and get the path and filename of the
+# created file
+#
+spawn $scontrol write config
+expect {
+	-re "(/.*)/*($alpha_numeric_under)*\r\n" {
+		set new_conf $expect_out(1,string)
+		exp_continue
+	}
+	timeout {
+		send_user "\nFAILURE: scontrol is not responding\n";
+		set exit_code 1
+	}
+	eof {
+		wait
+	}
+}
+
+#
+# Loop through the hash and check that the parameters exist within
+# the new conf file
+#
+set tot_match 0
+foreach opt [array names conf_val] {
+
+	log_user 0
+	set match 0
+
+	spawn $bin_cat $new_conf
+	expect {
+		-re "$opt=$conf_val($opt)" {
+			set match 1
+			exp_continue
+		}
+		-re "#$opt=" {
+			set match 1
+			exp_continue
+		}
+		timeout {
+			send_user "\nFAILURE: scontrol is not responding\n"
+			set exit_code 1
+		}
+		eof {
+			wait
+		}
+	}
+	log_user 1
+
+	if {$match != 1} {
+		send_user "\nFAILURE: $opt = $conf_val($opt)"
+		send_user " Was not found in new config file\n"
+		set exit_code 1
+	} else {
+		incr tot_match
+	}
+}
+if {$tot_match != $opt_cnt} {
+	send_user "FAILURE: not all the values in the new config "
+	send_user "file were found ($tot_match != $opt_cnt)\n"
+	set exit_code 1
+}
+
+if {$exit_code == 0} {
+	exec $bin_rm -f $new_conf
+	send_user "\nSUCCESS\n"
+}
+
+exit $exit_code