26 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
29 DATE=$(date -u '+%d-%b-%Y')
32 source ${SCRIPT_DIR}/run_report.cfg
34 # Install system dependencies
35 sudo apt-get -y update
36 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
38 if [[ ${LATEX} -eq 1 ]] ;
40 sudo apt-get -y install librsvg2-bin texlive-latex-recommended \
41 texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra latexmk wkhtmltopdf
42 sudo sed -i.bak 's/^\(main_memory\s=\s\).*/\110000000/' /usr/share/texlive/texmf-dist/web2c/texmf.cnf
45 # Clean-up when finished
46 trap 'rm -rf ${DIR[WORKING]}; exit' EXIT
47 trap 'rm -rf ${DIR[WORKING]}; exit' ERR
49 # Remove the old build
50 rm -rf ${DIR[BUILD]} || true
51 rm -rf ${DIR[BUILD,LATEX]} || true
52 rm -rf ${DIR[WORKING]} || true
54 # Create working directories
57 # Create virtual environment
58 virtualenv ${DIR[WORKING]}/env
59 . ${DIR[WORKING]}/env/bin/activate
61 # Install python dependencies:
62 pip install -r requirements.txt
64 export PYTHONPATH=`pwd`
66 # Download raw outputs for plots
67 echo Downloading raw outputs for plots ...
68 mkdir -p ${DIR[STATIC,VPP]}
69 mkdir -p ${DIR[STATIC,DPDK]}
70 mkdir -p ${DIR[STATIC,ARCH]}
71 mkdir -p ${DIR[STATIC,TREND]}
72 mkdir -p ${DIR[PLOT,VPP]}
73 mkdir -p ${DIR[PLOT,DPDK]}
75 ### VPP PERFORMANCE SOURCE DATA
77 #if [[ ${DEBUG} -eq 1 ]] ;
78 # cp ./${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip
81 blds=${JOB[PERF,VPP,BLD]}
82 for i in ${blds[@]}; do
83 curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/output_perf_data.xml \
84 --output ${DIR[PLOT,VPP]}/${JOB[PERF,VPP]}-${i}.xml
85 if [[ ${DEBUG} -eq 0 ]] ;
87 curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
88 --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${i}.zip
91 if [[ ${DEBUG} -eq 0 ]] ;
93 curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${JOB[PERF,VPP,FBLD]}/robot/report/\*zip\*/robot-plugin.zip \
94 --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip
97 cp ${DIR[PLOT,VPP]}/* ${DIR[STATIC,TREND]}
98 blds=${JOB[1704,VPP,BLD]}
99 for i in ${blds[@]}; do
100 curl --silent ${URL[JENKINS,CSIT]}/${JOB[1704,PERF,VPP]}/${i}/robot/report/output_perf_data.xml \
101 --output ${DIR[STATIC,TREND]}/${JOB[1704,PERF,VPP]}-${i}.xml
104 ### DPDK PERFORMANCE SOURCE DATA
106 #if [[ ${DEBUG} -eq 1 ]] ;
107 # cp ./${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip
110 blds=${JOB[PERF,DPDK,BLD]}
111 for i in ${blds[@]}; do
112 curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/output_perf_data.xml \
113 --output ${DIR[PLOT,DPDK]}/${JOB[PERF,DPDK]}-${i}.xml
114 if [[ ${DEBUG} -eq 0 ]] ;
116 curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
117 --output ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${i}.zip
120 cp ${DIR[PLOT,DPDK]}/* ${DIR[STATIC,TREND]}
122 ### FUNCTIONAL SOURCE DATA
124 #if [[ ${DEBUG} -eq 1 ]] ;
125 # cp ./${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip
128 if [[ ${DEBUG} -eq 0 ]] ;
130 curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[FUNC,VPP]}/${JOB[FUNC,VPP,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
131 --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip
134 ### HONEYCOMB FUNCTIONAL SOURCE DATA
136 #if [[ ${DEBUG} -eq 1 ]] ;
137 # cp ./${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip
140 if [[ ${DEBUG} -eq 0 ]] ;
142 curl --fail --silent ${URL[JENKINS,HC]}/${JOB[FUNC,HC]}/${JOB[FUNC,HC,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
143 --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip
146 ### HONEYCOMB PERFORMANCE SOURCE DATA
148 #if [[ ${DEBUG} -eq 1 ]] ;
149 # cp ./${JOB[PERF,HC]}-${JOB[PERF,HC,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,HC]}-${JOB[PERF,HC,BLD]}.zip
152 if [[ ${DEBUG} -eq 0 ]] ;
154 blds=${JOB[PERF,HC,BLD]}
155 for i in ${blds[@]}; do
156 curl --silent ${URL[JENKINS,HC]}/${JOB[PERF,HC]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
157 --output ${DIR[STATIC,ARCH]}/${JOB[PERF,HC]}-${i}.zip
161 ### NSH_SFC SOURCE DATA
163 #if [[ ${DEBUG} -eq 1 ]] ;
164 # cp ./${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip
167 if [[ ${DEBUG} -eq 0 ]] ;
169 curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[FUNC,NSH]}/${JOB[FUNC,NSH,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
170 --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip
173 # Data post processing
175 if [[ ${DEBUG} -eq 0 ]] ;
178 unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip -d ${DIR[WORKING]}/
179 python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
180 --output ${DIR[DTR,PERF,VPP]}/vpp_performance_results.rst \
181 --formatting rst --start 4 --level 2
182 python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
183 --output ${DIR[DTC,PERF,VPP]}/vpp_performance_configuration.rst \
184 --data "VAT_H" --formatting rst --start 4 --level 2
185 python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
186 --output ${DIR[DTO,PERF,VPP]}/vpp_performance_operational_data.rst \
187 --data "SH_RUN" --formatting rst --start 4 --level 2
189 blds=${JOB[PERF,VPP,BLD]}
190 for i in ${blds[@]}; do
191 unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${i}.zip -d ${DIR[WORKING]}/
192 python run_robot_json_data.py \
193 --input ${DIR[WORKING]}/robot-plugin/output.xml \
194 --output ${DIR[DTR,PERF,VPP,IMPRV]}/${JOB[PERF,VPP]}-${i}.json \
199 unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip -d ${DIR[WORKING]}/
200 python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
201 --output ${DIR[DTR,PERF,DPDK]}/dpdk_performance_results.rst \
202 --formatting rst --start 4 --level 2
205 unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip -d ${DIR[WORKING]}/
206 python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
207 --output ${DIR[DTR,FUNC,VPP]}/vpp_functional_results.rst \
208 --formatting rst --start 5 --level 2
209 python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
210 --output ${DIR[DTC,FUNC,VPP]}/vpp_functional_configuration.rst \
211 --data "VAT_H" --formatting rst --start 5 --level 2
214 unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip -d ${DIR[WORKING]}/
215 python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
216 --output ${DIR[DTR,FUNC,HC]}/honeycomb_functional_results.rst \
217 --formatting rst --start 5 --level 2
220 unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip -d ${DIR[WORKING]}/
221 python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
222 --output ${DIR[DTR,FUNC,NSHSFC]}/nshsfc_functional_results.rst \
223 --formatting rst --start 5 --level 2
226 # Generate tables for performance improvements
227 if [[ ${DEBUG} -eq 0 ]] ;
229 python run_improvments_tables.py \
230 --input ${DIR[DTR,PERF,VPP,IMPRV]} \
231 --output ${DIR[DTR,PERF,VPP,IMPRV]}
234 # Delete temporary json files
235 find ${DIR[RST]} -name "*.json" -type f -delete
237 # Plot packets per second
241 python run_plot.py --input ${DIR[PLOT,VPP]} \
242 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc \
243 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
244 --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"))]'
246 python run_plot.py --input ${DIR[PLOT,VPP]} \
247 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-ndrdisc \
248 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
249 --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"))]'
251 python run_plot.py --input ${DIR[PLOT,VPP]} \
252 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-pdrdisc \
253 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
254 --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"))]'
255 python run_plot.py --input ${DIR[PLOT,VPP]} \
256 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-pdrdisc \
257 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
258 --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"))]'
262 python run_plot.py --input ${DIR[PLOT,VPP]} \
263 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-ndrdisc \
264 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
265 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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 8000000
266 python run_plot.py --input ${DIR[PLOT,VPP]} \
267 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-ndrdisc \
268 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
269 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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 5000000 --upper 12000000
271 python run_plot.py --input ${DIR[PLOT,VPP]} \
272 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-pdrdisc \
273 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
274 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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 8000000
275 python run_plot.py --input ${DIR[PLOT,VPP]} \
276 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-pdrdisc \
277 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
278 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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 5000000 --upper 12000000
282 python run_plot.py --input ${DIR[PLOT,VPP]} \
283 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc \
284 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
285 --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"))]'
286 python run_plot.py --input ${DIR[PLOT,VPP]} \
287 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc \
288 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
289 --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"))]'
291 python run_plot.py --input ${DIR[PLOT,VPP]} \
292 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-pdrdisc \
293 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
294 --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"))]'
295 python run_plot.py --input ${DIR[PLOT,VPP]} \
296 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-pdrdisc \
297 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
298 --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"))]'
302 python run_plot.py --input ${DIR[PLOT,VPP]} \
303 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc \
304 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
305 --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"))]'
306 python run_plot.py --input ${DIR[PLOT,VPP]} \
307 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc \
308 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
309 --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"))]'
311 python run_plot.py --input ${DIR[PLOT,VPP]} \
312 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-pdrdisc \
313 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
314 --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"))]'
315 python run_plot.py --input ${DIR[PLOT,VPP]} \
316 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-pdrdisc \
317 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
318 --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"))]'
322 python run_plot.py --input ${DIR[PLOT,VPP]} \
323 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc \
324 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
325 --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")) and not(contains(@tags, "IPSECHW"))]'
326 python run_plot.py --input ${DIR[PLOT,VPP]} \
327 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc \
328 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
329 --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")) and not(contains(@tags, "IPSECHW"))]'
331 python run_plot.py --input ${DIR[PLOT,VPP]} \
332 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-pdrdisc \
333 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
334 --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")) and not(contains(@tags, "IPSECHW"))]'
335 python run_plot.py --input ${DIR[PLOT,VPP]} \
336 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-pdrdisc \
337 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
338 --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")) and not(contains(@tags, "IPSECHW"))]'
342 python run_plot.py --input ${DIR[PLOT,VPP]} \
343 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc \
344 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
345 --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"))]'
346 python run_plot.py --input ${DIR[PLOT,VPP]} \
347 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc \
348 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
349 --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"))]'
351 python run_plot.py --input ${DIR[PLOT,VPP]} \
352 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-pdrdisc \
353 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
354 --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"))]'
355 python run_plot.py --input ${DIR[PLOT,VPP]} \
356 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-pdrdisc \
357 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
358 --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"))]'
362 python run_plot.py --input ${DIR[PLOT,VPP]} \
363 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc \
364 --title "64B-1t1c-.*vhost.*-ndrdisc" \
365 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]'
366 python run_plot.py --input ${DIR[PLOT,VPP]} \
367 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc \
368 --title "64B-2t2c-.*vhost.*-ndrdisc" \
369 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]'
371 python run_plot.py --input ${DIR[PLOT,VPP]} \
372 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-pdrdisc \
373 --title "64B-1t1c-.*vhost.*-pdrdisc" \
374 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]'
375 python run_plot.py --input ${DIR[PLOT,VPP]} \
376 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-pdrdisc \
377 --title "64B-2t2c-.*vhost.*-pdrdisc" \
378 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]'
380 # VPP VM VHOST SELECTION
382 python run_plot.py --input ${DIR[PLOT,VPP]} \
383 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc \
384 --title "64B-1t1c-.*vhost.*-ndrdisc" \
385 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]'
386 python run_plot.py --input ${DIR[PLOT,VPP]} \
387 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc \
388 --title "64B-2t2c-.*vhost.*-ndrdisc" \
389 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]'
391 python run_plot.py --input ${DIR[PLOT,VPP]} \
392 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-pdrdisc \
393 --title "64B-1t1c-.*vhost.*-pdrdisc" \
394 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]'
395 python run_plot.py --input ${DIR[PLOT,VPP]} \
396 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-pdrdisc \
397 --title "64B-2t2c-.*vhost.*-pdrdisc" \
398 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]'
402 python run_plot.py --input ${DIR[PLOT,VPP]} \
403 --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc \
404 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
405 --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"))]'
406 python run_plot.py --input ${DIR[PLOT,VPP]} \
407 --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc \
408 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
409 --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"))]'
411 python run_plot.py --input ${DIR[PLOT,VPP]} \
412 --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-pdrdisc \
413 --title "64B-1t1c-.*ipsec.*-pdrdisc" \
414 --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"))]'
415 python run_plot.py --input ${DIR[PLOT,VPP]} \
416 --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-pdrdisc \
417 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
418 --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"))]'
422 python run_plot.py --input ${DIR[PLOT,DPDK]} \
423 --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc \
424 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
425 --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"))]'
426 python run_plot.py --input ${DIR[PLOT,DPDK]} \
427 --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc \
428 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
429 --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"))]'
430 python run_plot.py --input ${DIR[PLOT,DPDK]} \
431 --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc \
432 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
433 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
434 --lower 2000000 --upper 12000000
435 python run_plot.py --input ${DIR[PLOT,DPDK]} \
436 --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc \
437 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
438 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
439 --lower 2000000 --upper 12000000
441 python run_plot.py --input ${DIR[PLOT,DPDK]} \
442 --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-pdrdisc \
443 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
444 --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"))]'
445 python run_plot.py --input ${DIR[PLOT,DPDK]} \
446 --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-pdrdisc \
447 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
448 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) 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"))]'
449 python run_plot.py --input ${DIR[PLOT,DPDK]} \
450 --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-pdrdisc \
451 --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
452 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
453 --lower 20000000 --upper 30000000
454 python run_plot.py --input ${DIR[PLOT,DPDK]} \
455 --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-pdrdisc \
456 --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
457 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
458 --lower 20000000 --upper 30000000
464 python run_plot.py --input ${DIR[PLOT,VPP]} \
465 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc-lat50 \
466 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
467 --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
468 python run_plot.py --input ${DIR[PLOT,VPP]} \
469 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-ndrdisc-lat50 \
470 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
471 --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
475 python run_plot.py --input ${DIR[PLOT,VPP]} \
476 --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-ndrdisc-lat50 \
477 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
478 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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
479 python run_plot.py --input ${DIR[PLOT,VPP]} \
480 --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-ndrdisc-lat50 \
481 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
482 --xpath '//*[@framesize="64B" and ((contains(@tags,"FEATURE") and contains(@tags,"ACL50") and contains(@tags,"10k_FLOWS"))) 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
486 python run_plot.py --input ${DIR[PLOT,VPP]} \
487 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
488 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
489 --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
490 python run_plot.py --input ${DIR[PLOT,VPP]} \
491 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
492 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
493 --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
497 python run_plot.py --input ${DIR[PLOT,VPP]} \
498 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
499 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
500 --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
501 python run_plot.py --input ${DIR[PLOT,VPP]} \
502 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
503 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
504 --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
508 python run_plot.py --input ${DIR[PLOT,VPP]} \
509 --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc-lat50 \
510 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
511 --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")) and not(contains(@tags, "IPSECHW"))]' --latency lat_50
512 python run_plot.py --input ${DIR[PLOT,VPP]} \
513 --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc-lat50 \
514 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
515 --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")) and not(contains(@tags, "IPSECHW"))]' --latency lat_50
519 python run_plot.py --input ${DIR[PLOT,VPP]} \
520 --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc-lat50 \
521 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
522 --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
523 python run_plot.py --input ${DIR[PLOT,VPP]} \
524 --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc-lat50 \
525 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
526 --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
530 python run_plot.py --input ${DIR[PLOT,VPP]} \
531 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc-lat50 \
532 --title "64B-1t1c-.*vhost.*-ndrdisc" \
533 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]' --latency lat_50
534 python run_plot.py --input ${DIR[PLOT,VPP]} \
535 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc-lat50 \
536 --title "64B-2t2c-.*vhost.*-ndrdisc" \
537 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and not(contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD"))]' --latency lat_50
539 # VPP VM VHOST selection
541 python run_plot.py --input ${DIR[PLOT,VPP]} \
542 --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc-lat50 \
543 --title "64B-1t1c-.*vhost.*-ndrdisc" \
544 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]' --latency lat_50
545 python run_plot.py --input ${DIR[PLOT,VPP]} \
546 --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc-lat50 \
547 --title "64B-2t2c-.*vhost.*-ndrdisc" \
548 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and not(contains(@tags,"VXLAN")) and not(contains(@tags,"IP4FWD")) and not(contains(@tags,"DOT1Q")) and not(contains(name(), "2Vm"))]' --latency lat_50
552 python run_plot.py --input ${DIR[PLOT,VPP]} \
553 --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc-lat50 \
554 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
555 --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
556 python run_plot.py --input ${DIR[PLOT,VPP]} \
557 --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc-lat50 \
558 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
559 --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
563 python run_plot.py --input ${DIR[PLOT,DPDK]} \
564 --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc-lat50 \
565 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
566 --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
567 python run_plot.py --input ${DIR[PLOT,DPDK]} \
568 --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc-lat50 \
569 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
570 --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
571 python run_plot.py --input ${DIR[PLOT,DPDK]} \
572 --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc-lat50 \
573 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
574 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
575 python run_plot.py --input ${DIR[PLOT,DPDK]} \
576 --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc-lat50 \
577 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
578 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
581 sphinx-build -v -c . -a -b html -E \
582 -D release=$1 -D version="$1 report - $DATE" \
583 ${DIR[RST]} ${DIR[BUILD]}/
585 # Patch the CSS for tables layout
586 cat - > ${DIR[CSS_PATCH_FILE]} <<"_EOF"
587 /* override table width restrictions */
588 @media screen and (min-width: 767px) {
589 .wy-table-responsive table td, .wy-table-responsive table th {
590 white-space: normal !important;
593 .wy-table-responsive {
597 overflow: visible !important;
603 if [[ ${LATEX} -eq 1 ]] ;
605 # Convert PyPLOT graphs in HTML format to PDF.
606 for f in ${DIR[STATIC,VPP]}/*; do
607 wkhtmltopdf ${f} ${f%.html}.pdf
609 for f in ${DIR[STATIC,DPDK]}/*; do
610 wkhtmltopdf ${f} ${f%.html}.pdf
612 rsvg-convert -z 10 -f pdf -o fdio.pdf fdio.svg
614 # Generate the LaTeX documentation
615 sphinx-build -v -c . -a -b latex -E \
616 -D release=$1 -D version="$1 report - $DATE" \
617 ${DIR[RST]} ${DIR[BUILD,LATEX]}
618 cd ${DIR[BUILD,LATEX]}
619 pdflatex -shell-escape -interaction nonstopmode csit.tex || true
620 pdflatex -interaction nonstopmode csit.tex || true
621 cp csit.pdf ../${DIR[STATIC,ARCH]}/csit_$1.pdf
627 echo Creating csit.report.tar.gz ...
628 tar -czvf ./csit.report.tar.gz ${DIR[BUILD]}