# httptester

Topics

- httptester
  - Overview
  - Building
    - Docker
    - docker build
    - packer
  - Ansible
  - Extending httptester

## Overview

`httptester` is a docker container used to host certain resources required by Integration tests. This is to avoid CI tests requiring external resources (such as git or package repos) which, if temporarily unavailable, would cause tests to fail.

HTTP Testing endpoint which provides the following capabilities:

- httpbin
- nginx
- SSL
- SNI

Source files can be found at test/utils/docker/httptester/

## Building

### Docker

Both ways of building `docker` utilize the `nginx:alpine` image, but can be customized for `Fedora`, `Red Hat`, `CentOS`, `Ubuntu`, `Debian` and other variants of `Alpine`

When utilizing `packer` or configuring with `ansible-playbook`, the services will not automatically start on launch, and will have to be manually started using:

    cd test/utils/docker/httptester
    ./services.sh

Such as when starting a docker container:

    cd test/utils/docker/httptester
    docker run -ti --rm -p 80:80 -p 443:443 --name httptester ansible/ansible:httptester /services.sh

### docker build

    cd test/utils/docker/httptester
    docker build -t ansible/ansible:httptester .

### packer

The `packer` build will use `ansible-playbook` to perform the configuration, and will tag the image as `ansible/ansible:httptester`:

    cd test/utils/docker/httptester
    packer build packer.json

## Ansible

::
  cd test/utils/docker/httptester ansible-playbook -i hosts -v httptester.yml

## Extending httptester

If you have sometime to improve `httptester` please add a comment on the Testing Working Group Agenda to avoid duplicated effort.