Update run_report.sh script for generating report 53/6453/1
authorPeter Mikus <pmikus@cisco.com>
Wed, 26 Apr 2017 11:32:53 +0000 (13:32 +0200)
committerPeter Mikus <pmikus@cisco.com>
Wed, 26 Apr 2017 11:32:53 +0000 (13:32 +0200)
Change-Id: I8ba216fd90285ffef34d255b7a672a4d944caff3
Signed-off-by: Peter Mikus <pmikus@cisco.com>
docs/report/detailed_test_configuration/index.rst [deleted file]
docs/report/index.rst
docs/report/introduction/csit_tag_description.rst [new file with mode: 0644]
docs/report/introduction/index.rst
docs/report/test_configuration/index.rst [new file with mode: 0644]
docs/report/test_configuration/vpp_functional_configuration/index.rst [moved from docs/report/detailed_test_configuration/vpp_functional_configuration/index.rst with 100% similarity]
docs/report/test_configuration/vpp_performance_configuration/index.rst [moved from docs/report/detailed_test_configuration/vpp_performance_configuration/index.rst with 100% similarity]
docs/report/test_operational_data/index.rst [new file with mode: 0644]
docs/report/test_operational_data/vpp_performance_operational_data/index.rst [moved from docs/report/detailed_test_configuration/vpp_performance_operational_data/index.rst with 100% similarity]
docs/tag_documentation.rst
resources/tools/report_gen/run_report.sh

diff --git a/docs/report/detailed_test_configuration/index.rst b/docs/report/detailed_test_configuration/index.rst
deleted file mode 100644 (file)
index 96f2187..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-Detailed Test Configuration
-===========================
-
-.. toctree::
-
-    vpp_performance_configuration/index
-    vpp_performance_operational_data/index
-    vpp_functional_configuration/index
index 5ccc4b6..6f2989e 100644 (file)
@@ -11,4 +11,5 @@ CSIT 17.04
     honeycomb_functional_tests/index
     vpp_unit_tests/index
     detailed_test_results/index
