Pytest plugin for analyzing resource usage.
Project description
pytest-monitor
Pytest-monitor is a pytest plugin designed for analyzing resource usage.
Features
Analyze your resources consumption through test functions:
memory consumption
time duration
CPU usage
Keep a history of your resource consumption measurements.
Compare how your code behaves between different environments.
Usage
Simply run pytest as usual: pytest-monitor is active by default as soon as it is installed. After running your first session, a .pymon sqlite database will be accessible in the directory where pytest was run.
Example of information collected for the execution context:
ENV_H |
CPU_COUNT |
CPU_FREQUENCY_MHZ |
CPU_TYPE |
CPU_VENDOR |
RAM_TOTAL_MB |
MACHINE_NODE |
MACHINE_TYPE |
MACHINE_ARCH |
SYSTEM_INFO |
PYTHON_INFO |
---|---|---|---|---|---|---|---|---|---|---|
8294b1326007d9f4c8a1680f9590c23d |
36 |
3000 |
x86_64 |
Intel(R) Xeon(R) Gold 6154 CPU @ 3.00GHz |
772249 |
some.host.vm.fr |
x86_64 |
64bit |
Linux - 3.10.0-693.el7.x86_64 |
3.6.8 (default, Jun 28 2019, 11:09:04) n[GCC … |
Here is an example of collected data stored in the result database:
RUN_DATE |
ENV_H |
SCM_ID |
ITEM_START_TIME |
ITEM |
KIND |
COMPONENT |
TOTAL_TIME |
USER_TIME |
KERNEL_TIME |
CPU_USAGE |
MEM_USAGE |
---|---|---|---|---|---|---|---|---|---|---|---|
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:36.890477 |
pkg1.test_mod1/test_sleep1 |
function |
None |
1.005669 |
0.54 |
0.06 |
0.596618 |
1.781250 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:39.912029 |
pkg1.test_mod1/test_heavy[10-10] |
function |
None |
0.029627 |
0.55 |
0.08 |
21.264498 |
1.781250 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:39.948922 |
pkg1.test_mod1/test_heavy[100-100] |
function |
None |
0.028262 |
0.56 |
0.09 |
22.998773 |
1.781250 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:39.983869 |
pkg1.test_mod1/test_heavy[1000-1000] |
function |
None |
0.030131 |
0.56 |
0.10 |
21.904277 |
2.132812 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:40.020823 |
pkg1.test_mod1/test_heavy[10000-10000] |
function |
None |
0.060060 |
0.57 |
0.14 |
11.821601 |
41.292969 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:40.093490 |
pkg1.test_mod2/test_sleep_400ms |
function |
None |
0.404860 |
0.58 |
0.15 |
1.803093 |
2.320312 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:40.510525 |
pkg2.test_mod_a/test_master_sleep |
function |
None |
5.006039 |
5.57 |
0.15 |
1.142620 |
2.320312 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:45.530780 |
pkg3.test_mod_cl/test_method1 |
function |
None |
0.030505 |
5.58 |
0.16 |
188.164762 |
2.320312 |
2020-02-17T09:11:36.731233 |
8294b1326007d9f4c8a1680f9590c23d |
de23e6bdb987ae21e84e6c7c0357488ee66f2639 |
2020-02-17T09:11:50.582954 |
pkg4.test_mod_a/test_force_monitor |
function |
test |
1.005015 |
11.57 |
0.17 |
11.681416 |
2.320312 |
Documentation
A full documentation is available.
Installation
You can install pytest-monitor via conda (through the conda-forge channel):
$ conda install pytest-monitor -c https://conda.anaconda.org/conda-forge
Another possibility is to install pytest-monitor via pip from PyPI:
$ pip install pytest-monitor
Requirements
You will need a valid Python 3.5+ interpreter. To get measures, we rely on:
psutil to extract CPU usage
memory_profiler to collect memory usage
and pytest (obviously!)
Contributing
Contributions are very welcome. Tests can be run with tox. Before submitting a pull request, please ensure that:
both internal tests and examples are passing.
internal tests have been written if necessary.
if your contribution provides a new feature, make sure to provide an example and update the documentation accordingly.
License
This code is distributed under the MIT license. pytest-monitor is free, open-source software.
Issues
If you encounter any problem, please file an issue along with a detailed description.
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_monitor-1.6.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | eecf86abed2d5dcc69d17c027539a01b0975631bb65b675b680d7460f198612d |
|
MD5 | 96246dfac143267c3b131cbb62ffaf2b |
|
BLAKE2b-256 | 07b8c64f2c52579a607ce19556971c01d14d3325178dc0bda21bdd29afce10bd |