The idea behind “fullstack” testing is to fill a gap between unit + functional tests and Tempest. Tempest tests are expensive to run, and operate only through the REST API. So they can only provide an explanation of what went wrong gets reported to an end user via the REST API, which is often too high level. Additionally, Tempest requires an OpenStack deployment to be run against, which can be difficult to configure and setup. The full stack testing addresses these issues by taking care of the deployment itself, according to the topology that the test requires. Developers further benefit from full stack testing as it can sufficiently simulate a real environment and provide a rapidly reproducible way to verify code as you’re still writing it.
Full stack tests set up their own Neutron processes (Server & agents). They assume a working Rabbit and MySQL server before the run starts. Instructions on how to run fullstack tests on a VM are available in our TESTING.rst.
Each test defines its own topology (What and how many servers and agents should be running).
Since the test runs on the machine itself, full stack testing enables “white box” testing. This means that you can, for example, create a router through the API and then assert that a namespace was created for it.
Full stack tests run in the Neutron tree with Neutron resources alone. You may use the Neutron API (The Neutron server is set to NOAUTH so that Keystone is out of the picture). VMs may be simulated with a container-like class: neutron.tests.fullstack.resources.machine.FakeFullstackMachine. An example of its usage may be found at: neutron/tests/fullstack/test_connectivity.py.
Full stack testing can simulate multi node testing by starting an agent multiple times. Specifically, each node would have its own copy of the OVS/DHCP/L3 agents, all configured with the same “host” value. Each OVS agent is connected to its own pair of br-int/br-ex, and those bridges are then interconnected.
Fullstack test suite assumes 240.0.0.0/3 range in root namespace of the test machine is available for its usage.
Write DVR tests
Write additional L3 HA tests
Write a test that validates L3 HA + l2pop integration after https://bugs.launchpad.net/neutron/+bug/1365476 is fixed.
Write a test that validates DVR + L3 HA integration after https://bugs.launchpad.net/neutron/+bug/1365473 is fixed.
After these tests are merged, it should be fair to start asking contributors to add full stack tests when appropriate in the patches themselves and not after the fact as there will probably be something to copy/paste from.