PAL: Add sortable html table for comparisons 77/22477/7
authorTibor Frank <tifrank@cisco.com>
Wed, 2 Oct 2019 11:07:19 +0000 (13:07 +0200)
committerTibor Frank <tifrank@cisco.com>
Mon, 28 Oct 2019 08:16:30 +0000 (09:16 +0100)
Change-Id: I2d690685c5728e5f36b09d542e0f6d1a08cd151a
Signed-off-by: Tibor Frank <tifrank@cisco.com>
docs/report/vpp_performance_tests/comparisons/3n-skx_vs_2n-skx_testbeds.rst
docs/report/vpp_performance_tests/comparisons/3n-skx_vs_3n-hsw_testbeds.rst
docs/report/vpp_performance_tests/comparisons/current_vs_previous_release.rst
docs/report/vpp_performance_tests/comparisons/nic_comparison.rst
resources/tools/presentation/generator_tables.py

index a176f26..bb00f86 100644 (file)
@@ -21,8 +21,10 @@ skx) and 2-Node Skylake (2n-skx) physical testbed types, in 1-core,
 NDR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c NDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-ndr.html>`_
+  - `HTML 2c NDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-ndr.html>`_
   - `ASCII 1c NDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-ndr.txt>`_
   - `ASCII 2c NDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-ndr.txt>`_
   - `CSV 1c NDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-ndr.csv>`_
@@ -31,18 +33,23 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-pdr.html>`_
+  - `HTML 2c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-pdr.html>`_
   - `ASCII 1c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-pdr.txt>`_
-  - `ASCII 1c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-pdr.txt>`_
-  - `CSV 2c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-pdr.csv>`_
+  - `ASCII 2c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-pdr.txt>`_
+  - `CSV 1c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-pdr.csv>`_
   - `CSV 2c PDR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-pdr.csv>`_
 
 MRR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-mrr.html>`_
+  - `HTML 2c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-mrr.html>`_
+  - `HTML 4c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-4c-mrr.html>`_
   - `ASCII 1c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-1c-mrr.txt>`_
   - `ASCII 2c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-2c-mrr.txt>`_
   - `ASCII 4c MRR comparison <../../_static/vpp/performance-compare-topologies-3n-skx-2n-skx-4c-mrr.txt>`_
index 84bdbeb..a0fedc0 100644 (file)
@@ -18,8 +18,10 @@ skx) and 3-Node Haswell (3n-hsw) physical testbed types, in 1-core,
 NDR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c NDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-ndr.html>`_
+  - `HTML 2c NDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-ndr.html>`_
   - `ASCII 1c NDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-ndr.txt>`_
   - `ASCII 2c NDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-ndr.txt>`_
   - `CSV 1c NDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-ndr.csv>`_
@@ -28,8 +30,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c PDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-pdr.html>`_
+  - `HTML 2c PDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-pdr.html>`_
   - `ASCII 1c PDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-pdr.txt>`_
   - `ASCII 2c PDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-pdr.txt>`_
   - `CSV 1c PDR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-pdr.csv>`_
@@ -38,8 +42,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ~~~~~~~~~~~~~~
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-mrr.html>`_
+  - `HTML 2c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-mrr.html>`_
+  - `HTML 4c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-4c-mrr.html>`_
   - `ASCII 1c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-1c-mrr.txt>`_
   - `ASCII 2c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-2c-mrr.txt>`_
   - `ASCII 4c MRR comparison <../../_static/vpp/performance-compare-testbeds-3n-hsw-3n-skx-4c-mrr.txt>`_
index 9177e2a..29abb0a 100644 (file)
@@ -36,8 +36,10 @@ results repeatability vary between the test cases.
 NDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c NDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-ndr.html>`_
+  - `HTML 4t2c NDR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-ndr.html>`_
   - `ASCII 2t1c NDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-ndr.txt>`_
   - `ASCII 4t2c NDR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-ndr.txt>`_
   - `CSV 2t1c NDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-ndr.csv>`_
@@ -46,8 +48,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c PDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-pdr.html>`_
+  - `HTML 4t2c PDR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-pdr.html>`_
   - `ASCII 2t1c PDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-pdr.txt>`_
   - `ASCII 4t2c PDR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-pdr.txt>`_
   - `CSV 2t1c PDR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-pdr.csv>`_
