CSIT Trending: Input files
[csit.git] / resources / tools / report_gen / run_report.sh
1 #!/bin/bash
2
3 set -x
4
5 # Script directory
6 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
7
8 # Get actual date
9 DATE=$(date -u '+%d-%b-%Y')
10
11 # Load configuration
12 source ${SCRIPT_DIR}/run_report.cfg
13
14 # Process parameters
15 for i in "$@"; do
16 case $i in
17     --debug)
18         CFG[DEBUG]=1
19     ;;
20     --no_latex)
21         CFG[BLD_LATEX]=0
22     ;;
23     --no_html)
24         CFG[BLD_HTML]=0
25     ;;
26     *)
27         # unknown option
28     ;;
29 esac
30 done
31
32 # Install system dependencies
33 sudo apt-get -y update
34 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
35     zlib1g-dev unzip
36 if [[ ${CFG[BLD_LATEX]} -eq 1 ]] ;
37 then
38     sudo apt-get -y install xvfb texlive-latex-recommended \
39         texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra latexmk wkhtmltopdf
40     sudo sed -i.bak 's/^\(main_memory\s=\s\).*/\110000000/' /usr/share/texlive/texmf-dist/web2c/texmf.cnf
41 fi
42
43 # Clean-up when finished
44 trap 'rm -rf ${DIR[WORKING]}; exit' EXIT
45 trap 'rm -rf ${DIR[WORKING]}; exit' ERR
46
47 # Remove the old build
48 rm -rf ${DIR[BUILD,HTML]} || true
49 rm -rf ${DIR[BUILD,LATEX]} || true
50 rm -rf ${DIR[WORKING]} || true
51
52 # Create working directories
53 mkdir ${DIR[WORKING]}
54
55 # Create virtual environment
56 virtualenv ${DIR[WORKING]}/env
57 . ${DIR[WORKING]}/env/bin/activate
58
59 # Install python dependencies:
60 pip install -r requirements.txt
61
62 export PYTHONPATH=`pwd`
63
64 # Download raw outputs for plots
65 echo Downloading raw outputs for plots ...
66 mkdir -p ${DIR[STATIC,VPP]}
67 mkdir -p ${DIR[STATIC,DPDK]}
68 mkdir -p ${DIR[STATIC,ARCH]}
69 mkdir -p ${DIR[STATIC,TREND]}
70 mkdir -p ${DIR[PLOT,VPP]}
71 mkdir -p ${DIR[PLOT,DPDK]}
72
73 ### VPP PERFORMANCE SOURCE DATA
74
75 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
76 #    cp ./${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip
77 #fi
78
79 blds=${JOB[PERF,VPP,BLD]}
80 for i in ${blds[@]}; do
81     curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/output_perf_data.xml \
82         --output ${DIR[PLOT,VPP]}/${JOB[PERF,VPP]}-${i}.xml
83     if [[ ${CFG[DEBUG]} -eq 0 ]] ;
84     then
85         curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
86             --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${i}.zip
87     fi
88 done
89 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
90 then
91     curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,VPP]}/${JOB[PERF,VPP,FBLD]}/robot/report/\*zip\*/robot-plugin.zip \
92         --output ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip
93 fi
94 # Archive trending
95 cp ${DIR[PLOT,VPP]}/* ${DIR[STATIC,TREND]}
96 blds=${JOB[1704,VPP,BLD]}
97 for i in ${blds[@]}; do
98     curl --silent ${URL[JENKINS,CSIT]}/${JOB[1704,PERF,VPP]}/${i}/robot/report/output_perf_data.xml \
99         --output ${DIR[STATIC,TREND]}/${JOB[1704,PERF,VPP]}-${i}.xml
100 done
101
102 ### DPDK PERFORMANCE SOURCE DATA
103
104 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
105 #    cp ./${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip
106 #fi
107
108 blds=${JOB[PERF,DPDK,BLD]}
109 for i in ${blds[@]}; do
110     curl --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/output_perf_data.xml \
111         --output ${DIR[PLOT,DPDK]}/${JOB[PERF,DPDK]}-${i}.xml
112     if [[ ${CFG[DEBUG]} -eq 0 ]] ;
113     then
114         curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[PERF,DPDK]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
115             --output ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${i}.zip
116     fi
117 done
118 cp ${DIR[PLOT,DPDK]}/* ${DIR[STATIC,TREND]}
119
120 ### FUNCTIONAL SOURCE DATA
121
122 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
123 #    cp ./${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip
124 #fi
125
126 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
127 then
128     curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[FUNC,VPP]}/${JOB[FUNC,VPP,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
129         --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip
130 fi
131
132 ### HONEYCOMB FUNCTIONAL SOURCE DATA
133
134 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
135 #    cp ./${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip
136 #fi
137
138 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
139 then
140     curl --fail --silent ${URL[JENKINS,HC]}/${JOB[FUNC,HC]}/${JOB[FUNC,HC,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
141         --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip
142 fi
143
144 ### HONEYCOMB PERFORMANCE SOURCE DATA
145
146 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
147 #    cp ./${JOB[PERF,HC]}-${JOB[PERF,HC,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[PERF,HC]}-${JOB[PERF,HC,BLD]}.zip
148 #fi
149
150 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
151 then
152     blds=${JOB[PERF,HC,BLD]}
153     for i in ${blds[@]}; do
154         curl --silent ${URL[JENKINS,HC]}/${JOB[PERF,HC]}/${i}/robot/report/\*zip\*/robot-plugin.zip \
155             --output ${DIR[STATIC,ARCH]}/${JOB[PERF,HC]}-${i}.zip
156 done
157 fi
158
159 ### NSH_SFC SOURCE DATA
160
161 #if [[ ${CFG[DEBUG]} -eq 1 ]] ;
162 #    cp ./${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip
163 #fi
164
165 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
166 then
167     curl --fail --silent ${URL[JENKINS,CSIT]}/${JOB[FUNC,NSH]}/${JOB[FUNC,NSH,BLD]}/robot/report/\*zip\*/robot-plugin.zip \
168         --output ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip
169 fi
170
171 # Data post processing
172
173 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
174 then
175     # VPP PERF
176     unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${JOB[PERF,VPP,FBLD]}.zip -d ${DIR[WORKING]}/
177     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
178         --output ${DIR[DTR,PERF,VPP]}/vpp_performance_results.rst \
179         --formatting rst --start 4 --level 2
180     python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
181         --output ${DIR[DTC,PERF,VPP]}/vpp_performance_configuration.rst \
182         --data "VAT_H" --formatting rst --start 4 --level 2
183     python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
184         --output ${DIR[DTO,PERF,VPP]}/vpp_performance_operational_data.rst \
185         --data "SH_RUN" --formatting rst --start 4 --level 2
186
187     blds=${JOB[PERF,VPP,BLD]}
188     for i in ${blds[@]}; do
189         unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,VPP]}-${i}.zip -d ${DIR[WORKING]}/
190         python run_robot_json_data.py \
191             --input ${DIR[WORKING]}/robot-plugin/output.xml \
192             --output ${DIR[DTR,PERF,VPP,IMPRV]}/${JOB[PERF,VPP]}-${i}.json \
193             --vdevice ${i}
194     done
195
196     # DPDK PERF
197     unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip -d ${DIR[WORKING]}/
198     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
199         --output ${DIR[DTR,PERF,DPDK]}/dpdk_performance_results.rst \
200         --formatting rst --start 4 --level 2
201
202     # VPP FUNC
203     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip -d ${DIR[WORKING]}/
204     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
205         --output ${DIR[DTR,FUNC,VPP]}/vpp_functional_results.rst \
206         --formatting rst --start 5 --level 2
207     python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
208         --output ${DIR[DTC,FUNC,VPP]}/vpp_functional_configuration.rst \
209         --data "VAT_H" --formatting rst --start 5 --level 2
210
211     # HC FUNC
212     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip -d ${DIR[WORKING]}/
213     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
214         --output ${DIR[DTR,FUNC,HC]}/honeycomb_functional_results.rst \
215         --formatting rst --start 5 --level 2
216
217     # NSHSFC FUNC
218     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip -d ${DIR[WORKING]}/
219     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
220         --output ${DIR[DTR,FUNC,NSHSFC]}/nshsfc_functional_results.rst \
221         --formatting rst --start 5 --level 2
222 fi
223
224 # Generate tables for performance improvements
225 if [[ ${CFG[DEBUG]} -eq 0 ]] ;
226 then
227     python run_improvments_tables.py \
228         --input ${DIR[DTR,PERF,VPP,IMPRV]} \
229         --output ${DIR[DTR,PERF,VPP,IMPRV]}
230 fi
231
232 # Delete temporary json files
233 find ${DIR[RST]} -name "*.json" -type f -delete
234
235 # Plot packets per second
236
237 # VPP L2 sel1
238
239 python run_plot.py --input ${DIR[PLOT,VPP]} \
240     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc \
241     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
242     --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"))]'
243
244 python run_plot.py --input ${DIR[PLOT,VPP]} \
245     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-ndrdisc \
246     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
247     --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"))]'
248
249 python run_plot.py --input ${DIR[PLOT,VPP]} \
250     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-pdrdisc \
251     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
252     --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"))]'
253 python run_plot.py --input ${DIR[PLOT,VPP]} \
254     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-pdrdisc \
255     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
256     --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"))]'
257
258 # VPP L2 sel2
259
260 python run_plot.py --input ${DIR[PLOT,VPP]} \
261     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-ndrdisc \
262     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
263     --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
264 python run_plot.py --input ${DIR[PLOT,VPP]} \
265     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-ndrdisc \
266     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
267     --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
268
269 python run_plot.py --input ${DIR[PLOT,VPP]} \
270     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-pdrdisc \
271     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
272     --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
273 python run_plot.py --input ${DIR[PLOT,VPP]} \
274     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-pdrdisc \
275     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
276     --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
277
278 # VPP IP4
279
280 python run_plot.py --input ${DIR[PLOT,VPP]} \
281     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc \
282     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
283     --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"))]'
284 python run_plot.py --input ${DIR[PLOT,VPP]} \
285     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc \
286     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
287     --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"))]'
288
289 python run_plot.py --input ${DIR[PLOT,VPP]} \
290     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-pdrdisc \
291     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
292     --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"))]'
293 python run_plot.py --input ${DIR[PLOT,VPP]} \
294     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-pdrdisc \
295     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
296     --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"))]'
297
298 # VPP IP6
299
300 python run_plot.py --input ${DIR[PLOT,VPP]} \
301     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc \
302     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
303     --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"))]'
304 python run_plot.py --input ${DIR[PLOT,VPP]} \
305     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc \
306     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
307     --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"))]'
308
309 python run_plot.py --input ${DIR[PLOT,VPP]} \
310     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-pdrdisc \
311     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
312     --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"))]'
313 python run_plot.py --input ${DIR[PLOT,VPP]} \
314     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-pdrdisc \
315     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
316     --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"))]'
317
318 # VPP IP4_overlay
319
320 python run_plot.py --input ${DIR[PLOT,VPP]} \
321     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc \
322     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
323     --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"))]'
324 python run_plot.py --input ${DIR[PLOT,VPP]} \
325     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc \
326     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
327     --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"))]'
328
329 python run_plot.py --input ${DIR[PLOT,VPP]} \
330     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-pdrdisc \
331     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
332     --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"))]'
333 python run_plot.py --input ${DIR[PLOT,VPP]} \
334     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-pdrdisc \
335     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
336     --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"))]'
337
338 # VPP IP6_overlay
339
340 python run_plot.py --input ${DIR[PLOT,VPP]} \
341     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc \
342     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
343     --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"))]'
344 python run_plot.py --input ${DIR[PLOT,VPP]} \
345     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc \
346     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
347     --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"))]'
348
349 python run_plot.py --input ${DIR[PLOT,VPP]} \
350     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-pdrdisc \
351     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
352     --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"))]'
353 python run_plot.py --input ${DIR[PLOT,VPP]} \
354     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-pdrdisc \
355     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
356     --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"))]'
357
358 # VPP VM VHOST
359
360 python run_plot.py --input ${DIR[PLOT,VPP]} \
361     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc \
362     --title "64B-1t1c-.*vhost.*-ndrdisc" \
363     --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"))]'
364 python run_plot.py --input ${DIR[PLOT,VPP]} \
365     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc \
366     --title "64B-2t2c-.*vhost.*-ndrdisc" \
367     --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"))]'
368
369 python run_plot.py --input ${DIR[PLOT,VPP]} \
370     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-pdrdisc \
371     --title "64B-1t1c-.*vhost.*-pdrdisc" \
372     --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"))]'
373 python run_plot.py --input ${DIR[PLOT,VPP]} \
374     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-pdrdisc \
375     --title "64B-2t2c-.*vhost.*-pdrdisc" \
376     --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"))]'
377
378 # VPP VM VHOST SELECTION
379
380 python run_plot.py --input ${DIR[PLOT,VPP]} \
381     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc \
382     --title "64B-1t1c-.*vhost.*-ndrdisc" \
383     --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"))]'
384 python run_plot.py --input ${DIR[PLOT,VPP]} \
385     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc \
386     --title "64B-2t2c-.*vhost.*-ndrdisc" \
387     --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"))]'
388
389 python run_plot.py --input ${DIR[PLOT,VPP]} \
390     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-pdrdisc \
391     --title "64B-1t1c-.*vhost.*-pdrdisc" \
392     --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"))]'
393 python run_plot.py --input ${DIR[PLOT,VPP]} \
394     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-pdrdisc \
395     --title "64B-2t2c-.*vhost.*-pdrdisc" \
396     --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"))]'
397
398 # VPP CRYPTO
399
400 python run_plot.py --input ${DIR[PLOT,VPP]} \
401     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc \
402     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
403     --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"))]'
404 python run_plot.py --input ${DIR[PLOT,VPP]} \
405     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc \
406     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
407     --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"))]'
408
409 python run_plot.py --input ${DIR[PLOT,VPP]} \
410     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-pdrdisc \
411     --title "64B-1t1c-.*ipsec.*-pdrdisc" \
412     --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"))]'
413 python run_plot.py --input ${DIR[PLOT,VPP]} \
414     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-pdrdisc \
415     --title "64B-2t2c-.*ipsec.*-pdrdisc" \
416     --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"))]'
417
418 # DPDK
419
420 python run_plot.py --input ${DIR[PLOT,DPDK]} \
421     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc \
422     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
423     --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"))]'
424 python run_plot.py --input ${DIR[PLOT,DPDK]} \
425     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc \
426     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
427     --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"))]'
428 python run_plot.py --input ${DIR[PLOT,DPDK]} \
429     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc \
430     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
431     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
432     --lower 2000000 --upper 12000000
433 python run_plot.py --input ${DIR[PLOT,DPDK]} \
434     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc \
435     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
436     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
437     --lower 2000000 --upper 12000000
438
439 python run_plot.py --input ${DIR[PLOT,DPDK]} \
440     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-pdrdisc \
441     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
442     --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"))]'
443 python run_plot.py --input ${DIR[PLOT,DPDK]} \
444     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-pdrdisc \
445     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
446     --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"))]'
447 python run_plot.py --input ${DIR[PLOT,DPDK]} \
448     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-pdrdisc \
449     --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
450     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
451     --lower 20000000 --upper 30000000
452 python run_plot.py --input ${DIR[PLOT,DPDK]} \
453     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-pdrdisc \
454     --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
455     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
456     --lower 20000000 --upper 30000000
457
458 # Plot latency
459
460 # VPP L2 sel1
461
462 python run_plot.py --input ${DIR[PLOT,VPP]} \
463     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel1-ndrdisc-lat50 \
464     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
465     --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
466 python run_plot.py --input ${DIR[PLOT,VPP]} \
467     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel1-ndrdisc-lat50 \
468     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
469     --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
470
471 # VPP L2 sel2
472
473 python run_plot.py --input ${DIR[PLOT,VPP]} \
474     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-sel2-ndrdisc-lat50 \
475     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
476     --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
477 python run_plot.py --input ${DIR[PLOT,VPP]} \
478     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-sel2-ndrdisc-lat50 \
479     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
480     --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
481
482 # VPP IP4
483
484 python run_plot.py --input ${DIR[PLOT,VPP]} \
485     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
486     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
487     --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
488 python run_plot.py --input ${DIR[PLOT,VPP]} \
489     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
490     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
491     --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
492
493 # VPP IP6
494
495 python run_plot.py --input ${DIR[PLOT,VPP]} \
496     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
497     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
498     --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
499 python run_plot.py --input ${DIR[PLOT,VPP]} \
500     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
501     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
502     --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
503
504 # VPP IP4_overlay
505
506 python run_plot.py --input ${DIR[PLOT,VPP]} \
507     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc-lat50 \
508     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
509     --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
510 python run_plot.py --input ${DIR[PLOT,VPP]} \
511     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc-lat50 \
512     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
513     --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
514
515 # VPP IP6_overlay
516
517 python run_plot.py --input ${DIR[PLOT,VPP]} \
518     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc-lat50 \
519     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
520     --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
521 python run_plot.py --input ${DIR[PLOT,VPP]} \
522     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc-lat50 \
523     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
524     --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
525
526 # VPP VM VHOST
527
528 python run_plot.py --input ${DIR[PLOT,VPP]} \
529     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc-lat50 \
530     --title "64B-1t1c-.*vhost.*-ndrdisc" \
531     --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
532 python run_plot.py --input ${DIR[PLOT,VPP]} \
533     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc-lat50 \
534     --title "64B-2t2c-.*vhost.*-ndrdisc" \
535     --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
536
537 # VPP VM VHOST selection
538
539 python run_plot.py --input ${DIR[PLOT,VPP]} \
540     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc-lat50 \
541     --title "64B-1t1c-.*vhost.*-ndrdisc" \
542     --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
543 python run_plot.py --input ${DIR[PLOT,VPP]} \
544     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc-lat50 \
545     --title "64B-2t2c-.*vhost.*-ndrdisc" \
546     --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
547
548 # VPP CRYPTO
549
550 python run_plot.py --input ${DIR[PLOT,VPP]} \
551     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc-lat50 \
552     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
553     --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
554 python run_plot.py --input ${DIR[PLOT,VPP]} \
555     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc-lat50 \
556     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
557     --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
558
559 # DPDK
560
561 python run_plot.py --input ${DIR[PLOT,DPDK]} \
562     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc-lat50 \
563     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
564     --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
565 python run_plot.py --input ${DIR[PLOT,DPDK]} \
566     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc-lat50 \
567     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
568     --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
569 python run_plot.py --input ${DIR[PLOT,DPDK]} \
570     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc-lat50 \
571     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
572     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
573 python run_plot.py --input ${DIR[PLOT,DPDK]} \
574     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc-lat50 \
575     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
576     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
577
578 # HTML BUILDER
579 if [[ ${CFG[BLD_HTML]} -eq 1 ]] ;
580 then
581     sphinx-build -v -c . -a -b html -E \
582         -D release=$1 -D version="$1 report - $DATE" \
583         ${DIR[RST]} ${DIR[BUILD,HTML]}/
584
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;
591     }
592
593     .wy-table-responsive {
594         font-size: small;
595         margin-bottom: 24px;
596         max-width: 100%;
597         overflow: visible !important;
598     }
599 }
600 _EOF
601 fi
602
603 # LATEX BUILDER
604 if [[ ${CFG[BLD_LATEX]} -eq 1 ]] ;
605 then
606     # Convert PyPLOT graphs in HTML format to PDF.
607     for f in ${DIR[STATIC,VPP]}/*; do
608         xvfb-run -a wkhtmltopdf ${f} ${f%.html}.pdf
609     done
610     for f in ${DIR[STATIC,DPDK]}/*; do
611         xvfb-run -a wkhtmltopdf ${f} ${f%.html}.pdf
612     done
613
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
622     cd ${SCRIPT_DIR}
623 fi
624
625 # Create archive
626 echo Creating csit.report.tar.gz ...
627 tar -czvf ./csit.report.tar.gz ${DIR[BUILD,HTML]}