#!/bin/bash
#--------------------
# Testing swift-proxy
#--------------------
set -e
failure=false

# copy config files
mkdir -p /etc/swift 2>&1 > /dev/null
cp /usr/share/doc/swift/swift.conf-sample /etc/swift/swift.conf 2>&1 > /dev/null
cp /usr/share/doc/swift-proxy/proxy-server.conf-sample /etc/swift/proxy-server.conf 2>&1 > /dev/null

# create rings
cd /etc/swift 2>&1 > /dev/null
swift-ring-builder account.builder create 18 1 1 2>&1 > /dev/null
swift-ring-builder container.builder create 18 1 1 2>&1 > /dev/null
swift-ring-builder object.builder create 18 1 1 2>&1 > /dev/null

swift-ring-builder account.builder add z1-127.0.0.1:6002/sda1 100 2>&1 > /dev/null
swift-ring-builder container.builder add z1-127.0.0.1:6001/sda1 100 2>&1 > /dev/null
swift-ring-builder object.builder add z1-127.0.0.1:6000/sda1 100 2>&1 > /dev/null

swift-ring-builder account.builder rebalance 2>&1 > /dev/null
swift-ring-builder container.builder rebalance 2>&1 > /dev/null
swift-ring-builder object.builder rebalance 2>&1 > /dev/null

DAEMONS=('swift-proxy' 'swift-object' 'swift-container' 'swift-account')

for daemon in "${DAEMONS[@]}"; do
    systemctl restart $daemon
done

for daemon in "${DAEMONS[@]}"; do
    TIMEOUT=50
    while [ "$TIMEOUT" -gt 0 ]; do
        if pidof -x ${daemon}-server > /dev/null; then
            echo "OK"
            break
        fi
        TIMEOUT=$((TIMEOUT - 1))
        sleep 0.1
    done

    if [ "$TIMEOUT" -le 0 ]; then
        echo "ERROR: ${daemon}-server IS NOT RUNNING"
        failure=true
    else
        echo "${daemon}-server IS RUNNING"
    fi
done

if [ "$failure" = true ]; then
    exit 1
fi

exit 0