@@ -56,8 +60,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c MRR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-mrr.html>`_
+  - `HTML 4t2c MRR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-mrr.html>`_
+  - `HTML 8t4c MRR comparison <../../_static/vpp/performance-changes-2n-skx-8t4c-mrr.html>`_
   - `ASCII 2t1c MRR comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-mrr.txt>`_
   - `ASCII 4t2c MRR comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-mrr.txt>`_
   - `ASCII 8t4c MRR comparison <../../_static/vpp/performance-changes-2n-skx-8t4c-mrr.txt>`_
@@ -71,8 +78,10 @@ Comparison tables in ASCII and CSV formats:
 NDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c NDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-ndr.html>`_
+  - `HTML 4t2c NDR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-ndr.html>`_
   - `ASCII 2t1c NDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-ndr.txt>`_
   - `ASCII 4t2c NDR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-ndr.txt>`_
   - `CSV 2t1c NDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-ndr.csv>`_
@@ -81,8 +90,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c PDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-pdr.html>`_
+  - `HTML 4t2c PDR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-pdr.html>`_
   - `ASCII 2t1c PDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-pdr.txt>`_
   - `ASCII 4t2c PDR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-pdr.txt>`_
   - `CSV 2t1c PDR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-pdr.csv>`_
@@ -91,8 +102,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c MRR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-mrr.html>`_
+  - `HTML 4t2c MRR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-mrr.html>`_
+  - `HTML 8t4c MRR comparison <../../_static/vpp/performance-changes-3n-skx-8t4c-mrr.html>`_
   - `ASCII 2t1c MRR comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-mrr.txt>`_
   - `ASCII 4t2c MRR comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-mrr.txt>`_
   - `ASCII 8t4c MRR comparison <../../_static/vpp/performance-changes-3n-skx-8t4c-mrr.txt>`_
@@ -106,8 +120,10 @@ Comparison tables in ASCII and CSV formats:
 NDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-ndr.html>`_
+  - `HTML 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-ndr.html>`_
   - `ASCII 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-ndr.txt>`_
   - `ASCII 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-ndr.txt>`_
   - `CSV 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-ndr.csv>`_
@@ -116,8 +132,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-pdr.html>`_
+  - `HTML 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-pdr.html>`_
   - `ASCII 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-pdr.txt>`_
   - `ASCII 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-pdr.txt>`_
   - `CSV 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-pdr.csv>`_
@@ -126,8 +144,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-mrr.html>`_
+  - `HTML 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-mrr.html>`_
+  - `HTML 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-4t4c-mrr.html>`_
   - `ASCII 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-1t1c-mrr.txt>`_
   - `ASCII 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-2t2c-mrr.txt>`_
   - `ASCII 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-4t4c-mrr.txt>`_
@@ -136,14 +157,58 @@ Comparison tables in ASCII and CSV formats:
   - `CSV 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-hsw-4t4c-mrr.csv>`_
 
 ..
+    3n-tsh
+    ~~~~~~
+
+    NDR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-ndr.html>`_
+      - `HTML 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-ndr.html>`_
+      - `ASCII 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-ndr.txt>`_
+      - `ASCII 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-ndr.txt>`_
+      - `CSV 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-ndr.csv>`_
+      - `CSV 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-ndr.csv>`_
+
+    PDR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-pdr.html>`_
+      - `HTML 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-pdr.html>`_
+      - `ASCII 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-pdr.txt>`_
+      - `ASCII 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-pdr.txt>`_
+      - `CSV 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-pdr.csv>`_
+      - `CSV 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-pdr.csv>`_
+
+    MRR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-mrr.html>`_
+      - `HTML 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-mrr.html>`_
+      - `HTML 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-4t4c-mrr.html>`_
+      - `ASCII 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-mrr.txt>`_
+      - `ASCII 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-mrr.txt>`_
+      - `ASCII 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-4t4c-mrr.txt>`_
+      - `CSV 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-1t1c-mrr.csv>`_
+      - `CSV 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-2t2c-mrr.csv>`_
+      - `CSV 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-tsh-4t4c-mrr.csv>`_
+
     2n-dnv
     ~~~~~~
 
     NDR Comparison
     ``````````````
 
