-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Loading status checks…
fix experiment synchronizer, run container as root, add Makefile
Showing
7 changed files
with
97 additions
and
31 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1,4 @@ | ||
*.pyc | ||
.idea | ||
/volume/deluge* | ||
/volume/deluge* | ||
*.timestamp |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
SHELL := bash | ||
|
||
.SHELLFLAGS := -eu -o pipefail -c | ||
|
||
.PHONY: test-unit-local \ | ||
start-local-integration-harness \ | ||
stop-local-integration-harness \ | ||
test-integration-local \ | ||
test-all-local \ | ||
test-unit-docker \ | ||
test-integration-docker \ | ||
clean | ||
|
||
# Runs the unit tests locally. | ||
unit: | ||
poetry run pytest -m "not integration" | ||
|
||
# Starts the local integration harness. This is required for running pytest with the "integration" marker. | ||
harness-start: | ||
rm -rf ${PWD}/volume/deluge-{1,2,3} | ||
docker compose -f docker-compose.local.yaml up | ||
|
||
# Stops the local integration harness. | ||
harness-stop: | ||
docker compose -f docker-compose.local.yaml down --volumes --remove-orphans | ||
|
||
# Runs the integration tests locally. This requires the integration harness to be running. | ||
integration: | ||
echo "NOTE: Make sure to have started the integration harness or this will not work" | ||
poetry run pytest -m "integration" | ||
|
||
tests: unit integration | ||
|
||
docker/.lastbuilt-test.timestamp: docker/bittorrent-benchmarks.Dockerfile | ||
docker build -t bittorrent-benchmarks:test -f ./docker/bittorrent-benchmarks.Dockerfile . | ||
touch docker/.lastbuilt-test.timestamp | ||
|
||
docker/.lastbuilt-release.timestamp: docker/bittorrent-benchmarks.Dockerfile | ||
docker build -t bittorrent-benchmarks:test --build-arg BUILD_TYPE="release" \ | ||
-f ./docker/bittorrent-benchmarks.Dockerfile . | ||
touch docker/.lastbuilt-release.timestamp | ||
|
||
# Builds the test image required for local dockerized integration tests. | ||
image-test: docker/.lastbuilt-test.timestamp | ||
image-release: docker/.lastbuilt-release.timestamp | ||
|
||
# Runs the unit tests in a docker container. | ||
unit-docker: image-test | ||
docker run --entrypoint poetry --rm bittorrent-benchmarks:test run pytest -m "not integration" | ||
|
||
# Runs the integration tests in a docker container. | ||
integration-docker: image-test | ||
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml down --volumes --remove-orphans | ||
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml up \ | ||
--abort-on-container-exit --exit-code-from test-runner | ||
|
||
tests-docker: unit-docker integration-docker | ||
|
||
clean: | ||
rm -rf docker/.lastbuilt* | ||
rm -rf volume/deluge-{1,2,3} | ||
docker compose -f docker-compose.local.yaml -f docker-compose.ci.yaml down --volumes --rmi all --remove-orphans |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,22 @@ | ||
FROM python:3.12-slim | ||
|
||
ARG UID=1000 | ||
ARG GID=1000 | ||
ARG BUILD_TYPE="test" | ||
|
||
RUN groupadd -g ${GID} runner \ | ||
&& useradd -u ${UID} -g ${GID} -s /bin/bash -m runner | ||
RUN mkdir /opt/bittorrent-benchmarks && chown -R runner:runner /opt/bittorrent-benchmarks | ||
RUN pip install poetry | ||
|
||
USER runner | ||
RUN mkdir /opt/bittorrent-benchmarks | ||
WORKDIR /opt/bittorrent-benchmarks | ||
|
||
COPY --chown=runner:runner pyproject.toml poetry.lock ./ | ||
RUN if [ "$BUILD_TYPE" = "production" ]; then \ | ||
echo "Image is a production build"; \ | ||
COPY pyproject.toml poetry.lock ./ | ||
RUN if [ "$BUILD_TYPE" = "release" ]; then \ | ||
echo "Image is a release build"; \ | ||
poetry install --only main --no-root; \ | ||
else \ | ||
echo "Image is a test build"; \ | ||
poetry install --no-root; \ | ||
fi | ||
|
||
COPY --chown=runner:runner . . | ||
COPY . . | ||
RUN poetry install --only main | ||
|
||
ENTRYPOINT ["poetry", "run", "bittorrent-benchmarks", "/opt/bittorrent-benchmarks/experiments.yaml"] |