A tool for creating dummy networks using network namespaces.
Project description
dummynet-python is a tool for working with dummy-networks in python 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.
Installation
To install dummynet-python:
pip install dummynet-python
Usage
import dummynet def main(): 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")
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.
Release 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/
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 Distributions
Built Distribution
Hashes for dummynet-1.0.0-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72209fefe80ab7d7215ab633d5d3bbf83d9fecaf06bba2a61f42ddcbd390d8cc |
|
MD5 | 7fd0ec99740cc35c35c33a2dacfb19a7 |
|
BLAKE2b-256 | 839291c9ca1b3c15d088884c56943af9ed32b25c5e833621b2cfd3f1bc80532b |