ffd4c597da36c946198fd57b6b61822a9e9db121
[opnfvdocs.git] / docs / testing / ecosystem / overview.rst
1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/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 catagorized 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 test commonality used
24 by the 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:: https://wiki.opnfv.org/download/attachments/8688867/EcoSystem%20Copy.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.                   |
56 +----------------+---------------------------------------------------------+
57 | Dovetail       | This project intends to define and provide a set of     |
58 |                | OPNFV related validation criteria that will provide     |
59 |                | input for the evaluation of the use of OPNFV trademarks.|
60 |                | The dovetail project is executed with the guidance and  |
61 |                | oversight of the Compliance and Certification committee |
62 |                | and work to secure the goals of the C&C committee for   |
63 |                | each release. The project intends to incrementally      |
64 |                | define qualification criteria that establish the        |
65 |                | foundations of how we are able to measure the ability to|
66 |                | utilize the OPNFV platform, how the platform itself     |
67 |                | should behave, and how applications may be deployed on  |
68 |                | the platform.                                           |
69 +----------------+---------------------------------------------------------+
70 | Functest       | This project deals with the functional testing of the   |
71 |                | VIM and NFVI. It leverages several upstream test suites |
72 |                | (OpenStack, ODL, ONOS,..) and can be used by feature    |
73 |                | project to launch feature test suites in CI/CD.         |
74 |                | The project is used for scenario validation.            |
75 +----------------+---------------------------------------------------------+
76 | Qtip           | QTIP as the project for "Platform Performance           |
77 |                | Benchmarking" in OPNFV aims to provide user a simple    |
78 |                | indicator for performance, supported by comprehensive   |
79 |                | testing data and transparent calculation formula.       |
80 |                | It provides a platform with common services for         |
81 |                | performance benchmarking which helps users to build     |
82 |                | indicators by themselves with ease.                     |
83 +----------------+---------------------------------------------------------+
84 | Storperf       | The purpose of this project is to provide a tool to     |
85 |                | measure block and object storage performance in an NFVI.|
86 |                | When complemented with a characterization of typical VF |
87 |                | storage performance requirements, it can provide        |
88 |                | pass/fail thresholds for test, staging, and production  |
89 |                | NFVI environments.                                      |
90 +----------------+---------------------------------------------------------+
91 | VSperf         | This project provides a framework for automation of NFV |
92 |                | data-plane performance testing and benchmarking. The    |
93 |                | NFVI fast-path includes switch technology and network   |
94 |                | with physical and virtual interfaces. Vsperf can be     |
95 |                | used to evaluate the suitability of different Switch    |
96 |                | implementations and features, quantify data-path        |
97 |                | performance and optimize platform configurations.       |
98 +----------------+---------------------------------------------------------+
99 | Yardstick      | The goal of the Project is to verify the infrastructure |
100 |                | compliance when running VNF applications. NFV Use Cases |
101 |                | described in ETSI GS NFV 001 show a large variety of    |
102 |                | applications, each defining specific requirements and   |
103 |                | complex configuration on the underlying infrastructure  |
104 |                | and test tools.The Yardstick concept decomposes typical |
105 |                | VNF work-load performance metrics into a number of      |
106 |                | characteristics/performance vectors, which each of them |
107 |                | can be represented by distinct test-cases.              |
108 +----------------+---------------------------------------------------------+
109
110
111 ===================================
112 The testing working group resources
113 ===================================
114
115 The assets
116 ==========
117
118 Overall Architecture
119 --------------------
120 The Test result management can be summarized as follows::
121
122   +-------------+    +-------------+    +-------------+
123   |             |    |             |    |             |
124   |   Test      |    |   Test      |    |   Test      |
125   | Project #1  |    | Project #2  |    | Project #N  |
126   |             |    |             |    |             |
127   +-------------+    +-------------+    +-------------+
128            |               |               |
129            V               V               V
130        +---------------------------------------------+
131        |                                             |
132        |           Test Rest API front end           |
133        |    http://testresults.opnfv.org/test        |
134        |                                             |
135        +---------------------------------------------+
136            ^                |                     ^
137            |                V                     |
138            |     +-------------------------+      |
139            |     |                         |      |
140            |     |    Test Results DB      |      |
141            |     |         Mongo DB        |      |
142            |     |                         |      |
143            |     +-------------------------+      |
144            |                                      |
145            |                                      |
146      +----------------------+        +----------------------+
147      |                      |        |                      |
148      | Testing Dashboards   |        |      Landing page    |
149      |                      |        |                      |
150      +----------------------+        +----------------------+
151
152
153 The testing databases
154 ---------------------
155 A Mongo DB Database has been introduced in Brahmaputra.
156 The following collections are declared in this database:
157  * pods: the list of pods used for production CI
158  * projects: the list of projects providing test cases
159  * testcases: the test cases related to a given project
160  * results: the results of the test cases
161  * scenarios: the OPNFV scenarios tested in CI
162
163 This database can be used by any project through the testapi.
164 Please note that projects may also use additional databases. This database is
165 mainly use to colelct CI results and scenario trust indicators.
166
167 This database is cloned for plugfest.
168
169
170 The test API
171 ------------
172 The Test API is used to declare pods, projects, test cases and test
173 results. Pods are the pods used to run the tests.
174 The results pushed in the database are related to pods, projects and
175 cases. If you try to push results of test done on non referenced pod,
176 the API will return an error message.
177
178 An additional method dashboard has been added to post-process
179 the raw results in release Brahmaputra (deprecated in Colorado).
180
181 The data model is very basic, 4 objects are created:
182
183   * Pods
184   * Projects
185   * Testcases
186   * Results
187
188 Pods::
189
190   {
191     "id": <ID>,
192     "details": <URL description of the POD>,
193     "creation_date": "YYYY-MM-DD HH:MM:SS",
194     "name": <The POD Name>,
195     "mode": <metal or virtual>,
196     "role": <ci-pod or community-pod or single-node>
197   },
198
199 Projects::
200
201   {
202     "id": <ID>,
203     "name": <Name of the Project>,
204     "creation_date": "YYYY-MM-DD HH:MM:SS",
205     "description": <Short description>
206   },
207
208 Testcases::
209
210   {
211     "id": <ID>,
212     "name":<Name of the test case>,
213     "project_name":<Name of belonged project>,
214     "creation_date": "YYYY-MM-DD HH:MM:SS",
215     "description": <short description>,
216     "url":<URL for longer description>
217   },
218
219 Results::
220
221   {
222     "_id": <ID>,
223     "case_name": <Reference to the test case>,
224     "project_name": <Reference to project>,
225     "pod_name": <Reference to POD where the test was executed>,
226     "installer": <Installer Apex or Compass or Fuel or Joid>,
227     "version": <master or Colorado or Brahmaputra>,
228     "start_date": "YYYY-MM-DD HH:MM:SS",
229     "stop_date": "YYYY-MM-DD HH:MM:SS",
230     "build_tag": <such as "jenkins-functest-fuel-baremetal-daily-master-108">,
231     "scenario": <Scenario on which the test was executed>,
232     "criteria": <PASS or FAILED>,
233     "trust_indicator": {
234                         "current": 0,
235                         "histories": []
236                        }
237   }
238
239   Scenarios::
240
241     {
242       "id": <ID>,
243       "name":<Name of the test case>,
244       "name" : "os-odl_l2-nofeature-ha",
245       "installers":[
246        {
247        "installer" : <installer name>,
248        "versions": [
249            {
250             "version": <version name>,
251             "owner": <scenario owner>,
252             "custom list": { "projects": [{
253                                  "functest" : [ "vping_ssh", "vping_userdata", "tempest_smoke_serial", "rally_sanity", "odl", "doctor"],
254                                  "yardstick" : [ "tc002","tc005","tc010","tc011","tc012","tc014","tc037","tc055","tc063","tc069","tc070","tc071","tc072","tc075"]}]},
255             "score": { "projects": [{
256                                   "functest" : [{"date": YYY-MM-DD HH:MM, "score":<score>}, {"date": YYY-MM-DD HH:MM, "score":<score>}, ...],
257                                   "yardstick" : [{"date": YYY-MM-DD HH:MM, "score":<score>}, {"date": YYY-MM-DD HH:MM, "score":<score>}, ...]}]},
258             "trust_indicator": { "projects": [{
259             "functest" : [{"date": YYY-MM-DD HH:MM,"status":<status>}, {"date": YYY-MM-DD HH:MM,"status":<status>},...],
260             "yardstick" : [{"date": YYY-MM-DD HH:MM,"status":<status>}, {"date": YYY-MM-DD HH:MM,"status":<status>},...]}]}},
261           { ....
262     },
263
264 For detailed information, please go to
265
266  http://testresults.opnfv.org/test/swagger/spec.html
267
268  Authentication: opnfv/api@opnfv
269
270 Please notes that POST/DELETE/PUT operations for test or study purpose via
271 swagger website is not allowed, because it will change the real data in
272 the database.
273
274
275 The reporting
276 -------------
277 Until Colorado, each testing project was reporting a status on a dedicated page.
278 It was decided to unify the reporting by creating a landing page that should give
279 the scenario status in one glance (it was previously consolidated manually
280 on a wiki page). The landing page will be display per scenario:
281  * the status of the deployment
282  * the score of the test projectS
283  * a trust indicator
284
285 Additional filters (version, installer, test collection time window,... )
286
287 This landing page has been dockerized. The back end relies on the testing DB.
288
289  TODO: add picture
290
291 The test case catalog
292 ----------------------
293 Until Colorado, each testing project was managing the list of its test cases. It
294 was very hard to have a global view of the available test cases among the
295 different test projects. A common view was possible through the API but it was
296 not very user friendly.
297 It was decided to build a web site providing a consistent view of the test cases
298 per project and allow any scenario owner to build his/her custom list of tests.
299 The test catalog can be described as below::
300
301  TODO: add picture
302
303 Other resources
304 ===============
305
306 wiki: https://wiki.opnfv.org/testing
307
308 mailing list: test-wg@lists.opnfv.org
309
310 IRC chan: #opnfv-testperf
311
312 weekly meeting (https://wiki.opnfv.org/display/meetings/TestPerf):
313  * Usual time: Every Thursday 15:00-16:00 UTC / 7:00-8:00 PST
314  * APAC time: 2nd Wednesday of the month 8:00-9:00 UTC
315
316 =======================
317 Reference documentation
318 =======================
319
320 +----------------+---------------------------------------------------------+
321 |  Project       |   Documentation links                                   |
322 +================+=========================================================+
323 |  Bottlenecks   | https://wiki.opnfv.org/display/bottlenecks/Bottlenecks  |
324 +----------------+---------------------------------------------------------+
325 | CPerf          | https://wiki.opnfv.org/display/meetings/CPerf           |
326 +----------------+---------------------------------------------------------+
327 | Dovetail       | https://wiki.opnfv.org/display/dovetail/Dovetail        |
328 +----------------+---------------------------------------------------------+
329 | Functest       | https://wiki.opnfv.org/display/functest/                |
330 +----------------+---------------------------------------------------------+
331 | Qtip           | https://wiki.opnfv.org/display/qtip                     |
332 +----------------+---------------------------------------------------------+
333 | Storperf       | https://wiki.opnfv.org/display/storperf/Storperf        |
334 +----------------+---------------------------------------------------------+
335 | VSperf         | https://wiki.opnfv.org/display/vsperf/VSperf            |
336 +----------------+---------------------------------------------------------+
337 | Yardstick      | https://wiki.opnfv.org/display/yardstick/Yardstick      |
338 +----------------+---------------------------------------------------------+