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