Add shelltests verifying hail applies disk ipolicy per disk
[ganeti-local] / test / hs / shelltests / htools-hail.test
1 # test that on invalid files it can't parse the request
2 ./test/hs/hail /dev/null
3 >>>2 /Invalid JSON/
4 >>>= !0
5
6 # another invalid example
7 echo '[]' | ./test/hs/hail -
8 >>>2 /Unable to read JSObject/
9 >>>= !0
10
11 # empty dict
12 echo '{}' | ./test/hs/hail -
13 >>>2 /key 'request' not found/
14 >>>= !0
15
16 echo '{"request": 0}' | ./test/hs/hail -
17 >>>2 /key 'request'/
18 >>>= !0
19
20 ./test/hs/hail $TESTDATA_DIR/hail-invalid-reloc.json
21 >>>2 /key 'name': Unable to read String/
22 >>>= !0
23
24 # and now start the real tests
25 ./test/hs/hail $TESTDATA_DIR/hail-alloc-drbd.json
26 >>> /"success":true,.*,"result":\["node2","node1"\]/
27 >>>= 0
28
29 ./test/hs/hail $TESTDATA_DIR/hail-reloc-drbd.json
30 >>> /"success":true,.*,"result":\["node1"\]/
31 >>>= 0
32
33 ./test/hs/hail $TESTDATA_DIR/hail-node-evac.json
34 >>> /"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"/
35 >>>= 0
36
37 ./test/hs/hail $TESTDATA_DIR/hail-change-group.json
38 >>> /"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"/
39 >>>= 0
40
41 # check that hail correctly applies the disk policy on a per-disk basis
42 ./test/hs/hail $TESTDATA_DIR/hail-alloc-twodisks.json
43 >>> /"success":true,.*,"result":\["node1"\]/
44 >>>= 0
45
46 ./test/hs/hail $TESTDATA_DIR/hail-alloc-invalid-twodisks.json
47 >>> /"success":false,.*FailDisk: 1/
48 >>>= 0
49
50 # check that hail can use the simu backend
51 ./test/hs/hail --simu p,8,8T,16g,16 $TESTDATA_DIR/hail-alloc-drbd.json
52 >>> /"success":true,/
53 >>>= 0
54
55 # check that hail can use the text backend
56 ./test/hs/hail -t $T/simu-rebal-merged.standard $TESTDATA_DIR/hail-alloc-drbd.json
57 >>> /"success":true,/
58 >>>= 0
59
60 # check that hail can use the simu backend
61 ./test/hs/hail -t $T/simu-rebal-merged.standard $TESTDATA_DIR/hail-alloc-drbd.json
62 >>> /"success":true,/
63 >>>= 0
64
65 # check that hail pre/post saved state differs after allocation
66 ./test/hs/hail -v -v -v -p $TESTDATA_DIR/hail-alloc-drbd.json -S $T/hail-alloc >/dev/null 2>&1 && ! diff -q $T/hail-alloc.pre-ialloc $T/hail-alloc.post-ialloc
67 >>> /Files .* and .* differ/
68 >>>= 0
69
70 # check that hail pre/post saved state differs after relocation
71 ./test/hs/hail -v -v -v -p $TESTDATA_DIR/hail-reloc-drbd.json -S $T/hail-reloc >/dev/null 2>&1 && ! diff -q $T/hail-reloc.pre-ialloc $T/hail-reloc.post-ialloc
72 >>> /Files .* and .* differ/
73 >>>= 0
74
75 # evac tests
76 ./test/hs/hail $T/hail-node-evac.json.primary-only
77 >>> /"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"/
78 >>>= 0
79
80 ./test/hs/hail $T/hail-node-evac.json.secondary-only
81 >>> /"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"/
82 >>>= 0
83
84 ./test/hs/hail $T/hail-node-evac.json.all
85 >>> /"success":true,"info":"Request successful: 0 instances failed to move and 1 were moved successfully"/
86 >>>= 0