Skip to main content

Pytest plugin for analyzing resource usage.

Project description

Pytest-Monitor

pytest-monitor

Documentation Status PyPI version Python versions See Build Status on Circle CI https://anaconda.org/conda-forge/pytest-monitor/badges/platforms.svg https://anaconda.org/conda-forge/pytest-monitor/badges/version.svg https://img.shields.io/badge/License-MIT-blue.svg

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.

Author

The main author of pytest-monitor is Jean-Sébastien Dieu, who can be reached at jean-sebastien.dieu@cfm.fr.


This pytest plugin was generated with Cookiecutter along with @hackebrot’s cookiecutter-pytest-plugin template.

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-monitor-1.6.0.tar.gz (16.1 kB view details)

Uploaded Source

Built Distribution

pytest_monitor-1.6.0-py3-none-any.whl (14.1 kB view details)

Uploaded Python 3

File details

Details for the file pytest-monitor-1.6.0.tar.gz.

File metadata

  • Download URL: pytest-monitor-1.6.0.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

File hashes

Hashes for pytest-monitor-1.6.0.tar.gz
Algorithm Hash digest
SHA256 4738a5195d6d7950a00e3bc8db87bb08caac9b4dbc3d05e6bb11dbbdf4be16ab
MD5 2728e63fa38fac568b01fbaf67bc9f7d
BLAKE2b-256 07afa46061e41bb9db181e60fdb3d507df213d84fd4354fc2af9cfcd2041c8b3

See more details on using hashes here.

File details

Details for the file pytest_monitor-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: pytest_monitor-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 14.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/3.10.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.8.8

File hashes

Hashes for pytest_monitor-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eecf86abed2d5dcc69d17c027539a01b0975631bb65b675b680d7460f198612d
MD5 96246dfac143267c3b131cbb62ffaf2b
BLAKE2b-256 07b8c64f2c52579a607ce19556971c01d14d3325178dc0bda21bdd29afce10bd

See more details on using hashes here.

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