Skip to main content

Overview

Deployv addon: Gitlab tools. Generated by cookiecutter and cookiecutter-deploy-addon.

A small set of tools to automate repetitive tasks for testing gitlab repositories.

It is important to say that this is not by any mean a replacement for the MQT tools, these are tools that we need in order to make gitlab-ci work properly with the MQT tools.

  • Free software: BSD license

Installation

pip install vxci

Documentation

https://vxci.readthedocs.io/

Development

To run the all tests run:

tox

Note, to combine the coverage data from all the tox environments run:

Windows

set PYTEST_ADDOPTS=--cov-append
tox

Other

PYTEST_ADDOPTS=--cov-append tox

Changelog

Unreleased

  • check_log: on Odoo 17.0 and later the “0 failed, 0 error(s) of 0 tests when loading database” warning is ignored again, as on 16.0: Odoo logs it from odoo.tests.result now, not odoo.tests.runner. With --pytest a module whose tests are all post_install logs it at install.

  • check_log: the <module>.pytest.log of a --pytest run, the console output of pytest, is no longer read as an install log. It logged “Modules loaded not found in logs” as an ERROR for each module.

  • staggered_install: a job that does not pass --pytest runs again. vxci 0.0.64 failed before starting with “Some environment variables were not found: STAGGERED_PYTEST”, since a flag left off counted as a missing variable; no flag is required any more.

  • staggered_install: --pytest (STAGGERED_PYTEST), with --isolated --parallel N, runs the post_install tests of each module under pytest-odoo with N pytest-xdist workers on copies of its installed database, instead of one class after another inside the install. The pytest versions clickbot pins, plus pytest-cov, are installed in the instance container.

  • clickbot: on Odoo 20.0 each bucket walks only its own apps again. 20.0 starts the clickbot with an object of options, { xmlId: ... }, and the bare xmlid the suite passed left it empty, which walks every app: each bucket walked the whole database and the job ran out of its hour.

  • clickbot: pytest and its plugins are installed as root. In the Odoo 16.0 image /home/odoo/.local belongs to root, and the install as odoo failed with “Permission denied: ‘/home/odoo/.local/lib’”.

  • clickbot: the suite also fails when an integer id, a foreign key or a sequence reached CLICKBOT_ID_CEILING_PCT percent (60 by default) of the largest value it can take, and logs the 20 fullest ones. The ceiling of an integer column fed by a bigint sequence is the integer one. CLICKBOT_ID_CEILING_ALLOWED accepts table.column items above the threshold. It reads only the catalog, the sequences and indexed maximums, so it takes seconds on large databases.

  • clickbot: Odoo 16.0 or later, no longer 19.0 only. The suite starts the clickbot the way Odoo’s own test of each version does (the debug services in 16.0, the module loader since 17.0), on /web or /odoo (18.0), passes success_signal only where browser_js takes it, posts the JSON-RPC call without build_rpc_payload before 19.0, reads failure_count only where ir.cron has it, and blocks the external requests of the crons in 16.0, which does not block them in tests.

  • check_log: when the log path holds the staggered_logs folder of a staggered_install --isolated --parallel run, every warning is reported with the install that logged it, templates included, and that install’s log, and a table of those installs closes the output. The joined odoo.log.gz_* still decides the exit status, and a warning no install log holds, such as one from another job’s log, is still reported as it is.

  • clickbot: new command. Restores the database a test job kept (db.pgc and filestore.tgz in CLICKBOT_DIR, $CI_COMMIT_REF_SLUG/clickbot by default) and runs the vxci_clickbot suite shipped in this package on it, under pytest-odoo with CLICKBOT_WORKERS pytest-xdist workers (4) in one job: Odoo’s clickbot over every app admin and demo see, and “Run Manually” on every scheduled action. The apps are packed into CLICKBOT_APP_BUCKETS tests (12) on the run itself, by how many menus each one has, never from a table of times; the crons into CLICKBOT_CRON_BUCKETS (8). A project tunes it with CLICKBOT_USERS, CLICKBOT_SKIP_APPS, CLICKBOT_SKIP_MENUS, CLICKBOT_SKIP_CRONS, CLICKBOT_SETUP (package.module:function hooks called with env), CLICKBOT_TIMEOUT, CLICKBOT_CRON_TIMEOUT and CLICKBOT_CURSOR_LOCK_TIMEOUT (120 s, Odoo’s 20 s is too short on a loaded runner). The verdict is pytest’s exit code and the JUnit report, written to CLICKBOT_DIR with odoo.log; a skipped test turns it red. Odoo 19.0 or later. It replaces the .gitlab/clickbot.sh and the click_all test files each project carried.

  • staggered_install –isolated –parallel N (STAGGERED_PARALLEL): runs the whole plan in one job, N installs at a time off one queue, instead of a share of a parallel: job fixed beforehand by staggered_costs.json. The work is done by odoo-bin-server-staggered (vauxoo/odoo-staggered) inside the instance container, the same command a developer runs locally, installed from the wheel quay.io/vauxoo/dockerv carries in ODOO_STAGGERED_WHEEL_DIR. vxci passes it the modules, ODOO_TEST_TAGS, the language, coverage around each module install, STAGGERED_KEEP_DB and --allow_deprecated, and collects the saved log, the log of every install and the coverage as before. Measured on vauxoo/ircodoo: 2868 s in one job, against 3150 s to 3364 s for the slowest of five nodes.

  • build_image: with ORCHESTSH=True, the image is looked up by the name the orchestsh CLI gave it (the image_name.env it writes). A main branch whose name is not VERSION (e.g. 20.0 building saas-19.4) can now set MAIN_BRANCH to push the <MAIN_APP>-<VERSION>-latest tag instead of failing with “Unable to find the recently built image”, with the orchestsh CLI before and after orchestsh/executor!366.

  • test_repo/test_image: with ORCHESTSH=True, instance_image is IMAGE_REPO:IMAGE_TAG when both are set (the image_name.env sourced from the build job), and is computed only as a fallback.

  • common: new optional ORCHESTSH_REGISTRY and ORCHESTSH_TOKEN environment variables. When the registry is set, the image notification sent to ORCHEST_REGISTRY after a push is also sent to OrchestSh, so both systems can run side by side while projects migrate. A failed OrchestSh notification is logged and does not fail the job.

  • staggered_install: new command that installs the modules of a repository one at a time on a single database, dependencies first and the main app last, running each module’s own tests as it is installed. A module that fails does not stop the rest. Every install runs under coverage run -p and the run combines them into .coverage_<job name>. No run asks for demo data.

  • staggered_install –isolated: installs each module alone on a clone of a template database holding exactly the closure of what it declares, so a module using another one it never declared fails instead of passing on what an earlier module brought in. Splits itself across the nodes of a GitLab parallel: job (CI_NODE_INDEX/CI_NODE_TOTAL), balanced with the per-module seconds of staggered_costs.json when the repository commits it. STAGGERED_KEEP_DB keeps the main app’s database. Demo data that Odoo failed to load ends the run red.

  • coverage: new COVERAGE_EXCLUDE_LINES environment variable to append regexes to the exclude_lines section of the generated .coveragerc. A repository can now skip a whole family of lines from its variables.sh instead of spreading # pragma: no cover comments over the source. Use \n to separate several regexes, since variables.sh only accepts single-line exports.

  • tools_test: fall back to Chrome for Testing when a pinned Chrome version is no longer published in the Google apt pool, which purges old builds. Keeps the older Chrome that Odoo’s legacy --headless tour driver needs installable, so browser tours stop being silently skipped with “Chrome executable not found”.

