#!/bin/bash

# Test reboot sheepdog without collie shutdown
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 7`; do
    _start_sheep $i
done

_wait_for_sheep 8

$COLLIE cluster format

for i in `seq 0 3`; do
    $COLLIE vdi create test$i 100M

    for j in `seq 0 24`; do
	echo "$i $j" | $COLLIE vdi write test$i $(($j * 4 * 1024 ** 2)) 512
    done &
done
wait

for i in `seq 0 3`; do
    $COLLIE vdi read test$i | md5sum
done

_reboot_without_collie_shutdown()
{
    local i
    for i in `seq 1 7`; do
	_kill_sheep $i
    done

    _wait_for_sheep 1
    _kill_sheep 0
    _wait_for_sheep_stop
    _start_sheep 0
    _wait_for_sheep 1

    for i in `seq 1 7`; do
	_start_sheep $i
    done
    _wait_for_sheep 8
}

for i in 0 1 2; do
    _reboot_without_collie_shutdown
done

for i in `seq 0 7`; do
    $COLLIE cluster info -p 700$i | _filter_cluster_info > $STORE/cinfo.$i
    $COLLIE vdi list -p 700$i | _filter_short_date
    for j in `seq 0 3`; do
	$COLLIE vdi read test$j -p 700$i | md5sum > $STORE/csum.$i.$j &
    done
    wait
    for j in `seq 0 3`; do
	cat $STORE/csum.$i.$j
    done
done

for i in `seq 1 7`; do
    diff -u $STORE/cinfo.0 $STORE/cinfo.$i
done
