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_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
25 DTR_DPDK_SOURCE_DIR=${DTR_SOURCE_DIR}/dpdk_performance_results
26 DTR_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
27 DTR_HONEYCOMB_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
29 DTC_SOURCE_DIR=${SOURCE_DIR}/test_configuration
30 DTC_PERF_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_performance_configuration
31 DTC_FUNC_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_functional_configuration
33 DTO_SOURCE_DIR=${SOURCE_DIR}/test_operational_data
34 DTO_PERF_SOURCE_OPER_DIR=${DTO_SOURCE_DIR}/vpp_performance_operational_data
37 CSIT_JEN_URL='https://jenkins.fd.io/view/csit/job'
38 HC_JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
40 sudo apt-get -y update
41 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
44 # Clean-up when finished:
45 trap 'rm -rf ${WORKING_DIR}; exit' EXIT
46 trap 'rm -rf ${WORKING_DIR}; exit' ERR
48 # Remove the old build:
49 rm -rf ${BUILD_DIR} || true
50 rm -rf ${WORKING_DIR} || true
52 # Create working directories
55 # Create virtual environment:
56 virtualenv ${WORKING_DIR}/env
57 . ${WORKING_DIR}/env/bin/activate
60 pip install -r requirements.txt
62 export PYTHONPATH=`pwd`
64 # Download raw outputs for plots
65 echo Downloading raw outputs for plots ...
66 mkdir -p ${STATIC_DIR_VPP}
67 mkdir -p ${STATIC_DIR_DPDK}
68 mkdir -p ${STATIC_DIR_ARCH}
69 mkdir -p ${PLOT_VPP_SOURCE_DIR}
70 mkdir -p ${PLOT_DPDK_SOURCE_DIR}
72 ### VPP PERFORMANCE SOURCE DATA
74 JEN_FILE_PERF='output_perf_data.xml'
75 JEN_JOB='csit-vpp-perf-1704-all'
76 JEN_BUILD=(6 7 8 9 10 12 14 15 16 17)
78 for i in "${JEN_BUILD[@]}"; do
79 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
80 -o ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
81 if [[ ${DEBUG} -eq 1 ]] ;
83 cp ./${JEN_JOB}-10.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-10.zip
85 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
86 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
90 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-10.zip -d ${WORKING_DIR}/
91 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
92 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results.rst \
93 --formatting rst --start 4 --level 2
94 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
95 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration.rst \
96 --data "VAT_H" -f "rst" --start 4 --level 2
97 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
98 -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data.rst \
99 --data "SH_RUN" -f "rst" --start 4 --level 2
100 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
101 ${DTR_PERF_SOURCE_DIR}/index.rst
102 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
103 ${DTR_PERF_SOURCE_DIR}/index.rst
104 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
105 ${DTC_PERF_SOURCE_DIR}/index.rst
106 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
107 ${DTC_PERF_SOURCE_DIR}/index.rst
108 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
109 ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
110 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
111 ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
113 ### DPDK PERFORMANCE SOURCE DATA
115 JEN_JOB='csit-dpdk-perf-master-all'
116 JEN_BUILD=(13 14 15 16)
118 for i in "${JEN_BUILD[@]}"; do
119 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
120 -o ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.xml
121 if [[ ${DEBUG} -eq 1 ]] ;
123 cp ./${JEN_JOB}-16.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-16.zip
125 curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
126 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
130 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-16.zip -d ${WORKING_DIR}/
131 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
132 --output ${DTR_DPDK_SOURCE_DIR}/dpdk_performance_results.rst \
133 --formatting rst --start 3 --level 2
134 sed -i -e "s@###JOB###@${JEN_JOB}\/16@g" \
135 ${DTR_DPDK_SOURCE_DIR}/index.rst
136 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/16@g" \
137 ${DTR_DPDK_SOURCE_DIR}/index.rst
139 ### FUNCTIONAL SOURCE DATA
141 JEN_JOB='csit-vpp-functional-master-ubuntu1604-virl'
142 JEN_BUILD='lastSuccessfulBuild'
144 if [[ ${DEBUG} -eq 1 ]] ;
146 cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
148 curl -fs ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
149 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
152 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
153 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
154 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results.rst \
155 --formatting rst --start 5 --level 2
156 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
157 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration.rst \
158 --data "VAT_H" -f "rst" --start 5 --level 2
159 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
160 ${DTR_FUNC_SOURCE_DIR}/index.rst
161 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
162 ${DTR_FUNC_SOURCE_DIR}/index.rst
163 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
164 ${DTC_FUNC_SOURCE_DIR}/index.rst
165 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
166 ${DTC_FUNC_SOURCE_DIR}/index.rst
168 ### HONEYCOMB SOURCE DATA
170 JEN_JOB='hc2vpp-csit-integration-master-ubuntu1604'
171 JEN_BUILD='lastSuccessfulBuild'
173 if [[ ${DEBUG} -eq 1 ]] ;
175 cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
177 curl -fs ${HC_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
178 -o ${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_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \
184 --formatting rst --start 3 --level 2
185 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
186 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
187 sed -i -e "s@###LINK###@${HC_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
188 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
190 # Delete temporary json files
191 find ${SOURCE_DIR} -name "*.json" -type f -delete
193 # Generate the documentation:
195 DATE=$(date -u '+%d-%b-%Y')
197 sphinx-build -v -c . -a -b html -E \
198 -D release=$1 -D version="$1 report - $DATE" \
199 ${SOURCE_DIR} ${BUILD_DIR}/
201 # Patch the CSS for tables layout
202 cat - > ${CSS_PATCH_FILE} <<"_EOF"
203 /* override table width restrictions */
204 @media screen and (min-width: 767px) {
205 .wy-table-responsive table td, .wy-table-responsive table th {
206 white-space: normal !important;
209 .wy-table-responsive {
213 overflow: visible !important;
218 # Plot packets per second
220 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
221 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
222 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
223 --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"))]'
224 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
225 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
226 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
227 --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"))]'
229 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
230 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
231 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
232 --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"))]'
233 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
234 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
235 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
236 --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"))]'
238 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
239 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
240 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
241 --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"))]'
242 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
243 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
244 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
245 --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"))]'
247 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
248 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
249 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
250 --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"))]'
251 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
252 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
253 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
254 --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"))]'
256 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
257 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
258 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
259 --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"))]'
260 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
261 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
262 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
263 --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"))]'
265 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
266 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
267 --title "64B-1t1c-.*vhost.*-ndrdisc" \
268 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
269 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
270 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
271 --title "64B-2t2c-.*vhost.*-ndrdisc" \
272 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
274 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
275 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
276 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
277 --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"))]'
278 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
279 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
280 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
281 --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"))]'
283 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
284 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
285 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
286 --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"))]'
287 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
288 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
289 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
290 --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"))]'
292 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
293 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
294 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
295 --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"))]'
296 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
297 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
298 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
299 --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"))]'
301 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
302 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
303 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
304 --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"))]'
305 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
306 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
307 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
308 --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"))]'
310 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
311 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
312 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
313 --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"))]'
314 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
315 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
316 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
317 --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"))]'
319 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
320 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
321 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
322 --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"))]'
323 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
324 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
325 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
326 --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"))]'
328 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
329 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
330 --title "64B-1t1c-.*vhost.*-pdrdisc" \
331 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
332 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
333 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
334 --title "64B-2t2c-.*vhost.*-pdrdisc" \
335 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
337 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
338 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
339 --title "64B-1t1c-.*ipsec.*-pdrdisc" \
340 --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"))]'
341 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
342 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
343 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
344 --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"))]'
346 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
347 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc \
348 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
349 --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"))]'
350 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
351 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc \
352 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
353 --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"))]'
354 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
355 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc \
356 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
357 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]'
358 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
359 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc \
360 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
361 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]'
363 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
364 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-pdrdisc \
365 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
366 --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"))]'
367 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
368 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-pdrdisc \
369 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
370 --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"))]'
371 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
372 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-pdrdisc \
373 --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
374 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]'
375 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
376 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-pdrdisc \
377 --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
378 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]'
382 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
383 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
384 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
385 --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
386 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
387 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
388 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
389 --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
391 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
392 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
393 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
394 --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
395 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
396 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
397 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
398 --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
400 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
401 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
402 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
403 --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
404 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
405 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
406 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
407 --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
409 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
410 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
411 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
412 --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
413 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
414 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
415 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
416 --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
418 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
419 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
420 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
421 --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
422 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
423 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
424 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
425 --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
427 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
428 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
429 --title "64B-1t1c-.*vhost.*-ndrdisc" \
430 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
431 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
432 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
433 --title "64B-2t2c-.*vhost.*-ndrdisc" \
434 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
436 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
437 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
438 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
439 --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
440 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
441 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
442 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
443 --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
445 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
446 --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc-lat50 \
447 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
448 --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
449 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
450 --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc-lat50 \
451 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
452 --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
453 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
454 --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc-lat50 \
455 --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
456 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
457 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
458 --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc-lat50 \
459 --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
460 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
463 echo Creating csit.report.tar.gz ...
464 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}