Spaces:
Sleeping
Sleeping
#!/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 | |