aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/com/img/testapi0.pngbin0 -> 37907 bytes
-rw-r--r--docs/com/img/testapi1.pngbin0 -> 63056 bytes
-rwxr-xr-xdocs/com/pres/testapi.html236
3 files changed, 236 insertions, 0 deletions
diff --git a/docs/com/img/testapi0.png b/docs/com/img/testapi0.png
new file mode 100644
index 000000000..06df74d75
--- /dev/null
+++ b/docs/com/img/testapi0.png
Binary files differ
diff --git a/docs/com/img/testapi1.png b/docs/com/img/testapi1.png
new file mode 100644
index 000000000..e9a697449
--- /dev/null
+++ b/docs/com/img/testapi1.png
Binary files differ
diff --git a/docs/com/pres/testapi.html b/docs/com/pres/testapi.html
new file mode 100755
index 000000000..4479b93b4
--- /dev/null
+++ b/docs/com/pres/testapi.html
@@ -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>