chaostoolkit driver for wiremock
Project description
chaostoolkit-wiremock
ChaosToolkit driver for wiremock
Installation from Pypi
You need to have a python 3.5+ interpreter:
pip install chaoswm
Installation from source
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
Supported actions
add_mappings: adds a list of mappings to wiremock
populate_from_dir: adds all mappings found in a directory
delete_mappings: deletes a list of mappings
global_fixed_delay: adds a fixed delay to all mappings
global_random_delay: adds a random delay to all mappings
fixed_delay: adds a fixed delay to a list of mappings
random_delay: adds a random delay to a list of mapppings
chunked_dribble_delay: adds a chunked dribble delay to a list of mappings
down: sets a list of services down
up: deletes all delays connected with a list of mappings
reset: resets the wiremock server: deletes all mappings!
Supported probes
server_running: returns 1 if the configured Wiremock server can be contacted
mappings: returns the list of mappings found on the server
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 } } } }
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.6-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67cdbaa1808fc193fd65e470e759501b6a5227630059793c76eecdc5da9af624 |
|
MD5 | 7b094f9d0ed9107f27465a83e6ec0afa |
|
BLAKE2b-256 | 4999ecb8fc64bd53177f13868db44d4a40eb971324d36ce71133debfca31909d |