-    Comparison tables in ASCII and CSV formats:
+    Comparison tables in HTML, ASCII and CSV formats:
 
+      - `HTML 1t1c NDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-ndr.html>`_
+      - `HTML 2t2c NDR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-ndr.html>`_
       - `ASCII 1t1c NDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-ndr.txt>`_
       - `ASCII 2t2c NDR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-ndr.txt>`_
       - `CSV 1t1c NDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-ndr.csv>`_
@@ -152,8 +217,10 @@ Comparison tables in ASCII and CSV formats:
     PDR Comparison
     ``````````````
 
-    Comparison tables in ASCII and CSV formats:
+    Comparison tables in HTML, ASCII and CSV formats:
 
+      - `HTML 1t1c PDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-pdr.html>`_
+      - `HTML 2t2c PDR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-pdr.html>`_
       - `ASCII 1t1c PDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-pdr.txt>`_
       - `ASCII 2t2c PDR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-pdr.txt>`_
       - `CSV 1t1c PDR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-pdr.csv>`_
@@ -162,11 +229,56 @@ Comparison tables in ASCII and CSV formats:
     MRR Comparison
     ``````````````
 
-    Comparison tables in ASCII and CSV formats:
+    Comparison tables in HTML, ASCII and CSV formats:
 
+      - `HTML 1t1c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-mrr.html>`_
+      - `HTML 2t2c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-mrr.html>`_
+      - `HTML 4t4c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-4t4c-mrr.html>`_
       - `ASCII 1t1c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-mrr.txt>`_
       - `ASCII 2t2c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-mrr.txt>`_
       - `ASCII 4t4c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-4t4c-mrr.txt>`_
       - `CSV 1t1c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-1t1c-mrr.csv>`_
       - `CSV 2t2c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-2t2c-mrr.csv>`_
       - `CSV 4t4c MRR comparison <../../_static/vpp/performance-changes-2n-dnv-4t4c-mrr.csv>`_
+
+    3n-dnv
+    ~~~~~~
+
+    NDR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-ndr.html>`_
+      - `HTML 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-ndr.html>`_
+      - `ASCII 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-ndr.txt>`_
+      - `ASCII 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-ndr.txt>`_
+      - `CSV 1t1c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-ndr.csv>`_
+      - `CSV 2t2c NDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-ndr.csv>`_
+
+    PDR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-pdr.html>`_
+      - `HTML 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-pdr.html>`_
+      - `ASCII 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-pdr.txt>`_
+      - `ASCII 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-pdr.txt>`_
+      - `CSV 1t1c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-pdr.csv>`_
+      - `CSV 2t2c PDR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-pdr.csv>`_
+
+    MRR Comparison
+    ``````````````
+
+    Comparison tables in HTML, ASCII and CSV formats:
+
+      - `HTML 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-mrr.html>`_
+      - `HTML 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-mrr.html>`_
+      - `HTML 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-4t4c-mrr.html>`_
+      - `ASCII 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-mrr.txt>`_
+      - `ASCII 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-mrr.txt>`_
+      - `ASCII 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-4t4c-mrr.txt>`_
+      - `CSV 1t1c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-1t1c-mrr.csv>`_
+      - `CSV 2t2c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-2t2c-mrr.csv>`_
+      - `CSV 4t4c MRR comparison <../../_static/vpp/performance-changes-3n-dnv-4t4c-mrr.csv>`_
index 2ba1c12..256b0da 100644 (file)
@@ -34,8 +34,10 @@ results repeatability vary between the test cases.
 NDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-ndr.html>`_
+  - `HTML 4t2c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-ndr.html>`_
   - `ASCII 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-ndr.txt>`_
   - `ASCII 4t2c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-ndr.txt>`_
   - `CSV 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-ndr.csv>`_
@@ -44,8 +46,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-pdr.html>`_
+  - `HTML 4t2c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-pdr.html>`_
   - `ASCII 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-pdr.txt>`_
   - `ASCII 4t2c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-pdr.txt>`_
   - `CSV 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-pdr.csv>`_
