From 04cc7d3fe387d002dbe830a42b0cde449d582b8e Mon Sep 17 00:00:00 2001
From: Iustin Pop <iustin@google.com>
Date: Thu, 20 Dec 2012 19:52:06 +0100
Subject: [PATCH] Extend hroller shell tests

Currently only --help and --version are tested; the patch extends this
with testing parsing of an empty cluster, of a cluster with one group,
and other command line behaviours.

It also adds testing for --help-completion for all htools binaries.

Signed-off-by: Iustin Pop <iustin@google.com>
Reviewed-by: Guido Trotter <ultrotter@google.com>
---
 htest/data/empty-cluster.data             |  7 +++++++
 htest/shelltests/htools-basic.test        | 14 ++++++++++++++
 htest/shelltests/htools-invalid.test      | 15 +++++++++++++++
 htest/shelltests/htools-no-backend.test   |  4 ++++
 htest/shelltests/htools-single-group.test |  8 ++++++++
 5 files changed, 48 insertions(+)
 create mode 100644 htest/data/empty-cluster.data

diff --git a/htest/data/empty-cluster.data b/htest/data/empty-cluster.data
new file mode 100644
index 000000000..d25526f5d
--- /dev/null
+++ b/htest/data/empty-cluster.data
@@ -0,0 +1,7 @@
+group-01|fake-uuid-01|preferred|
+
+
+
+
+|128,1,1024,1,1,1|128,1,1024,1,1,1|32768,8,1048576,16,8,12|diskless,file,sharedfile,plain,blockdev,drbd,rbd,ext|4.0|32.0
+group-01|128,1,1024,1,1,1|128,1,1024,1,1,1|32768,8,1048576,16,8,12|diskless,file,sharedfile,plain,blockdev,drbd,rbd,ext|4.0|32.0
diff --git a/htest/shelltests/htools-basic.test b/htest/shelltests/htools-basic.test
index e462f7fa2..9b45b31bc 100644
--- a/htest/shelltests/htools-basic.test
+++ b/htest/shelltests/htools-basic.test
@@ -3,27 +3,41 @@
 >>>= 0
 ./htest/hail --help
 >>>= 0
+./htest/hail --help-completion
+>>>= 0
 ./htest/hbal --version
 >>>= 0
 ./htest/hbal --help
 >>>= 0
+./htest/hbal --help-completion
+>>>= 0
 ./htest/hspace --version
 >>>= 0
 ./htest/hspace --help
 >>>= 0
+./htest/hspace --help-completion
+>>>= 0
 ./htest/hscan --version
 >>>= 0
 ./htest/hscan --help
 >>>= 0
+./htest/hscan --help-completion
+>>>= 0
 ./htest/hinfo --version
 >>>= 0
 ./htest/hinfo --help
 >>>= 0
+./htest/hinfo --help-completion
+>>>= 0
 ./htest/hcheck --version
 >>>= 0
 ./htest/hcheck --help
 >>>= 0
+./htest/hcheck --help-completion
+>>>= 0
 ./htest/hroller --version
 >>>= 0
 ./htest/hroller --help
 >>>= 0
+./htest/hroller --help-completion
+>>>= 0
diff --git a/htest/shelltests/htools-invalid.test b/htest/shelltests/htools-invalid.test
index 1625b25ba..649c54025 100644
--- a/htest/shelltests/htools-invalid.test
+++ b/htest/shelltests/htools-invalid.test
@@ -22,6 +22,10 @@
 ./htest/hcheck --no-such-option
 >>>= 2
 
+# invalid option test
+./htest/hroller --no-such-option
+>>>= 2
+
 # extra arguments
 ./htest/hspace unexpected-argument
 >>>2
@@ -42,3 +46,14 @@ Error: This program doesn't take any arguments.
 >>>2
 Error: This program doesn't take any arguments.
 >>>=1
+
+./htest/hroller unexpected-argument
+>>>2
+Error: This program doesn't take any arguments.
+>>>=1
+
+# hroller fails to build a graph for an empty cluster
+./htest/hroller -t$TESTDATA_DIR/empty-cluster.data
+>>>2
+Error: Cannot create node graph
+>>>=1
diff --git a/htest/shelltests/htools-no-backend.test b/htest/shelltests/htools-no-backend.test
index 7749b2172..fc2ac9c38 100644
--- a/htest/shelltests/htools-no-backend.test
+++ b/htest/shelltests/htools-no-backend.test
@@ -14,6 +14,10 @@
 ./htest/hinfo
 >>>= 1
 
+# hroller no backend
+./htest/hroller
+>>>= 1
+
 # hbal multiple backends
 ./htest/hbal -t /dev/null -m localhost
 >>>2
diff --git a/htest/shelltests/htools-single-group.test b/htest/shelltests/htools-single-group.test
index 1cdf5b9d6..38281827a 100644
--- a/htest/shelltests/htools-single-group.test
+++ b/htest/shelltests/htools-single-group.test
@@ -27,3 +27,11 @@
 ./htest/hcheck -t$T/simu-onegroup.tiered --machine-readable
 >>> /HCHECK_INIT_CLUSTER_NEED_REBALANCE=0/
 >>>= 0
+
+# hroller should be able to print the solution
+./htest/hroller -t$T/simu-onegroup.tiered
+>>>= 0
+
+# hroller should be able to print the solution, in verbose mode as well
+./htest/hroller -t$T/simu-onegroup.tiered -v -v
+>>>= 0
-- 
GitLab