Skip to content

Commit

Permalink
Add CLI integration tests. (#985)
Browse files Browse the repository at this point in the history
Adds a CLI start server test.

Run `poetry lock --no-update` since we didnt previously and the lock was
out of date.

---------

Co-authored-by: Daniel Smilkov <[email protected]>
  • Loading branch information
nsthorat and dsmilkov authored Dec 19, 2023
1 parent 6fd50a7 commit 5c7330e
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 30 deletions.
4 changes: 4 additions & 0 deletions .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ jobs:
poetry run pip3 install --force-reinstall --pre torch==2.* --index-url https://download.pytorch.org/whl/nightly/cpu
poetry run pip3 install typing_extensions==4.7.1 --force-reinstall
- name: Test CLI
run: |
./integration_tests/run_integration_tests.sh
# We run testing before linting since testing, surprisingly, is much faster.
- name: Test python
run: |
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ dist/
# Data to ignore.
/data
demo_data/
# Artifacts from integration test data.
test_data/

# Ignore pickled concept models.
data/concept/**/*.pkl
Expand Down
36 changes: 36 additions & 0 deletions integration_tests/run_integration_tests.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Bash-based integration tests for lilac.

set -e # Fail if any of the commands below fail.

# Make sure the CLI succeeds for test_data.
mkdir -p test_data
touch test_data/lilac.yml

# Find a free port.
PORT=$(python -c 'import socket; s=socket.socket(); s.bind(("", 0)); print(s.getsockname()[1]); s.close()');


poetry run lilac start ./test_data --port $PORT &
pid="$!"

URL="http://localhost:$PORT/docs"
start_time="$(date -u +%s)"
TIMEOUT_SEC=15
until curl --fail --silent "$URL" > /dev/null; do
sleep 1
current_time="$(date -u +%s)"
elapsed_seconds=$(($current_time-$start_time))
if [ $elapsed_seconds -gt $TIMEOUT_SEC ]; then
echo "Timeout $TIMEOUT_SEC seconds to reach server."
kill $pid
exit 1
fi
done

echo "GET request to $URL succeeded."

kill $pid

echo
echo "CLI integration tests passed."
exit 0
33 changes: 3 additions & 30 deletions poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions scripts/test.sh
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,4 @@ set -e

./scripts/test_ts.sh
./scripts/test_py.sh
./integration_tests/run_integration_tests.sh

0 comments on commit 5c7330e

Please sign in to comment.