#!/bin/bash

set -e

export LC_ALL=C.UTF-8
export LANG=C.UTF-8
export TZ=UTC # suppress UnknownTimeZoneError('Etc/UTC',)
DCS=$1

if [ $(id -u) -eq 0 ]
then
        # required so that the postgres user can create .coverage* and features/output/
        chmod 777 .
        chmod 777 features
        SU='su postgres -p -c'

        # zookeeper must be started manually (as root)
        if [ "$DCS" = "zookeeper" ]; then
                # JAVA_OPTS need to be set, otherwise zookeeper is not reachable via IPV4
                sed -i -e 's/#JAVA_OPTS=""/JAVA_OPTS="-Djava.net.preferIPv4Stack=true"/' /etc/default/zookeeper
                /etc/init.d/zookeeper start
		# let Java have some more time to startup
		sleep 5
        fi
else
        SU='bash -c'
fi

# clean up afterwards
trap 'rm -f /tmp/pgpass?; if [ $(id -u) -eq 0 ] && [ -x /etc/init.d/zookeeper ]; then /etc/init.d/zookeeper stop; fi' 0 2 3 15

# set ETCD_ARCH for ETCD_UNSUPPORTED_ARCH
# see https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/supported-platform.md#current-support
ETCD_ARCH=
DEB_HOST_ARCH=$(dpkg-architecture -qDEB_HOST_ARCH)
case $DEB_HOST_ARCH in
	arm64)
		ETCD_ARCH=arm64
		;;
	armel)
		ETCD_ARCH=arm
		;;
	armhf)
		ETCD_ARCH=arm
		;;
	i386)
		ETCD_ARCH=386
		;;
esac

set -x
for PG_VERSION in /usr/lib/postgresql/*; do
	$SU "ETCD_UNSUPPORTED_ARCH=$ETCD_ARCH DCS=$DCS PATH=/usr/lib/postgresql/$(basename \
		${PG_VERSION})/bin:$PATH behave" || \
		(for file in $(ls features/output/*_failed/*); do echo "$file:"; cat $file; done && exit 1)
done
