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 milliseconds
@delay(rate, milliseconds)
Params:
rate: probability that an unexpected event happens
milliseconds: suspend execution of the current thread for the given number of milliseconds
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, milliseconds=700) 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.2.macosx-10.10-intel.exe
Algorithm | Hash digest | |
---|---|---|
SHA256 | f49d27885b1ec5623bee6c25b476e0fc95c4d2f908105059d3709e8ac9e21c85 |
|
MD5 | 20f0fc0342b042d4d1d8ccbea77241f2 |
|
BLAKE2b-256 | 56a72cf393a0c665dd28647de3595285de230da2a684cfaec953f8189bf6f34c |