Add presentation for test API 43/15143/2
authorMorgan Richomme <morgan.richomme@orange.com>
Fri, 3 Jun 2016 13:29:38 +0000 (15:29 +0200)
committerMorgan Richomme <morgan.richomme@orange.com>
Fri, 3 Jun 2016 16:46:55 +0000 (18:46 +0200)
Change-Id: I23a474247680751bb4f9ac0cc17b00229edd8886
Signed-off-by: Morgan Richomme <morgan.richomme@orange.com>
docs/com/img/testapi0.png [new file with mode: 0644]
docs/com/img/testapi1.png [new file with mode: 0644]
docs/com/pres/testapi.html [new file with mode: 0755]

diff --git a/docs/com/img/testapi0.png b/docs/com/img/testapi0.png
new file mode 100644 (file)
index 0000000..06df74d
Binary files /dev/null and b/docs/com/img/testapi0.png differ
diff --git a/docs/com/img/testapi1.png b/docs/com/img/testapi1.png
new file mode 100644 (file)
index 0000000..e9a6974
Binary files /dev/null and b/docs/com/img/testapi1.png differ
diff --git a/docs/com/pres/testapi.html b/docs/com/pres/testapi.html
new file mode 100755 (executable)
index 0000000..4479b93
--- /dev/null
@@ -0,0 +1,236 @@
+<!doctype html>
+<html lang="en">
+
+       <head>
+               <meta charset="utf-8">
+
+               <title>OPNFV presentation</title>
+
+               <meta name="description" content="Test API">
+               <meta name="author" content="Serena Feng">
+
+               <meta name="apple-mobile-web-app-capable" content="yes" />
+               <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
+
+               <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
+
+               <link rel="stylesheet" href="../css/reveal.css">
+               <link rel="stylesheet" href="../css/theme/OPNFV.css" id="theme">
+
+               <!-- Code syntax highlighting -->
+               <link rel="stylesheet" href="../lib/css/zenburn.css">
+
+               <!-- Printing and PDF exports -->
+               <script>
+                       var link = document.createElement( 'link' );
+                       link.rel = 'stylesheet';
+                       link.type = 'text/css';
+                       link.href = window.location.search.match( /print-pdf/gi ) ? '../css/print/pdf.css' : '../css/print/paper.css';
+                       document.getElementsByTagName( 'head' )[0].appendChild( link );
+               </script>
+
+               <!--[if lt IE 9]>
+               <script src="lib/js/html5shiv.js"></script>
+               <![endif]-->
+       </head>
+
+       <body>
+
+               <div class="reveal">
+                       <!-- Any section element inside of this container is displayed as a slide -->
+                       <div class="slides">
+
+                               <section data-background="../img/title-bg.png" data-background-transition="none">
+                     <h1>Test API</h1>
+                     <h3>Clean, Easy, Complete</h3>
+                     <br>
+                                        <h4>OPNFV testing community</h4>
+                                        <h5>OPNFV Design Summit, 20/6/2016, Berlin</h5>
+                                        <br>
+                               </section>
+
+                               <section data-markdown>
+                                       # Agenda
+                                       * A test API: what for?
+                                       * API overview
+                                       * API evolution
+                               </section>
+
+                <section>
+                    <section data-markdown>
+                    # A test API: what for?
+                    </section>
+                    <section data-markdown>
+                    ## Give a consistant view for
+                    * Test projects
+                    * Test cases
+                    * Test resources (Pods)
+                    * Test results
+                    </section>
+
+                    <section data-markdown>
+                    ## Unify result display
+                    * From many projects
+                    * Many formats (log, html, json, ..)
+                    * Many locations (in VM, Jumphost, external DB,...)
+                    </section>
+
+                    <section data-markdown>
+                    ## Help building
+                    * Dashboards
+                    * Automatic reporting
+                    </section>
+                </section>
+
+                <section>
+                    <section data-markdown>
+                    # API overview
+                    </section>
+                    <section data-markdown>
+                    ## API in Brahmaputra
+                    * Tornado + MongoDB
+                    * Simple data models aggreed with the testing group
+                    * No unit tests
+                    * Wiki and rst documentation
+                    </section>
+
+                    <section data-markdown>
+                                       ## API in Brahmaputra
+                                       ![testapi](https://wiki.opnfv.org/download/attachments/2926452/results_collection_structure.png?version=1&modificationDate=1459196347000&api=v2 "OPNFV API page")
+                                       </section>
+                    <section data-markdown>
+                                       ## API in Brahmaputra
+                                       ![testapi](../img/testapi0.png)
+                                       https://wiki.opnfv.org/display/functest/Collection+Of+Test+Results
+                    </section>
+
+                    <section data-markdown>
+                    ## Lessons learned in B.
+                    * Wiki documentation is painful
+                    * result modl too simple
+                     * version used for scenario
+                     * no version
+                     * no overall criteria (passed/failed)
+                    * need unit tests for data model evolution
+                    </section>
+                    <section data-markdown>
+                    ## Colorado refactoring
+                    * done by Serena Feng (ZTE)
+                    * update of the data model (based on lesson learned)
+                    * creation of a swagger tornado framework for the doc
+                    * creation of unit tests
+                    </section>
+                </section>
+
+                <section>
+                    <section data-markdown>
+                                               #API evolution
+                    </section>
+<section>
+                                               <h3>Test API evolution</h3>
+                                               <table>
+                                                       <thead>
+                                                               <tr>
+                                                                       <th>Field</th>
+                                                                       <th>Brahmaputra</th>
+                                                                       <th>Colorado</th>
+                                                               </tr>
+                                                       </thead>
+                                                       <tbody>
+                                                               <tr>
+                                                                       <td>date</td>
+                                                                       <td>creation_date</td>
+                                                                       <td>start_date and stop_date</td>
+                                                               </tr>
+                                                               <tr>
+                                                                       <td>version</td>
+                                                                       <td>used as scenario</td>
+                                                                       <td>git version</td>
+                                                               </tr>
+                                                               <tr>
+                                                                       <td>scenario</td>
+                                                                       <td>N.R</td>
+                                                                       <td>used for scenario</td>
+                                                               </tr>
+                                                               <tr>
+                                                                       <td>test_criteria</td>
+                                                                       <td>N.R</td>
+                                                                       <td>passed/failed</td>
+                                                               </tr>
+                                                               <tr>
+                                                                       <td>trust_indictator</td>
+                                                                       <td>N.R</td>
+                                                                       <td>between 0 and 1</td>
+                                                               </tr>
+                                                               <tr>
+                                                                       <td>last</td>
+                                                                       <td>N.R</td>
+                                                                       <td>get last N results</td>
+                                                               </tr>
+                                                       </tbody>
+                                               </table>
+                                       </section>
+                    <section data-markdown>
+                                               ## Swagger doc
+                                               ![alt text](../img/testapi1.png "Test API swagger interface")
+                    </section>
+<section>
+                                       <h2>unit tests</h2>
+                                       <pre><code class="hljs" data-trim contenteditable>
+umry8364@umry8364-Latitude-E6400:~/Dev/OPNFV/releng/utils/test/result_collection_api$ ./run_test.sh 
+Tests running...
+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
+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
+WARNING:tornado.general:400 POST /api/v1/projects (127.0.0.1): name missing
+............
+WARNING:tornado.access:400 POST /api/v1/projects (127.0.0.1) 1.13ms
+WARNING:tornado.access:403 PUT /api/v1/projects/functest/cases/vping_1 (127.0.0.1) 2.95ms
+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]
+WARNING:tornado.access:404 PUT /api/v1/projects/functest/cases/notFound (127.0.0.1) 2.85ms
+
+Ran 74 tests in 1.848s
+OK
+                                       </code></pre>
+                               </section>
+                </section>
+                               <section>
+                                       <h3>Thank you</h3>
+                                       <img width="600"  data-src="../img/colorado.png" alt="tests">
+                               </section>
+
+                       </div>
+            <div class='footer'>
+                                <img src="../img/logo-OPNFV.png" alt="OPNFV logo">
+               </div>
+               </div>
+
+               <script src="../lib/js/head.min.js"></script>
+               <script src="../js/reveal.js"></script>
+
+               <script>
+
+                       // Full list of configuration options available at:
+                       // https://github.com/hakimel/reveal.js#configuration
+                       Reveal.initialize({
+                               controls: true,
+                               progress: true,
+                               history: true,
+                               center: true,
+
+                               transition: 'slide', // none/fade/slide/convex/concave/zoom
+
+                               // Optional reveal.js plugins
+                               dependencies: [
+                                       { src: '../lib/js/classList.js', condition: function() { return !document.body.classList; } },
+                                       { src: '../plugin/markdown/marked.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
+                                       { src: '../plugin/markdown/markdown.js', condition: function() { return !!document.querySelector( '[data-markdown]' ); } },
+                                       { src: '../plugin/highlight/highlight.js', async: true, condition: function() { return !!document.querySelector( 'pre code' ); }, callback: function() { hljs.initHighlightingOnLoad(); } },
+                                       { src: '../plugin/zoom-js/zoom.js', async: true },
+                                       { src: '../plugin/notes/notes.js', async: true }
+                               ]
+                       });
+
+               </script>
+
+       </body>
+</html>