-    detailed_test_configuration/index
+    test_configuration/index
+    test_operational_data/index
diff --git a/docs/report/introduction/csit_tag_description.rst b/docs/report/introduction/csit_tag_description.rst
new file mode 100644 (file)
index 0000000..4c0e628
--- /dev/null
@@ -0,0 +1,417 @@
+CSIT TAGs Descriptions
+======================
+
+Documentation for tags used to select and identify test cases.
+
+
+Topology TAGs
+-------------
+
+.. topic:: 3_NODE_DOUBLE_LINK_TOPO
+
+    3 nodes connected in a circular topology with two links interconnecting
+    the devices.
+
+.. topic:: 3_NODE_SINGLE_LINK_TOPO
+
+    3 nodes connected in a circular topology with at least one link
+    interconnecting devices.
+
+Objective TAGs
+--------------
+
+.. topic:: SKIP_PATCH
+
+    Test case(s) marked to not run in case of vpp-csit-verify (i.e. VPP patch)
+    and csit-vpp-verify jobs (i.e. CSIT patch).
+
+
+Environment TAGs
+----------------
+
+.. topic:: HW_ENV
+
+    DUTs and TGs are running on bare metal.
+
+.. topic:: VM_ENV
+
+    DUTs and TGs are running in virtual environment.
+
+.. topic:: VPP_VM_ENV
+
+    DUTs with VPP and capable of running Virtual Machine.
+
+
+NIC model tags
+--------------
+
+.. topic:: NIC_Intel-X520-DA2
+
+    Intel X520-DA2 NIC.
+
+.. topic:: NIC_Intel-XL710
+
+    Intel XL710 NIC.
+
+.. topic:: NIC_Intel-X710
+
+    Intel X710 NIC.
+
+.. topic:: NIC_Cisco-VIC-1227
+
+    VIC-1227 by Cisco.
+
+.. topic:: NIC_Cisco-VIC-1385
+
+    VIC-1385 by Cisco.
+
+
+Scaling TAGs
+------------
+
+.. topic:: FIB_20K
+
+    2x10,000 entries in single fib table
+
+.. topic:: FIB_200K
+
+    2x100,000 entries in single fib table
+
+.. topic:: FIB_2M
+
+    2x1,000,000 entries in single fib table
+
+
+Tags marking functional vs. performance of tests
+------------------------------------------------
+
+.. topic:: FUNCTEST
+
+    All functional test cases.
+
+.. topic:: PERFTEST
+
+    All performance test cases.
+
+
+Performance testing tags
+------------------------
+
+.. topic:: PDRDISC
+
+    Partial Drop Rate evaluation of single run result, with non-zero packet
+    loss tolerance (LT) expressed in percentage of packets transmitted.
+
+.. topic:: NDRDISC
+
+    Non Drop Rate evaluation of results. Loss acceptance of dropped packets is
+    set to zero lost packets.
+
+.. topic:: NDRCHK
+
+    Performance tests where TG verifies DUTs' throughput at ref-NDR (reference
+    Non Drop Rate) with zero packet loss tolerance.
+
+.. topic:: NDRPDRDISC
+
+    Find performance of DUT based on RFC2544 with linear / binary / combined
+    search. (Previous LONG tests.)
+
+Ethernet frame size tags for performance tests
+----------------------------------------------
+
+.. topic:: 64B
+
+    64B frames used for test.
+
+.. topic:: 78B
+
+    78B frames used for test.
+
+.. topic:: IMIX
+
+    IMIX frame sequence (28x 64B, 16x 570B, 4x 1518B) used for test.
+
+.. topic:: 1460B
+
+    1460B frames used for test.
+
+.. topic:: 1480B
+
+    1480B frames used for test.
+
+.. topic:: 1514B
+
+    1514B frames used for test.
+
+.. topic:: 1518B
+
+    1518B frames used for test.
+
+.. topic:: 9000B
+
+    9000B frames used for test.
+
+Test type tags
+--------------
+
+.. topic:: BASE
+
+    Baseline test cases, no encapsulation, no feature(s) configured in tests.
+
+.. topic:: IP4BASE
+
+    IPv4 baseline test cases, no encapsulation, no feature(s) configured in
+    tests.
+
+.. topic:: IP6BASE
+
+    IPv6 baseline test cases, no encapsulation, no feature(s) configured in
+    tests.
+
+.. topic:: L2XCBASE
+
+    L2XC baseline test cases, no encapsulation, no feature(s) configured in
+    tests.
+
+.. topic:: L2BDBASE
+
+    L2BD baseline test cases, no encapsulation, no feature(s) configured in
+    tests.
+
+.. topic:: SCALE
+
+    Scale test cases.
+
+.. topic:: ENCAP
+
+    Test cases where encapsulation is used. Use also encapsulation tag(s).
+
+.. topic:: FEATURE
+
+    At least one feature is configured in test cases. Use also feature tag(s).
+
+
+Forwarding mode tags
+--------------------
+
+.. topic:: L2BDMACSTAT
+
+    VPP L2 bridge-domain, L2 MAC static.
+
+.. topic:: L2BDMACLRN
+
+    VPP L2 bridge-domain, L2 MAC learning.
+
+.. topic:: L2XCFWD
+
+    VPP L2 point-to-point cross-connect.
+
+.. topic:: IP4FWD
+
+    VPP IPv4 routed forwarding.
+
+.. topic:: IP6FWD
+
+    VPP IPv6 routed forwarding.
+
+
+Underlay tags
+-------------
+
+.. topic:: IP4UNRLAY
+
+    IPv4 underlay.
+
+.. topic:: IP6UNRLAY
+
+    IPv6 underlay.
+
+.. topic:: MPLSUNRLAY
+
+    MPLS underlay.
+
+
+Overlay tags
+------------
+
+.. topic:: L2OVRLAY
+
+    L2 overlay.
+
+.. topic:: IP4OVRLAY
+
+    IPv4 overlay (IPv4 payload).
+
+.. topic:: IP6OVRLAY
+
+    IPv6 overlay (IPv6 payload).
+
+
+Encapsulation tags
+------------------
+
+.. topic:: ETH
+
+    All test cases with base Ethernet (no encapsulation).
+
+.. topic:: DOT1Q
+
+    All test cases with dot1q.
+
+.. topic:: DOT1AD
+
+    All test cases with dot1ad.
+
+.. topic:: LISP
+
+    All test cases with LISP.
+
+.. topic:: LISPGPE
+
+    All test cases with LISP-GPE.
+
+.. topic:: VXLAN
+
+    All test cases with Vxlan.
+
+.. topic:: VXLANGPE
+
+    All test cases with VXLAN-GPE.
+
+.. topic:: GRE
+
+    All test cases with GRE.
+
+.. topic:: IPSEC
+
+    All test cases with IPSEC.
+
+
+Interface tags
+--------------
+
+.. topic:: PHY
+
+    All test cases which use physical interface(s).
+
+.. topic:: VHOST
+
+    All test cases which uses VHOST.
+
+.. topic:: TUNTAP
+
+    All test cases which uses TUN and TAP.
+
+.. topic:: AFPKT
+
+    All test cases which uses AFPKT.
+
+.. topic:: NETMAP
+
+    All test cases which uses Netmap.
+
+
+Feature tags
+------------
+
+.. topic:: IACLDST
+
+    iACL destination.
+
+.. topic:: COPWHLIST
+
+    COP whitelist.
+
+.. topic:: SNAT
+
+    SNAT configured and tested.
+
+
+Encryption tags
+---------------
+
+.. topic:: IPSECSW
+
+    Crypto in software.
+
+.. topic:: IPSECHW
+
+    Crypto in hardware.
+
+.. topic:: IPSECTRAN
+
+    IPSec in transport mode.
+
+.. topic:: IPSECTUN
+
+    IPSec in tunnel mode.
+
+
+Client-workload tags
+--------------------
+
+.. topic:: VM
+
+    All test cases which use at least one virtual machine.
+
+.. topic:: LXC
+
+    All test cases which use Linux container.
+
+.. topic:: APP
+
+    All test cases with specific APP use.
+
+
+Multi-threading tags
+--------------------
+
+.. topic:: STHREAD
+
+    All test cases using single poll mode thread.
+
+.. topic:: MTHREAD
+
+    All test cases using more then one poll mode driver thread.
+
+.. topic:: 1NUMA
+
+    All test cases with packet processing on single socket.
+
+.. topic:: 2NUMA
+
+    All test cases with packet processing on two sockets.
+
+.. topic:: SMT
+
+    All test cases with symmetric Multi-Threading (HyperThreading) enabled.
+
+.. topic:: NOSMT
+
+    All test cases with symmetric Multi-Threading (HyperThreading) disabled.
+
+.. topic:: 1T1C
+
+    1 worker thread pinned to 1 dedicated physical core. 1 receive queue per
+    interface. Main thread pinned to core 0.
+
+.. topic:: 2T2C
+
+    2 worker threads pinned to 2 dedicated physical cores. 1 receive queue per
+    interface. Main thread pinned to core 0.
+
+.. topic:: 4T4C
+
+    4 worker threads pinned to 4 dedicated physical cores. 2 receive queues per
+    interface. Main thread pinned to core 0.
+
+.. topic:: 6T6C
+
+    6 worker threads pinned to 6 dedicated physical cores. 3 receive queues per
+    interface. Main thread pinned to core 0.
+
+.. topic:: 8T8C
+
+    8 worker threads pinned to 8 dedicated physical cores. 4 receive queues per
+    interface. Main thread pinned to core 0.
index 1a485e2..7c74f46 100644 (file)
@@ -6,3 +6,4 @@ Introduction
     overview
     general_notes
     csit_test_naming
