Snuba development environment

This section explains how to run snuba from source and set up a development environment.

In order to set up Clickhouse, Redis, and Kafka, please refer to Getting started with Snuba.

Prerequisites

pyenv must be installed on your system. It is also assumed that you have completed the steps to set up the sentry dev environment.

If you are using Homebrew and a M1 Mac, ensure the development packages you’ve installed with Homebrew are available by setting these environment variables:

export CPATH=/opt/homebrew/include
export LIBRARY_PATH=/opt/homebrew/lib

Install / Run

clone this repo into your workspace:

git@github.com:getsentry/snuba.git

These commands set up the Python virtual environment:

cd snuba
make pyenv-setup
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip==22.2.2
make develop

These commands start the Snuba api, which is capable of processing queries:

snuba api

This command instead will start the api and all the Snuba consumers to ingest data from Kafka:

snuba devserver

Running tests

This command runs unit and integration tests:

make develop (if you have not run it already)
make test

Running sentry tests against snuba

This section instead runs Sentry tests against a running Snuba installation

Make sure there is no snuba container already running:

docker ps -a | grep snuba

Start your local snuba api server:

git checkout your-snuba-branch
source .venv/bin/activate
snuba api

and, in another terminal:

cd ../sentry
git checkout master
git pull
sentry devservices up --exclude=snuba

This will get the most recent version of Sentry on master, and bring up all snuba’s dependencies.

You will want to run the following Sentry tests:

make test-acceptance
make test-snuba
make test-python

These tests do not use Kafka due to performance reasons. The snuba test suite does test the kafka functionality