@@ -54,8 +58,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-mrr.html>`_
+  - `HTML 4t2c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-mrr.html>`_
+  - `HTML 8t4c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-8t4c-nics-mrr.html>`_
   - `ASCII 2t1c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-2t1c-nics-mrr.txt>`_
   - `ASCII 4t2c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-4t2c-nics-mrr.txt>`_
   - `ASCII 8t4c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-3n-skx-8t4c-nics-mrr.txt>`_
@@ -69,8 +76,10 @@ Comparison tables in ASCII and CSV formats:
 NDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-ndr.html>`_
+  - `HTML 4t2c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-ndr.html>`_
   - `ASCII 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-ndr.txt>`_
   - `ASCII 4t2c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-ndr.txt>`_
   - `CSV 2t1c NDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-ndr.csv>`_
@@ -79,8 +88,10 @@ Comparison tables in ASCII and CSV formats:
 PDR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-pdr.html>`_
+  - `HTML 4t2c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-pdr.html>`_
   - `ASCII 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-pdr.txt>`_
   - `ASCII 4t2c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-pdr.txt>`_
   - `CSV 2t1c PDR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-pdr.csv>`_
@@ -89,8 +100,11 @@ Comparison tables in ASCII and CSV formats:
 MRR Comparison
 ``````````````
 
-Comparison tables in ASCII and CSV formats:
+Comparison tables in HTML, ASCII and CSV formats:
 
+  - `HTML 2t1c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-mrr.html>`_
+  - `HTML 4t2c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-mrr.html>`_
+  - `HTML 8t4c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-8t4c-nics-mrr.html>`_
   - `ASCII 2t1c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-2t1c-nics-mrr.txt>`_
   - `ASCII 4t2c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-4t2c-nics-mrr.txt>`_
   - `ASCII 8t4c MRR Intel-x710 and Intel-xxv710 comparison <../../_static/vpp/performance-changes-2n-skx-8t4c-nics-mrr.txt>`_
index 2e6cd59..1a47e81 100644 (file)
@@ -19,6 +19,10 @@ import logging
 import csv
 import re
 
+import plotly.graph_objects as go
+import plotly.offline as ploff
+import pandas as pd
+
 from string import replace
 from collections import OrderedDict
 from numpy import nan, isnan
@@ -250,6 +254,99 @@ def _tpc_sort_table(table):
     return table
 
 
+def _tpc_generate_html_table(header, data, output_file_name):
+    """Generate html table from input data with simple sorting possibility.
+
+    :param header: Table header.
+    :param data: Input data to be included in the table. It is a list of lists.
+        Inner lists are rows in the table. All inner lists must be of the same
+        length. The length of these lists must be the same as the length of the
+        header.
+    :param output_file_name: The name (relative or full path) where the
+        generated html table is written.
+    :type header: list
+    :type data: list of lists
+    :type output_file_name: str
+    """
+
+    df = pd.DataFrame(data, columns=header)
+
+    df_sorted = [df.sort_values(
+        by=[key, header[0]], ascending=[True, True]
+        if key != header[0] else [False, True]) for key in header]
+    df_sorted_rev = [df.sort_values(
+        by=[key, header[0]], ascending=[False, True]
+        if key != header[0] else [True, True]) for key in header]
+    df_sorted.extend(df_sorted_rev)
+
+    fill_color = [["#d4e4f7" if idx % 2 else "#e9f1fb"
+                   for idx in range(len(df))]]
+    table_header = dict(
+        values=["<b>{item}</b>".format(item=item) for item in header],
+        fill_color="#7eade7",
+        align=["left", "center"]
+    )
+
+    fig = go.Figure()
+
+    for table in df_sorted:
+        columns = [table.get(col) for col in header]
+        fig.add_trace(
+            go.Table(
+                columnwidth=[30, 10],
+                header=table_header,
+                cells=dict(
+                    values=columns,
+                    fill_color=fill_color,
+                    align=["left", "right"]
+                )
+            )
+        )
+
+    buttons = list()
+    menu_items = ["<b>{0}</b> (ascending)".format(itm) for itm in header]
+    menu_items_rev = ["<b>{0}</b> (descending)".format(itm) for itm in header]
+    menu_items.extend(menu_items_rev)
+    for idx, hdr in enumerate(menu_items):
+        visible = [False, ] * len(menu_items)
+        visible[idx] = True
+        buttons.append(
+            dict(
+                label=hdr.replace(" [Mpps]", ""),
+                method="update",
+                args=[{"visible": visible}],
+            )
+        )
+
+    fig.update_layout(
+        updatemenus=[
+            go.layout.Updatemenu(
+                type="dropdown",
+                direction="down",
+                x=0.03,
+                xanchor="left",
+                y=1.045,
+                yanchor="top",
+                active=len(menu_items) - 1,
+                buttons=list(buttons)
+            )
+        ],
+        annotations=[
+            go.layout.Annotation(
+                text="<b>Sort by:</b>",
+                x=0,
+                xref="paper",
+                y=1.035,
+                yref="paper",
+                align="left",
+                showarrow=False
+            )
+        ]
+    )
+
+    ploff.plot(fig, show_link=False, auto_open=False, filename=output_file_name)
+
+
 def table_performance_comparison(table, input_data):
     """Generate the table(s) with algorithm: table_performance_comparison
     specified in the specification file.
@@ -297,6 +394,7 @@ def table_performance_comparison(table, input_data):
 
     # Prepare data to the table:
     tbl_dict = dict()
+    topo = ""
     for job, builds in table["reference"]["data"].items():
         topo = "2n-skx" if "2n-skx" in job else ""
         for build in builds:
@@ -380,16 +478,16 @@ def table_performance_comparison(table, input_data):
                             continue
                         if tbl_dict[tst_name_mod].get("history", None) is None:
                             tbl_dict[tst_name_mod]["history"] = OrderedDict()
-                        if tbl_dict[tst_name_mod]["history"].get(item["title"],
-                                                             None) is None:
+                        if tbl_dict[tst_name_mod]["history"].\
+                                get(item["title"], None) is None:
                             tbl_dict[tst_name_mod]["history"][item["title"]] = \
                                 list()
                         try:
                             # TODO: Re-work when NDRPDRDISC tests are not used
                             if table["include-tests"] == "MRR":
-                                tbl_dict[tst_name_mod]["history"][item["title"
-                                ]].append(tst_data["result"]["receive-rate"].
-                                          avg)
+                                tbl_dict[tst_name_mod]["history"][item[
+                                    "title"]].append(tst_data["result"][
+                                        "receive-rate"].avg)
                             elif table["include-tests"] == "PDR":
                                 if tst_data["type"] == "PDR":
                                     tbl_dict[tst_name_mod]["history"][
@@ -398,7 +496,7 @@ def table_performance_comparison(table, input_data):
                                 elif tst_data["type"] == "NDRPDR":
                                     tbl_dict[tst_name_mod]["history"][item[
                                         "title"]].append(tst_data["throughput"][
-                                        "PDR"]["LOWER"])
+                                            "PDR"]["LOWER"])
                             elif table["include-tests"] == "NDR":
                                 if tst_data["type"] == "NDR":
                                     tbl_dict[tst_name_mod]["history"][
@@ -407,7 +505,7 @@ def table_performance_comparison(table, input_data):
                                 elif tst_data["type"] == "NDRPDR":
                                     tbl_dict[tst_name_mod]["history"][item[
                                         "title"]].append(tst_data["throughput"][
-                                        "NDR"]["LOWER"])
+                                            "NDR"]["LOWER"])
                             else:
                                 continue
                         except (TypeError, KeyError):
@@ -477,6 +575,10 @@ def table_performance_comparison(table, input_data):
                 "tests. See release notes."
             ])
 
+    # Generate html table:
+    _tpc_generate_html_table(header, tbl_lst,
+                             "{0}.html".format(table["output-file"]))
+
 
 def table_performance_comparison_nic(table, input_data):
     """Generate the table(s) with algorithm: table_performance_comparison
@@ -525,6 +627,7 @@ def table_performance_comparison_nic(table, input_data):
 
     # Prepare data to the table:
     tbl_dict = dict()
+    topo = ""
     for job, builds in table["reference"]["data"].items():
         topo = "2n-skx" if "2n-skx" in job else ""
         for build in builds:
@@ -612,16 +715,16 @@ def table_performance_comparison_nic(table, input_data):
                             continue
                         if tbl_dict[tst_name_mod].get("history", None) is None:
                             tbl_dict[tst_name_mod]["history"] = OrderedDict()
-                        if tbl_dict[tst_name_mod]["history"].get(item["title"],
-                                                             None) is None:
+                        if tbl_dict[tst_name_mod]["history"].\
+                                get(item["title"], None) is None:
                             tbl_dict[tst_name_mod]["history"][item["title"]] = \
                                 list()
                         try:
                             # TODO: Re-work when NDRPDRDISC tests are not used
                             if table["include-tests"] == "MRR":
-                                tbl_dict[tst_name_mod]["history"][item["title"
-                                ]].append(tst_data["result"]["receive-rate"].
-                                          avg)
+                                tbl_dict[tst_name_mod]["history"][item[
+                                    "title"]].append(tst_data["result"][
+                                        "receive-rate"].avg)
                             elif table["include-tests"] == "PDR":
                                 if tst_data["type"] == "PDR":
                                     tbl_dict[tst_name_mod]["history"][
@@ -630,7 +733,7 @@ def table_performance_comparison_nic(table, input_data):
                                 elif tst_data["type"] == "NDRPDR":
                                     tbl_dict[tst_name_mod]["history"][item[
                                         "title"]].append(tst_data["throughput"][
-                                        "PDR"]["LOWER"])
+                                            "PDR"]["LOWER"])
                             elif table["include-tests"] == "NDR":
                                 if tst_data["type"] == "NDR":
                                     tbl_dict[tst_name_mod]["history"][
@@ -639,7 +742,7 @@ def table_performance_comparison_nic(table, input_data):
                                 elif tst_data["type"] == "NDRPDR":
                                     tbl_dict[tst_name_mod]["history"][item[
                                         "title"]].append(tst_data["throughput"][
-                                        "NDR"]["LOWER"])
+                                            "NDR"]["LOWER"])
                             else:
                                 continue
                         except (TypeError, KeyError):
@@ -709,6 +812,10 @@ def table_performance_comparison_nic(table, input_data):
                 "tests. See release notes."
             ])
 
+    # Generate html table:
+    _tpc_generate_html_table(header, tbl_lst,
+                             "{0}.html".format(table["output-file"]))
+
 
 def table_nics_comparison(table, input_data):
     """Generate the table(s) with algorithm: table_nics_comparison
@@ -819,6 +926,10 @@ def table_nics_comparison(table, input_data):
 
     convert_csv_to_pretty_txt(csv_file, "{0}.txt".format(table["output-file"]))
 
+    # Generate html table:
+    _tpc_generate_html_table(header, tbl_lst,
+                             "{0}.html".format(table["output-file"]))
+
 
 def table_soak_vs_ndr(table, input_data):
     """Generate the table(s) with algorithm: table_soak_vs_ndr
@@ -942,6 +1053,10 @@ def table_soak_vs_ndr(table, input_data):
 
     convert_csv_to_pretty_txt(csv_file, "{0}.txt".format(table["output-file"]))
 
+    # Generate html table:
+    _tpc_generate_html_table(header, tbl_lst,
+                             "{0}.html".format(table["output-file"]))
+
 
 def table_performance_trending_dashboard(table, input_data):
     """Generate the table(s) with algorithm:
@@ -1028,9 +1143,8 @@ def table_performance_trending_dashboard(table, input_data):
         if classification_lst:
             if isnan(rel_change_last) and isnan(rel_change_long):
                 continue
-            if (isnan(last_avg) or
-                isnan(rel_change_last) or
-                isnan(rel_change_long)):
+            if isnan(last_avg) or isnan(rel_change_last) or \
+                    isnan(rel_change_long):
                 continue
             tbl_lst.append(
                 [tbl_dict[tst_name]["name"],
@@ -1417,6 +1531,9 @@ def table_failed_tests(table, input_data):
     tbl_lst = list()
     for tst_data in tbl_dict.values():
         fails_nr = 0
+        fails_last_date = ""
+        fails_last_vpp = ""
+        fails_last_csit = ""
         for val in tst_data["data"].values():
             if val[0] == "FAIL":
                 fails_nr += 1