#!/usr/bin/env bash

# NOTE: DEPRECATED
# TODO(liubo02): reconsider the compatibility test

set -o errexit
set -o nounset
set -o pipefail

ROOT=$(cd $(dirname "${BASH_SOURCE[0]}")/../..; pwd -P)

WITH_KUBECONFIG=true
source $ROOT/hack/lib/vars.sh
source $ROOT/hack/lib/image.sh
source $ROOT/hack/lib/version.sh

# tools
KUBECTL=${KUBECTL:-"kubectl"}
GINKGO=${GINKGO:-"$ROOT/bin/ginkgo"}
GIT=${GIT:-"git"}

SHARED_TIER_KUBECONFIG=${VAR_KUBECONFIG:-"$KUBECONFIG"}
SHARED_TIER_CONTEXT=${VAR_CONTEXT:-"arn:aws:eks:us-east-1:385595570414:cluster/dev-us-east-1-s01"}
INFRA_KUBECONFIG=${VAR_INFRA_KUBECONFIG:-"$KUBECONFIG"}
INFRA_CONTEXT=${VAR_INFRA_CONTEXT:-"infra-dev"}

RANDOM_CLUSTER=${RANDOM_CLUSTER:-"$(git config user.name)-compatibility"}
SKIP_DEPLOY=${SKIP_DEPLOY:-1}
SELECTOR=${SELECTOR:-""}
# manual or auto
MODE=${MODE:-"manual"}
TEST_ENV="mock-eks"

FROM_RELEASE=${FROM_RELEASE:-""}

if [[ $FROM_RELEASE == "" ]]; then
    lib::version::get_latest_release_branch FROM_RELEASE
fi

FROM_VERSION=$($GIT --work-tree $ROOT rev-parse origin/$FROM_RELEASE)

SYSTEM_SELECTOR="For=Compatibility,From=${FROM_RELEASE}"

# always re-deploy all components
if [[ $MODE == "auto" ]]; then
    SKIP_DEPLOY=0
    SELECTOR=$SYSTEM_SELECTOR
elif [[ $SELECTOR == "" ]]; then
    SELECTOR=$SYSTEM_SELECTOR
else
    SELECTOR=$SYSTEM_SELECTOR,$SELECTOR
fi

if [[ $SKIP_DEPLOY == 0 ]]; then
    $ROOT/hack/pulumi/deploy.sh install_manager $TEST_ENV $RANDOM_CLUSTER $FROM_RELEASE-$FROM_VERSION
    $ROOT/hack/pulumi/deploy.sh install_manager $TEST_ENV $RANDOM_CLUSTER-upgrade
fi

$GINKGO \
    -stream \
    --nodes=4 \
    $ROOT/tests \
    -- \
    --kubeconfig=${SHARED_TIER_KUBECONFIG} \
    --context=${SHARED_TIER_CONTEXT} \
    --infra-kubeconfig=${INFRA_KUBECONFIG} \
    --infra-context=${INFRA_CONTEXT} \
    --aws-region=${VAR_AWS_REGION} \
    --kube-cluster-name-base=${RANDOM_CLUSTER} \
    --selector="${SELECTOR}" \
    --test.timeout=30m

# clean environment if MODE is auto
if [[ $MODE == "auto" ]]; then
    $KUBECTL wait --for delete ns \
        --kubeconfig=${INFRA_KUBECONFIG} \
        --context=${INFRA_CONTEXT} \
        --timeout=5m \
        -l testing.tidbcloud.com/for=e2e,testing.tidbcloud.com/e2e-id=${RANDOM_CLUSTER}

    $ROOT/hack/pulumi/deploy.sh uninstall_manager $TEST_ENV $RANDOM_CLUSTER
    $ROOT/hack/pulumi/deploy.sh uninstall_manager $TEST_ENV $RANDOM_CLUSTER-upgrade
fi

