7 SOURCE_DIR='../../../docs/report'
8 DTR_SOURCE_DIR="${SOURCE_DIR}/detailed_test_results"
9 DTR_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
10 DTR_TESTPMD_SOURCE_DIR=${DTR_SOURCE_DIR}/testpmd_performance_results
11 DTR_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
12 DTR_HONEYCOMB_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
13 STATIC_DIR="${BUILD_DIR}/_static"
14 STATIC_DIR_VPP="${STATIC_DIR}/vpp"
15 STATIC_DIR_TESTPMD="${STATIC_DIR}/testpmd"
16 STATIC_DIR_ARCH="${STATIC_DIR}/archive"
17 CSS_PATCH_FILE="${STATIC_DIR}/theme_overrides.css"
18 JEN_URL='https://jenkins.fd.io/view/csit/job'
20 sudo apt-get -y update
21 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
24 # Clean-up when finished:
25 trap 'rm -rf ${WORKING_DIR}; exit' EXIT
26 trap 'rm -rf ${WORKING_DIR}; exit' ERR
28 # Remove the old build:
29 rm -rf ${BUILD_DIR} || true
30 rm -rf ${WORKING_DIR} || true
32 # Create working directories
35 # Create virtual environment:
36 virtualenv ${WORKING_DIR}/env
37 . ${WORKING_DIR}/env/bin/activate
40 pip install -r requirements.txt
42 export PYTHONPATH=`pwd`
44 # Download raw outputs for plots
45 echo Downloading raw outputs for plots ...
46 mkdir -p ${STATIC_DIR_VPP}
47 mkdir -p ${STATIC_DIR_TESTPMD}
48 mkdir -p ${STATIC_DIR_ARCH}
50 ### VPP PERFORMANCE SOURCE DATA
52 JEN_FILE_PERF='output_perf_data.xml'
53 JEN_JOB='csit-vpp-perf-1704-all'
56 for i in "${JEN_BUILD[@]}"; do
57 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
58 -o ${STATIC_DIR_VPP}/${JEN_JOB}-${i}.xml
59 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
60 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
64 #cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
66 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
67 # L2 Ethernet Switching
68 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
69 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_l2.rst \
70 --formatting rst --start 3 --level 2 \
71 --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
72 --title "L2 Ethernet Switching"
73 # IPv4 Routed-Forwarding
74 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
75 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4.rst \
76 --formatting rst --start 3 --level 2 \
77 --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
78 --title "IPv4 Routed-Forwarding"
79 # IPv6 Routed-Forwarding
80 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
81 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6.rst \
82 --formatting rst --start 3 --level 2 \
83 --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
84 --title "IPv6 Routed-Forwarding"
85 # IPv4 Overlay Tunnels
86 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
87 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4o.rst \
88 --formatting rst --start 3 --level 2 \
89 --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
90 --title "IPv4 Overlay Tunnels"
91 # IPv6 Overlay Tunnels
92 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
93 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6o.rst \
94 --formatting rst --start 3 --level 2 \
95 --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
96 --title "IPv6 Overlay Tunnels"
97 # VM Vhost Connections
98 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
99 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_vhost.rst \
100 --formatting rst --start 3 --level 2 \
101 --regex ".+vhost.*" \
102 --title "VM Vhost Connections"
103 # Crypto in hardware: IP4FWD, IP6FWD
104 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
105 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipsec.rst \
106 --formatting rst --start 3 --level 2 \
107 --regex ".+ipsec.*" \
108 --title "Crypto in hardware: IP4FWD, IP6FWD"
109 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
110 ${DTR_PERF_SOURCE_DIR}/index.rst
111 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
112 ${DTR_PERF_SOURCE_DIR}/index.rst
113 rm -f ${DTR_PERF_SOURCE_DIR}/*.json
115 ### DPDK PERFORMANCE SOURCE DATA
117 JEN_JOB='csit-dpdk-perf-1704-all'
120 for i in "${JEN_BUILD[@]}"; do
121 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
122 -o ${STATIC_DIR_TESTPMD}/${JEN_JOB}-${i}.xml
123 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
124 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
128 #cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
130 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
131 # Testpmd Performance Results
132 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
133 --output ${DTR_TESTPMD_SOURCE_DIR}/testpmd_performance_results.rst \
134 --formatting rst --start 3 --level 2
135 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
136 ${DTR_TESTPMD_SOURCE_DIR}/index.rst
137 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
138 ${DTR_TESTPMD_SOURCE_DIR}/index.rst
139 rm -f ${DTR_TESTPMD_SOURCE_DIR}/*.json
141 ### FUNCTIONAL SOURCE DATA
143 JEN_JOB='csit-vpp-functional-1704-ubuntu1604-virl'
146 curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
147 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
150 #cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
152 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
153 # Cop Address Security
154 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
155 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_cop.rst \
156 --formatting rst --start 4 --level 2 \
158 --title "Cop Address Security"
159 # DHCP Client and proxy
160 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
161 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_dhcp.rst \
162 --formatting rst --start 4 --level 2 \
164 --title "DHCP - Client and Proxy"
165 # GRE Overlay Tunnels
166 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
167 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_gre.rst \
168 --formatting rst --start 4 --level 2 \
169 --regex ".+ethip4gre.*" \
170 --title "GRE Overlay Tunnels"
172 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
173 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_iacl.rst \
174 --formatting rst --start 4 --level 2 \
176 --title "iACL Security"
177 # IPSec - Tunnels and Transport
178 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
179 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipsec.rst \
180 --formatting rst --start 4 --level 2 \
181 --regex ".+ipsec(tnl|tpt)+-.*" \
182 --title "IPSec - Tunnels and Transport"
183 # IPv4 Routed-Forwarding
184 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
185 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv4.rst \
186 --formatting rst --start 4 --level 2 \
187 --regex ".+ethip4-ip4base-(func|ip4ecmp\-func|ip4proxyarp\-func|ip4arp\-func)+" \
188 --title "IPv4 Routed-Forwarding"
189 # IPv6 Routed-Forwarding
190 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
191 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv6.rst \
192 --formatting rst --start 4 --level 2 \
193 --regex ".+ethip6-ip6base-(func|ip6ecmp\-func|ip6ra\-func)+" \
194 --title "IPv6 Routed-Forwarding"
195 # L2BD Ethernet Switching
196 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
197 --output ${DTR_SOURCE_DIR}/vpp_functional_results/vpp_functional_results_l2bd.rst \
198 --formatting rst --start 4 --level 2 \
199 --regex ".+eth-l2bdbasemac(lrn|stc)+-(func|eth\-2vhost|l2shg\-func).*" \
200 --title "L2BD Ethernet Switching"
201 # L2XC Ethernet Switching
202 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
203 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_l2xc.rst \
204 --formatting rst --start 4 --level 2 \
205 --regex ".+eth-l2xcbase-(eth|func).*" \
206 --title "L2XC Ethernet Switching"
207 # LISP Overlay Tunnels
208 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
209 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_lisp.rst \
210 --formatting rst --start 4 --level 2 \
212 --title "LISP Overlay Tunnels"
213 # QoS Policer Metering
214 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
215 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_policer.rst \
216 --formatting rst --start 4 --level 2 \
217 --regex ".+ipolicemark.*" \
218 --title "QoS Policer Metering"
219 # RPF Source Security
220 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
221 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_rpf.rst \
222 --formatting rst --start 4 --level 2 \
224 --title "RPF Source Security"
226 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
227 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_softwire.rst \
228 --formatting rst --start 4 --level 2 \
229 --regex ".+swire.*" \
230 --title "Softwire Tunnels"
232 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
233 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_tap.rst \
234 --formatting rst --start 4 --level 2 \
236 --title "Tap Interface"
237 # Telemetry - IPFIX and SPAN
238 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
239 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_telemetry.rst \
240 --formatting rst --start 4 --level 2 \
241 --regex ".+(ipfix|spanrx).*" \
242 --title "Telemetry - IPFIX and SPAN"
243 # VLAN Tag Translation
244 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
245 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vlan.rst \
246 --formatting rst --start 4 --level 2 \
247 --regex ".+(dot1q\-|dot1ad\-).*" \
248 --title "VLAN Tag Translation"
249 # VRF Routed-Forwarding
250 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
251 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vrf.rst \
252 --formatting rst --start 4 --level 2 \
253 --regex ".+ethip(4|6)+-ip(4|6)+basevrf.*" \
254 --title "VRF Routed-Forwarding"
255 # VXLAN Overlay Tunnels
256 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
257 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vxlan.rst \
258 --formatting rst --start 4 --level 2 \
259 --regex ".+(ip4vxlan|ip6vxlan).*" \
260 --title "VXLAN Overlay Tunnels"
261 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
262 ${DTR_FUNC_SOURCE_DIR}/index.rst
263 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
264 ${DTR_FUNC_SOURCE_DIR}/index.rst
265 rm -f ${DTR_FUNC_SOURCE_DIR}/*.json
267 ### HONEYCOMB SOURCE DATA
269 JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
270 JEN_JOB='hc2vpp-csit-integration-1704-ubuntu1604'
273 curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
274 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
277 #cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
279 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
280 python run_robot_data.py -i ${WORKING_DIR}/archive/csit/output.xml \
281 --output ${DTR_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \
282 --formatting rst --start 3 --level 2
283 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
284 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
285 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
286 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
287 rm -f ${DTR_HONEYCOMB_SOURCE_DIR}/*.json
289 # Generate the documentation:
291 DATE=$(date -u '+%d-%b-%Y')
293 sphinx-build -v -c . -a -b html -E \
294 -D release=$1 -D version="$1 report - $DATE" \
295 ${SOURCE_DIR} ${BUILD_DIR}/
297 # Patch the CSS for tables layout
298 cat - > ${CSS_PATCH_FILE} <<"_EOF"
299 /* override table width restrictions */
300 @media screen and (min-width: 767px) {
301 .wy-table-responsive table td, .wy-table-responsive table th {
302 white-space: normal !important;
305 .wy-table-responsive {
309 overflow: visible !important;
314 # Plot packets per second
316 python run_plot.py --input ${STATIC_DIR_VPP} \
317 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
318 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
319 --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"))]'
320 python run_plot.py --input ${STATIC_DIR_VPP} \
321 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
322 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
323 --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"))]'
325 python run_plot.py --input ${STATIC_DIR_VPP} \
326 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
327 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
328 --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"))]'
329 python run_plot.py --input ${STATIC_DIR_VPP} \
330 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
331 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
332 --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"))]'
334 python run_plot.py --input ${STATIC_DIR_VPP} \
335 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
336 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
337 --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"))]'
338 python run_plot.py --input ${STATIC_DIR_VPP} \
339 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
340 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
341 --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"))]'
343 python run_plot.py --input ${STATIC_DIR_VPP} \
344 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
345 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
346 --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"))]'
347 python run_plot.py --input ${STATIC_DIR_VPP} \
348 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
349 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
350 --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"))]'
352 python run_plot.py --input ${STATIC_DIR_VPP} \
353 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
354 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
355 --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"))]'
356 python run_plot.py --input ${STATIC_DIR_VPP} \
357 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
358 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
359 --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"))]'
361 python run_plot.py --input ${STATIC_DIR_VPP} \
362 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
363 --title "64B-1t1c-.*vhost.*-ndrdisc" \
364 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
365 python run_plot.py --input ${STATIC_DIR_VPP} \
366 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
367 --title "64B-2t2c-.*vhost.*-ndrdisc" \
368 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
370 python run_plot.py --input ${STATIC_DIR_VPP} \
371 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
372 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
373 --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"))]'
374 python run_plot.py --input ${STATIC_DIR_VPP} \
375 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
376 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
377 --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"))]'
379 python run_plot.py --input ${STATIC_DIR_VPP} \
380 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
381 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
382 --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"))]'
383 python run_plot.py --input ${STATIC_DIR_VPP} \
384 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
385 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
386 --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
388 python run_plot.py --input ${STATIC_DIR_VPP} \
389 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
390 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
391 --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"))]'
392 python run_plot.py --input ${STATIC_DIR_VPP} \
393 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
394 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
395 --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"))]'
397 python run_plot.py --input ${STATIC_DIR_VPP} \
398 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
399 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
400 --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"))]'
401 python run_plot.py --input ${STATIC_DIR_VPP} \
402 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
403 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
404 --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"))]'
406 python run_plot.py --input ${STATIC_DIR_VPP} \
407 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
408 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
409 --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"))]'
410 python run_plot.py --input ${STATIC_DIR_VPP} \
411 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
412 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
413 --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"))]'
415 python run_plot.py --input ${STATIC_DIR_VPP} \
416 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
417 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
418 --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"))]'
419 python run_plot.py --input ${STATIC_DIR_VPP} \
420 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
421 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
422 --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"))]'
424 python run_plot.py --input ${STATIC_DIR_VPP} \
425 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
426 --title "64B-1t1c-.*vhost.*-pdrdisc" \
427 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
428 python run_plot.py --input ${STATIC_DIR_VPP} \
429 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
430 --title "64B-2t2c-.*vhost.*-pdrdisc" \
431 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
433 python run_plot.py --input ${STATIC_DIR_VPP} \
434 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
435 --title "64B-1t1c-.*ipsec.*-pdrdisc" \
436 --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"))]'
437 python run_plot.py --input ${STATIC_DIR_VPP} \
438 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
439 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
440 --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"))]'
442 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
443 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc \
444 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
445 --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"))]'
446 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
447 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc \
448 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
449 --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"))]'
451 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
452 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-pdrdisc \
453 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
454 --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"))]'
455 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
456 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-pdrdisc \
457 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
458 --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"))]'
462 python run_plot.py --input ${STATIC_DIR_VPP} \
463 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
464 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
465 --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
466 python run_plot.py --input ${STATIC_DIR_VPP} \
467 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
468 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
469 --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
471 python run_plot.py --input ${STATIC_DIR_VPP} \
472 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
473 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
474 --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
475 python run_plot.py --input ${STATIC_DIR_VPP} \
476 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
477 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
478 --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
480 python run_plot.py --input ${STATIC_DIR_VPP} \
481 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
482 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
483 --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
484 python run_plot.py --input ${STATIC_DIR_VPP} \
485 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
486 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
487 --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
489 python run_plot.py --input ${STATIC_DIR_VPP} \
490 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
491 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
492 --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
493 python run_plot.py --input ${STATIC_DIR_VPP} \
494 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
495 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
496 --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
498 python run_plot.py --input ${STATIC_DIR_VPP} \
499 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
500 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
501 --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
502 python run_plot.py --input ${STATIC_DIR_VPP} \
503 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
504 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
505 --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
507 python run_plot.py --input ${STATIC_DIR_VPP} \
508 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
509 --title "64B-1t1c-.*vhost.*-ndrdisc" \
510 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
511 python run_plot.py --input ${STATIC_DIR_VPP} \
512 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
513 --title "64B-2t2c-.*vhost.*-ndrdisc" \
514 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
516 python run_plot.py --input ${STATIC_DIR_VPP} \
517 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
518 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
519 --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
520 python run_plot.py --input ${STATIC_DIR_VPP} \
521 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
522 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
523 --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
525 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
526 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc-lat50 \
527 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
528 --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
529 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
530 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc-lat50 \
531 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
532 --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
535 echo Creating csit.report.tar.gz ...
536 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}