#!/bin/bash

# Test disk full handling

seq=`basename $0`
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1        # failure is the default!

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

_need_to_be_root

_cleanup

_make_device 0 $((1024 ** 3))
_make_device 1 $((1024 ** 3))
_make_device 2 $((20 * 1024 ** 2))
_make_device 3 $((20 * 1024 ** 2))

# create log files of sheep 2 and 3 on other places
touch $STORE/0/sheep2.log $STORE/0/sheep3.log
ln -s $STORE/0/sheep2.log $STORE/2/sheep.log
ln -s $STORE/0/sheep3.log $STORE/3/sheep.log

for i in `seq 0 3`; do
    _start_sheep $i
done

_wait_for_sheep 4

$COLLIE cluster format

# create two VDIs before there are enough spaces
$COLLIE vdi create test0 100M
$COLLIE vdi create test1 100M

# make sheep 0 and 1 disk full
dd if=/dev/zero of=$STORE/2/zero > /dev/null 2>&1
dd if=/dev/zero of=$STORE/3/zero > /dev/null 2>&1

# test data write against disk-full cluster
for i in `seq 0 10`; do
    echo $i | $COLLIE vdi write test0 $((i * 4 * 1024 * 1024)) 512 -p 7000
    echo $i | $COLLIE vdi write test1 $((i * 4 * 1024 * 1024)) 512 -p 7002
done

# test vdi creation against disk-full cluster
$COLLIE vdi create test2 100M -p 7000
$COLLIE vdi create test3 100M -p 7002

for i in `seq 0 3`; do
    $COLLIE node info -p 700$i | _filter_node_info
    $COLLIE node list -p 700$i
done
ls $STORE/*/obj/* | _filter_store | sort
