-
Notifications
You must be signed in to change notification settings - Fork 3
Home
Welcome to the python-etce wiki!
Latest stable version: 1.2.3
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 Pythonetcewrappers
namespace. Users may extend ETCE by writing their own wrappers.