#!/bin/bash

# Test membership, add one node after killing existing one node

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 0 1; do
    _start_sheep $i
done

_wait_for_sheep 2
# start Sheepdog with two nodes
$COLLIE cluster format -c 2

for i in 2 3 4; do
    # add one node after killing existing one node
    _kill_sheep $((i - 2))
    sleep 1

    _start_sheep $i
    sleep 2
done

# kill all existing nodes
for i in 3 4; do
    _kill_sheep $i
    sleep 1
done

for i in 0 1 2 3 4; do
    _start_sheep $i
    sleep 1
done

_wait_for_sheep_stop 0
_wait_for_sheep_stop 1
_wait_for_sheep_stop 2
_wait_for_sheep_stop 3

_wait_for_sheep 1 4

echo check whether Sheepdog is running with only one node
$COLLIE cluster info -p 7004 | _filter_cluster_info

# add the other nodes
for i in 0 1 2 3; do
    _start_sheep $i
    sleep 1
done

_wait_for_sheep 5
echo check whether all nodes have the same cluster info
for i in 0 1 2 3 4; do
    $COLLIE cluster info -p 700$i | _filter_cluster_info
done
