chaostoolkit driver for wiremock
Project description
chaostoolkit-wiremock
ChaosToolkit driver for wiremock
Installation
In order to use it, you need python 3.5+ in your environment
Steps:
python3 -mvenv ~/virtualenvs/chaostoolkit-wiremock surce ~/virtualenvs/chaostoolkit-wiremock/bin/activate git clone git@github.com:sky-uk/chaostoolkit-wiremock.git cd chaostoolkit-wiremock pip install -r requirements_dev.txt make clean && make test && make install
To run in production, first install the requirements:
pip install -r requirements.txt
Configuration
The following keys can be configured in the experiment global configuration section, under the “wiremock” key:
host: the wiremock server host
port: the wiremock server port
contextPath: the contextPath for your wiremock server (optional)
timeout: accepted timeout (defaults to 1 sec)
down: the delayDistribution section used by the down action
Configuration example:
{ "configuration": { "wiremock": { "host": "localhost", "port": 8080, "contextPath": "/wiremock", "timeout": 10, "down": { "type": "lognormal", "median": 3000, "sigma": 0.2 } } } }
Note: Wiremock server can be defined setting the host/port pair or giving the base url (url up to the “/__admin” path excluded)
Exported Actions
Adding a list of mappings:
{ "method": [ { "type": "action", "name": "adding a mapping", "provider": { "type": "python", "module": "chaoswm.actions", "func": "add_mapping", "arguments": [{ "request": { "method": "GET", "url": "/some/thing" }, "response": { "status": 200, "body": "Hello world!", "headers": { "Content-Type": "text/plain" } } }] } } ] }
Deleting a list of mappings:
{ "method": [ { "type": "action", "name": "deleting a mapping", "provider": { "type": "python", "module": "chaoswm.actions", "func": "delete_mapping", }, "arguments": [{ "method": "GET", "url": "/some/thing" }] } ] }
Adding a global fixed delay:
{ "method": [ { "type": "action", "name": "Adding a global fixed delay", "provider": { "type": "python", "module": "chaoswm.actions", "func": "global_fixed_delay" }, "arguments": { "fixedDelay": 10 } } ] }
Adding a global random delay:
{ "method": [ { "type": "action", "name": "Adding a global random delay", "provider": { "type": "python", "module": "chaoswm.actions", "func": "global_random_delay" }, "arguments": { "delayDistribution": { "type": "lognormal", "median": 20, "sigma": 0.1 } } } ] }
Adding a fixed delay to a list of mappings:
{ "method": [ { "type": "action", "name": "Adding a fixed delay to a mapping", "provider": { "type": "python", "module": "chaoswm.actions", "func": "fixed_delay" }, "arguments": {[{ "method": "GET", "url": "/some/thing" }], "fixedDelayMilliseconds": 100 } } ] }
Adding a fixed delay to a list of mappings If a consistent number of mappings have to be delayed, the following action might be useful:
{ "method": [ { "type": "action", "name": "Adding a fixed delay to a set of mappings", "provider": { "type": "python", "module": "chaoswm.actions", "func": "fixed_delay_to_many_mappings" }, "arguments": {[{ "method": "GET", "url": "/some/thing", },{ "method": "POST", "url": "/some/thing/else", }], "fixedDelayMilliseconds": 100 } } ] }
Adding a random delay to a list of mappings:
{ "method": [ { "type": "action", "name": "Adding a random delay to a mapping", "provider": { "type": "python", "module": "chaoswm.actions", "func": "random_delay" }, "arguments": {[{ "method": "GET", "url": "/some/thing", }], "delayDistribution": { "type": "lognormal", "median": 80, "sigma": 0.4 } } } ] }
Adding a ChunkedDribbleDelay to a list of mappings:
{ "method": [ { "type": "action", "name": "Adding a ChunkedDribbleDelay to a mapping", "provider": { "type": "python", "module": "chaoswm.actions", "func": "chunked_dribble_delay" }, "arguments": {[{ "method": "GET", "url": "/some/thing", }], "chunkedDribbleDelay": { "numberOfChunks": 5, "totalDuration": 1000 } } } ] }
Taking a list of mappings down (heavy distribution delay) This action will use the parameters specified in the “down” key of the configuration section:
{ "method": [ { "type": "action", "name": "Taking a mapping down", "provider": { "type": "python", "module": "chaoswm.actions", "func": "down" }, "arguments": [{ "method": "GET", "url": "/some/thing", }] } ] }
Taking a list of mappings up back again:
{ "method": [ { "type": "action", "name": "Taking a mapping down", "provider": { "type": "python", "module": "chaoswm.actions", "func": "up" }, "arguments": [{ "method": "GET", "url": "/some/thing", }] } ] }
Resetting the wiremock server (deleting all mappings):
{ "method": [ { "type": "action", "name": "Taking a mapping down", "provider": { "type": "python", "module": "chaoswm.actions", "func": "reset" } } ] }
Discovery
You may use the Chaos Toolkit to discover the capabilities of this extension:
$ chaos discover chaostoolkit-wiremock --no-install
Credits
This package was created with Cookiecutter and the audreyr/cookiecutter-pypackage project template.
History
0.0.1 (2019-02-14)
First release on PyPI.
Project details
Release history Release notifications | RSS feed
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 chaoswm-0.1.4-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90021d4b77e061ce14de193616b6a5e51b8a63e1b69625b2e976729cf8dc2b2b |
|
MD5 | 79e7c5486d10a19befb500ce7863be91 |
|
BLAKE2b-256 | c641ac85652bada81a49b53a8bf456cabe94b4ec420bdb4d49c1952223fa413f |