Metadata-Version: 2.1
Name: alpy
Version: 0.10.0
Summary: Library for testing network virtual appliances using Docker
Home-page: https://gitlab.com/abogdanenko/alpy
Author: Alexey Bogdanenko
Author-email: alexey@bogdanenko.com
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
Classifier: Operating System :: POSIX :: Linux
Description-Content-Type: text/markdown

# Alpy

*Test network virtual appliance using Docker containers*

This project is a Python library for testing network virtual appliances.

The appliance being tested is referred to as a *device under test* or *DUT*.

This repository includes scripts and modules to build a simple appliance called
Rabbit. Rabbit is Alpine Linux with a few packages pre-installed. Having this
simple DUT allows to quickly test the library itself and to demonstrate its
features.

Network design
--------------

The DUT communicates with containers attached to each of its network links.

Guest network adapters are connected to the host via tap devices.

Each tap device lives in its network namespace. This namespace belongs to a
dedicated container - a *node*. The node's purpose is to keep the namespace
alive during the lifetime of a test.

For an application to be able to communicate with the DUT the application is
containerized. The application container must be created in a special way: it
must share network namespace with one of the nodes.

This sharing is supported by Docker. All we have to do is to create the
application container with the `--network=container:NODE_NAME` Docker option.
For example, if we want to send traffic to the DUT via its first link, we create
a traffic generator container with Docker option `--network=container:node0`.

Authors
-------

See CHANGELOG.md.

Licence
-------

Alpy is licensed under:

    SPDX-License-Identifier: GPL-3.0-or-later

See COPYING for more details.


