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