7 <title>OPNFV presentation</title>
9 <meta name="description" content="Test API">
10 <meta name="author" content="Serena Feng">
12 <meta name="apple-mobile-web-app-capable" content="yes" />
13 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
15 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
17 <link rel="stylesheet" href="../css/reveal.css">
18 <link rel="stylesheet" href="../css/theme/OPNFV-Berlin.css" id="theme">
20 <!-- Code syntax highlighting -->
21 <link rel="stylesheet" href="../lib/css/zenburn.css">
23 <!-- Printing and PDF exports -->
25 var link = document.createElement( 'link' );
26 link.rel = 'stylesheet';
27 link.type = 'text/css';
28 link.href = window.location.search.match( /print-pdf/gi ) ? '../css/print/pdf.css' : '../css/print/paper.css';
29 document.getElementsByTagName( 'head' )[0].appendChild( link );
33 <script src="lib/js/html5shiv.js"></script>
40 <!-- Any section element inside of this container is displayed as a slide -->
43 <section data-background="../img/title-bg-berlin.png" data-background-transition="none">
46 <h3>Clean, Easy, Complete</h3>
48 <h4>OPNFV testing community</h4>
49 <h5>OPNFV Design Summit, 20/6/2016, Berlin</h5>
53 <section data-markdown>
62 <section data-markdown>
65 <section data-markdown>
66 ## Consistant view for
73 <section data-markdown>
76 * Many formats (log, html, json, ..)
77 * Many locations (in VM, Jumphost, external DB,...)
79 <section data-markdown>
80 ## Achieve using testAPI
81 * Uniform API: testAPI
82 * Uniform format: JSON
83 * Universal Location: http://testresults.opnfv.org
86 <section data-markdown>
94 <section data-markdown>
97 <section data-markdown>
99 ![testapi](https://wiki.opnfv.org/download/attachments/2926452/results_collection_structure.png?version=1&modificationDate=1459196347000&api=v2 "OPNFV API page")
101 <section data-markdown>
102 ## API in Brahmaputra
103 ![testapi](../img/testapi0.png)
104 https://wiki.opnfv.org/display/functest/Collection+Of+Test+Results
107 <section data-markdown>
108 ## API status in Brahmaputra
109 * Simple data models aggreed with the testing group
111 * Wiki and rst documentation
114 <section data-markdown>
115 ## Lessons learned in B.
116 * Painful wiki documentation
117 * Simple result model
118 * Misuse version as scenario
119 * No version actually
120 * No overall criteria (PASS/FAIL)
121 * Difficult refactoring
124 <h2>Colorado refactoring</h2>
126 <li>Update of the data model</li>
127 <li>Swagger tornado framework for the doc</li>
128 <li>URL and MongoDB collection renaming</li>
129 <li>Scripts to support backup/restore/update DB</li>
130 <li>Support installation</li>
132 <p class="fragment fade-up"><b>All done in Colorado!</b></p>
137 <section data-markdown>
142 <h2> URI changes...</h2>
143 <div style="text-align:left"">
144 <p> testresults.opnfv.org/test/testapi => <br>testresults.opnfv.org/test/api/v1 </p>
146 <p> http://testresults.opnfv.org/test/api/v1/<b>pods</b></p>
147 <p> http://testresults.opnfv.org/test/api/v1/<b>projects</b></p>
148 <p> http://testresults.opnfv.org/test/api/v1/projects/qtip/<b>cases</b></p>
149 <p> http://testresults.opnfv.org/test/api/v1/<b>results</b></p>
152 <section data-markdown>
153 ## One new field for pods
156 | role | community_pod, ci_pod, .. |
158 <section data-markdown>
159 ## Changed fields for results
160 | Item | Brahmaputra | Colorado |
161 | :--- | :--- | :--- |
162 | date | creation_date | start_date and stop_date |
163 | version | used as scenario | git version |
165 <section data-markdown>
166 ## New fields for results
169 | scenario | used for scenario |
170 | criteria | Pass/Failed |
171 | trust_indicator | between 0 and 1|
173 <section data-markdown>
174 ## One new filter for results
177 | last | get last N results|
179 <section data-markdown>
180 http://testresults.opnfv.org/test/swagger/spec.html
181 ![alt text](../img/testapi1.png "Test API swagger interface")
185 <pre><code class="hljs" data-trim contenteditable>
186 umry8364@umry8364-Latitude-E6400:~/Dev/OPNFV/releng/utils/test/result_collection_api$ ./run_test.sh
188 WARNING:tornado.general:404 GET /dashboard/v1/results?case=vPing&pod=zte-pod1&version=C&installer=fuel&period=5 (127.0.0.1): Project name missing
189 WARNING:tornado.access:404 GET /dashboard/v1/results?case=vPing&pod=zte-pod1&version=C&installer=fuel&period=5 (127.0.0.1) 2.30ms
190 WARNING:tornado.general:400 POST /api/v1/projects (127.0.0.1): name missing
192 WARNING:tornado.access:400 POST /api/v1/projects (127.0.0.1) 1.13ms
193 WARNING:tornado.access:403 PUT /api/v1/projects/functest/cases/vping_1 (127.0.0.1) 2.95ms
194 WARNING:tornado.general:404 PUT /api/v1/projects/functest/cases/notFound (127.0.0.1): {'project_name': u'functest', 'name': u'notFound'} could not be found in table [testcases]
195 WARNING:tornado.access:404 PUT /api/v1/projects/functest/cases/notFound (127.0.0.1) 2.85ms
197 Ran 74 tests in 1.848s
204 <section data-markdown>
207 <section data-markdown>
210 * Integration with Kibana
211 * Command Line Interface
212 * Automatic update for pods/projects/testcases
214 <section data-markdown>
219 <img width="600" data-src="../img/colorado.png" alt="tests">
224 <img src="../img/logo-OPNFV-Berlin.png" alt="OPNFV logo">
228 <script src="../lib/js/head.min.js"></script>
229 <script src="../js/reveal.js"></script>
233 // Full list of configuration options available at:
234 // https://github.com/hakimel/reveal.js#configuration
241 transition: 'slide', // none/fade/slide/convex/concave/zoom
243 // Optional reveal.js plugins
245 { src: '../lib/js/classList.js', condition: function() { return !document.body.classList; } },
246 { src: '../plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
247 { src: '../plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
248 { src: '../plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
249 { src: '../plugin/zoom-js/zoom.js', async: true },
250 { src: '../plugin/notes/notes.js', async: true }