8 SOURCE_DIR='../../../docs/report'
9 DTR_SOURCE_DIR="${SOURCE_DIR}/detailed_test_results"
10 DTR_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
11 DTR_TESTPMD_SOURCE_DIR=${DTR_SOURCE_DIR}/testpmd_performance_results
12 DTR_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
13 DTR_HONEYCOMB_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
15 DTC_SOURCE_DIR="${SOURCE_DIR}/detailed_test_configuration"
16 DTC_PERF_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_performance_configuration
17 DTC_PERF_SOURCE_OPER_DIR=${DTC_SOURCE_DIR}/vpp_performance_operational_data
18 DTC_FUNC_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_functional_configuration
20 STATIC_DIR="${BUILD_DIR}/_static"
21 STATIC_DIR_VPP="${STATIC_DIR}/vpp"
22 STATIC_DIR_TESTPMD="${STATIC_DIR}/testpmd"
23 STATIC_DIR_ARCH="${STATIC_DIR}/archive"
24 CSS_PATCH_FILE="${STATIC_DIR}/theme_overrides.css"
25 JEN_URL='https://jenkins.fd.io/view/csit/job'
27 sudo apt-get -y update
28 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
31 # Clean-up when finished:
32 trap 'rm -rf ${WORKING_DIR}; exit' EXIT
33 trap 'rm -rf ${WORKING_DIR}; exit' ERR
35 # Remove the old build:
36 rm -rf ${BUILD_DIR} || true
37 rm -rf ${WORKING_DIR} || true
39 # Create working directories
42 # Create virtual environment:
43 virtualenv ${WORKING_DIR}/env
44 . ${WORKING_DIR}/env/bin/activate
47 pip install -r requirements.txt
49 export PYTHONPATH=`pwd`
51 # Download raw outputs for plots
52 echo Downloading raw outputs for plots ...
53 mkdir -p ${STATIC_DIR_VPP}
54 mkdir -p ${STATIC_DIR_TESTPMD}
55 mkdir -p ${STATIC_DIR_ARCH}
57 ### VPP PERFORMANCE SOURCE DATA
59 JEN_FILE_PERF='output_perf_data.xml'
60 JEN_JOB='csit-vpp-perf-1704-all'
63 for i in "${JEN_BUILD[@]}"; do
64 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
65 -o ${STATIC_DIR_VPP}/${JEN_JOB}-${i}.xml
66 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
67 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
71 #cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
73 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
74 # L2 Ethernet Switching
75 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
76 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_l2.rst \
77 --formatting rst --start 3 --level 2 \
78 --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
79 --title "L2 Ethernet Switching"
80 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
81 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_l2.rst \
82 --data "VAT_H" -f "rst" --start 3 --level 2 \
83 --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
84 --title "L2 Ethernet Switching"
85 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
86 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_l2.rst \
87 --data "SH_RUN" -f "rst" --start 3 --level 2 \
88 --regex ".+(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndr" \
89 --title "L2 Ethernet Switching"
90 # IPv4 Routed-Forwarding
91 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
92 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4.rst \
93 --formatting rst --start 3 --level 2 \
94 --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
95 --title "IPv4 Routed-Forwarding"
96 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
97 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_ipv4.rst \
98 --data "VAT_H" -f "rst" --start 3 --level 2 \
99 --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
100 --title "IPv4 Routed-Forwarding"
101 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
102 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4.rst \
103 --data "SH_RUN" -f "rst" --start 3 --level 2 \
104 --regex ".+ethip4-ip4[a-z0-9]+-[a-z-]*ndr" \
105 --title "IPv4 Routed-Forwarding"
106 # IPv6 Routed-Forwarding
107 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
108 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6.rst \
109 --formatting rst --start 3 --level 2 \
110 --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
111 --title "IPv6 Routed-Forwarding"
112 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
113 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_ipv6.rst \
114 --data "VAT_H" -f "rst" --start 3 --level 2 \
115 --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
116 --title "IPv6 Routed-Forwarding"
117 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
118 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6.rst \
119 --data "SH_RUN" -f "rst" --start 3 --level 2 \
120 --regex ".+ethip6-ip6[a-z0-9]+-[a-z-]*ndr" \
121 --title "IPv6 Routed-Forwarding"
122 # IPv4 Overlay Tunnels
123 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
124 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv4o.rst \
125 --formatting rst --start 3 --level 2 \
126 --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
127 --title "IPv4 Overlay Tunnels"
128 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
129 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_ipv4o.rst \
130 --data "VAT_H" -f "rst" --start 3 --level 2 \
131 --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
132 --title "IPv4 Overlay Tunnels"
133 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
134 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv4o.rst \
135 --data "SH_RUN" -f "rst" --start 3 --level 2 \
136 --regex ".+ethip4[a-z0-9]+-[a-z0-9]*-ndr" \
137 --title "IPv4 Overlay Tunnels"
138 # IPv6 Overlay Tunnels
139 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
140 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipv6o.rst \
141 --formatting rst --start 3 --level 2 \
142 --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
143 --title "IPv6 Overlay Tunnels"
144 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
145 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_ipv6o.rst \
146 --data "VAT_H" -f "rst" --start 3 --level 2 \
147 --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
148 --title "IPv6 Overlay Tunnels"
149 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
150 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipv6o.rst \
151 --data "SH_RUN" -f "rst" --start 3 --level 2 \
152 --regex ".+ethip6[a-z0-9]+-[a-z0-9]*-ndr" \
153 --title "IPv6 Overlay Tunnels"
154 # VM Vhost Connections
155 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
156 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_vhost.rst \
157 --formatting rst --start 3 --level 2 \
158 --regex ".+vhost.*" \
159 --title "VM Vhost Connections"
160 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
161 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_vhost.rst \
162 --data "VAT_H" -f "rst" --start 3 --level 2 \
163 --regex ".+vhost.*" \
164 --title "VM Vhost Connections"
165 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
166 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_vhost.rst \
167 --data "SH_RUN" -f "rst" --start 3 --level 2 \
168 --regex ".+vhost.*" \
169 --title "VM Vhost Connections"
170 # Crypto in hardware: IP4FWD, IP6FWD
171 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
172 --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results_ipsec.rst \
173 --formatting rst --start 3 --level 2 \
174 --regex ".+ipsec.*" \
175 --title "Crypto in hardware: IP4FWD, IP6FWD"
176 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
177 --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration_ipsec.rst \
178 --data "VAT_H" -f "rst" --start 3 --level 2 \
179 --regex ".+ipsec.*" \
180 --title "Crypto in hardware: IP4FWD, IP6FWD"
181 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
182 -o ${DTC_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data_ipsec.rst \
183 --data "SH_RUN" -f "rst" --start 3 --level 2 \
184 --regex ".+ipsec.*" \
185 --title "Crypto in hardware: IP4FWD, IP6FWD"
186 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
187 ${DTR_PERF_SOURCE_DIR}/index.rst
188 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
189 ${DTR_PERF_SOURCE_DIR}/index.rst
190 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
191 ${DTC_PERF_SOURCE_DIR}/index.rst
192 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
193 ${DTC_PERF_SOURCE_DIR}/index.rst
194 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
195 ${DTC_PERF_SOURCE_OPER_DIR}/index.rst
196 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
197 ${DTC_PERF_SOURCE_OPER_DIR}/index.rst
198 rm -f ${DTR_PERF_SOURCE_DIR}/*.json
199 rm -f ${DTC_PERF_SOURCE_DIR}/*.json
200 rm -f ${DTC_PERF_SOURCE_OPER_DIR}/*.json
202 ### DPDK PERFORMANCE SOURCE DATA
204 JEN_JOB='csit-dpdk-perf-1704-all'
205 JEN_BUILD=(1 2 3 4 5)
207 for i in "${JEN_BUILD[@]}"; do
208 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/${JEN_FILE_PERF} \
209 -o ${STATIC_DIR_TESTPMD}/${JEN_JOB}-${i}.xml
210 curl -fs ${JEN_URL}/${JEN_JOB}/${i}/artifact/\*zip\*/archive.zip \
211 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
215 #cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
217 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
218 # Testpmd Performance Results
219 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
220 --output ${DTR_TESTPMD_SOURCE_DIR}/testpmd_performance_results.rst \
221 --formatting rst --start 3 --level 2
222 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
223 ${DTR_TESTPMD_SOURCE_DIR}/index.rst
224 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
225 ${DTR_TESTPMD_SOURCE_DIR}/index.rst
226 rm -f ${DTR_TESTPMD_SOURCE_DIR}/*.json
228 ### FUNCTIONAL SOURCE DATA
230 JEN_JOB='csit-vpp-functional-1704-ubuntu1604-virl'
233 curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
234 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
237 #cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
239 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
240 # Cop Address Security
241 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
242 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_cop.rst \
243 --formatting rst --start 4 --level 2 \
245 --title "Cop Address Security"
246 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
247 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_cop.rst \
248 --data "VAT_H" -f "rst" --start 4 --level 2 \
250 --title "Cop Address Security"
251 # DHCP Client and proxy
252 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
253 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_dhcp.rst \
254 --formatting rst --start 4 --level 2 \
256 --title "DHCP - Client and Proxy"
257 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
258 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_dhcp.rst \
259 --data "VAT_H" -f "rst" --start 4 --level 2 \
261 --title "DHCP - Client and Proxy"
262 # GRE Overlay Tunnels
263 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
264 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_gre.rst \
265 --formatting rst --start 4 --level 2 \
266 --regex ".+ethip4gre.*" \
267 --title "GRE Overlay Tunnels"
268 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
269 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_gre.rst \
270 --data "VAT_H" -f "rst" --start 4 --level 2 \
271 --regex ".+ethip4gre.*" \
272 --title "GRE Overlay Tunnels"
274 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
275 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_iacl.rst \
276 --formatting rst --start 4 --level 2 \
278 --title "iACL Security"
279 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
280 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_iacl.rst \
281 --data "VAT_H" -f "rst" --start 4 --level 2 \
283 --title "iACL Security"
284 # IPSec - Tunnels and Transport
285 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
286 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipsec.rst \
287 --formatting rst --start 4 --level 2 \
288 --regex ".+ipsec(tnl|tpt)+-.*" \
289 --title "IPSec - Tunnels and Transport"
290 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
291 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_ipsec.rst \
292 --data "VAT_H" -f "rst" --start 4 --level 2 \
293 --regex ".+ipsec(tnl|tpt)+-.*" \
294 --title "IPSec - Tunnels and Transport"
295 # IPv4 Routed-Forwarding
296 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
297 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv4.rst \
298 --formatting rst --start 4 --level 2 \
299 --regex ".+ethip4-ip4base-(func|ip4ecmp\-func|ip4proxyarp\-func|ip4arp\-func)+" \
300 --title "IPv4 Routed-Forwarding"
301 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
302 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_ipv4.rst \
303 --data "VAT_H" -f "rst" --start 4 --level 2 \
304 --regex ".+ethip4-ip4base-(func|ip4ecmp\-func|ip4proxyarp\-func|ip4arp\-func)+" \
305 --title "IPv4 Routed-Forwarding"
306 # IPv6 Routed-Forwarding
307 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
308 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_ipv6.rst \
309 --formatting rst --start 4 --level 2 \
310 --regex ".+ethip6-ip6base-(func|ip6ecmp\-func|ip6ra\-func)+" \
311 --title "IPv6 Routed-Forwarding"
312 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
313 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_ipv6.rst \
314 --data "VAT_H" -f "rst" --start 4 --level 2 \
315 --regex ".+ethip6-ip6base-(func|ip6ecmp\-func|ip6ra\-func)+" \
316 --title "IPv6 Routed-Forwarding"
317 # L2BD Ethernet Switching
318 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
319 --output ${DTR_SOURCE_DIR}/vpp_functional_results/vpp_functional_results_l2bd.rst \
320 --formatting rst --start 4 --level 2 \
321 --regex ".+eth-l2bdbasemac(lrn|stc)+-(func|eth\-2vhost|l2shg\-func).*" \
322 --title "L2BD Ethernet Switching"
323 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
324 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_l2bd.rst \
325 --data "VAT_H" -f "rst" --start 4 --level 2 \
326 --regex ".+eth-l2bdbasemac(lrn|stc)+-(func|eth\-2vhost|l2shg\-func).*" \
327 --title "L2BD Ethernet Switching"
328 # L2XC Ethernet Switching
329 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
330 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_l2xc.rst \
331 --formatting rst --start 4 --level 2 \
332 --regex ".+eth-l2xcbase-(eth|func).*" \
333 --title "L2XC Ethernet Switching"
334 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
335 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_l2xc.rst \
336 --data "VAT_H" -f "rst" --start 4 --level 2 \
337 --regex ".+eth-l2xcbase-(eth|func).*" \
338 --title "L2XC Ethernet Switching"
339 # LISP Overlay Tunnels
340 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
341 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_lisp.rst \
342 --formatting rst --start 4 --level 2 \
344 --title "LISP Overlay Tunnels"
345 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
346 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_lisp.rst \
347 --data "VAT_H" -f "rst" --start 4 --level 2 \
349 --title "LISP Overlay Tunnels"
350 # QoS Policer Metering
351 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
352 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_policer.rst \
353 --formatting rst --start 4 --level 2 \
354 --regex ".+ipolicemark.*" \
355 --title "QoS Policer Metering"
356 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
357 --output ${DTC_FUNC_SOURCE_DIR}/vpp_performancefunctional_configuration_policer.rst \
358 --data "VAT_H" -f "rst" --start 4 --level 2 \
359 --regex ".+ipolicemark.*" \
360 --title "QoS Policer Metering"
361 # RPF Source Security
362 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
363 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_rpf.rst \
364 --formatting rst --start 4 --level 2 \
366 --title "RPF Source Security"
367 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
368 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_rpf.rst \
369 --data "VAT_H" -f "rst" --start 4 --level 2 \
371 --title "RPF Source Security"
373 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
374 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_softwire.rst \
375 --formatting rst --start 4 --level 2 \
376 --regex ".+swire.*" \
377 --title "Softwire Tunnels"
378 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
379 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_softwire.rst \
380 --data "VAT_H" -f "rst" --start 4 --level 2 \
381 --regex ".+swire.*" \
382 --title "Softwire Tunnels"
384 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
385 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_tap.rst \
386 --formatting rst --start 4 --level 2 \
388 --title "Tap Interface"
389 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
390 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_tap.rst \
391 --data "VAT_H" -f "rst" --start 4 --level 2 \
393 --title "Tap Interface"
394 # Telemetry - IPFIX and SPAN
395 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
396 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_telemetry.rst \
397 --formatting rst --start 4 --level 2 \
398 --regex ".+(ipfix|spanrx).*" \
399 --title "Telemetry - IPFIX and SPAN"
400 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
401 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_telemetry.rst \
402 --data "VAT_H" -f "rst" --start 4 --level 2 \
403 --regex ".+(ipfix|spanrx).*" \
404 --title "Telemetry - IPFIX and SPAN"
405 # VLAN Tag Translation
406 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
407 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vlan.rst \
408 --formatting rst --start 4 --level 2 \
409 --regex ".+(dot1q\-|dot1ad\-).*" \
410 --title "VLAN Tag Translation"
411 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
412 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_vlan.rst \
413 --data "VAT_H" -f "rst" --start 4 --level 2 \
414 --regex ".+(dot1q\-|dot1ad\-).*" \
415 --title "VLAN Tag Translation"
416 # VRF Routed-Forwarding
417 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
418 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vrf.rst \
419 --formatting rst --start 4 --level 2 \
420 --regex ".+ethip(4|6)+-ip(4|6)+basevrf.*" \
421 --title "VRF Routed-Forwarding"
422 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
423 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_vrf.rst \
424 --data "VAT_H" -f "rst" --start 4 --level 2 \
425 --regex ".+ethip(4|6)+-ip(4|6)+basevrf.*" \
426 --title "VRF Routed-Forwarding"
427 # VXLAN Overlay Tunnels
428 python run_robot_data.py -i ${WORKING_DIR}/archive/output.xml \
429 --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results_vxlan.rst \
430 --formatting rst --start 4 --level 2 \
431 --regex ".+(ip4vxlan|ip6vxlan).*" \
432 --title "VXLAN Overlay Tunnels"
433 python run_robot_teardown_data.py -i ${WORKING_DIR}/archive/output.xml \
434 --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration_vxlan.rst \
435 --data "VAT_H" -f "rst" --start 4 --level 2 \
436 --regex ".+(ip4vxlan|ip6vxlan).*" \
437 --title "VXLAN Overlay Tunnels"
438 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
439 ${DTR_FUNC_SOURCE_DIR}/index.rst
440 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
441 ${DTR_FUNC_SOURCE_DIR}/index.rst
442 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
443 ${DTC_FUNC_SOURCE_DIR}/index.rst
444 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
445 ${DTC_FUNC_SOURCE_DIR}/index.rst
446 rm -f ${DTR_FUNC_SOURCE_DIR}/*.json
447 rm -f ${DTC_FUNC_SOURCE_DIR}/*.json
449 ### HONEYCOMB SOURCE DATA
451 JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
452 JEN_JOB='hc2vpp-csit-integration-1704-ubuntu1604'
455 curl -fs ${JEN_URL}/${JEN_JOB}/${JEN_BUILD}/artifact/\*zip\*/archive.zip \
456 -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
459 #cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
461 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
462 python run_robot_data.py -i ${WORKING_DIR}/archive/csit/output.xml \
463 --output ${DTR_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \
464 --formatting rst --start 3 --level 2
465 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
466 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
467 sed -i -e "s@###LINK###@${JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
468 ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
469 rm -f ${DTR_HONEYCOMB_SOURCE_DIR}/*.json
471 # Generate the documentation:
473 DATE=$(date -u '+%d-%b-%Y')
475 sphinx-build -v -c . -a -b html -E \
476 -D release=$1 -D version="$1 report - $DATE" \
477 ${SOURCE_DIR} ${BUILD_DIR}/
479 # Patch the CSS for tables layout
480 cat - > ${CSS_PATCH_FILE} <<"_EOF"
481 /* override table width restrictions */
482 @media screen and (min-width: 767px) {
483 .wy-table-responsive table td, .wy-table-responsive table th {
484 white-space: normal !important;
487 .wy-table-responsive {
491 overflow: visible !important;
496 # Plot packets per second
498 python run_plot.py --input ${STATIC_DIR_VPP} \
499 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
500 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
501 --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"))]'
502 python run_plot.py --input ${STATIC_DIR_VPP} \
503 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
504 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
505 --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"))]'
507 python run_plot.py --input ${STATIC_DIR_VPP} \
508 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
509 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
510 --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"))]'
511 python run_plot.py --input ${STATIC_DIR_VPP} \
512 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
513 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
514 --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"))]'
516 python run_plot.py --input ${STATIC_DIR_VPP} \
517 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
518 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
519 --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"))]'
520 python run_plot.py --input ${STATIC_DIR_VPP} \
521 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
522 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
523 --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"))]'
525 python run_plot.py --input ${STATIC_DIR_VPP} \
526 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
527 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
528 --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"))]'
529 python run_plot.py --input ${STATIC_DIR_VPP} \
530 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
531 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
532 --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"))]'
534 python run_plot.py --input ${STATIC_DIR_VPP} \
535 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
536 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
537 --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"))]'
538 python run_plot.py --input ${STATIC_DIR_VPP} \
539 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
540 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
541 --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"))]'
543 python run_plot.py --input ${STATIC_DIR_VPP} \
544 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
545 --title "64B-1t1c-.*vhost.*-ndrdisc" \
546 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
547 python run_plot.py --input ${STATIC_DIR_VPP} \
548 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
549 --title "64B-2t2c-.*vhost.*-ndrdisc" \
550 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
552 python run_plot.py --input ${STATIC_DIR_VPP} \
553 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
554 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
555 --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"))]'
556 python run_plot.py --input ${STATIC_DIR_VPP} \
557 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
558 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
559 --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"))]'
561 python run_plot.py --input ${STATIC_DIR_VPP} \
562 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
563 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
564 --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"))]'
565 python run_plot.py --input ${STATIC_DIR_VPP} \
566 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
567 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
568 --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"))]'
570 python run_plot.py --input ${STATIC_DIR_VPP} \
571 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
572 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
573 --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"))]'
574 python run_plot.py --input ${STATIC_DIR_VPP} \
575 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
576 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
577 --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"))]'
579 python run_plot.py --input ${STATIC_DIR_VPP} \
580 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
581 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
582 --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"))]'
583 python run_plot.py --input ${STATIC_DIR_VPP} \
584 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
585 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
586 --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"))]'
588 python run_plot.py --input ${STATIC_DIR_VPP} \
589 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
590 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
591 --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"))]'
592 python run_plot.py --input ${STATIC_DIR_VPP} \
593 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
594 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
595 --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"))]'
597 python run_plot.py --input ${STATIC_DIR_VPP} \
598 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
599 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
600 --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"))]'
601 python run_plot.py --input ${STATIC_DIR_VPP} \
602 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
603 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
604 --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"))]'
606 python run_plot.py --input ${STATIC_DIR_VPP} \
607 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
608 --title "64B-1t1c-.*vhost.*-pdrdisc" \
609 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
610 python run_plot.py --input ${STATIC_DIR_VPP} \
611 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
612 --title "64B-2t2c-.*vhost.*-pdrdisc" \
613 --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
615 python run_plot.py --input ${STATIC_DIR_VPP} \
616 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
617 --title "64B-1t1c-.*ipsec.*-pdrdisc" \
618 --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"))]'
619 python run_plot.py --input ${STATIC_DIR_VPP} \
620 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
621 --title "64B-2t2c-.*ipsec.*-pdrdisc" \
622 --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"))]'
624 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
625 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc \
626 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
627 --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"))]'
628 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
629 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc \
630 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
631 --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"))]'
633 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
634 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-pdrdisc \
635 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
636 --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"))]'
637 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
638 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-pdrdisc \
639 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
640 --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"))]'
644 python run_plot.py --input ${STATIC_DIR_VPP} \
645 --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
646 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
647 --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
648 python run_plot.py --input ${STATIC_DIR_VPP} \
649 --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
650 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
651 --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
653 python run_plot.py --input ${STATIC_DIR_VPP} \
654 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
655 --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
656 --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
657 python run_plot.py --input ${STATIC_DIR_VPP} \
658 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
659 --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
660 --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
662 python run_plot.py --input ${STATIC_DIR_VPP} \
663 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
664 --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
665 --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
666 python run_plot.py --input ${STATIC_DIR_VPP} \
667 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
668 --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
669 --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
671 python run_plot.py --input ${STATIC_DIR_VPP} \
672 --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
673 --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
674 --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
675 python run_plot.py --input ${STATIC_DIR_VPP} \
676 --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
677 --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
678 --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
680 python run_plot.py --input ${STATIC_DIR_VPP} \
681 --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
682 --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
683 --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
684 python run_plot.py --input ${STATIC_DIR_VPP} \
685 --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
686 --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
687 --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
689 python run_plot.py --input ${STATIC_DIR_VPP} \
690 --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
691 --title "64B-1t1c-.*vhost.*-ndrdisc" \
692 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
693 python run_plot.py --input ${STATIC_DIR_VPP} \
694 --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
695 --title "64B-2t2c-.*vhost.*-ndrdisc" \
696 --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
698 python run_plot.py --input ${STATIC_DIR_VPP} \
699 --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
700 --title "64B-1t1c-.*ipsec.*-ndrdisc" \
701 --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
702 python run_plot.py --input ${STATIC_DIR_VPP} \
703 --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
704 --title "64B-2t2c-.*ipsec.*-ndrdisc" \
705 --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
707 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
708 --output ${STATIC_DIR_TESTPMD}/64B-1t1c-l2-ndrdisc-lat50 \
709 --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
710 --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
711 python run_plot.py --input ${STATIC_DIR_TESTPMD} \
712 --output ${STATIC_DIR_TESTPMD}/64B-2t2c-l2-ndrdisc-lat50 \
713 --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
714 --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
717 echo Creating csit.report.tar.gz ...
718 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}