Skip to main content

Dependency-hungry testing helpers

Project description

coveo-testing-extras

Contains extra testing tools without dependency restrictions.

temporary resource implementation: Docker Container

The docker container temporary resource can be used to prepare short-lived containers.

  • Supports building from a dockerfile
  • Supports pulling images
  • Can signal on AWS ECR logout
  • Dynamic port mapping retrieval
  • Saves log output before removing the container

Automatic AWS ECR login example

Here's how you can enhance TemporaryDockerContainerResource with automatic ECR login:

from base64 import b64decode

import boto3
from coveo_testing_extras.temporary_resource.docker_container import (
    TemporaryDockerContainerResource, 
    ECRLogoutException,
    get_docker_client
)

class WithECR(TemporaryDockerContainerResource):
    def obtain_image(self) -> None:
        try:
            super().obtain_image()
        except ECRLogoutException:
            self._do_ecr_login()
            super().obtain_image()

    def _do_ecr_login(self) -> None:
        """ Performs an ecr login through awscli. """
        assert self.ecr_region
        ecr = boto3.client('ecr')
        account_id, *_ = self.image_name.split('.')
        assert account_id.isdigit()
        authorization_data = ecr.get_authorization_token(registryIds=[account_id])['authorizationData'][0]
        username, password = b64decode(authorization_data['authorizationToken']).decode().split(':')
        with get_docker_client() as client:
            login = client.login(username=username, password=password, registry=authorization_data['proxyEndpoint'])
        assert login['Status'] == 'Login Succeeded'

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

coveo-testing-extras-2.0.2.tar.gz (5.9 kB view hashes)

Uploaded Source

Built Distribution

coveo_testing_extras-2.0.2-py3-none-any.whl (6.0 kB view hashes)

Uploaded Python 3

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