aboutsummaryrefslogtreecommitdiffstats
path: root/.gitreview
blob: e59fef8d93834521a7f6183a518df794683ed523 (plain)
1
2
3
4
5
[gerrit]
host=gerrit.opnfv.org
port=29418
project=functest.git
{ color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
.. This work is licensed under a Creative Commons Attribution 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. (c) OPNFV, Dell EMC and others.

==========================
Storperf Reporting Module
==========================


About this project
=====================

* This project aims to create a series of graphs to support the SNIA reports.
* All data for the reports can be fetched either from the OPNFV Test Results DB, or locally from StorPerf's own database of current run data.
* The report code may be stored in either the Releng repository (so it can be included in the Test Results Dashboards), or locally in StorPerf's own git repository.
* The report (generated by the reporting module) looks like the following example:

.. image:: demo_example.png
    :align: center

Usage
=======

* Enter the URL for the location of the data for which you want to generate the report(http://StorPerf:5000/api/v1.0/jobs?type=metadata).
* Note: You can test the module using the testdata present in the directory ``storperf-reporting/src/static/testdata``. Instead of the URL enter the filename present in the testdata directory, eg. **local-data.json**
* After entering the URL, you are taken to the page showing the details of the all the jobs present in the data.
* Click on the *Click here to view details* to see the different block sizes for the respective job.
* Click on the block size and select the parameter for which you want to view the graph.

Graph Explanation
===================

Example of a graph generated is shown below:-


.. image:: graph_explanation.png
    :align: center

**Steady State Convergence Graph**

* This graph shows the values as reported by StorPerf for the actual and average throughput.
* Also shown is the average +-10% and the slope.
* It serves to visually demonstrate the compliance to the steady state definition.
* The allowed maximum data excursion is 20% of the average (or average x 0.20)
* The allowed maximum slope excursion is 10% of the average.
* The measured data excursion is the value from range.
* The measured slope excursion is the value from range

Workflow
==========

A Flask server is used to fetch the data and is sent to the client side for formation of the graphs (Using Javascript).

Steps involved
--------------

* Step 1: Data is fetched from the OPNFV Test Results ReST API
* Step 2: The fields "report_data" and "metrics" are taken from the JSON object retrieved in the above step and sent to the client side.
* Step 3: The "report_data" is obtained by the client side and a parser written in Javascript along with Plotly.js forms the graphs.

Directory structure
====================

``storperf/docker/storperf-reporting/`` contains the code used for this project.

The file structure is as follows:-

.. code-block:: bash

    storperf-reporting
    |+-- Dockerfile                         # Dockerfile for the storperf-reporting container
    |+-- requirements.txt                   # pip requirements for the container
    +-- src                                 # Contains the code for the flask server
        |+-- app.py                         # Code to run the flask application
        |+-- static                         # Contains the static files (js,css)
        |   |+-- css                        # Contains css files
        |   |   `-- bootstrap.min.css
        |   |+-- images
        |   |+-- js                         # Contains the javascript files
        |   |   |-- bootstrap.min.js
        |   |   |-- Chart.min.js
        |   |   |-- jquery-2.1.3.min.js
        |   |   |-- jquery.bootpag.min.js
        |   |   `-- plotly-latest.min.js    # Used for plotting the graphs
        |   `-- testdata                    # Contains testing data for the module
        `-- templates
            |-- index.html
            |-- plot_jobs.html
            |-- plot_multi_data.html
            `-- plot_tables.html

Graphing libraries and tools
==============================

* Plotly.js is used as the graphing library for this project (Link: https://plot.ly/javascript/)
* Bootstrap is used for the UI of the project.