e1e1de0dc71d2d33dd929664349c2e32d6a83e3f
[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     # DPDK PERF
147     unzip -o ${DIR[STATIC,ARCH]}/${JOB[PERF,DPDK]}-${JOB[PERF,DPDK,FBLD]}.zip -d ${DIR[WORKING]}/
148     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
149         --output ${DIR[DTR,PERF,DPDK]}/dpdk_performance_results.rst \
150         --formatting rst --start 4 --level 2
151
152     # VPP FUNC
153     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,VPP]}-${JOB[FUNC,VPP,BLD]}.zip -d ${DIR[WORKING]}/
154     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
155         --output ${DIR[DTR,FUNC,VPP}/vpp_functional_results.rst \
156         --formatting rst --start 5 --level 2
157     python run_robot_teardown_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
158         --output ${DIR[DTC,FUNC,VPP}/vpp_functional_configuration.rst \
159         --data "VAT_H" --formatting rst --start 5 --level 2
160
161     # HC FUNC
162     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,HC]}-${JOB[FUNC,HC,BLD]}.zip -d ${DIR[WORKING]}/
163     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
164         --output ${DIR[DTR,FUNC,HC]}/honeycomb_functional_results.rst \
165         --formatting rst --start 5 --level 2
166
167     # NSHSFC FUNC
168     unzip -o ${DIR[STATIC,ARCH]}/${JOB[FUNC,NSH]}-${JOB[FUNC,NSH,BLD]}.zip -d ${DIR[WORKING]}/
169     python run_robot_data.py -i ${DIR[WORKING]}/robot-plugin/output.xml \
170         --output ${DIR[DTR,FUNC,NSHSFC]}/nshsfc_functional_results.rst \
171         --formatting rst --start 5 --level 2
172 fi
173
174 # Delete temporary json files
175 find ${DIR[RST]} -name "*.json" -type f -delete
176
177 # Generate the documentation
178 DATE=$(date -u '+%d-%b-%Y')
179 sphinx-build -v -c . -a -b html -E \
180     -D release=$1 -D version="$1 report - $DATE" \
181     ${DIR[RST]} ${DIR[BUILD]}/
182
183 # Patch the CSS for tables layout
184 cat - > ${DIR[CSS_PATCH_FILE]} <<"_EOF"
185 /* override table width restrictions */
186 @media screen and (min-width: 767px) {
187     .wy-table-responsive table td, .wy-table-responsive table th {
188         white-space: normal !important;
189     }
190
191     .wy-table-responsive {
192         font-size: small;
193         margin-bottom: 24px;
194         max-width: 100%;
195         overflow: visible !important;
196     }
197 }
198 _EOF
199
200 # Plot packets per second
201
202 # VPP L2
203
204 python run_plot.py --input ${DIR[PLOT,VPP]} \
205     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-ndrdisc \
206     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
207     --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"))]'
208 python run_plot.py --input ${DIR[PLOT,VPP]} \
209     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-ndrdisc \
210     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
211     --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"))]'
212
213 python run_plot.py --input ${DIR[PLOT,VPP]} \
214     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-pdrdisc \
215     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
216     --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"))]'
217 python run_plot.py --input ${DIR[PLOT,VPP]} \
218     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-pdrdisc \
219     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
220     --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"))]'
221
222 # VPP IP4
223
224 python run_plot.py --input ${DIR[PLOT,VPP]} \
225     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc \
226     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
227     --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"))]'
228 python run_plot.py --input ${DIR[PLOT,VPP]} \
229     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc \
230     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
231     --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"))]'
232
233 python run_plot.py --input ${DIR[PLOT,VPP]} \
234     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-pdrdisc \
235     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
236     --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"))]'
237 python run_plot.py --input ${DIR[PLOT,VPP]} \
238     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-pdrdisc \
239     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
240     --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"))]'
241
242 # VPP IP6
243
244 python run_plot.py --input ${DIR[PLOT,VPP]} \
245     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc \
246     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
247     --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"))]'
248 python run_plot.py --input ${DIR[PLOT,VPP]} \
249     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc \
250     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
251     --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"))]'
252
253 python run_plot.py --input ${DIR[PLOT,VPP]} \
254     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-pdrdisc \
255     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
256     --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"))]'
257 python run_plot.py --input ${DIR[PLOT,VPP]} \
258     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-pdrdisc \
259     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
260     --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"))]'
261
262 # VPP IP4_overlay
263
264 python run_plot.py --input ${DIR[PLOT,VPP]} \
265     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc \
266     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
267     --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"))]'
268 python run_plot.py --input ${DIR[PLOT,VPP]} \
269     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc \
270     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
271     --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"))]'
272
273 python run_plot.py --input ${DIR[PLOT,VPP]} \
274     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-pdrdisc \
275     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
276     --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"))]'
277 python run_plot.py --input ${DIR[PLOT,VPP]} \
278     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-pdrdisc \
279     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
280     --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"))]'
281
282 # VPP IP6_overlay
283
284 python run_plot.py --input ${DIR[PLOT,VPP]} \
285     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc \
286     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
287     --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"))]'
288 python run_plot.py --input ${DIR[PLOT,VPP]} \
289     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc \
290     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
291     --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"))]'
292
293 python run_plot.py --input ${DIR[PLOT,VPP]} \
294     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-pdrdisc \
295     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
296     --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"))]'
297 python run_plot.py --input ${DIR[PLOT,VPP]} \
298     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-pdrdisc \
299     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
300     --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"))]'
301
302 # VPP VM VHOST
303
304 python run_plot.py --input ${DIR[PLOT,VPP]} \
305     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc \
306     --title "64B-1t1c-.*vhost.*-ndrdisc" \
307     --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"))]'
308 python run_plot.py --input ${DIR[PLOT,VPP]} \
309     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc \
310     --title "64B-2t2c-.*vhost.*-ndrdisc" \
311     --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"))]'
312
313 python run_plot.py --input ${DIR[PLOT,VPP]} \
314     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-pdrdisc \
315     --title "64B-1t1c-.*vhost.*-pdrdisc" \
316     --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"))]'
317 python run_plot.py --input ${DIR[PLOT,VPP]} \
318     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-pdrdisc \
319     --title "64B-2t2c-.*vhost.*-pdrdisc" \
320     --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"))]'
321
322 # VPP VM VHOST SELECTION
323
324 python run_plot.py --input ${DIR[PLOT,VPP]} \
325     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc \
326     --title "64B-1t1c-.*vhost.*-ndrdisc" \
327     --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"))]'
328 python run_plot.py --input ${DIR[PLOT,VPP]} \
329     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc \
330     --title "64B-2t2c-.*vhost.*-ndrdisc" \
331     --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"))]'
332
333 python run_plot.py --input ${DIR[PLOT,VPP]} \
334     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-pdrdisc \
335     --title "64B-1t1c-.*vhost.*-pdrdisc" \
336     --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"))]'
337 python run_plot.py --input ${DIR[PLOT,VPP]} \
338     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-pdrdisc \
339     --title "64B-2t2c-.*vhost.*-pdrdisc" \
340     --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"))]'
341
342 # VPP CRYPTO
343
344 python run_plot.py --input ${DIR[PLOT,VPP]} \
345     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc \
346     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
347     --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"))]'
348 python run_plot.py --input ${DIR[PLOT,VPP]} \
349     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc \
350     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
351     --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"))]'
352
353 python run_plot.py --input ${DIR[PLOT,VPP]} \
354     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-pdrdisc \
355     --title "64B-1t1c-.*ipsec.*-pdrdisc" \
356     --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"))]'
357 python run_plot.py --input ${DIR[PLOT,VPP]} \
358     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-pdrdisc \
359     --title "64B-2t2c-.*ipsec.*-pdrdisc" \
360     --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"))]'
361
362 # DPDK
363
364 python run_plot.py --input ${DIR[PLOT,DPDK]} \
365     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc \
366     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
367     --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"))]'
368 python run_plot.py --input ${DIR[PLOT,DPDK]} \
369     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc \
370     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
371     --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"))]'
372 python run_plot.py --input ${DIR[PLOT,DPDK]} \
373     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc \
374     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
375     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
376     --lower 2000000 --upper 12000000
377 python run_plot.py --input ${DIR[PLOT,DPDK]} \
378     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc \
379     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
380     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
381     --lower 2000000 --upper 12000000
382
383 python run_plot.py --input ${DIR[PLOT,DPDK]} \
384     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-pdrdisc \
385     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
386     --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"))]'
387 python run_plot.py --input ${DIR[PLOT,DPDK]} \
388     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-pdrdisc \
389     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
390     --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"))]'
391 python run_plot.py --input ${DIR[PLOT,DPDK]} \
392     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-pdrdisc \
393     --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
394     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
395     --lower 20000000 --upper 30000000
396 python run_plot.py --input ${DIR[PLOT,DPDK]} \
397     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-pdrdisc \
398     --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
399     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
400     --lower 20000000 --upper 30000000
401
402 # Plot latency
403
404 # VPP L2
405
406 python run_plot.py --input ${DIR[PLOT,VPP]} \
407     --output ${DIR[STATIC,VPP]}/64B-1t1c-l2-ndrdisc-lat50 \
408     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
409     --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
410 python run_plot.py --input ${DIR[PLOT,VPP]} \
411     --output ${DIR[STATIC,VPP]}/64B-2t2c-l2-ndrdisc-lat50 \
412     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
413     --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
414
415 # VPP IP4
416
417 python run_plot.py --input ${DIR[PLOT,VPP]} \
418     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
419     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
420     --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
421 python run_plot.py --input ${DIR[PLOT,VPP]} \
422     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
423     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
424     --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
425
426 # VPP IP6
427
428 python run_plot.py --input ${DIR[PLOT,VPP]} \
429     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
430     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
431     --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
432 python run_plot.py --input ${DIR[PLOT,VPP]} \
433     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
434     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
435     --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
436
437 # VPP IP4_overlay
438
439 python run_plot.py --input ${DIR[PLOT,VPP]} \
440     --output ${DIR[STATIC,VPP]}/64B-1t1c-ethip4-ndrdisc-lat50 \
441     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
442     --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
443 python run_plot.py --input ${DIR[PLOT,VPP]} \
444     --output ${DIR[STATIC,VPP]}/64B-2t2c-ethip4-ndrdisc-lat50 \
445     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
446     --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
447
448 # VPP IP6_overlay
449
450 python run_plot.py --input ${DIR[PLOT,VPP]} \
451     --output ${DIR[STATIC,VPP]}/78B-1t1c-ethip6-ndrdisc-lat50 \
452     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
453     --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
454 python run_plot.py --input ${DIR[PLOT,VPP]} \
455     --output ${DIR[STATIC,VPP]}/78B-2t2c-ethip6-ndrdisc-lat50 \
456     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
457     --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
458
459 # VPP VM VHOST
460
461 python run_plot.py --input ${DIR[PLOT,VPP]} \
462     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel1-ndrdisc-lat50 \
463     --title "64B-1t1c-.*vhost.*-ndrdisc" \
464     --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
465 python run_plot.py --input ${DIR[PLOT,VPP]} \
466     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel1-ndrdisc-lat50 \
467     --title "64B-2t2c-.*vhost.*-ndrdisc" \
468     --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
469
470 # VPP VM VHOST selection
471
472 python run_plot.py --input ${DIR[PLOT,VPP]} \
473     --output ${DIR[STATIC,VPP]}/64B-1t1c-vhost-sel2-ndrdisc-lat50 \
474     --title "64B-1t1c-.*vhost.*-ndrdisc" \
475     --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
476 python run_plot.py --input ${DIR[PLOT,VPP]} \
477     --output ${DIR[STATIC,VPP]}/64B-2t2c-vhost-sel2-ndrdisc-lat50 \
478     --title "64B-2t2c-.*vhost.*-ndrdisc" \
479     --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
480
481 # VPP CRYPTO
482
483 python run_plot.py --input ${DIR[PLOT,VPP]} \
484     --output ${DIR[STATIC,VPP]}/64B-1t1c-ipsechw-ndrdisc-lat50 \
485     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
486     --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
487 python run_plot.py --input ${DIR[PLOT,VPP]} \
488     --output ${DIR[STATIC,VPP]}/64B-2t2c-ipsechw-ndrdisc-lat50 \
489     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
490     --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
491
492 # DPDK
493
494 python run_plot.py --input ${DIR[PLOT,DPDK]} \
495     --output ${DIR[STATIC,DPDK]}/64B-1t1c-l2-ndrdisc-lat50 \
496     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
497     --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
498 python run_plot.py --input ${DIR[PLOT,DPDK]} \
499     --output ${DIR[STATIC,DPDK]}/64B-2t2c-l2-ndrdisc-lat50 \
500     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
501     --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
502 python run_plot.py --input ${DIR[PLOT,DPDK]} \
503     --output ${DIR[STATIC,DPDK]}/64B-1t1c-ipv4-ndrdisc-lat50 \
504     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
505     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
506 python run_plot.py --input ${DIR[PLOT,DPDK]} \
507     --output ${DIR[STATIC,DPDK]}/64B-2t2c-ipv4-ndrdisc-lat50 \
508     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
509     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
510
511 # Create archive
512 echo Creating csit.report.tar.gz ...
513 tar -czvf ./csit.report.tar.gz ${DIR[BUILD]}