bf6d5844dd05e3e64aaeb9c19fc9e0c72d275747
[csit.git] / resources / tools / report_gen / run_report.sh
1 #!/bin/bash
2
3 set -x
4
5 # Process parameters
6 # Debugging
7 DEBUG=0
8 # Latex Builder
9 LATEX=0
10
11 for i in "$@"; do
12 case $i in
13     --debug)
14         DEBUG=1
15     ;;
16     --latex)
17         LATEX=1
18     ;;
19     *)
20         # unknown option
21     ;;
22 esac
23 done
24
25 # Script directory
26 SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
27
28 # Get actual date
29 DATE=$(date -u '+%d-%b-%Y')
30
31 # Load configuration
32 source ${SCRIPT_DIR}/run_report.cfg
33
34 # Install system dependencies
35 sudo apt-get -y update
36 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
37     zlib1g-dev unzip
38 if [[ ${LATEX} -eq 1 ]] ;
39 then
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
43 fi
44
45 # Clean-up when finished
46 trap 'rm -rf ${DIR[WORKING]}; exit' EXIT
47 trap 'rm -rf ${DIR[WORKING]}; exit' ERR
48
49 # Remove the old build
50 rm -rf ${DIR[BUILD]} || true
51 rm -rf ${DIR[BUILD,LATEX]} || true
52 rm -rf ${DIR[WORKING]} || true
53
54 # Create working directories
55 mkdir ${DIR[WORKING]}
56
57 # Create virtual environment
58 virtualenv ${DIR[WORKING]}/env
59 . ${DIR[WORKING]}/env/bin/activate
60
61 # Install python dependencies:
62 pip install -r requirements.txt
63
64 export PYTHONPATH=`pwd`
65
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]}
74
75 ### VPP PERFORMANCE SOURCE DATA
76
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
79 #fi
80
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 ]] ;
86     then
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
89     fi
90 done
91 if [[ ${DEBUG} -eq 0 ]] ;
92 then
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
95 fi
96 # Archive trending
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
102 done
103
104 ### DPDK PERFORMANCE SOURCE DATA
105
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
108 #fi
109
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 ]] ;
115     then
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
118     fi
119 done
120 cp ${DIR[PLOT,DPDK]}/* ${DIR[STATIC,TREND]}
121
122 ### FUNCTIONAL SOURCE DATA
123
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
126 #fi
127
128 if [[ ${DEBUG} -eq 0 ]] ;
129 then
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
132 fi
133
134 ### HONEYCOMB FUNCTIONAL SOURCE DATA
135
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
138 #fi
139
140 if [[ ${DEBUG} -eq 0 ]] ;
141 then
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
144 fi
145
146 ### HONEYCOMB PERFORMANCE SOURCE DATA
147
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
150 #fi
151
152 if [[ ${DEBUG} -eq 0 ]] ;
153 then
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
158 done
159 fi
160
161 ### NSH_SFC SOURCE DATA
162
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
165 #fi
166
167 if [[ ${DEBUG} -eq 0 ]] ;
168 then
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
171 fi
172
173 # Data post processing
174
175 if [[ ${DEBUG} -eq 0 ]] ;
176 then
177     # VPP PERF
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
188
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 \
195             --vdevice ${i}
196     done
197
198     # DPDK PERF
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
203
204     # VPP FUNC
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
212
213     # HC FUNC
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
218
219     # NSHSFC FUNC
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
224 fi
225
226 # Generate tables for performance improvements
227 if [[ ${DEBUG} -eq 0 ]] ;
228 then
229     python run_improvments_tables.py \
230         --input ${DIR[DTR,PERF,VPP,IMPRV]} \
231         --output ${DIR[DTR,PERF,VPP,IMPRV]}
232 fi
233
234 # Delete temporary json files
235 find ${DIR[RST]} -name "*.json" -type f -delete
236
237 # Plot packets per second
238
239 # VPP L2 sel1
240
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"))]'
245
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"))]'
250
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"))]'
259
260 # VPP L2 sel2
261
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
270
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
279
280 # VPP IP4
281
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"))]'
290
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"))]'
299
300 # VPP IP6
301
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"))]'
310
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"))]'
319
320 # VPP IP4_overlay
321
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"))]'
330
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"))]'
339
340 # VPP IP6_overlay
341
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"))]'
350
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"))]'
359
360 # VPP VM VHOST
361
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"))]'
370
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"))]'
379
380 # VPP VM VHOST SELECTION
381
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"))]'
390
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"))]'
399
400 # VPP CRYPTO
401
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"))]'
410
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"))]'
419
420 # DPDK
421
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
440
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
459
460 # Plot latency
461
462 # VPP L2 sel1
463
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
472
473 # VPP L2 sel2
474
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
483
484 # VPP IP4
485
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
494
495 # VPP IP6
496
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
505
506 # VPP IP4_overlay
507
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
516
517 # VPP IP6_overlay
518
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
527
528 # VPP VM VHOST
529
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
538
539 # VPP VM VHOST selection
540
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
549
550 # VPP CRYPTO
551
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
560
561 # DPDK
562
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
579
580 # HTML BUILDER
581 sphinx-build -v -c . -a -b html -E \
582     -D release=$1 -D version="$1 report - $DATE" \
583     ${DIR[RST]} ${DIR[BUILD]}/
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
602 # LATEX BUILDER
603 if [[ ${LATEX} -eq 1 ]] ;
604 then
605     # Convert PyPLOT graphs in HTML format to PDF.
606     for f in ${DIR[STATIC,VPP]}/*; do
607         wkhtmltopdf ${f} ${f%.html}.pdf
608     done
609     for f in ${DIR[STATIC,DPDK]}/*; do
610         wkhtmltopdf ${f} ${f%.html}.pdf
611     done
612     rsvg-convert -z 10 -f pdf -o fdio.pdf fdio.svg
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     rm -f fdio.pdf
624 fi
625
626 # Create archive
627 echo Creating csit.report.tar.gz ...
628 tar -czvf ./csit.report.tar.gz ${DIR[BUILD]}