Skip to content
Eric Schreiber edited this page Jul 14, 2020 · 30 revisions

Welcome to the python-etce wiki!

Latest stable version: 1.2.4

Release Notes

  • Add user friendly error messages for trying to start and stop LXC container without superuser euid.

  • Add protective code to prevent launching containers for an LXC Plan File with a container element that reference a non-existent container template.

  • Export smcrouted -N option in smcroute wrapper.

  • Allow one template directory to be used multiple times in a test file.

  • Fix platform_dist call.

  • In generating LXC configuration, remove flags=up config item for the loopback device. lxc-execute fails with that in place, first seen on LXC v4.02 on Ubuntu 20.04.

  • Conditionally use distro.linux_distribution as a substitute for platform.dist method which is removed in python 3.8.

  • Add net-tools dependency.

  • Fix shebang replacement for deb builds on ubuntu 20.04.

  • Relax test file schema to allow any order of overlay and overlaylist elements.

ETCE is the Extendable Test Control Environment, a Pure Python framework for efficiently writing and running EMANE emulations. ETCE was initially developed as Adjacent Link's internal tool for performing EMANE regression tests. It's goal is to standardize and automate emulation workflow. The terms test and emulation are used interchangeably.

  • Establish a concise and uniform format for defining tests. Test definitions contain configuration, not code.
  • Control emulation applications across distributed hosts via SSH.
  • Provide a modular plug-in mechanism for adding new applications to automated control.
  • Automate batch testing so any set of tests can be run multiple times from one command.
  • Collect and organize test outputs in a standardized format.

Some key ideas:

  • ETCE operates from a central control host to orchestrate application set up and tear down on a set of worker nodes. The control host communicates with worker nodes via SSH using the Paramiko library. Workers may be any physical or virtual host reachable from the control host via public key authentication.

  • Emulations are organized into a set of ETCE Test Directories. An ETCE Test Directory is marked by the presence of the required test.xml file that, minimally, names and describes the test. The Test Directory organizes application configuration into subdirectories named by worker node hostname. To minimize configuration effort, a Test Directory may generate configuration files from templates and/or inherit from a base directory of common configuration files. ETCE uses the Mako library for templating.

  • ETCE controls applications on worker nodes through ETCE Wrappers. An ETCE Wrapper is a dynamically loadable Python module that implements a common Wrapper API and encapsulates the specifics of configuring, starting and stopping an application. ETCE ships with a set of Wrappers useful for running EMANE emulations. All Wrappers are contained in the Python etcewrappers namespace. Users may extend ETCE by writing their own wrappers.

Clone this wiki locally