Skip to content

Commit

Permalink
[Chapter 8] Add Functest description
Browse files Browse the repository at this point in the history
It partially implements #288

Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
  • Loading branch information
collivier committed Sep 18, 2019
1 parent 4e987b1 commit 0261c6b
Showing 1 changed file with 90 additions and 3 deletions.
93 changes: 90 additions & 3 deletions doc/ref_model/chapters/chapter08.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
* [8.7.2 System Under Test (SUT) Pre-reqs.](#8.7.2)
* [8.7.3 Entrance & Exit Criteria.](#8.7.3)
* [8.7.4 Test Frameworks.](#8.7.4)
* [8.7.4.1 Functest.](#8.7.4.1)
* [8.7.5 Test Categories.](#8.7.5)
* [8.7.6 Test Harness(es).](#8.7.6)
* [8.7.7 Test Tools.](#8.7.7)
Expand Down Expand Up @@ -604,9 +605,95 @@ Compute Intensive | High | Medium | Offered load high<br>Latency threshold low |

<a name="8.7.4"></a>
### 8.7.4 Test Frameworks
1. Dovtail
2. Yardstick
3. Bottlenecks

#### 8.7.4.1 Functest

[Functest](https://functest.readthedocs.io/en/stable-iruya/) was initially
created to verify OPNFV Installers and Scenarios and then to publish fair,
trustable and public results regarding the status of the different opensource
technologies, especially for Neutron backends (e.g. Neutron agents,
OpenDaylight, OVN, etc.). It has been continuously updated to offer the best
testing coverage for any kind of OpenStack and Kubernetes deployments
including production environments. It also ensures that the platforms meet
Network Functions Virtualization requirements by running and testing VNFs
amongst all tests available.


Functest is driven by a true verification of the platform under test as opposed
to the interoperability programs such as
[RefStack](https://refstack.openstack.org/) or
[OPNFV Verification Program](https://www.opnfv.org/verification) which select
a small subset of Functional tests passing in many different
opensource software combinations:
- tests are skipped if an optional support is missing (e.g.
[Barbican](https://docs.openstack.org/barbican/latest/) or networking
features such as
[BGPVPN interconnection](https://docs.openstack.org/networking-bgpvpn/latest/)
or
[Service Function Chaining](https://docs.openstack.org/networking-sfc/latest/))
- tests are parameterized (e.g. shared vs non-shared live migration)
- blacklist mechanisms are available if needed

It should be noted that
[the RefStack lists](https://refstack.openstack.org/#/guidelines) are included
as they are in Functest in the next 3 dedicated testcases:
- refstack_compute (OpenStack Powered Compute)
- refstack_object (OpenStack Powered Object Storage)
- refstack_platform (OpenStack Powered Platform)

Functest also integrates
[Kubernetes End-to-end tests](https://kubernetes.io/blog/2019/03/22/kubernetes-end-to-end-testing-for-everyone/) and allows verifying Kubernetes Conformance (see
[k8s-conformance](https://build.opnfv.org/ci/job/functest-kubernetes-opnfv-functest-kubernetes-smoke-iruya-k8s_conformance-run/206/console)).

Dovetail (OVP) mostly leverages on Functest but only runs a small part of
Functest (~15% of all functional tests, no benchmarking tests, no VNF
deployment and testing). It's worth mentioning that Functest is patched to
[disable API verification](https://github.com/opnfv/dovetail/tree/master/etc/patches/functest/disable-api-validation) which has differed from OpenStack rules for
years.

Then Functest conforms with the upstream rules (versions, code quality, etc.)
and especially their
[gates](https://docs.openstack.org/infra/system-config/devstack-gate.html)
(a.k.a. the automatic verification prior to any code review)
to preserve the quality between code and deployment.
In that case, Functest can be considered as a smooth and lightweight
integration of tests developed upstream (and the Functest team directly
contributes in these projects: Rally, Tempest, etc.).
It's worth mentioning that, as opposed to the OpenStack Gates leveraging on
[DevStack](https://docs.openstack.org/devstack/latest/), it can check the same
already deployed SUT over and over even from a
[Raspberry PI](https://www.raspberrypi.org/). Here the testcases can be
executed in parallel vs the same deployment instead of being executed vs
different pools of virtual machines.

Here are the functional tests (>2000) running in OpenStack gates integrated in
Functest Smoke (see
[Functest daily jobs](https://build.opnfv.org/ci/view/functest/job/functest-iruya-daily/190/) for more details):

| Testcases | Gates |
| :------------------------- | :----------------- |
| tempest_full | General |
| tempest_slow | General |
| tempest_scenario | General |
| neutron-tempest-plugin-api | Neutron |
| patrole | Patrole |
| barbican | Barbican |
| networking-bgpvpn | Networking BGP VPN |
| networking-sfc | Networking SFC |

Functest also integrates a few
[performance tools](https://docs.openstack.org/developer/performance-docs/methodologies/tools.html) as proposed by OpenStack:

| Testcases | Benchmarking |
| :--------- | :-------------------------- |
| rally_full | Control Plane (API) testing |
| rally_jobs | Control Plane (API) testing |
| vmtp | Data Plane testing |
| shaker | Data Plane testing |

#### 8.7.4.2 Yardstick

#### 8.7.4.3 Bottlenecks

<a name="8.7.5"></a>
### 8.7.5 Test Categories
Expand Down

0 comments on commit 0261c6b

Please sign in to comment.