Skip to main content

Fake Sentry service for debugging and integration tests

Project description

Kent is a service for debugging and integration testing Sentry.

Code:

https://github.com/willkg/kent/

Issues:

https://github.com/willkg/kent/issues

License:

MPL v2

Goals

Goals of Kent:

  1. make it possible to debug before_send and before_breadcrumb sanitization code when using sentry-sdk

  2. make it possible to debug other sentry error submission payload issues

  3. make it possible to write integration tests against a fake sentry instance

Quick start

Installing and running on your local machine

  1. Install Kent.

    You can install Kent from PyPI with pipx or pip or whatever:

    pipx install kent

    You can install a REVISH (“main”, branch name, commit, whatever) from GitHub:

    pipx install https://github.com/willkg/kent/archive/refs/heads/<REVISH>.zip

    You can install from a checked out version of this repository:

    pipx install .
  2. Run Kent:

    kent-server run [-h HOST] [-p PORT]

Running in a Docker container

I’m using something like this:

FROM python:3.10.1-alpine3.15

WORKDIR /app/

ENV PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

RUN pip install -U 'pip>=8' && \
    pip install --no-cache-dir 'kent==VERSION'

USER guest

ENTRYPOINT ["/usr/local/bin/kent-server"]
CMD ["run"]

Replace VERSION with the version of Kent you want to use. See https://pypi.org/project/kent for releases.

Then:

$ docker build -t faksentry:latest .
$ docker run --rm --publish 8000:8000 fakesentry:latest run --host 0.0.0.0 --port 8000

Things to know about Kent

Kent is the fakest of fake Sentry servers. You can set up a Sentry DSN to point to Kent and have your application send errors to it.

Kent is a refined fake Sentry service and doesn’t like fast food.

Kent will keep track of the last 100 payloads it received in memory. Nothing is persisted to disk.

You can access the list of errors and error data with your web browser by going to Kent’s index page.

You can also access it with the API. This is most useful for integration tests that want to assert things about errors.

GET /api/errorlist/

List of all errors in memory with a unique error id.

GET /api/error/ERRORID

Retrieve the payload for a specific error by id.

POST /api/flush/

Flushes the error manager of all errors.

You can use multiple project ids. Kent will keep the errors separate.

If you run kent-server run with the defaults, your DSN is:

http://public@locahost:5000/1    for project id 1
http://public@locahost:5000/2    for project id 2
...

Kent definitely works with:

  • Python sentry-sdk client

I don’t know about anything else. If you use Kent with another Sentry client, add an issue with details or a pull request to update the README.

Development

Install

  1. mkvirtualenv kent

  2. pip install -e '.[dev]'

Release process

  1. Check out main tip.

  2. Update __version__ in src/kent/__init__.py.

  3. Run:

    $ make checkrot
    $ make test
    $ make testdocker
    $ check-manifest

    Fix any issues from that.

  4. Update HISTORY.rst.

  5. Push any changes to GitHub.

  6. Release:

    $ git tag --sign 1.0.0
    # Use contents from HISTORY.rst for tag comment
    
    $ make clean
    $ python setup.py sdist bdist_wheel
    $ twine upload dist/*

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

kent-0.4.0.tar.gz (27.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

kent-0.4.0-py2.py3-none-any.whl (24.5 kB view details)

Uploaded Python 2Python 3

File details

Details for the file kent-0.4.0.tar.gz.

File metadata

  • Download URL: kent-0.4.0.tar.gz
  • Upload date:
  • Size: 27.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for kent-0.4.0.tar.gz
Algorithm Hash digest
SHA256 c05b25b3d0e37a00ad8332e98bc922252d81cad9a581dd10daf80865ebc151c0
MD5 f02b52f3646c2d4fd2cd34e354cd8086
BLAKE2b-256 73f50253ec9c769dad898f7978916be321ebdeb419db8492eeeb00dfdcafca90

See more details on using hashes here.

File details

Details for the file kent-0.4.0-py2.py3-none-any.whl.

File metadata

  • Download URL: kent-0.4.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 24.5 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.8.10

File hashes

Hashes for kent-0.4.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e4a527f537a090afee48feac9cb89bd3df3eb9ea83839251de8cf684ebed5fd2
MD5 15a314afa5561a2d20d2c79bfd048f55
BLAKE2b-256 3a8eacc0227a00cc5b029d07e7c6c88b81c5b0f2c8e421ee5814324badc9cda0

See more details on using hashes here.

Supported by

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