Spaces:
Sleeping
Sleeping
| set -e | |
| function cleanup { | |
| # Restore the previous kube context | |
| kubectl config use-context $PREV_CHROMA_KUBE_CONTEXT | |
| # Kill the tunnel process | |
| kill $TUNNEL_PID | |
| minikube delete -p chroma-test | |
| } | |
| trap cleanup EXIT | |
| # Save the current kube context into a variable | |
| export PREV_CHROMA_KUBE_CONTEXT=$(kubectl config current-context) | |
| # Create a new minikube cluster for the test | |
| minikube start -p chroma-test | |
| # Add the ingress addon to the cluster | |
| minikube addons enable ingress -p chroma-test | |
| minikube addons enable ingress-dns -p chroma-test | |
| # Setup docker to build inside the minikube cluster and build the image | |
| eval $(minikube -p chroma-test docker-env) | |
| docker build -t server:latest -f Dockerfile . | |
| docker build -t chroma-coordinator:latest -f go/coordinator/Dockerfile . | |
| docker build -t worker -f rust/worker/Dockerfile . --build-arg CHROMA_KUBERNETES_INTEGRATION=1 | |
| # Apply the kubernetes manifests | |
| kubectl apply -f k8s/deployment | |
| kubectl apply -f k8s/crd | |
| kubectl apply -f k8s/cr | |
| kubectl apply -f k8s/test | |
| # Wait for the pods in the chroma namespace to be ready | |
| kubectl wait --namespace chroma --for=condition=Ready pods --all --timeout=400s | |
| # Run mini kube tunnel in the background to expose the service | |
| minikube tunnel -c true -p chroma-test & | |
| TUNNEL_PID=$! | |
| # Wait for the tunnel to be ready. There isn't an easy way to check if the tunnel is ready. So we just wait for 10 seconds | |
| sleep 10 | |
| export CHROMA_CLUSTER_TEST_ONLY=1 | |
| export CHROMA_SERVER_HOST=$(kubectl get svc server -n chroma -o=jsonpath='{.status.loadBalancer.ingress[0].ip}') | |
| export PULSAR_BROKER_URL=$(kubectl get svc pulsar-lb -n chroma -o=jsonpath='{.status.loadBalancer.ingress[0].ip}') | |
| export CHROMA_COORDINATOR_HOST=$(kubectl get svc coordinator-lb -n chroma -o=jsonpath='{.status.loadBalancer.ingress[0].ip}') | |
| export CHROMA_SERVER_GRPC_PORT="50051" | |
| echo "Chroma Server is running at port $CHROMA_SERVER_HOST" | |
| echo "Pulsar Broker is running at port $PULSAR_BROKER_URL" | |
| echo "Chroma Coordinator is running at port $CHROMA_COORDINATOR_HOST" | |
| echo testing: python -m pytest "$@" | |
| python -m pytest "$@" | |
| export CHROMA_KUBERNETES_INTEGRATION=1 | |
| cd go/coordinator | |
| go test -timeout 30s -run ^TestNodeWatcher$ github.com/chroma/chroma-coordinator/internal/memberlist_manager | |