5 # Build locally without jenkins integrations
12 STATIC_DIR="${BUILD_DIR}/_static"
13 STATIC_DIR_VPP="${STATIC_DIR}/vpp"
14 STATIC_DIR_DPDK="${STATIC_DIR}/dpdk"
15 STATIC_DIR_ARCH="${STATIC_DIR}/archive"
16 CSS_PATCH_FILE="${STATIC_DIR}/theme_overrides.css"
18 SOURCE_DIR='../../../docs/report'
20 PLOT_VPP_SOURCE_DIR=${WORKING_DIR}/vpp_plot
21 PLOT_DPDK_SOURCE_DIR=${WORKING_DIR}/dpdk_plot
23 DTR_SOURCE_DIR=${SOURCE_DIR}/detailed_test_results
24 DTR_DPDK_SOURCE_DIR=${DTR_SOURCE_DIR}/dpdk_performance_results
25 DTR_VPP_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
26 DTR_VPP_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
27 DTR_HC_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_performance_results
28 DTR_HC_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
29 DTR_NSHSFC_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/nshsfc_functional_results
31 DTC_SOURCE_DIR=${SOURCE_DIR}/test_configuration
32 DTC_VPP_PERF_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_performance_configuration
33 DTC_VPP_FUNC_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_functional_configuration
35 DTO_SOURCE_DIR=${SOURCE_DIR}/test_operational_data
36 DTO_VPP_PERF_SOURCE_OPER_DIR=${DTO_SOURCE_DIR}/vpp_performance_operational_data
39 CSIT_JEN_URL='https://jenkins.fd.io/view/csit/job'
40 HC_JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
42 sudo apt-get -y update
43 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
46 # Clean-up when finished
47 trap 'rm -rf ${WORKING_DIR}; exit' EXIT
48 trap 'rm -rf ${WORKING_DIR}; exit' ERR
50 # Remove the old build
51 rm -rf ${BUILD_DIR} || true
52 rm -rf ${WORKING_DIR} || true
54 # Create working directories
57 # Create virtual environment
58 virtualenv ${WORKING_DIR}/env
59 . ${WORKING_DIR}/env/bin/activate
62 pip install -r requirements.txt
64 export PYTHONPATH=`pwd`
66 # Download raw outputs for plots
67 echo Downloading raw outputs for plots ...
68 mkdir -p ${STATIC_DIR_VPP}
69 mkdir -p ${STATIC_DIR_DPDK}
70 mkdir -p ${STATIC_DIR_ARCH}
71 mkdir -p ${PLOT_VPP_SOURCE_DIR}
72 mkdir -p ${PLOT_DPDK_SOURCE_DIR}
74 ### VPP PERFORMANCE SOURCE DATA
76 JEN_JOB='csit-vpp-perf-1707-all'
80 for i in "${JEN_BUILD[@]}"; do
81 curl --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
82 --output ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
83 curl --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.json \
84 --output ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.json
85 if [[ ${DEBUG} -eq 0 ]] ;
87 curl --fail --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
88 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
92 if [[ ${DEBUG} -eq 0 ]] ;
94 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip -d ${WORKING_DIR}/
95 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
96 --output ${DTR_VPP_PERF_SOURCE_DIR}/vpp_performance_results.rst \
97 --formatting rst --start 4 --level 2
98 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
99 --output ${DTC_VPP_PERF_SOURCE_DIR}/vpp_performance_configuration.rst \
100 --data "VAT_H" -f "rst" --start 4 --level 2
101 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
102 --output ${DTO_VPP_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data.rst \
103 --data "SH_RUN" -f "rst" --start 4 --level 2
105 # cp ./${JEN_JOB}-${JEN_FBUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip
108 ### DPDK PERFORMANCE SOURCE DATA
110 JEN_JOB='csit-dpdk-perf-1707-all'
111 JEN_BUILD=(1 2 3 4 5 6 7 8 9 10)
113 for i in "${JEN_BUILD[@]}"; do
114 curl --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
115 --output ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.xml
116 curl --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.json \
117 --output ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.json
118 if [[ ${DEBUG} -eq 0 ]] ;
120 curl --fail --silent ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
121 --output ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
125 if [[ ${DEBUG} -eq 0 ]] ;
127 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
128 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
129 --output ${DTR_DPDK_SOURCE_DIR}/dpdk_performance_results.rst \
130 --formatting rst --start 4 --level 2
132 # cp ./${JEN_JOB}-${JEN_FBUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip
135 ### FUNCTIONAL SOURCE DATA
137 JEN_JOB='csit-vpp-functional-1707-ubuntu1604-virl'
138 JEN_BUILD='lastSuccessfulBuild'
140 if [[ ${DEBUG} -eq 0 ]] ;
142 curl --fail --silent ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
143 --output ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
144 unzip -o ${static_dir_arch}/${jen_job}-${jen_build}.zip -d ${working_dir}/
145 python run_robot_data.py -i ${working_dir}/robot-plugin/output.xml \
146 --output ${dtr_vpp_func_source_dir}/vpp_functional_results.rst \
147 --formatting rst --start 5 --level 2
148 python run_robot_teardown_data.py -i ${working_dir}/robot-plugin/output.xml \
149 --output ${dtc_vpp_func_source_dir}/vpp_functional_configuration.rst \
150 --data "vat_h" -f "rst" --start 5 --level 2
152 # cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
155 ### HONEYCOMB SOURCE DATA
157 JEN_JOB='hc2vpp-csit-integration-1707-ubuntu1604'
158 JEN_BUILD='lastSuccessfulBuild'
160 if [[ ${DEBUG} -eq 0 ]] ;
162 curl --fail --silent ${HC_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
163 --output ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
164 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
165 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
166 --output ${DTR_HC_FUNC_SOURCE_DIR}/honeycomb_functional_results.rst \
167 --formatting rst --start 5 --level 2
169 # cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
172 ### NSH_SFC SOURCE DATA
174 JEN_JOB='csit-nsh_sfc-verify-func-1707-ubuntu1604-virl'
175 JEN_BUILD='lastSuccessfulBuild'
177 if [[ ${DEBUG} -eq 0 ]] ;
179 curl --fail --silent ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
180 --output ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
181 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
182 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
183 --output ${DTR_NSHSFC_FUNC_SOURCE_DIR}/nshsfc_functional_results.rst \
184 --formatting rst --start 5 --level 2
186 # cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
189 # Delete temporary json files
190 find ${SOURCE_DIR} -name "*.json" -type f -delete
192 # Generate the documentation
194 DATE=$(date -u '+%d-%b-%Y')
196 sphinx-build -v -c . -a -b html -E \
197 -D release=$1 -D version="$1 report - $DATE" \
198 ${SOURCE_DIR} ${BUILD_DIR}/
200 # Patch the CSS for tables layout
201 cat - > ${CSS_PATCH_FILE} <<"_EOF"
202 /* override table width restrictions */
203 @media screen and (min-width: 767px) {
204 .wy-table-responsive table td, .wy-table-responsive table th {
205 white-space: normal !important;
208 .wy-table-responsive {
212 overflow: visible !important;
217 # Plot packets per second
221 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
222 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
223 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
224 --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"))]'
225 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
226 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
227 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
228 --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"))]'
230 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
231 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
232 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
233 --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"))]'
234 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
235 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
236 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
237 --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"))]'
241 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
242 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
243 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
244 --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"))]'
245 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
246 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
247 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
248 --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"))]'
250 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
251 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
252 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
253 --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"))]'
254 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
255 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
256 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
257 --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"))]'
261 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
262 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
263 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
264 --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"))]'
265 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
266 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
267 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
268 --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"))]'
270 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
271 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
272 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
273 --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"))]'
274 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
275 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
276 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
277 --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"))]'
281 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
282 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
283 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
284 --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"))]'
285 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
286 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
287 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
288 --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"))]'
290 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
291 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
292 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
293 --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"))]'
294 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
295 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
296 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
297 --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"))]'
301 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
302 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
303 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
304 --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"))]'
305 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
306 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
307 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
308 --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"))]'
310 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
311 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
312 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
313 --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"))]'
314 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
315 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
316 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
317 --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"))]'
321 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
322 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel1-ndrdisc \
323 --title "64B-1t1c-.*vhost.*-ndrdisc" \
324 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]'
325 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
326 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel1-ndrdisc \
327 --title "64B-2t2c-.*vhost.*-ndrdisc" \
328 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]'
330 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
331 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel1-pdrdisc \
332 --title "64B-1t1c-.*vhost.*-pdrdisc" \
333 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]'
334 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
335 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel1-pdrdisc \
336 --title "64B-2t2c-.*vhost.*-pdrdisc" \
337 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]'
339 # VPP VM VHOST SELECTION
341 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
342 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel2-ndrdisc \
343 --title "64B-1t1c-.*vhost.*-ndrdisc" \
344 --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"))]'
345 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
346 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel2-ndrdisc \
347 --title "64B-2t2c-.*vhost.*-ndrdisc" \
348 --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"))]'
350 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
351 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel2-pdrdisc \
352 --title "64B-1t1c-.*vhost.*-pdrdisc" \
353 --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"))]'
354 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
355 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel2-pdrdisc \
356 --title "64B-2t2c-.*vhost.*-pdrdisc" \
357 --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"))]'
361 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
362 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
363 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
364 --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"))]'
365 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
366 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
367 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
368 --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"))]'
370 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
371 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
372 --title "64B-1t1c-.*ipsec.*-pdrdisc" \
373 --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"))]'
374 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
375 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
376 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
377 --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"))]'
381 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
382 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc \
383 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
384 --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"))]'
385 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
386 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc \
387 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
388 --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"))]'
389 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
390 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc \
391 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
392 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
393 --lower 2000000 --upper 12000000
394 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
395 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc \
396 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
397 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
398 --lower 2000000 --upper 12000000
400 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
401 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-pdrdisc \
402 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
403 --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"))]'
404 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
405 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-pdrdisc \
406 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
407 --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"))]'
408 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
409 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-pdrdisc \
410 --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
411 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
412 --lower 20000000 --upper 30000000
413 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
414 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-pdrdisc \
415 --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
416 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
417 --lower 20000000 --upper 30000000
423 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
424 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
425 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
426 --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
427 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
428 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
429 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
430 --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
434 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
435 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
436 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
437 --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
438 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
439 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
440 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
441 --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
445 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
446 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
447 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
448 --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
449 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
450 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
451 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
452 --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
456 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
457 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
458 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
459 --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"))]' --latency lat_50
460 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
461 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
462 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
463 --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"))]' --latency lat_50
467 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
468 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
469 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
470 --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
471 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
472 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
473 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
474 --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
476 # VPP VM VHOST latency
478 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
479 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel1-ndrdisc-lat50 \
480 --title "64B-1t1c-.*vhost.*-ndrdisc" \
481 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]' --latency lat_50
482 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
483 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel1-ndrdisc-lat50 \
484 --title "64B-2t2c-.*vhost.*-ndrdisc" \
485 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST") and (contains(@tags,"VXLAN") or contains(@tags,"IP4FWD") or contains(@tags,"DOT1Q"))]' --latency lat_50
487 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
488 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-sel2-ndrdisc-lat50 \
489 --title "64B-1t1c-.*vhost.*-ndrdisc" \
490 --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
491 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
492 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-sel2-ndrdisc-lat50 \
493 --title "64B-2t2c-.*vhost.*-ndrdisc" \
494 --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
498 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
499 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
500 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
501 --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
502 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
503 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
504 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
505 --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
509 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
510 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc-lat50 \
511 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
512 --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
513 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
514 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc-lat50 \
515 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
516 --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
517 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
518 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc-lat50 \
519 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
520 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
521 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
522 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc-lat50 \
523 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
524 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
527 echo Creating csit.report.tar.gz ...
528 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}