aboutsummaryrefslogtreecommitdiffstats
path: root/docs/com/pres/Summit/Berlin-2016/testapi.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/com/pres/Summit/Berlin-2016/testapi.html')
-rwxr-xr-xdocs/com/pres/Summit/Berlin-2016/testapi.html274
1 files changed, 274 insertions, 0 deletions
diff --git a/docs/com/pres/Summit/Berlin-2016/testapi.html b/docs/com/pres/Summit/Berlin-2016/testapi.html
new file mode 100755
index 00000000..7035d71d
--- /dev/null
+++ b/docs/com/pres/Summit/Berlin-2016/testapi.html
@@ -0,0 +1,274 @@
+<!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-Berlin.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-berlin.png" data-background-transition="none">
+ <br><br><br><br><br>
+ <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
+ * testAPI: what for?
+ * API overview
+ * API evolution
+ * Roadmap
+ </section>
+
+ <section>
+ <section data-markdown>
+ # test API: what for?
+ </section>
+ <section data-markdown>
+ ## Consistant view for
+ * Resources (Pods)
+ * Projects
+ * Test cases
+ * Results
+ </section>
+
+ <section data-markdown>
+ ## Status Currently
+ * From many projects
+ * Many formats (log, html, json, ..)
+ * Many locations (in VM, Jumphost, external DB,...)
+ </section>
+ <section data-markdown>
+ <script type='text/template'>
+ ## Achieve using testAPI
+ * Uniform API: testAPI
+ * Uniform format: JSON
+ * Universal Location: http://testresults.opnfv.org
+ <aside class='notes'>
+ By using testAPI, we hope to provide a uniform way of collection and saving test results to a universal location
+ </aside>
+ </script>
+ </section>
+
+ <section data-markdown>
+ ## Help building
+ * Dashboards
+ * Automatic reporting
+ </section>
+ </section>
+
+ <section>
+ <section data-markdown>
+ # API overview
+ </section>
+ <section data-markdown>
+ ## Storage structure
+ ![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>
+ ## API status in Brahmaputra
+ * Simple data models aggreed with the testing group
+ * No unit tests
+ * Wiki and rst documentation
+ </section>
+
+ <section data-markdown>
+ ## Lessons learned in B.
+ * Painful wiki documentation
+ * Simple result model
+ * Misuse version as scenario
+ * No version actually
+ * No overall criteria (PASS/FAIL)
+ * Difficult refactoring
+ </section>
+ <section>
+ <h2>Colorado refactoring</h2>
+ <ul>
+ <li>Unit tests</li>
+ <li>Update of the data model</li>
+ <li>Tornado_swagger for the documentation</li>
+ <li>URL and MongoDB collection renaming</li>
+ <li>Scripts to support databse backup/restore/update</li>
+ <li>Support installation</li>
+ <aside class='notes'>
+ So you can discover and understand the capabilities of the service without
+ access to source code, documentation, or through network traffic inspection,
+ and also you can interact with the testAPI directly through swagger website.
+ </aside>
+ </ul>
+ <p class="fragment fade-up"><b>All done in Colorado!</b></p>
+ </section>
+ </section>
+
+ <section>
+ <section data-markdown>
+ # API Evoluation
+ </section>
+
+ <section>
+ <h2> URI changes...</h2>
+ <div style="text-align:left"">
+ <p> testresults.opnfv.org/<span style="color:lightblue">testapi</span> => <br>testresults.opnfv.org/<span style="color:yellow">test/api/v1</span> </p>
+
+ <p> /test/api/v1/<b>pods</b></p>
+ <p> /test/api/v1/<b>projects</b></p>
+ <p> /test/api/v1/projects/qtip/<b>cases</b></p>
+ <p> /test/api/v1/<b>results</b></p>
+ </div>
+ </section>
+ <section data-markdown>
+ ## One new field for pods
+ | Field | Colorado |
+ | :--- | :--- |
+ | role | community_pod, ci_pod, .. |
+ </section>
+ <section data-markdown>
+ ## Changed fields for results
+ | Item | Brahmaputra | Colorado |
+ | :--- | :--- | :--- |
+ | date | creation_date | start_date and stop_date |
+ | version | used as scenario | opnfv release version |
+ </section>
+ <section data-markdown>
+ <script type='text/template'>
+ ## New fields for results
+ | Item | Colorado |
+ | :--- | :--- |
+ | scenario | used for scenario |
+ | criteria | PASS/FAILED |
+ | trust_indicator | between 0 and 1|
+ <aside class='notes'>
+ to detect if the test case is stable over time and further more to avoid
+ running it systematically and saving time for other long duration test cases
+ </aside>
+ </script>
+ </section>
+ <section data-markdown>
+ ## One new filter for results
+ | Item | Colorado |
+ | :--- | :--- |
+ | last | get last N results|
+ </section>
+ <section data-markdown>
+ http://testresults.opnfv.org/test/swagger/spec.html
+ ![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>
+ <section data-markdown>
+ # Roadmap
+ </section>
+ <section data-markdown>
+ ## Roadmap
+ * Dockerize testAPI
+ * Automatic update of testAPI
+ * Command Line Interface
+ * Automatic update for pods/projects/testcases
+ </section>
+ <section data-markdown>
+ # suggestions ...
+ </section>
+ <section>
+ <h3>Thank you</h3>
+ <img width="600" data-src="../../../img/colorado.png" alt="tests">
+ </section>
+ </section>
+ </div>
+ <div class='footer'>
+ <img src="../../../img/logo-OPNFV-Berlin.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>