diff options
author | pmikus <pmikus@cisco.com> | 2017-04-13 22:06:17 +0200 |
---|---|---|
committer | Peter Mikus <pmikus@cisco.com> | 2017-04-21 19:09:04 +0000 |
commit | 5b702673375a2a098311c23ab83487d3e1e02e72 (patch) | |
tree | 649fe07b7d5caacba21baea43cf8253d9e7bd6c3 /resources/tools | |
parent | 7e77c9160cc3eb6f7f585df70231c4eeb07421d4 (diff) |
Report generation script updates
- Add new type of throughput plots
- Update Sphinx, Sphinx-rtd-theme and Plotly packages
- Add auto generation of detailed test results
- Small fixes
Change-Id: I706777160a7f166e0a335c64428d10cb546fa854
Signed-off-by: pmikus <pmikus@cisco.com>
Signed-off-by: Peter Mikus <pmikus@cisco.com>
Diffstat (limited to 'resources/tools')
-rw-r--r-- | resources/tools/report_gen/requirements.txt | 5 | ||||
-rw-r--r-- | resources/tools/report_gen/run_plot.py | 42 | ||||
-rwxr-xr-x | resources/tools/report_gen/run_report.sh | 599 | ||||
-rwxr-xr-x | resources/tools/report_gen/run_robot_data.py | 9 |
4 files changed, 510 insertions, 145 deletions
diff --git a/resources/tools/report_gen/requirements.txt b/resources/tools/report_gen/requirements.txt index 6c3a5465c4..a345c946f1 100644 --- a/resources/tools/report_gen/requirements.txt +++ b/resources/tools/report_gen/requirements.txt @@ -1,4 +1,5 @@ Sphinx -sphinx-rtd-theme==0.1.9 -plotly==1.13.0 +sphinx-rtd-theme==0.2.4 +plotly==2.0.7 lxml==3.5.0 +robotframework==2.9.2 diff --git a/resources/tools/report_gen/run_plot.py b/resources/tools/report_gen/run_plot.py index 4218ecb93a..476813883f 100644 --- a/resources/tools/report_gen/run_plot.py +++ b/resources/tools/report_gen/run_plot.py @@ -143,6 +143,10 @@ def parse_args(): parser.add_argument("-d", "--latency", choices=['lat_10', 'lat_50', 'lat_100'], help="Latency to draw") + parser.add_argument("-p", "--plot", + choices=['box', 'scatter'], + default='box', + help="Throughput plot type") parser.add_argument("-i", "--input", help="Input folder") parser.add_argument("-o", "--output", required=True, @@ -160,13 +164,9 @@ def main(): xdata, ydata = parse_data_pps(args) # Print data into console for debug - row_format = "{:>60}" * (len(xdata) + 1) - print row_format.format(args.title, *xdata) + print args.title for data in ydata: - try: - print row_format.format(data, *ydata[data][1::2]) - except IndexError: - print "{:>60}".format(data), ydata[data] + print data + ";" + ";".join(str(val) for val in ydata[data][1::2]) if xdata and ydata: traces = [] @@ -193,12 +193,23 @@ def main(): boxmean=False, )) else: - traces.append(plgo.Scatter( - x=ydata[suite][0::2], - y=ydata[suite][1::2], - mode='lines+markers', - name=str(i+1)+'. '+suite.lower().replace('-ndrdisc',''), - )) + if args.plot == 'box': + traces.append(plgo.Box( + x=[str(i+1)+'. TC'] * len(ydata[suite][1::2]), + y=ydata[suite][1::2], + name=str(i+1)+'. '+suite.lower().replace('-ndrdisc',''), + hoverinfo='x+y', + boxpoints='outliers', + )) + elif args.plot == 'scatter': + traces.append(plgo.Scatter( + x=ydata[suite][0::2], + y=ydata[suite][1::2], + mode='lines+markers', + name=str(i+1)+'. '+suite.lower().replace('-ndrdisc',''), + )) + else: + pass # Add plot layout layout = plgo.Layout( @@ -215,6 +226,8 @@ def main(): showticklabels=True, tickcolor='rgb(238, 238, 238)', tickmode='linear', + title='Indexed Test Cases' if args.plot == 'box'\ + else '', zeroline=False, ), yaxis=dict( @@ -222,7 +235,8 @@ def main(): hoverformat='' if args.latency else '.4s', linecolor='rgb(238, 238, 238)', linewidth=1, - range=[args.lower, args.upper], + range=[args.lower, args.upper] if args.lower and args.upper\ + else [], showgrid=True, showline=True, showticklabels=True, @@ -243,6 +257,8 @@ def main(): showlegend=True, legend=dict( orientation='h', + y=-1, + yanchor='bottom', ), width=700, height=700, diff --git a/resources/tools/report_gen/run_report.sh b/resources/tools/report_gen/run_report.sh index f169a1d199..9156b5556d 100755 --- a/resources/tools/report_gen/run_report.sh +++ b/resources/tools/report_gen/run_report.sh @@ -1,16 +1,25 @@ #!/bin/bash +set -x + WORKING_DIR='_tmp' BUILD_DIR='_build' SOURCE_DIR='../../../docs/report' +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 STATIC_DIR="${BUILD_DIR}/_static" STATIC_DIR_VPP="${STATIC_DIR}/vpp" STATIC_DIR_TESTPMD="${STATIC_DIR}/testpmd" STATIC_DIR_ARCH="${STATIC_DIR}/archive" CSS_PATCH_FILE="${STATIC_DIR}/theme_overrides.css" +JEN_URL='https://jenkins.fd.io/view/csit/job' sudo apt-get -y update -sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential zlib1g-dev +sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \ + zlib1g-dev unzip # Clean-up when finished: trap 'rm -rf ${WORKING_DIR}; exit' EXIT @@ -32,165 +41,495 @@ pip install -r requirements.txt export PYTHONPATH=`pwd` -# Generate the documentation: - -DATE=$(date -u '+%d-%b-%Y') - -sphinx-build -v -c . -a -b html -E -D release=$1 -D version="$1 report - $DATE" ${SOURCE_DIR} ${BUILD_DIR}/ - -# Patch the CSS for tables layout -cat - > ${CSS_PATCH_FILE} <<"_EOF" -/* override table width restrictions */ -@media screen and (min-width: 767px) { - .wy-table-responsive table td, .wy-table-responsive table th { - white-space: normal !important; - } - - .wy-table-responsive { - font-size: small; - margin-bottom: 24px; - max-width: 100%; - overflow: visible !important; - } -} -_EOF - # Download raw outputs for plots echo Downloading raw outputs for plots ... mkdir -p ${STATIC_DIR_VPP} mkdir -p ${STATIC_DIR_TESTPMD} mkdir -p ${STATIC_DIR_ARCH} -JEN_URL='https://jenkins.fd.io/view/csit/job' -JEN_FILE_PERF='output_perf_data.xml' - -JEN_JOB='csit-vpp-perf-1701-all' -JEN_BUILD=(3 4 7 8 9) +### VPP PERFORMANCE SOURCE DATA -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 -done - -JEN_JOB='csit-vpp-perf-1701-long' -JEN_BUILD=(2 4 5 6) - -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 -done - -JEN_JOB='csit-dpdk-perf-1701-all' -JEN_BUILD=(2 3) - -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 -done - -JEN_JOB='csit-vpp-functional-1701-virl' -JEN_BUILD=(48) +JEN_FILE_PERF='output_perf_data.xml' +JEN_JOB='csit-vpp-perf-1704-all' +JEN_BUILD=(1) for i in "${JEN_BUILD[@]}"; do - curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip + 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 done -JEN_URL='https://jenkins.fd.io/view/hc2vpp/job' -JEN_JOB='hc2vpp-csit-integration-1701-ubuntu1404' +# 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 \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_l2.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \ + --title "L2 Ethernet Switching" +# IPv4 Routed-Forwarding +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \ + --title "IPv4 Routed-Forwarding" +# IPv6 Routed-Forwarding +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \ + --title "IPv6 Routed-Forwarding" +# IPv4 Overlay Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4o.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \ + --title "IPv4 Overlay Tunnels" +# IPv6 Overlay Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6o.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \ + --title "IPv6 Overlay Tunnels" +# VM Vhost Connections +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_vhost.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+vhost.*" \ + --title "VM Vhost Connections" +# Crypto in hardware: IP4FWD, IP6FWD +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipsec.rst \ + --formatting rst --start 3 --level 2 \ + --regex ".+ipsec.*" \ + --title "Crypto in hardware: IP4FWD, IP6FWD" +sed -i -e "s/###JOB###/${JEN_JOB}\/${JEN_BUILD[-1]}/g" \ + ${DTR_PERF_SOURCE_DIR}/index.rst +sed -i -e "s/###LINK###/${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}/g" \ + ${DTR_PERF_SOURCE_DIR}/index.rst +rm -f ${DTR_PERF_SOURCE_DIR}/*.json + +### DPDK PERFORMANCE SOURCE DATA + +JEN_JOB='csit-dpdk-perf-1704-all' JEN_BUILD=(1) for i in "${JEN_BUILD[@]}"; do - curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip + 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 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 \ + --output ${DTR_TESTPMD_SOURCE_DIR}/testpmd_performance_results.rst \ + --formatting rst --start 3 --level 2 +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=12 + +curl -fs ${JEN_URL}/${JEN_JOB}/${i}/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 + +unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/ +# Cop Address Security +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_cop.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+cop.*" \ + --title "Cop Address Security" +# DHCP Client and proxy +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_dhcp.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+dhcp.*" \ + --title "DHCP - Client and Proxy" +# GRE Overlay Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_gre.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ethip4gre.*" \ + --title "GRE Overlay Tunnels" +# iACL Security +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_iacl.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+iacl.*" \ + --title "iACL Security" +# IPSec - Tunnels and Transport +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipsec.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ipsec(tnl|tpt)+-.*" \ + --title "IPSec - Tunnels and Transport" +# IPv4 Routed-Forwarding +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv4.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ethip4-ip4base-(func|ip4ecmp\-func|ip4proxyarp\-func|ip4arp\-func)+" \ + --title "IPv4 Routed-Forwarding" +# IPv6 Routed-Forwarding +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv6.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ethip6-ip6base-(func|ip6ecmp\-func|ip6ra\-func)+" \ + --title "IPv6 Routed-Forwarding" +# L2BD Ethernet Switching +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_SOURCE_DIR}/vpp_functional_results/vpp_functional_results_l2bd.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+eth-l2bdbasemac(lrn|stc)+-(func|eth\-2vhost|l2shg\-func).*" \ + --title "L2BD Ethernet Switching" +# L2XC Ethernet Switching +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_l2xc.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+eth-l2xcbase-(eth|func).*" \ + --title "L2XC Ethernet Switching" +# LISP Overlay Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_lisp.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+lisp.*" \ + --title "LISP Overlay Tunnels" +# QoS Policer Metering +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_policer.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ipolicemark.*" \ + --title "QoS Policer Metering" +# RPF Source Security +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_rpf.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+rpf.*" \ + --title "RPF Source Security" +# Softwire Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_softwire.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+swire.*" \ + --title "Softwire Tunnels" +# Tap Interface +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_tap.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+tap.*" \ + --title "Tap Interface" +# Telemetry - IPFIX and SPAN +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_telemetry.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+(ipfix|spanrx).*" \ + --title "Telemetry - IPFIX and SPAN" +# VLAN Tag Translation +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vlan.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+(dot1q\-|dot1ad\-).*" \ + --title "VLAN Tag Translation" +# VRF Routed-Forwarding +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vrf.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+ethip(4|6)+-ip(4|6)+basevrf.*" \ + --title "VRF Routed-Forwarding" +# VXLAN Overlay Tunnels +python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \ + --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vxlan.rst \ + --formatting rst --start 4 --level 2 \ + --regex ".+(ip4vxlan|ip6vxlan).*" \ + --title "VXLAN Overlay Tunnels" +sed -i -e "s/###JOB###/${JEN_JOB}\/${JEN_BUILD}/g" \ + ${DTR_FUNC_SOURCE_DIR}/index.rst +sed -i -e "s/###LINK###/${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}/g" \ + ${DTR_FUNC_SOURCE_DIR}/index.rst +rm -f ${DTR_FUNC_SOURCE_DIR}/*.json + +### HONEYCOMB SOURCE DATA -# Plot packets per second - -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-l2-ndrdisc --title "64B-4t4c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 - -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-ip4-ndrdisc --title "64B-4t4c-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,"4T4C") and contains(@tags,"IP4FWD") and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 - -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-ip6-ndrdisc --title "78B-4t4c-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,"4T4C") and contains(@tags,"IP6FWD") and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 - -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-ndrdisc --title "64B-4t4c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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"))]' --lower 2000000 --upper 20000000 +JEN_URL='https://jenkins.fd.io/view/hc2vpp/job' +JEN_JOB='hc2vpp-csit-integration-1704-ubuntu1604' +JEN_BUILD=27 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 2000000 --upper 12000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 2000000 --upper 12000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-ndrdisc --title "78B-4t4c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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"))]' --lower 2000000 --upper 12000000 +curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \ + -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -python run_plot.py --input ${STATIC_DIR_VPP} --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")]' --lower 0 --upper 8000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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")]' --lower 0 --upper 8000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-vhost-ndrdisc --title "64B-4t4c-.*vhost.*-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") and contains(@tags,"VHOST")]' --lower 0 --upper 8000000 +# DELETE ME +#cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-l2-pdrdisc --title "64B-4t4c-(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,"4T4C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 +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 \ + --output ${DTR_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \ + --formatting rst --start 3 --level 2 +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 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-ip4-pdrdisc --title "64B-4t4c-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,"4T4C") and contains(@tags,"IP4FWD") and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 +# Generate the documentation: -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-ip6-pdrdisc --title "78B-4t4c-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,"4T4C") and contains(@tags,"IP6FWD") and not(contains(@tags,"VHOST"))]' --lower 0 --upper 36000000 +DATE=$(date -u '+%d-%b-%Y') -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 0 --upper 16000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-pdrdisc --title "64B-4t4c-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,"4T4C") 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"))]' --lower 2000000 --upper 20000000 +sphinx-build -v -c . -a -b html -E \ + -D release=$1 -D version="$1 report - $DATE" \ + ${SOURCE_DIR} ${BUILD_DIR}/ -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 2000000 --upper 12000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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"))]' --lower 2000000 --upper 12000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-pdrdisc --title "78B-4t4c-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,"4T4C") 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"))]' --lower 2000000 --upper 12000000 +# Patch the CSS for tables layout +cat - > ${CSS_PATCH_FILE} <<"_EOF" +/* override table width restrictions */ +@media screen and (min-width: 767px) { + .wy-table-responsive table td, .wy-table-responsive table th { + white-space: normal !important; + } -python run_plot.py --input ${STATIC_DIR_VPP} --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")]' --lower 0 --upper 8000000 -python run_plot.py --input ${STATIC_DIR_VPP} --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")]' --lower 2000000 --upper 10000000 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-vhost-pdrdisc --title "64B-4t4c-.*vhost.*-pdrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"4T4C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]' --lower 2000000 --upper 10000000 + .wy-table-responsive { + font-size: small; + margin-bottom: 24px; + max-width: 100%; + overflow: visible !important; + } +} +_EOF -python run_plot.py --input ${STATIC_DIR_TESTPMD} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_TESTPMD} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_TESTPMD} --output ${STATIC_DIR_TESTPMD}/64B-4t4c-l2-ndrdisc --title "64B-4t4c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --lower 0 --upper 26000000 +# Plot packets per second -python run_plot.py --input ${STATIC_DIR_TESTPMD} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_TESTPMD} --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"))]' --lower 0 --upper 26000000 -python run_plot.py --input ${STATIC_DIR_TESTPMD} --output ${STATIC_DIR_TESTPMD}/64B-4t4c-l2-pdrdisc --title "64B-4t4c-(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,"4T4C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --lower 0 --upper 26000000 +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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} \ + --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} \ + --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,"VHOST"))]' +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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,"VHOST"))]' +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} --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} --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} --output ${STATIC_DIR_VPP}/64B-4t4c-l2-ndrdisc-lat50 --title "64B-4t4c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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} --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,"VHOST"))]' --latency lat_50 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --latency lat_50 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-ip4-ndrdisc-lat50 --title "64B-4t4c-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,"4T4C") and contains(@tags,"IP4FWD") and not(contains(@tags,"VHOST"))]' --latency lat_50 - -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --latency lat_50 -python run_plot.py --input ${STATIC_DIR_VPP} --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,"VHOST"))]' --latency lat_50 -python run_plot.py --input ${STATIC_DIR_VPP} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-ip6-ndrdisc-lat50 --title "78B-4t4c-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,"4T4C") and contains(@tags,"IP6FWD") and not(contains(@tags,"VHOST"))]' --latency lat_50 - -python run_plot.py --input ${STATIC_DIR_VPP} --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} --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} --output ${STATIC_DIR_VPP}/64B-4t4c-ethip4-ndrdisc-lat50 --title "64B-4t4c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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} --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} --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} --output ${STATIC_DIR_VPP}/78B-4t4c-ethip6-ndrdisc-lat50 --title "78B-4t4c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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} --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} --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} --output ${STATIC_DIR_VPP}/64B-4t4c-vhost-ndrdisc-lat50 --title "64B-4t4c-.*vhost.*-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") and contains(@tags,"VHOST")]' --latency lat_50 - -python run_plot.py --input ${STATIC_DIR_TESTPMD} --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} --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 -python run_plot.py --input ${STATIC_DIR_TESTPMD} --output ${STATIC_DIR_TESTPMD}/64B-4t4c-l2-ndrdisc-lat50 --title "64B-4t4c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"4T4C") 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} \ + --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} \ + --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} \ + --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,"VHOST"))]' --latency lat_50 +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' --latency lat_50 + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' --latency lat_50 +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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,"VHOST"))]' --latency lat_50 + +python run_plot.py --input ${STATIC_DIR_VPP} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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} \ + --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 # Create archive echo Creating csit.report.tar.gz ... diff --git a/resources/tools/report_gen/run_robot_data.py b/resources/tools/report_gen/run_robot_data.py index 1d102e1c1a..d5672b4ce5 100755 --- a/resources/tools/report_gen/run_robot_data.py +++ b/resources/tools/report_gen/run_robot_data.py @@ -247,6 +247,11 @@ def do_rst(data, args): output = open(args.output, 'w') output.write('\n.. |br| raw:: html\n\n <br />\n\n') + if (args.title): + output.write(args.title + '\n' + + hdrs[shift - 1] * + len(args.title) + '\n\n') + for item in data: if int(item['level']) < start: continue @@ -468,6 +473,10 @@ def parse_args(): default=None, help="Regular expression used to select test suites. " "If None, all test suites are selected.") + parser.add_argument("-t", "--title", + type=str, + default=None, + help="Title of the output.") return parser.parse_args() |