Skip to main content

selects tests affected by changed files and methods

Project description

image

Preface

This is the closed-source Testmon. The repo has a couple of subprojects:

  1. 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 .

  2. 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

  1. We use pre-commit so run pre-commit install and pre-commit install-hooks before commiting.
  2. Run tests (pytest).
  3. Build pytest-testmon python tools/build/build.py testmon and run it's test suite cd ..;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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pytest-testmon-dev-2.0.3.tar.gz (51.9 kB view hashes)

Uploaded Source

Built Distribution

pytest_testmon_dev-2.0.3-py3-none-any.whl (30.4 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page