Update git submodules
[opnfvdocs.git] / docs / testing / ecosystem / overview.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. SPDX-License-Identifier: CC-BY-4.0
3
4 =============
5 OPNFV testing
6 =============
7
8 Introduction
9 ============
10
11 Testing is one of the key activities in OPNFV and includes unit, feature, component, system
12 level testing for development, automated deployment, performance characterization or stress
13 testing.
14
15 Test projects are dedicated to provide frameworks, tooling and test-cases categorized as
16 functional, performance or compliance testing. Test projects fulfill different roles such as
17 verifying VIM functionality, benchmarking components and platforms or analysis of measured
18 KPIs for the scenarios released in OPNFV.
19
20 Feature projects also provide their own test suites that either run independently or within a
21 test project.
22
23 This document details the OPNFV testing ecosystem, describes common test components used
24 by individual OPNFV projects and provides links to project specific documentation.
25
26
27 OPNFV testing ecosystem
28 =======================
29
30 The testing projects
31 --------------------
32
33 The OPNFV testing projects may be summarized as follows:
34
35 .. figure:: ../../images/OPNFV_testing_working_group.png
36    :align: center
37    :alt: Overview of OPNFV Testing projects
38
39 The major testing projects are described in the table below:
40
41 +----------------+---------------------------------------------------------+
42 |  Project       |   Description                                           |
43 +================+=========================================================+
44 |  Bottlenecks   | This project aims to find system bottlenecks by testing |
45 |                | and verifying OPNFV infrastructure in a staging         |
46 |                | environment before committing it to a production        |
47 |                | environment. Instead of debugging a deployment in       |
48 |                | production environment, an automatic method for         |
49 |                | executing benchmarks which plans to validate the        |
50 |                | deployment during staging is adopted. This project      |
51 |                | forms a staging framework to find bottlenecks and to do |
52 |                | analysis of the OPNFV infrastructure.                   |
53 +----------------+---------------------------------------------------------+
54 | CPerf          | SDN Controller benchmarks and performance testing,      |
55 |                | applicable to controllers in general. Collaboration of  |
56 |                | upstream controller testing experts, external test tool |
57 |                | developers and the standards community. Primarily       |
58 |                | contribute to upstream/external tooling, then add jobs  |
59 |                | to run those tools on OPNFV's infrastructure.           |
60 +----------------+---------------------------------------------------------+
61 | Dovetail       | This project intends to define and provide a set of     |
62 |                | OPNFV related validation criteria that will provide     |
63 |                | input for the evaluation of the use of OPNFV trademarks.|
64 |                | The dovetail project is executed with the guidance and  |
65 |                | oversight of the Compliance and Certification committee |
66 |                | and work to secure the goals of the C&C committee for   |
67 |                | each release. The project intends to incrementally      |
68 |                | define qualification criteria that establish the        |
69 |                | foundations of how we are able to measure the ability to|
70 |                | utilize the OPNFV platform, how the platform itself     |
71 |                | should behave, and how applications may be deployed on  |
72 |                | the platform.                                           |
73 +----------------+---------------------------------------------------------+
74 | Functest       | This project deals with the functional testing of the   |
75 |                | VIM and NFVI. It leverages several upstream test suites |
76 |                | (OpenStack, ODL, ONOS, etc.) and can be used by feature |
77 |                | project to launch feature test suites in CI/CD.         |
78 |                | The project is used for scenario validation.            |
79 +----------------+---------------------------------------------------------+
80 | Qtip           | QTIP as the project for "Platform Performance           |
81 |                | Benchmarking" in OPNFV aims to provide user a simple    |
82 |                | indicator for performance, supported by comprehensive   |
83 |                | testing data and transparent calculation formula.       |
84 |                | It provides a platform with common services for         |
85 |                | performance benchmarking which helps users to build     |
86 |                | indicators by themselves with ease.                     |
87 +----------------+---------------------------------------------------------+
88 | Storperf       | The purpose of this project is to provide a tool to     |
89 |                | measure block and object storage performance in an NFVI.|
90 |                | When complemented with a characterization of typical VF |
91 |                | storage performance requirements, it can provide        |
92 |                | pass/fail thresholds for test, staging, and production  |
93 |                | NFVI environments.                                      |
94 +----------------+---------------------------------------------------------+
95 | VSperf         | This project provides a framework for automation of NFV |
96 |                | data-plane performance testing and benchmarking. The    |
97 |                | NFVI fast-path includes switch technology and network   |
98 |                | with physical and virtual interfaces. VSperf can be     |
99 |                | used to evaluate the suitability of different Switch    |
100 |                | implementations and features, quantify data-path        |
101 |                | performance and optimize platform configurations.       |
102 +----------------+---------------------------------------------------------+
103 | Yardstick      | The goal of the Project is to verify the infrastructure |
104 |                | compliance when running VNF applications. NFV Use Cases |
105 |                | described in ETSI GS NFV 001 show a large variety of    |
106 |                | applications, each defining specific requirements and   |
107 |                | complex configuration on the underlying infrastructure  |
108 |                | and test tools.The Yardstick concept decomposes typical |
109 |                | VNF work-load performance metrics into a number of      |
110 |                | characteristics/performance vectors, which each of them |
111 |                | can be represented by distinct test-cases.              |
112 +----------------+---------------------------------------------------------+
113
114
115 ===================================
116 The testing working group resources
117 ===================================
118
119 The assets
120 ==========
121
122 Overall Architecture
123 --------------------
124 The Test result management can be summarized as follows::
125
126   +-------------+    +-------------+    +-------------+
127   |             |    |             |    |             |
128   |   Test      |    |   Test      |    |   Test      |
129   | Project #1  |    | Project #2  |    | Project #N  |
130   |             |    |             |    |             |
131   +-------------+    +-------------+    +-------------+
132            |               |               |
133            V               V               V
134        +---------------------------------------------+
135        |                                             |
136        |           Test Rest API front end           |
137        |    http://testresults.opnfv.org/test        |
138        |                                             |
139        +---------------------------------------------+
140            ^                |                     ^
141            |                V                     |
142            |     +-------------------------+      |
143            |     |                         |      |
144            |     |    Test Results DB      |      |
145            |     |         Mongo DB        |      |
146            |     |                         |      |
147            |     +-------------------------+      |
148            |                                      |
149            |                                      |
150      +----------------------+        +----------------------+
151      |                      |        |                      |
152      | Testing Dashboards   |        |      Landing page    |
153      |                      |        |                      |
154      +----------------------+        +----------------------+
155
156
157 The testing databases
158 ---------------------
159 A Mongo DB Database has been introduced for the Brahmaputra release.
160 The following collections are declared in this database:
161  * pods: the list of pods used for production CI
162  * projects: the list of projects providing test cases
163  * testcases: the test cases related to a given project
164  * results: the results of the test cases
165  * scenarios: the OPNFV scenarios tested in CI
166
167 This database can be used by any project through the testapi.
168 Please note that projects may also use additional databases. This database is
169 mainly use to colelct CI results and scenario trust indicators.
170
171 This database is also cloned for OPNFV Plugfest.
172
173
174 The test API
175 ------------
176 The Test API is used to declare pods, projects, test cases and test results.
177 Pods correspond to the cluster of machines (3 controller and 2 compute nodes in
178 HA mode) used to run the tests and defined in Pharos project.
179 The results pushed in the database are related to pods, projects and cases.
180 If you try to push results of test done on non referenced pod, the API will
181 return an error message.
182
183 An additional method dashboard has been added to post-process the raw results in
184 the Brahmaputra release (deprecated in Colorado release).
185
186 The data model is very basic, 5 objects are available:
187   * Pods
188   * Projects
189   * Testcases
190   * Results
191   * Scenarios
192
193 For detailed information, please go to http://artifacts.opnfv.org/releng/docs/testapi.html
194
195
196 The reporting
197 -------------
198 The reporting page for the test projects is http://testresults.opnfv.org/reporting/
199
200 .. figure:: ../../images/reporting_page.png
201    :align: center
202    :alt: Testing group reporting page
203
204 This page provides a reporting per OPNFV release and per testing project.
205
206 .. figure:: ../../images/reporting_danube_page.png
207    :align: center
208    :alt: Testing group Danube reporting page
209
210 An evolution of this page is planned.
211 It was decided to unify the reporting by creating a landing page that should give
212 the scenario status in one glance (it was previously consolidated manually
213 on a wiki page).
214
215 The landing page (planned for Danube 2.0) will be displayed per scenario:
216  * the status of the deployment
217  * the score of the test projectS
218  * a trust indicator
219
220 Additional filters (version, installer, test collection time window,... ) are
221 included.
222
223 The test case catalog
224 ---------------------
225 Until the Colorado release, each testing project was managing the list of its
226 test cases. It was very hard to have a global view of the available test cases
227 among the different test projects. A common view was possible through the API
228 but it was not very user friendly.
229 In fact you may know all the cases per project calling:
230
231  http://testresults.opnfv.org/test/api/v1/projects/<project_name>/cases
232
233 with project_name: bottlenecks, functest, qtip, storperf, vsperf, yardstick
234
235 It was decided to build a web site providing a consistent view of the test cases
236 per project and allow any scenario owner to build his/her custom list of tests
237 (Danube 2.0).
238
239 Other resources
240 ===============
241
242 wiki: https://wiki.opnfv.org/testing
243
244 mailing list: test-wg@lists.opnfv.org
245
246 IRC chan: #opnfv-testperf
247
248 weekly meeting (https://wiki.opnfv.org/display/meetings/TestPerf):
249  * Usual time: Every Thursday 15:00-16:00 UTC / 7:00-8:00 PST
250  * APAC time: 2nd Wednesday of the month 8:00-9:00 UTC
251
252 =======================
253 Reference documentation
254 =======================
255
256 +----------------+---------------------------------------------------------+
257 |  Project       |   Documentation links                                   |
258 +================+=========================================================+
259 |  Bottlenecks   | https://wiki.opnfv.org/display/bottlenecks/Bottlenecks  |
260 +----------------+---------------------------------------------------------+
261 | CPerf          | https://wiki.opnfv.org/display/cperf                    |
262 +----------------+---------------------------------------------------------+
263 | Dovetail       | https://wiki.opnfv.org/display/dovetail                 |
264 +----------------+---------------------------------------------------------+
265 | Functest       | https://wiki.opnfv.org/display/functest/                |
266 +----------------+---------------------------------------------------------+
267 | Qtip           | https://wiki.opnfv.org/display/qtip                     |
268 +----------------+---------------------------------------------------------+
269 | Storperf       | https://wiki.opnfv.org/display/storperf/Storperf        |
270 +----------------+---------------------------------------------------------+
271 | VSperf         | https://wiki.opnfv.org/display/vsperf                   |
272 +----------------+---------------------------------------------------------+
273 | Yardstick      | https://wiki.opnfv.org/display/yardstick/Yardstick      |
274 +----------------+---------------------------------------------------------+