Skip to main content

Log memory usage during tests

Project description

pytest-memlog

Continuously logs the memory usage of your test session.

Memlog graph of the example tests

Installation

pip install pytest-memlog

Usage

Use --memlog to enable the plugin.

By default, memory usage of a test run will be logged to memlog.json.

Options

  • --memlog-path: The path to save the log to, defaults to memlog.json.
  • --memlog-interval: Measurement interval, defaults to 0.1 seconds.
  • --memlog-warmup: Memlog will capture memory usage for this many seconds before starting your tests. Defaults to 0.

Markers

  • limit_memory(memory): Will mark a test as failed if the program memory exceeds this number during a test run. Note that due to garbage collection, this does not necessarily reflect memory usage in a specific test.

Implementation

pytest-memlog uses a separate process to track the memory of the test process. This allows for a very low overhead, as the only data passed between the processes are test names & the maximum memory usage during a test.

The memory logging is done at fixed intervals (given by --memlog-interval) and saved to a JSON log. Each log entry is of the following form:

    {
        "rss": 40939520,
        "time": 1814626.921,
        "name": "tests/test_basic.py::test_0"
    }
  • rss is the used memory, in bytes.
  • time is the value from time.monotonic(). You'll probably want to normalize this when analyzing.
  • name is the name of the current running test, or an empty string between tests.

Analysis

The visualization at the top was generated using the data from our examples.

You can see how in the sample notebook or view it live.

To generate the log for the examples run:

pytest --memlog ./examples/

Or use it on your own tests!

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_memlog-0.1.0a1.tar.gz (5.8 kB view hashes)

Uploaded Source

Built Distribution

pytest_memlog-0.1.0a1-py3-none-any.whl (6.8 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