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_FILE_PERF='output_perf_data.xml'
77 JEN_JOB='csit-vpp-perf-master-all'
81 for i in "${JEN_BUILD[@]}"; do
82 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
83 -o ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
84 if [[ ${DEBUG} -eq 1 ]] ;
86 cp ./${JEN_JOB}-${JEN_FBUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip
88 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
89 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
93 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip -d ${WORKING_DIR}/
94 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
95 --output ${DTR_VPP_PERF_SOURCE_DIR}/vpp_performance_results.rst \
96 --formatting rst --start 4 --level 2
97 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
98 --output ${DTC_VPP_PERF_SOURCE_DIR}/vpp_performance_configuration.rst \
99 --data "VAT_H" -f "rst" --start 4 --level 2
100 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
101 -o ${DTO_VPP_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data.rst \
102 --data "SH_RUN" -f "rst" --start 4 --level 2
103 if [[ ${DEBUG} -eq 0 ]] ;
105 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
106 ${DTR_VPP_PERF_SOURCE_DIR}/index.rst
107 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
108 ${DTR_VPP_PERF_SOURCE_DIR}/index.rst
109 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
110 ${DTC_VPP_PERF_SOURCE_DIR}/index.rst
111 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
112 ${DTC_VPP_PERF_SOURCE_DIR}/index.rst
113 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
114 ${DTO_VPP_PERF_SOURCE_OPER_DIR}/index.rst
115 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
116 ${DTO_VPP_PERF_SOURCE_OPER_DIR}/index.rst
119 ### DPDK PERFORMANCE SOURCE DATA
121 JEN_JOB='csit-dpdk-perf-1707-all'
122 JEN_BUILD=(1 2 3 4 5 6 7 8 9 10)
124 for i in "${JEN_BUILD[@]}"; do
125 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
126 -o ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.xml
127 if [[ ${DEBUG} -eq 1 ]] ;
129 cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
131 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
132 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
134 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
135 ${DTR_DPDK_SOURCE_DIR}/index.rst
136 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
137 ${DTR_DPDK_SOURCE_DIR}/index.rst
141 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
142 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
143 --output ${DTR_DPDK_SOURCE_DIR}/dpdk_performance_results.rst \
144 --formatting rst --start 4 --level 2
146 ### FUNCTIONAL SOURCE DATA
148 JEN_JOB='csit-vpp-functional-1707-ubuntu1604-virl'
149 JEN_BUILD='lastSuccessfulBuild'
151 if [[ ${DEBUG} -eq 1 ]] ;
153 cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
155 curl -fs ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
156 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
158 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
159 ${DTR_VPP_FUNC_SOURCE_DIR}/index.rst
160 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
161 ${DTR_VPP_FUNC_SOURCE_DIR}/index.rst
162 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
163 ${DTC_VPP_FUNC_SOURCE_DIR}/index.rst
164 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
165 ${DTC_VPP_FUNC_SOURCE_DIR}/index.rst
168 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
169 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
170 --output ${DTR_VPP_FUNC_SOURCE_DIR}/vpp_functional_results.rst \
171 --formatting rst --start 5 --level 2
172 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
173 --output ${DTC_VPP_FUNC_SOURCE_DIR}/vpp_functional_configuration.rst \
174 --data "VAT_H" -f "rst" --start 5 --level 2
176 ### HONEYCOMB SOURCE DATA
178 JEN_JOB='hc2vpp-csit-integration-1707-ubuntu1604'
179 JEN_BUILD='lastSuccessfulBuild'
181 if [[ ${DEBUG} -eq 1 ]] ;
183 cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
185 curl -fs ${HC_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
186 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
188 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
189 ${DTR_HC_FUNC_SOURCE_DIR}/index.rst
190 sed -i -e "s@###LINK###@${HC_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
191 ${DTR_HC_FUNC_SOURCE_DIR}/index.rst
194 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
195 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
196 --output ${DTR_HC_FUNC_SOURCE_DIR}/honeycomb_functional_results.rst \
197 --formatting rst --start 5 --level 2
199 ### NSH_SFC SOURCE DATA
201 JEN_JOB='csit-nsh_sfc-verify-func-1707-ubuntu1604-virl'
202 JEN_BUILD='lastSuccessfulBuild'
204 if [[ ${DEBUG} -eq 1 ]] ;
206 cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
208 curl -fs ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
209 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
211 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
212 ${DTR_NSHSFC_FUNC_SOURCE_DIR}/index.rst
213 sed -i -e "s@###LINK###@${HC_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
214 ${DTR_NSHSFC_FUNC_SOURCE_DIR}/index.rst
217 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
218 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
219 --output ${DTR_NSHSFC_FUNC_SOURCE_DIR}/nshsfc_functional_results.rst \
220 --formatting rst --start 5 --level 2
224 # Delete temporary json files
225 find ${SOURCE_DIR} -name "*.json" -type f -delete
227 # Generate the documentation
229 DATE=$(date -u '+%d-%b-%Y')
231 sphinx-build -v -c . -a -b html -E \
232 -D release=$1 -D version="$1 report - $DATE" \
233 ${SOURCE_DIR} ${BUILD_DIR}/
235 # Patch the CSS for tables layout
236 cat - > ${CSS_PATCH_FILE} <<"_EOF"
237 /* override table width restrictions */
238 @media screen and (min-width: 767px) {
239 .wy-table-responsive table td, .wy-table-responsive table th {
240 white-space: normal !important;
243 .wy-table-responsive {
247 overflow: visible !important;
252 # Plot packets per second
254 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
255 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
256 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
257 --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"))]'
258 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
259 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
260 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
261 --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"))]'
263 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
264 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
265 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
266 --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"))]'
267 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
268 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
269 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
270 --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"))]'
272 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
273 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
274 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
275 --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"))]'
276 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
277 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
278 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
279 --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"))]'
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}/78B-1t1c-ethip6-ndrdisc \
292 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
293 --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"))]'
294 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
295 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
296 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
297 --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"))]'
299 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
300 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
301 --title "64B-1t1c-.*vhost.*-ndrdisc" \
302 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
303 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
304 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
305 --title "64B-2t2c-.*vhost.*-ndrdisc" \
306 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
308 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
309 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
310 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
311 --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"))]'
312 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
313 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
314 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
315 --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"))]'
317 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
318 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
319 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
320 --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"))]'
321 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
322 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
323 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
324 --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"))]'
326 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
327 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
328 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
329 --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"))]'
330 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
331 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
332 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
333 --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"))]'
335 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
336 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
337 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
338 --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"))]'
339 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
340 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
341 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
342 --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"))]'
344 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
345 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
346 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
347 --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"))]'
348 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
349 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
350 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
351 --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"))]'
353 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
354 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
355 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
356 --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"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"))]'
357 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
358 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
359 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
360 --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"))]'
362 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
363 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
364 --title "64B-1t1c-.*vhost.*-pdrdisc" \
365 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
366 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
367 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
368 --title "64B-2t2c-.*vhost.*-pdrdisc" \
369 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
371 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
372 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
373 --title "64B-1t1c-.*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, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
375 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
376 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
377 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
378 --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"))]'
380 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
381 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc \
382 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
383 --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"))]'
384 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
385 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc \
386 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
387 --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"))]'
388 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
389 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc \
390 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
391 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
392 --lower 2000000 --upper 12000000
393 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
394 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc \
395 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
396 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
397 --lower 2000000 --upper 12000000
399 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
400 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-pdrdisc \
401 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
402 --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"))]'
403 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
404 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-pdrdisc \
405 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
406 --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"))]'
407 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
408 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-pdrdisc \
409 --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
410 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
411 --lower 20000000 --upper 30000000
412 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
413 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-pdrdisc \
414 --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
415 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
416 --lower 20000000 --upper 30000000
420 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
421 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
422 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
423 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
424 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
425 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
426 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
427 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
429 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
430 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
431 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
432 --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
433 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
434 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
435 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
436 --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
438 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
439 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
440 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
441 --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
442 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
443 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
444 --title "78B-2t2c-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,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
447 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
448 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
449 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
450 --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
451 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
452 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
453 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
454 --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
456 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
457 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
458 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
459 --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
460 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
461 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
462 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
463 --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
465 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
466 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
467 --title "64B-1t1c-.*vhost.*-ndrdisc" \
468 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
469 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
470 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
471 --title "64B-2t2c-.*vhost.*-ndrdisc" \
472 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
474 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
475 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
476 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
477 --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
478 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
479 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
480 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
481 --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
483 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
484 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc-lat50 \
485 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
486 --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
487 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
488 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc-lat50 \
489 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
490 --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
491 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
492 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc-lat50 \
493 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
494 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
495 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
496 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc-lat50 \
497 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
498 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
501 echo Creating csit.report.tar.gz ...
502 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}