--- /dev/null
+#!/bin/bash -x
+
+#
+# Test crushtool to make sure that it can handle various crush maps
+#
+
+# Includes
+dir=`dirname $0`
+dir=`readlink -f $dir`
+source $dir/test_common.sh
+setup_tempdir
+cd $dir/..
+
+run_crushtool() {
+ ./crushtool $@ || die "crushtool failed!"
+}
+
+run() {
+ run_crushtool -c $dir/test_crushtool/need_tree_order.crush \
+ -o $TEMPDIR/nto.compiled
+ run_crushtool -d $TEMPDIR/nto.compiled -o $TEMPDIR/nto.conf
+ run_crushtool -c $TEMPDIR/nto.conf -o $TEMPDIR/nto.recompiled
+}
+
+$@
--- /dev/null
+# begin crush map
+
+# devices
+device 0 device0
+device 1 device1
+device 2 device2
+
+# types
+type 0 device
+type 1 host
+type 2 rack
+type 3 root
+
+# buckets
+ host host0 {
+ id -1 # do not change unnecessarily
+ alg straw
+ hash 0 # rjenkins1
+ item device0 weight 1.000
+}
+ host host1 {
+ id -2 # do not change unnecessarily
+ alg straw
+ hash 0 # rjenkins1
+ item device1 weight 1.000
+}
+ host host2 {
+ id -5 # do not change unnecessarily
+ alg straw
+ hash 0 # rjenkins1
+ item device2 weight 1.000
+}
+ rack rack0 {
+ id -3 # do not change unnecessarily
+ alg straw
+ hash 0 # rjenkins1
+ item host0 weight 1.000
+ item host1 weight 1.000
+ item host2 weight 1.000
+}
+ root root {
+ id -4 # do not change unnecessarily
+ alg straw
+ hash 0 # rjenkins1
+ item rack0 weight 4.000
+}
+
+# rules
+rule data {
+ ruleset 1
+ type replicated
+ min_size 2
+ max_size 2
+ step take root
+ step chooseleaf firstn 0 type rack
+ step emit
+}
+
+# end crush map