Skip to main content

Python client for the CDRouter Web API

Project description

cdrouter

https://img.shields.io/pypi/v/cdrouter.svg

Simple Python wrapper for the CDRouter Web API. https://support.qacafe.com/cdrouter/cdrouter-web-api/

For more information on CDRouter, please visit http://www.qacafe.com/.

Installing/Upgrading

cdrouter is available on PyPI. To install the latest stable version from PyPI:

$ pip install -U cdrouter

cdrouter supports Python 3.5 or newer.

Documentation

See http://cdrouterpy.readthedocs.io/.

Publishing a New Release

To publish a new release of cdrouter.py, first ensure you have met the following prerequisites:

Once you have met the above prerequisites, from the root of this repository run ./docker.sh /bin/bash:

$ ./docker.sh /bin/bash

This will mount your local repository in an ephemeral Docker container, install cdrouter.py into the container and drop you into a /bin/bash shell. To publish a new release, run ./manage.sh publish from within the container:

$ ./manage.sh publish

You will be prompted for the version number <version> to use for the new release. Enter it without any leading v (for example, enter 1.2.3, not v1.2.3) and press <Enter>. After release has been built, you will be asked to confirm one last time. Press Ctrl+C to abort, otherwise press <Enter> to publish the release. Publishing the release will do the following:

  • __version__ in cdrouter/__init__.py will be set to <version> and these changes will be pushed to origin/master.

  • A new v<version> tag will be created (for example, if <version> is 1.2.3, a v1.2.3 tag will be created) and the new tag will be pushed to origin.

  • A new <version> release of cdrouter (https://pypi.org/project/cdrouter) will be uploaded to PyPI.

Assuming there are no errors, congratulations! You have published a new release of cdrouter. Run exit or type Ctrl-D to exit out of the ephemeral Docker container and return to your normal prompt.

Unit Tests

Unit tests for cdrouter.py are written using pytest (https://docs.pytest.org) and run with tox (https://tox.wiki). Each test starts up an ephemeral CDRouter Docker container to test against. Tests are stored in the tests/ directory. The following tooling is required to run the unit tests:

  • Docker must be installed and the docker command runnable by the current user. Follow the official install instructions (https://docs.docker.com/engine/install/) to ensure this is the case.

  • Python 3.8 must be installed with a python3.8 binary available in your PATH.

  • tox must be installed via pip3:

    $ pip3 install -U tox

    If you do not already have pip3 installed, follow the official install instructions (https://pip.pypa.io/en/stable/installation/) or use the get-pip.py script below to perform the installation automatically:

    $ curl -s https://bootstrap.pypa.io/pip/get-pip.py | python3

The unit tests are controlled by a number of a environment variables, some required while others are optional. Optional environment variables are listed further below. The required environment variables are:

  • CDR_DOCKER_IMAGE: The CDRouter Docker image to use to test against. The unit tests automatically create and teardown Docker containers running this image during testing. Its value should be a Docker image name that can be passed directly to docker run. A good default is:

    CDR_DOCKER_IMAGE=registry.gitlab.com/qacafe/cdrouter/cdrouter/cdrouter:latest

    which should always be the latest CDRouter release.

  • CDR_DOCKER_LICENSE: The base64-encoded contents of a CDRouter license file with all addons enabled to be used in the CDRouter Docker containers which are created during testing. If the CDRouter license file to be used exists at /path/to/cdrouter.lic, set this variable to:

    CDR_DOCKER_LICENSE=$(base64 -w0 /path/to/cdrouter.lic)

Finally, run the unit tests via:

$ CDR_DOCKER_IMAGE=registry.gitlab.com/qacafe/cdrouter/cdrouter/cdrouter:latest \
  CDR_DOCKER_LICENSE=$(base64 -w0 /path/to/cdrouter.lic) \
  tox -p

This will both lint the codebase using pylint and run all unit tests. You may sometimes want to run only a subset of tests. To run just the tests in tests/test_configs.py, run:

$ CDR_DOCKER_IMAGE=registry.gitlab.com/qacafe/cdrouter/cdrouter/cdrouter:latest \
  CDR_DOCKER_LICENSE=$(base64 -w0 /path/to/cdrouter.lic) \
  tox -e py38 -- tests/test_configs.py

To run just the test_list test in the TestConfigs class of tests/test_configs.py, run:

$ CDR_DOCKER_IMAGE=registry.gitlab.com/qacafe/cdrouter/cdrouter/cdrouter:latest \
  CDR_DOCKER_LICENSE=$(base64 -w0 /path/to/cdrouter.lic) \
  tox -e py38 -- tests/test_configs.py::TestConfigs::test_list

Below are the optional environment variables used by the unit tests:

  • CDR_DOCKER_PULL: By default, the unit tests will ensure the Docker image specified by CDR_DOCKER_IMAGE is present and up to date via a call to docker pull. Sometimes this isn’t necessary or desired, in which case setting CDR_DOCKER_PULL=0 will cause the unit tests to skip this step and assume the Docker image is already present and up to date. Setting CDR_DOCKER_PULL=0 is often necessary if CDR_DOCKER_IMAGE is set to a locally-built image rather than one pulled down from a Docker registry.

  • CLOUDSHARK_URL & CLOUDSHARK_TOKEN: These variables specify the URL and valid API token of a CloudShark appliance. If these are not set, tests which require uploading capture files to a CloudShark appliance are skipped.

  • RUN_LOUNGE_TESTS, LOUNGE_EMAIL, LOUNGE_URL & LOUNGE_INSECURE: By default, tests which require communicating with the QA Cafe Lounge are skipped. These tests can be run by setting RUN_LOUNGE_TESTS=1, in which case LOUNGE_EMAIL must be set to a valid email address for a contact in same Lounge account as the CDRouter license stored in CDR_DOCKER_LICENSE. Additionally, LOUNGE_URL and LOUNGE_INSECURE can be used to have the tests talk to a non-production Lounge.

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

cdrouter-0.9.10.tar.gz (44.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cdrouter-0.9.10-py2.py3-none-any.whl (62.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file cdrouter-0.9.10.tar.gz.

File metadata

  • Download URL: cdrouter-0.9.10.tar.gz
  • Upload date:
  • Size: 44.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.25.1 setuptools/50.3.0 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.5.10

File hashes

Hashes for cdrouter-0.9.10.tar.gz
Algorithm Hash digest
SHA256 582a680e9239b3d23f356a2df26829599f0be223633acae9d4ef4ab32a391781
MD5 36a1fab8f39f70edb61433672cde0901
BLAKE2b-256 404981195baffab17238dea8e32f9947f890c0240ac4bcfea7b78b246168c836

See more details on using hashes here.

File details

Details for the file cdrouter-0.9.10-py2.py3-none-any.whl.

File metadata

  • Download URL: cdrouter-0.9.10-py2.py3-none-any.whl
  • Upload date:
  • Size: 62.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.15.0 pkginfo/1.8.2 requests/2.25.1 setuptools/50.3.0 requests-toolbelt/1.0.0 tqdm/4.64.1 CPython/3.5.10

File hashes

Hashes for cdrouter-0.9.10-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 aa4d86201770fd2d620cbb1cfe5e938b45b3af28077f7530981b533f52882e3a
MD5 bd29c764cfcca6779e6ab6ac952038b7
BLAKE2b-256 0be7430799d01487ca5dbf52e8be64b40cb9957a7c8cc2ec0c2054f5277fece5

See more details on using hashes here.

Supported by

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