+    csit_tag_description
diff --git a/docs/report/test_configuration/index.rst b/docs/report/test_configuration/index.rst
new file mode 100644 (file)
index 0000000..908f494
--- /dev/null
@@ -0,0 +1,7 @@
+Test Configuration
+==================
+
+.. toctree::
+
+    vpp_performance_configuration/index
+    vpp_functional_configuration/index
diff --git a/docs/report/test_operational_data/index.rst b/docs/report/test_operational_data/index.rst
new file mode 100644 (file)
index 0000000..44e7fb0
--- /dev/null
@@ -0,0 +1,6 @@
+Test Operational Data\r
+=====================\r
+\r
+.. toctree::\r
+\r
+    vpp_performance_operational_data/index\r
index b0210be..4c0e628 100644 (file)
@@ -1,25 +1,5 @@
-.. |copy| unicode:: 0xA9 .. copyright sign
-
-| Copyright |copy| 2016 Cisco and/or its affiliates.
-| Licensed under the Apache License, Version 2.0 (the "License");
-| you may not use this file except in compliance with the License.
-| You may obtain a copy of the License at:
-|
-|     http://www.apache.org/licenses/LICENSE-2.0
-|
-| Unless required by applicable law or agreed to in writing, software
-| distributed under the License is distributed on an "AS IS" BASIS,
-| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-| See the License for the specific language governing permissions and
-| limitations under the License.
-
-
-.. contents:: Table of Contents
-    :depth: 2
-
-
-TAGs and their descriptions
-===========================
+CSIT TAGs Descriptions
+======================
 
 Documentation for tags used to select and identify test cases.
 
