chroma / bin /integration-test
badalsahani's picture
feat: chroma initial deploy
287a0bc
#!/usr/bin/env bash
set -e
export CHROMA_PORT=8000
function cleanup {
docker compose -f docker-compose.test.yml down --rmi local --volumes
rm server.htpasswd .chroma_env
}
function setup_auth {
local auth_type="$1"
case "$auth_type" in
basic)
docker run --rm --entrypoint htpasswd httpd:2 -Bbn admin admin > server.htpasswd
cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS_FILE="/chroma/server.htpasswd"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.providers.HtpasswdFileServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.basic.BasicAuthServerProvider"
EOF
;;
token)
cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS="test-token"
CHROMA_SERVER_AUTH_TOKEN_TRANSPORT_HEADER="AUTHORIZATION"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.token.TokenConfigServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.token.TokenAuthServerProvider"
EOF
;;
xtoken)
cat <<EOF > .chroma_env
CHROMA_SERVER_AUTH_CREDENTIALS="test-token"
CHROMA_SERVER_AUTH_TOKEN_TRANSPORT_HEADER="X_CHROMA_TOKEN"
CHROMA_SERVER_AUTH_CREDENTIALS_PROVIDER="chromadb.auth.token.TokenConfigServerAuthCredentialsProvider"
CHROMA_SERVER_AUTH_PROVIDER="chromadb.auth.token.TokenAuthServerProvider"
EOF
;;
*)
echo "Unknown auth type: $auth_type"
exit 1
;;
esac
}
trap cleanup EXIT
docker compose -f docker-compose.test.yml up --build -d
export CHROMA_INTEGRATION_TEST_ONLY=1
export CHROMA_API_IMPL=chromadb.api.fastapi.FastAPI
export CHROMA_SERVER_HOST=localhost
export CHROMA_SERVER_HTTP_PORT=8000
export CHROMA_SERVER_NOFILE=65535
echo testing: python -m pytest "$@"
python -m pytest "$@"
cd clients/js
# moved off of yarn to npm to fix issues with jackspeak/cliui/string-width versions #1314
npm install
npm run test:run
docker compose down
cd ../..
for auth_type in basic token xtoken; do
echo "Testing $auth_type auth"
setup_auth "$auth_type"
cd clients/js
docker compose --env-file ../../.chroma_env -f ../../docker-compose.test-auth.yml up --build -d
yarn test:run-auth-"$auth_type"
cd ../..
docker compose down
done