selects tests affected by changed files and methods
Project description
Preface
This is the closed-source Testmon. The repo has a couple of subprojects:
-
testmon_dev: the server, it has normal change code/execute cycle which we're used to when developing in Python. open source testmon (OSPT) is generated from here (via preprocess). Main package is called testmon_dev, and it is installed via
pip install -r requirements/prod.txt -e .
-
Open Source Testmon (OSPT): This is the opensource pytest-testmon released to PYPI, attracts new users. It's generated from testmon-dev, comments and type hints are stripped out. Tests are also generated and executed via tox for a couple of combinations of dependencies and python versions, but they are not published. Release process of OSPT
We generate pytest-testmon by running preprocess on the source.
preprocess
template directives are in Python comments so testmon_dev can be executed as is and is the template for
pytest-testmon.
Process
Installation and tests
Have a look at .github/workflows/tests.yml to see how CI is set up and what are the prerequisites. (e.g. Python 3.7 and 3.11)
You should clone this repo (https://github.com/tarpas/testmon-dev/) and 2 additional ones. If you only clone testmon-dev initially you can still build, but you'll have to come back to this set-up when you will want to push to one of the other repos.
git clone https://github.com/tarpas/testmon-dev/
git clone https://github.com/tarpas/pytest-testmon/
git clone https://github.com/tarpas/testmon.org/
git clone https://github.com/tarpas/testmon_web/
The build in testmon-dev also generates files into other directories: pytest-testmon (open source) and testmon.org ( pelican site source) on the same level.
cd testmon-dev
# create and activate virtualenv (e.g. python -m venv .venv)
pip install -r requirements/prod.txt -e .
# increase ulimit if needed
ulimit -n 1024
# run tests
pytest
# build pytest-testmon and run it's test suite (tox)
python tools/build/build.py testmon
cd ../pytest-testmon
tox
Contributing
- We use pre-commit so run
pre-commit install
andpre-commit install-hooks
before commiting. - Run tests (pytest).
- Build pytest-testmon
python tools/build/build.py testmon
and run it's test suitecd ..;cd pytest-testmon;tox
See also process
Data model
Current denormalized schema (client):
Described in file 'docs/schema_client.md'
Current denormalized schema (client):
Described in file 'docs/schema_server.md'
runtime environments
- development (and build, test, lint)
- local dogfooding is possible (running the test suite with pytest —testmon)
- CI - GHA
- client installations in the wild - open source pytest-tesmon, distributed via PYPI without comments and types. Tested with comprehensive test suite which is executed in many combinations of dependencies via tox and GHA(windows/linux), but the tests are not published
- server
- performance regression tests via valgrind cachegrind (see Dockerfile and tools/benchmark.py)
performance testing/benchmarking
docker build . --platform=linux/arm64 -t testmon -f Dockerfile.perf-benchmark
docker run -it -v "$(pwd)":/mount -t testmon
Fly deployment
automatically
git reset --hard the deploy
branch to the commit you want to deploy and push --force
it to the tarpas/testmon-dev repo. There is a GH action which automatically deploys.
manually
fly deploy
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for pytest_testmon_dev-2.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b1f22ff57e87652594d9e63b9d491c9548d4ba1e5d0321b542d9fa19c855df7 |
|
MD5 | f7bd12cb8f2a44b41e9be9b89466db07 |
|
BLAKE2b-256 | f2a61359e83e39b7b03e9fbf1bfa33ea4f61c0cd57b1add6cd4abe47ad222df7 |