index c165f3a..00fbdfd 100755 (executable)
@@ -2,21 +2,29 @@
 
 set -x
 
+DEBUG=0
+
 WORKING_DIR='_tmp'
 BUILD_DIR='_build'
 
 SOURCE_DIR='../../../docs/report'
-DTR_SOURCE_DIR="${SOURCE_DIR}/detailed_test_results"
+
+PLOT_VPP_SOURCE_DIR=${WORKING_DIR}/vpp_plot
+PLOT_TESTPMD_SOURCE_DIR=${WORKING_DIR}/testpmd_plot
+
+DTR_SOURCE_DIR=${SOURCE_DIR}/detailed_test_results
 DTR_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
 DTR_TESTPMD_SOURCE_DIR=${DTR_SOURCE_DIR}/testpmd_performance_results
 DTR_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
 DTR_HONEYCOMB_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
 
-DTC_SOURCE_DIR="${SOURCE_DIR}/detailed_test_configuration"
+DTC_SOURCE_DIR=${SOURCE_DIR}/test_configuration
 DTC_PERF_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_performance_configuration
-DTC_PERF_SOURCE_OPER_DIR=${DTC_SOURCE_DIR}/vpp_performance_operational_data
 DTC_FUNC_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_functional_configuration
 
+DTO_SOURCE_DIR=${SOURCE_DIR}/test_operational_data
+DTO_PERF_SOURCE_OPER_DIR=${DTO_SOURCE_DIR}/vpp_performance_operational_data
+
 STATIC_DIR="${BUILD_DIR}/_static"
 STATIC_DIR_VPP="${STATIC_DIR}/vpp"
 STATIC_DIR_TESTPMD="${STATIC_DIR}/testpmd"
@@ -53,6 +61,8 @@ echo Downloading raw outputs for plots ...
 mkdir -p ${STATIC_DIR_VPP}
 mkdir -p ${STATIC_DIR_TESTPMD}
 mkdir -p ${STATIC_DIR_ARCH}
+mkdir -p ${PLOT_VPP_SOURCE_DIR}
+mkdir -p ${PLOT_TESTPMD_SOURCE_DIR}
 
 ### VPP PERFORMANCE SOURCE DATA
 
@@ -62,14 +72,16 @@ JEN_BUILD=(6 7 8)
 
 for i in "${JEN_BUILD[@]}"; do
     curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
-        -o ${STATIC_DIR_VPP}/${JEN_JOB}-${i}.xml
-    curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
-        -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
+        -o ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
+    if [[ ${DEBUG} -eq 1 ]] ;
+    then
+        cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
+    else
+        curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
+            -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
+    fi
 done
 
-# DELETE ME
-#cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
-
 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
 # L2 Ethernet Switching
 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
@@ -83,7 +95,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
     --title "L2 Ethernet Switching"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_l2.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_l2.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
     --title "L2 Ethernet Switching"
@@ -99,7 +111,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
     --title "IPv4 Routed-Forwarding"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
     --title "IPv4 Routed-Forwarding"
@@ -115,7 +127,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
     --title "IPv6 Routed-Forwarding"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
     --title "IPv6 Routed-Forwarding"
@@ -131,7 +143,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
     --title "IPv4 Overlay Tunnels"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4o.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4o.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
     --title "IPv4 Overlay Tunnels"
@@ -147,7 +159,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
     --title "IPv6 Overlay Tunnels"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6o.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6o.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
     --title "IPv6 Overlay Tunnels"
@@ -163,7 +175,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+vhost.*" \
     --title "VM Vhost Connections"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_vhost.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_vhost.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+vhost.*" \
     --title "VM Vhost Connections"
@@ -179,7 +191,7 @@ python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
     --regex ".+ipsec.*" \
     --title "Crypto in hardware: IP4FWD, IP6FWD"
 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
