Functional Testing ================== The directory structure, files, and tests found in this directory all work together to provide: * a set of machines (or even a single one) so that ceph-ansible can run against * a "scenario" configuration file in Python, that defines what nodes are configured to what roles and what 'components' they will test * tests (in functional/tests/) that will all run unless skipped explicitly when testing a distinct feature dependant on the ansible run. Example run ----------- The following is the easiest way to try this out locally. Both Vagrant and VirtualBox are required. Ensure that ``py.test`` and ``pytest-xdist`` are installed (with pip on a virtualenv) by using the ``requirements.txt`` file in the ``tests`` directory:: pip install -r requirements.txt Choose a directory in ``tests/functional`` that has 3 files: * ``Vagrantfile`` * ``vagrant_variables.yml`` * A Python ("scenario") file. For example in: ``tests/functional/ubuntu/16.04/mon/initial_members``:: tree . . ├── Vagrantfile -> ../../../../../../Vagrantfile ├── scenario.py └── vagrant_variables.yml 0 directories, 3 files It is *required* to be in that directory. It is what triggers all the preprocessing of complex arguments based on the cluster setup. Run vagrant first to setup the environment:: vagrant up --no-provision --provider=virtualbox Then run ceph-ansible against the hosts with the distinct role (in this case we are deploying a monitor using ``initial_members``). And finally run ``py.test``:: py.test -v