# test that hspace machine readable output looks correct
./test/hs/hspace --simu p,4,8T,64g,16 --machine-readable --disk-template drbd -l 8
>>> /^HTS_OK=1/
>>>= 0

# test again via a file and shell parsing
./test/hs/hspace --simu p,4,8T,64g,16 --machine-readable --disk-template drbd -l 8 > $T/capacity && sh -c ". $T/capacity && test x\$HTS_OK = x1"
>>>= 0

# standard & tiered allocation, using shell parsing to do multiple checks
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered.data --no-capacity-checks > $T/capacity && sh -c ". $T/capacity && test \"\${HTS_TSPEC}\" = '131072,1048576,4,12=4 129984,1048320,4,12=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 6"
>>>=0

# again, but with a policy containing two min/max specs pairs
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-dualspec.data --no-capacity-checks > $T/capacity && sh -c ". $T/capacity && test \"\${HTS_TSPEC}\" = '131072,1048576,4,12=4 129984,1048320,4,12=2 65472,524288,2,12=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 14"
>>>2
>>>=0

# With exclusive storage
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-exclusive.data --no-capacity-checks > $T/capacity && sh -c ". $T/capacity && test \"\${HTS_TSPEC}\" = '131072,1048576,4,10=1 131072,1048576,4,9=1 131072,1048576,4,8=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 6 && test \"\${HTS_TRL_SPN_FREE}\" = 0 && test \"\${HTS_FIN_SPN_FREE}\" = 29"
>>>=0

# With exclusive storage and a policy containing two min/max specs pairs
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-dualspec-exclusive.data --no-capacity-checks > $T/capacity && sh -c ". $T/capacity && test \"\${HTS_TSPEC}\" = '131072,1048576,4,4=4 129984,1048320,4,4=2 65472,524288,2,2=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 14 && test \"\${HTS_TRL_SPN_FREE}\" = 7 && test \"\${HTS_FIN_SPN_FREE}\" = 7"
>>>2
>>>=0

# Mixed cluster, half with exclusive storage
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-mixed.data --no-capacity-checks > $T/capacity && sh -c ". $T/capacity && echo \"\${HTS_TSPEC}\" | grep -q '131072,1048576,4,12=2 .*129984,1048320,4,10=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 6 && test \"\${HTS_TRL_SPN_FREE}\" = 0 && test \"\${HTS_FIN_SPN_FREE}\" = 18"
>>>=0

# Verify that instance policy for disks is adhered to
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-ipolicy.data --no-capacity-checks 
>>>/HTS_TRL_INST_CNT=4/
>>>=0

# ...and instance positioning in human-readable form
./test/hs/hspace -pname,pcnt -t $TESTDATA_DIR/hspace-tiered-ipolicy.data --no-capacity-checks
>>>2/Tiered allocation status:
 Name        pcnt
 node-01-001    1
 node-01-002    1
 node-01-003    1
 node-01-004    1/
>>>=0

./test/hs/hspace -pname,pcnt -t $TESTDATA_DIR/hspace-tiered-resourcetypes.data --no-capacity-checks
>>>2/Tiered allocation status:
 Name        pcnt
 node-01-001    1
 node-01-002    2
 node-01-003    2
 node-01-004    2/
>>>=0

# VCPU-dominated allocation
./test/hs/hspace --machine-readable -t $TESTDATA_DIR/hspace-tiered-vcpu.data > $T/capacity && sh -c ". $T/capacity && test \"\${HTS_TSPEC}\" = '32768,65536,4,12=4 32768,65536,2,12=2' && test \"\${HTS_ALLOC_INSTANCES}\" = 10"
>>>=0

# Presence of overfull group
./test/hs/hspace -t $TESTDATA_DIR/hspace-groups-one.data
>>>/0 instances allocated/
>>>=0

./test/hs/hspace --independent-groups -t $TESTDATA_DIR/hspace-groups-one.data
>>>/0 instances allocated/
>>>=0

./test/hs/hspace --accept-existing -t $TESTDATA_DIR/hspace-groups-one.data
>>>/2 instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-groups-two.data
>>>/0 instances allocated/
>>>=0

./test/hs/hspace --independent-groups -t $TESTDATA_DIR/hspace-groups-two.data
>>>/2 instances allocated/
>>>=0

./test/hs/hspace --accept-existing -t $TESTDATA_DIR/hspace-groups-two.data
>>>/2 instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-existing.data
>>>/ 0 instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-existing.data --accept-existing
>>>/ [1-9][0-9]* instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-bad-group.data
>>>/ 0 instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-bad-group.data -v -v -v
>>>2/Bad groups: \["group-bad"\]/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-bad-group.data --accept-existing
>>>/ 0 instances allocated/
>>>=0

./test/hs/hspace -t $TESTDATA_DIR/hspace-bad-group.data --independent-groups
>>>/ [1-9][0-9]* instances allocated/
>>>=0