0.1.0 (2017-03-03)

  • First release on PyPI.

Metadata

Release files for vxci 0.0.66

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vxci 0.0.66
File Size Uploaded Provenance
vxci-0.0.66.tar.gz 94.1 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for vxci 0.0.66
File Interpreter ABI Platform
vxci-0.0.66-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 167.1 kB

Release files / vxci-0.0.66.tar.gz

Download URL vxci-0.0.66.tar.gz
Size 94.1 kB
Tags Source
SHA-256 checksum
How to use checksums
f188e56c501bf724c6baf888d6c7affb89b983b0fb84dd6b9ccab9515a35f803
BLAKE2b-256 checksum
How to use checksums
5fbdfe1fec5a5db5c7d0620016e039adc4b38b6f2df902e7af86ede3d6165f4d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.16

Release files / vxci-0.0.66-py2.py3-none-any.whl

Download URL vxci-0.0.66-py2.py3-none-any.whl
Size 73.1 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
7850fe6fa381d0d94719e390c439d6e72cbc1bf1b3094e269a74efe6662107ac
BLAKE2b-256 checksum
How to use checksums
616269c9d2ca1b3e6e0016c85284cf4da9728894682e4c69c9e890a2895f0bed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.10.16

Security for vxci 0.0.66

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

0.0.66 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page