2021-04-27 19:27:50 +08:00
#!/bin/bash
# Copyright (C) 2019-2020 Zilliz. All rights reserved.
#
# Licensed 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.
2021-11-11 13:13:32 +08:00
# Exit immediately for non zero status
2021-04-27 19:27:50 +08:00
set -e
2021-11-12 13:33:30 +08:00
# Print commands
2021-04-27 19:27:50 +08:00
set -x
MILVUS_HELM_RELEASE_NAME = " ${ MILVUS_HELM_RELEASE_NAME :- milvus -testing } "
2021-06-21 12:00:06 +08:00
MILVUS_CLUSTER_ENABLED = " ${ MILVUS_CLUSTER_ENABLED :- false } "
2021-04-27 19:27:50 +08:00
MILVUS_HELM_NAMESPACE = " ${ MILVUS_HELM_NAMESPACE :- default } "
2021-09-01 19:43:59 +08:00
PARALLEL_NUM = " ${ PARALLEL_NUM :- 6 } "
2021-07-03 14:52:28 +08:00
MILVUS_CLIENT = " ${ MILVUS_CLIENT :- pymilvus } "
2021-04-27 19:27:50 +08:00
SOURCE = " ${ BASH_SOURCE [0] } "
while [ -h " $SOURCE " ] ; do # resolve $SOURCE until the file is no longer a symlink
DIR = " $( cd -P " $( dirname " $SOURCE " ) " && pwd ) "
SOURCE = " $( readlink " $SOURCE " ) "
[ [ $SOURCE != /* ] ] && SOURCE = " $DIR / $SOURCE " # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done
ROOT = " $( cd -P " $( dirname " $SOURCE " ) /../.. " && pwd ) "
2021-07-01 11:10:11 +08:00
if [ [ " ${ TEST_ENV :- } " = ~ ^kind* ] ] ; then
2021-07-03 14:52:28 +08:00
if [ [ " ${ MILVUS_CLUSTER_ENABLED } " = = "false" ] ] ; then
MILVUS_LABELS = " app.kubernetes.io/instance= ${ MILVUS_HELM_RELEASE_NAME } ,component=standalone "
else
MILVUS_LABELS = " app.kubernetes.io/instance= ${ MILVUS_HELM_RELEASE_NAME } ,component=proxy "
fi
2021-07-01 11:10:11 +08:00
SERVICE_TYPE = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.type}' )
2021-04-27 19:27:50 +08:00
2021-07-01 11:10:11 +08:00
if [ [ " ${ SERVICE_TYPE } " = = "LoadBalancer" ] ] ; then
2021-07-03 14:52:28 +08:00
MILVUS_SERVICE_IP = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].status.loadBalancer.ingress[0].ip}' )
MILVUS_SERVICE_PORT = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.ports[0].port}' )
2021-07-01 11:10:11 +08:00
elif [ [ " ${ SERVICE_TYPE } " = = "NodePort" ] ] ; then
2021-07-03 14:52:28 +08:00
MILVUS_SERVICE_IP = $( kubectl get nodes --namespace " ${ MILVUS_HELM_NAMESPACE } " -o jsonpath = '{.items[0].status.addresses[0].address}' )
MILVUS_SERVICE_PORT = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.ports[0].nodePort}' )
2021-07-01 11:10:11 +08:00
else
2021-11-16 21:30:23 +08:00
#[remove-kind] use service ip when disable kind to run ci test
if [ [ -n " ${ DISABLE_KIND :- } " ] ] ; then
MILVUS_SERVICE_IP = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.clusterIP}' )
MILVUS_SERVICE_PORT = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.ports[0].port}' )
else
MILVUS_SERVICE_IP = "127.0.0.1"
POD_NAME = $( kubectl get pods --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].metadata.name}' )
MILVUS_SERVICE_PORT = $( kubectl get service --namespace " ${ MILVUS_HELM_NAMESPACE } " -l " ${ MILVUS_LABELS } " -o jsonpath = '{.items[0].spec.ports[0].port}' )
kubectl --namespace " ${ MILVUS_HELM_NAMESPACE } " port-forward " ${ POD_NAME } " " ${ MILVUS_SERVICE_PORT } " &
PORT_FORWARD_PID = $!
trap " kill -TERM ${ PORT_FORWARD_PID } " EXIT
fi
2021-07-01 11:10:11 +08:00
fi
2021-04-27 19:27:50 +08:00
fi
2021-12-08 13:20:23 +08:00
2021-11-16 21:30:23 +08:00
#[remove-kind] use pytest run in the krte when remove kinD cluster
if [ [ -n " ${ DISABLE_KIND :- } " ] ] ; then
cd ${ ROOT } /tests/python_client
python3 -V
export CI_LOG_PATH = /tmp/ci_logs/test
if [ ! -d " ${ CI_LOG_PATH } " ] ; then
mkdir -p ${ CI_LOG_PATH }
2021-04-27 19:27:50 +08:00
fi
2021-11-16 21:30:23 +08:00
pytest -n ${ PARALLEL_NUM } --host ${ MILVUS_SERVICE_IP } --port ${ MILVUS_SERVICE_PORT } \
--html= ${ CI_LOG_PATH } /report.html --self-contained-html ${ @ :- }
else
pushd " ${ ROOT } /tests/docker "
if [ [ " ${ TEST_ENV :- } " = ~ ^kind* ] ] ; then
export PRE_EXIST_NETWORK = "true"
export PYTEST_NETWORK = "kind"
fi
2021-04-27 19:27:50 +08:00
2021-11-16 21:30:23 +08:00
export MILVUS_SERVICE_IP = " ${ MILVUS_SERVICE_IP :- 127 .0.0.1 } "
export MILVUS_SERVICE_PORT = " ${ MILVUS_SERVICE_PORT :- 19530 } "
2021-04-27 19:27:50 +08:00
if [ [ " ${ MANUAL :- } " = = "true" ] ] ; then
docker-compose up -d
else
2021-07-03 14:52:28 +08:00
if [ [ " ${ MILVUS_CLIENT } " = = "pymilvus" ] ] ; then
2021-08-20 11:00:56 +08:00
export MILVUS_PYTEST_WORKSPACE = "/milvus/tests/python_client"
2021-09-01 19:43:59 +08:00
docker-compose run --rm pytest /bin/bash -c " pytest -n ${ PARALLEL_NUM } --host ${ MILVUS_SERVICE_IP } --port ${ MILVUS_SERVICE_PORT } \
--html= \$ { CI_LOG_PATH} /report.html --self-contained-html ${ @ :- } "
2021-07-03 14:52:28 +08:00
fi
2021-04-27 19:27:50 +08:00
fi
2021-11-16 21:30:23 +08:00
popd
fi