#!/bin/bash

# Test disk error 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

_cleanup

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

_wait_for_sheep 5

$COLLIE cluster format -m unsafe

$COLLIE vdi create test 40M

for i in `seq 0 10`; do
    echo $i | $COLLIE vdi write test $((i * 4 * 1024 * 1024)) 512
done

for i in 0 1 2 3 4; do
    $COLLIE vdi read test -p 700$i | md5sum
    $COLLIE cluster info -p 700$i | _filter_cluster_info
done

# remove obj directory to occur EIO
_safe_remove $STORE/4/obj

for i in `seq 0 10`; do
    echo $(($i + 100)) | $COLLIE vdi write test $((i * 4 * 1024 * 1024)) 512
done

for i in 0 1 2 3 4; do
    $COLLIE vdi read test -p 700$i | md5sum
    $COLLIE cluster info -p 700$i | _filter_cluster_info
done

# check whether sheep 4 can receive confchg event
_kill_sheep 3

for i in `seq 0 10`; do
    echo $(($i + 200)) | $COLLIE vdi write test $((i * 4 * 1024 * 1024)) 512
done

for i in 0 1 2 4; do
    $COLLIE vdi read test -p 700$i | md5sum
    $COLLIE cluster info -p 700$i | _filter_cluster_info
done

# check whether sheep 4 can receive notify event
$COLLIE vdi create test2 20M

for i in 0 1 2 4; do
    $COLLIE vdi list -p 700$i | _filter_short_date
done

# check whether we can write to a gateway after EIO
_safe_remove $STORE/0/obj
echo hello | $COLLIE vdi write test 0 512
