#
#  Licensed to the Apache Software Foundation (ASF) under one or more
#  contributor license agreements.  See the NOTICE file distributed with
#  this work for additional information regarding copyright ownership.
#  The ASF licenses this file to You under the Apache License, Version 2.0
#  (the "License"); you may not use this file except in compliance with
#  the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
#  Unless required by applicable law or agreed to in writing, software
#  distributed under the License is distributed on an "AS IS" BASIS,
#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
#  See the License for the specific language governing permissions and
#  limitations under the License.
#

# helloworld
array+=("helloworld")

# game
#array+=("game/go-server-game")
#array+=("game/go-server-gate")

# config-api
array+=("compatibility/config-api/rpc/triple")
array+=("compatibility/config-api/configcenter/nacos")
array+=("compatibility/config-api/configcenter/zookeeper")
array+=("compatibility/config-api/config-merge")

# error
array+=("compatibility/error/triple/hessian2")
array+=("compatibility/error/triple/pb")

# metrics
array+=("compatibility/metrics")

# tracing
array+=("otel/tracing/stdout")

# direct
array+=("compatibility/direct")

# filer
array+=("filter/token")
array+=("compatibility/filter/custom")
array+=("compatibility/filter/token")

# context
array+=("compatibility/context/dubbo")
array+=("compatibility/context/triple")
array+=("context")

# registry
array+=("registry/zookeeper")
array+=("registry/nacos")

# generic
#array+=("compatibility/generic/default") # illegal service type registered

#timeout
array+=("timeout")

#healthcheck
array+=("healthcheck")

#streaming
array+=("streaming")

#retry
array+=("retry")

# rpc
array+=("compatibility/rpc/dubbo")
#array+=("compatibility/rpc/triple/codec-extension")
array+=("compatibility/rpc/triple/hessian2")
array+=("compatibility/rpc/triple/msgpack")
array+=("compatibility/rpc/triple/pb/dubbogo-grpc")
#array+=("compatibility/rpc/grpc")
array+=("compatibility/rpc/jsonrpc")
array+=("compatibility/rpc/triple/pb2")

array+=("rpc/grpc")
array+=("rpc/triple/pb")
array+=("rpc/triple/pb2")
array+=("rpc/triple/pb-json")

# tls
#array+=("compatibility/tls/dubbo")# tls.LoadX509KeyPair(certs{../../../x509/server1_cert.pem}, privateKey{../../../x509/server1_key.pem}) = err:open ../../../x509/server1_cert.pem: no such file or directory
#array+=("compatibility/tls/triple")# tls.LoadX509KeyPair(certs{../../../x509/server1_cert.pem}, privateKey{../../../x509/server1_key.pem}) = err:open ../../../x509/server1_cert.pem: no such file or directory
#array+=("compatibility/tls/grpc")# tls.LoadX509KeyPair(certs{../../../x509/server1_cert.pem}, privateKey{../../../x509/server1_key.pem}) = err:open ../../../x509/server1_cert.pem: no such file or directory

# async
array+=("compatibility/async")

# polaris
array+=("compatibility/polaris/registry")
array+=("compatibility/polaris/limit")

# error
array+=("error")

#config_center
array+=("config_center/nacos")
array+=("config_center/zookeeper")

# compatibility
## registry
array+=("compatibility/registry/zookeeper")
array+=("compatibility/registry/nacos")
array+=("compatibility/registry/etcd")
array+=("compatibility/registry/servicediscovery/zookeeper")
array+=("compatibility/registry/servicediscovery/nacos")
array+=("compatibility/registry/all/zookeeper")
array+=("compatibility/registry/all/nacos")

# config yaml
array+=("config_yaml")
# replace tls config
echo "The prefix of certificate path of the following files were replaced to \"$(pwd)/tls\"."
find "$(pwd)/tls" -type f -name '*.yml' -print0 | xargs -0 -n1
find "$(pwd)/tls" -type f -name '*.yml' -print0 | xargs -0 sed -i 's#\.\.\/\.\.\/\.\.#'"$(pwd)/tls"'#g'

DOCKER_DIR=$(pwd)/integrate_test/dockercompose
DOCKER_COMPOSE_CMD="docker-compose"

if [ "$(docker compose version > /dev/null; echo $?)" -eq 0 ]; then
  DOCKER_COMPOSE_CMD="docker compose"
fi

$DOCKER_COMPOSE_CMD -f "$DOCKER_DIR"/docker-compose.yml up -d
bash -f "$DOCKER_DIR"/docker-health-check.sh
for ((i = 0; i < ${#array[*]}; i++)); do
  ./integrate_test.sh "${array[i]}"
  result=$?
  if [ $result -gt 0 ]; then
    $DOCKER_COMPOSE_CMD -f "$DOCKER_DIR"/docker-compose.yml down
    exit $result
  fi
done
$DOCKER_COMPOSE_CMD -f "$DOCKER_DIR"/docker-compose.yml down
