Skip to content
Snippets Groups Projects
Select Git revision
  • ab66a87854fddf242baed3a21916b83af5d74f8a
  • BaseButton default
  • main
  • linux2
  • linux
  • newboxes
  • offlineupdates
  • qol
  • cryptotest2
  • css-cards
  • crypto-test
  • draganddrop
  • height3
  • height
  • zindex
  • connection2
  • v-forupdate
  • connections
  • v-for
  • organise-forlarger
  • kebabcase
  • lowercase
22 results

app

  • Clone with SSH
  • Clone with HTTPS
  • FLAME Cross Layer Management and Control

    Version: 1.0.0

    About this document

    Authors

    Authors Organisation
    Michael Boniface University of Southampton, IT Innovation Centre
    Simon Crowle University of Southampton, IT Innovation Centre

    Contents

    Documentation

    Implementation documentation and discussion can be found in the FLAME CLMC Information Model Specification

    Development Environment

    The development environment is currently Vagrant/Virtualbox providing the infrastructure for dev and testing.

    Vagrant-disksize plugin must be installed.

    vagrant plugin install vagrant-disksize

    Testing

    Testing is implemented using pytest using the following convention:

    • Tests are written in python using pytest
    • Related tests are stored in a python module clmctest/<testmodule> to create a suite of tests. All tests are stored in files test_*.py, there can be many tests per file, and many files per module
    • Each test module has a rspec.yml that provides the baseline "fixture" for the tests in the module
    • Tests are executed against fixtures. Fixtures are modular "setups" created for a test, that are inserted into the python code using dependancy injection. This offers more flexibility than the unit style testing. The baseline deployment is created using vagrant up with an appropriate rspec, and the pytest fixture reads the rspec.yml and makes the configuration available to the test.
    • Tests are executed from a guest VM (not the host) in the repo root using the command pytest test/<testmodule>
    • Pytest will scan the directory for all tests including in files test_*.py and run them

    Creating a deployment for a test

    Each test has a fixture defining a set of VMs required for the test. The fixture is described in an rspec.yml file that is stored within the clmctest/ directory. For example, the monitoring test fixture is stored in the following file.

    clmctest\monitoring\rspec.yml

    The fixture is created by running the vagrant up command with the test module name as a parameter

    vagrant --fixture=monitoring -- up

    This will provision the following VMs clmc-service, ipendpoint1, ipendpoint2

    The clmc-service vm includes influx, Kapacitor and Chronograf. The following ports forwarded to the clmc VM from the host machine are as follows:

    • Influx: 8086
    • Chronograf: 8888
    • Kapacitor: 9092

    Typically, tests are run from a test-runner VM that has pytest installed. The script used to install pytest is

    clmctest/services/pytest/install.sh

    To run a test, SSH into the test runner machine

    vagrant --fixture=monitoring -- ssh test-runner

    Then go to the 'vagrant' directory.

    cd /vagrant

    Run the pytest.

    pytest -s clmctest/monitoring/

    Tests run from the host

    Tests can be run from the host by sshing commands to the test running. This is described in the .gitlab-ci.yml file. The file shows how a python package is created

    python setup.py sdist --dist-dir=build

    Then the package is installed

    vagrant --fixture=scripts -- ssh test-runner -- -tt "pip3 install /vagrant/build/clmctest-SNAPSHOT.tar.gz"

    Then the tests are run

    vagrant --fixture=scripts -- ssh test-runner -- -tt "pytest -s --pyargs clmctest.scripts"