Тесты

Тесты

Тесты нужны, чтобы гарантировать идемпотентность в enforce-режиме, поведение без enforce, а также поведение при конкурентных запросах.

Запуск

Обычно достаточно:

  • pytest -q

Более подробно:

  • python -m pytest -s -vv

С логами:

  • python -m pytest -vv -s --log-cli-level=INFO

Что проверяем

Минимальный набор сценариев:

  • enforce_nonce=true и одинаковый nonce -> возвращается один и тот же id (dedupe).

  • enforce_nonce=false и одинаковый nonce -> создаются разные сообщения.

  • enforce_nonce=true без nonce -> ошибка валидации, 409 error (контракт).

  • Конкурентные запросы с одинаковым nonce -> максимум одна запись в БД в пределах TTL-окна.

Очистка после тестов

Для Postgres быстрее всего чистить таблицы через:

TRUNCATE ... RESTART IDENTITY CASCADE.

Для Redis лучше удалять ключи по шаблону через SCAN, а не KEYS, чтобы не блокировать сервер на больших наборах ключей.

Последнее обновление