Skip to main content

chaostoolkit driver for wiremock

Project description

chaostoolkit-wiremock

image

Chaos Toolkit driver for the WireMock service API

Package installation

To install the package from pypi.org:

pip install chaoswm

Installation from source

In order to use it, you need python 3.5+ in your environment. Once downloaded the project, cd into it and run:

pip install -r requirements.txt
pip install -r requirements_dev.txt
make clean && make test && make install

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.

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

chaoswm-0.2.1.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

chaoswm-0.2.1-py2.py3-none-any.whl (12.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file chaoswm-0.2.1.tar.gz.

File metadata

  • Download URL: chaoswm-0.2.1.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for chaoswm-0.2.1.tar.gz
Algorithm Hash digest
SHA256 d5dfa7dba3890a72e16b3a4c50e2baf6b7f6d7e2e49ec14e55293f2399a357d0
MD5 9eceaa98b004101cfbdb5f3f97541735
BLAKE2b-256 dda83b8554ed28eab829c888509c8a42f3de61c521e7594a3e8c73d49ab99971

See more details on using hashes here.

File details

Details for the file chaoswm-0.2.1-py2.py3-none-any.whl.

File metadata

  • Download URL: chaoswm-0.2.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.3

File hashes

Hashes for chaoswm-0.2.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4b0a34201faf9c5e945dae74eb259a1f674d0f752ef9291eee743843409e55a2
MD5 5e43507c632a72e462b02434a2378423
BLAKE2b-256 59123986ad27d0f1ba082eaabb99d1da05a3db72ef4b397e92935d814e60d942

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page