Last updated:
0 purchases
pytestdummynet 2.1.0
pytest-dummynet provides a py.test fixture for working with dummy-networks
in pytest on Linux machines. By dummy-networks we refer to setups with network
namespaces, virtual ethernets, etc.
The DummyNet class is a python wrapper for the linux ‘ip netns’ and ‘ip link’
tools. The methods of the class parse args directly to the command-line in your
linux OS.
So far, Ubuntu and Debian are supported, but please make sure, that you
have the iproute2 linux-package installed with:
apt-get install iproute2
Other Linux operating systems have not been tested, but feel free to open an
issue if support is needed.
Table of Contents:
Installation
Usage
Relase new version
Source code
Developer Notes
Tests
Notes
Installation
To install pytest-dummynet:
pip install pytest-dummynet
Usage
To make it easy to use in with pytest the DummyNet object can be
injected into a test function by using the dummynet fixture.
Example:
def test_run_fail(dummynet):
with dummynet.host() as shell:
demo0 = shell.netns_add(name="namespace1")
demo1 = shell.netns_add(name="namespace2")
shell.link_veth_add(p1_name="peer1", p2_name="peer2")
The dummynet argument is an instance of the DummyNet class.
For a complete example of a local network setup see the test in
‘test/test_dummynet.py’.
You can try playing around with the class methods in dummynet.py and call the
commands in self.shell.run(cmd) from the command-line. This can give a better
idea of the functionality.
Relase new version
Edit NEWS.rst and wscript (set correct VERSION)
Run
./waf upload
Source code
The main functionality is found in src/dummy_net.py and the
corresponding unit test is in test/test_dummynet.py if you
want to play/modify/fix the code this would, in most cases, be the place
to start.
Developer Notes
We try to make our projects as independent as possible of a local system setup.
For example with our native code (C/C++) we compile as much as possible from
source, since this makes us independent of what is currently installed
(libraries etc.) on a specific machine.
To “fetch” sources we use Waf (https://waf.io/) augmented with dependency
resolution capabilities: https://github.com/steinwurf/waf
The goal is to enable a work-flow where running:
./waf configure
./waf build --run_tests
Configures, builds and runs any available tests for a given project, such that
you as a developer can start hacking at the code.
For Python project this is a bit unconventional, but we think it works well.
Tests
The tests will run automatically by passing --run_tests to waf:
./waf --run_tests
This follows what seems to be “best practice” advise, namely to install the
package in editable mode in a virtualenv.
Notes
Why use an src folder (https://hynek.me/articles/testing-packaging/).
tl;dr you should run your tests in the same environment as your users would
run your code. So by placing the source files in a non-importable folder you
avoid accidentally having access to resources not added to the Python
package your users will install…
Python packaging guide: https://packaging.python.org/distributing/
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.