2021-04-27 19:27:50 +08:00
#!/bin/bash
2022-01-10 13:57:34 +08:00
# Licensed to the LF AI & Data foundation 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
2021-04-27 19:27:50 +08:00
# with the License. You may obtain a copy of the License at
#
2022-01-10 13:57:34 +08:00
# http://www.apache.org/licenses/LICENSE-2.0
2021-04-27 19:27:50 +08:00
#
2022-01-10 13:57:34 +08:00
# 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-04-27 19:27:50 +08:00
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-12-10 10:42:14 +08:00
2021-12-10 16:25:06 +08:00
2021-11-16 21:30:23 +08:00
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
2024-08-02 19:32:32 +08:00
docker compose up -d
2021-04-27 19:27:50 +08:00
else
2021-07-03 14:52:28 +08:00
if [ [ " ${ MILVUS_CLIENT } " = = "pymilvus" ] ] ; then
2021-12-30 14:22:51 +08:00
# Better to run pytest under pytest workspace
2021-08-20 11:00:56 +08:00
export MILVUS_PYTEST_WORKSPACE = "/milvus/tests/python_client"
2024-08-02 19:32:32 +08:00
docker compose run --rm pytest /bin/bash -c " pytest -n ${ PARALLEL_NUM } --host ${ MILVUS_SERVICE_IP } --port ${ MILVUS_SERVICE_PORT } \
2021-09-01 19:43:59 +08:00
--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