- Python 3.10.x (see requirements.txt for a detailed view of required packages)
- Portal Version 2.4.0 (22/12/2020) or later
- Dispatcher Commit 2c05c28e812fb712f73b51ab78c1d190c0f50d0e (04/01/2021) or later
- Katana Slice Manager Version 2.2.6 (14/07/2020) or later
- Grafana (tested with version 5.4)
- Grafana reporter (tested with version 2.1.0, commit 41b38a0)
- InfluxDB (tested with version 1.7.6)
- OpenTAP (tested with version 9.9 (Windows))
Additional dependencies may be needed depending on your environment. For example, older Windows version may require certain Visual C++ redistributables to be installed, and the following packages are known to be required on many Ubuntu distributions:
gcc python3.10 python3.10-venv python3.10-dev
.
This repository includes two sets of scripts for use on Linux (.sh
) and Windows (.ps1
) machines. In general,
these scripts should be able to perform most of the actions required for instantiating the ELCM, however, depending
on the deployment environment some actions may fail or require additional tweaking. The contents of the scripts can
be used as a guide for manual installation, and a description of the actions performed by the scripts is included below
for use as reference.
- Ensure that Python 3.10.x is installed. For environments with multiple Python versions note the correct alias.
For example, older Ubuntu distributions refer to Python 2.x by default when invoking
python
, and reference Python 3.10 aspython3
orpython3.10
. Use the--version
parameter to check the version number. - Clone the repository to a known folder
- Run
install.sh <python_alias>
orinstall.ps1 <python_alias>
(depending on your OS). The script will:
- Display the Python version in use (ensure that this is 3.10.x)
- Create a Python virtual environment for exclusive use of the ELCM.
- Install the required Python packages (using pip)
Most issues occur during this step, since it is highly dependent on the environment. In case of error, note the name of the package that could not be installed, the error message and your OS distribution. Performing an Internet search with this information usually yields a solution. Once solved you may re-run the script (delete the
venv
folder that was created by the script if necessary) until all packages are correctly installed.
- Run
start.sh
orstart.ps1
(depending on your OS). This will create an empty configuration file (config.yml
). If necessary, press ctrl+c (or your OS equivalent) in order to close the server. - Ensure that the
config.yml
is available in the ELCM folder and customize its contents. Information about all the possible configuration values can be found below.
Before using the scripts for starting a production ELCM instance consider changing the
<YOUR SECRET KEY HERE>
value to a random string (for more info see this answer.). This is particularly important if the ELCM port is exposed to the Internet (in this case also consider usingwaitress
, as can be seen in the Portal scripts).Please note that it is not recommended exposing the ELCM to the open Internet, regardless of these tips.
Once configured, the ELCM can be started by running start.sh <port_number>
or start.ps1 <port_number>
. If not
specified, the server will listen on port 5001. In order to stop the server, press ctrl+c (or your OS equivalent) in
the terminal where the server is running.
Detailed usage documentation can be found in the docs
folder of this repository.
- ELCM Configuration
- Platform Registry:
- TestCase Definition:
- Task Order and Execution Flow:
- Available Tasks:
- Variable Expansion and Execution Verdict
- MONROE Experiments
- Implementing Additional Tasks
- Distributed Experiments
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.