-    -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipsec.rst \
+    -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipsec.rst \
     --data "SH_RUN" -f "rst" --start 3 --level 2 \
     --regex ".+ipsec.*" \
     --title "Crypto in hardware: IP4FWD, IP6FWD"
@@ -192,12 +204,9 @@ sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
     ${DTC_PERF_SOURCE_DIR}/index.rst
 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
-    ${DTC_PERF_SOURCE_OPER_DIR}/index.rst
+    ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
-    ${DTC_PERF_SOURCE_OPER_DIR}/index.rst
-rm -f ${DTR_PERF_SOURCE_DIR}/*.json
-rm -f ${DTC_PERF_SOURCE_DIR}/*.json
-rm -f ${DTC_PERF_SOURCE_OPER_DIR}/*.json
+    ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
 
 ### DPDK PERFORMANCE SOURCE DATA
 
@@ -206,14 +215,16 @@ JEN_BUILD=(1 2 3 4)
 
 for i in "${JEN_BUILD[@]}"; do
     curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
-        -o ${STATIC_DIR_TESTPMD}/${JEN_JOB}-${i}.xml
-    curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
-       -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
+        -o ${PLOT_TESTPMD_SOURCE_DIR}/${JEN_JOB}-${i}.xml
+    if [[ ${DEBUG} -eq 1 ]] ;
+    then
+        cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
+    else
+        curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
+            -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
+    fi
 done
 
-# DELETE ME
-#cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
-
 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
 # Testpmd Performance Results
 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
@@ -223,18 +234,19 @@ sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
     ${DTR_TESTPMD_SOURCE_DIR}/index.rst
 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
     ${DTR_TESTPMD_SOURCE_DIR}/index.rst
-rm -f ${DTR_TESTPMD_SOURCE_DIR}/*.json
 
 ### FUNCTIONAL SOURCE DATA
 
 JEN_JOB='csit-vpp-functional-1704-ubuntu1604-virl'
 JEN_BUILD=57
 
-curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
-    -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
-
-# DELETE ME
-#cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+if [[ ${DEBUG} -eq 1 ]] ;
+then
+    cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+else
+    curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
+        -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+fi
 
 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
 # Cop Address Security
@@ -443,8 +455,6 @@ sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
     ${DTC_FUNC_SOURCE_DIR}/index.rst
 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
     ${DTC_FUNC_SOURCE_DIR}/index.rst
-rm -f ${DTR_FUNC_SOURCE_DIR}/*.json
-rm -f ${DTC_FUNC_SOURCE_DIR}/*.json
 
 ### HONEYCOMB SOURCE DATA
 
@@ -452,11 +462,13 @@ JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
 JEN_JOB='hc2vpp-csit-integration-1704-ubuntu1604'
 JEN_BUILD=41
 
-curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
-    -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
-
-# DELETE ME
-#cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+if [[ ${DEBUG} -eq 1 ]] ;
+then
+    cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+else
+    curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
+        -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
+fi
 
 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
 python run_robot_data.py -i ${WORKING_DIR}/archive/csit/output.xml \
@@ -466,7 +478,9 @@ sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
     ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
     ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
-rm -f ${DTR_HONEYCOMB_SOURCE_DIR}/*.json
+
+# Delete temporary json files
+find ${SOURCE_DIR} -name "*.json" -type f -delete
 
 # Generate the documentation:
 
@@ -495,220 +509,220 @@ _EOF
 
 # Plot packets per second
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
     --title "64B-1t1c-.*vhost.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
     --title "64B-2t2c-.*vhost.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
     --title "64B-1t1c-.*vhost.*-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
     --title "64B-2t2c-.*vhost.*-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
     --title "64B-1t1c-.*ipsec.*-pdrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
     --title "64B-2t2c-.*ipsec.*-pdrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
 
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
 
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-pdrdisc \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-pdrdisc \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
 
 # Plot latency
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
     --title "64B-1t1c-.*vhost.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
     --title "64B-2t2c-.*vhost.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_VPP} \
+python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]' --latency lat_50
 
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc-lat50 \
     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
-python run_plot.py --input ${STATIC_DIR_TESTPMD} \
+python run_plot.py --input ${PLOT_TESTPMD_SOURCE_DIR} \
     --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc-lat50 \
     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50