Collection of decorators and middlewares for testing DRF API under unexpected circumstances.
Project description
drf-chaos extension
drf-chaos is a small collection of decorators and middlewares for testing Django REST Framework API under unexpected circumstances.
Settings
DRF_CHAOS_ENABLED
Decorators
Delay
Delay response of a specific amount of seconds
@delay(rate, seconds)
Params:
rate: probability that an unexpected event happens
seconds: suspend execution of the current thread for the given number of seconds
Error
Return a different response HTTP status code
@error(rate, status)
Params:
rate: probability that an unexpected event happens
status: integer corresponding to any valid HTTP status code. See DRF HTTP status codes
Chaos
Apply a random unexpected event to the HTTP response. (A delay between 0 to 3 second and a random HTTP status code)
@chaos(rate)
Params:
rate: probability that an unexpected event happens
Middlewares
ChaosMiddleware
Example
from rest_framework import status from rest_framework.response import Response from rest_framework.views import APIView from drf_chaos.decorators import chaos, delay, error class ChaosApiView(APIView): @chaos(rate=0.5) def get(self, request): return Response(status=status.HTTP_204_NO_CONTENT) class DelayApiView(APIView): @delay(rate=0.5, seconds=3) def get(self, request): return Response(status=status.HTTP_204_NO_CONTENT) class ErrorApiView(APIView): @error(rate=0.5, status=500) def get(self, request): return Response(status=status.HTTP_204_NO_CONTENT)
Requirements
Python (2.7)
Django (1.6+, 1.7+, 1.8)
Installation
Install using pip…
pip install drf-chaos
Add ‘drf_chaos’ to your INSTALLED_APPS setting.
INSTALLED_APPS = ( ... 'drf_chaos', )
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
Built Distribution
Hashes for drf-chaos-0.1.1.macosx-10.10-intel.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbd428cf791c5cb9391fc05e46d80ce395a56d49241a49c43427ced6544309d7 |
|
MD5 | 533631ec7357613c45972eb4244fbae4 |
|
BLAKE2b-256 | 341aed91dd1ed457d2f15b74d3282db8231cd70502eef039420382d5afd9431a |