Fix: Run-report script
[csit.git] / resources / tools / report_gen / run_report.sh
1 #!/bin/bash
2
3 set -x
4
5 # Build locally without jenkins integrations
6 DEBUG=0
7
8 # Build directories
9 WORKING_DIR='_tmp'
10 BUILD_DIR='_build'
11
12 STATIC_DIR="${BUILD_DIR}/_static"
13 STATIC_DIR_VPP="${STATIC_DIR}/vpp"
14 STATIC_DIR_DPDK="${STATIC_DIR}/dpdk"
15 STATIC_DIR_ARCH="${STATIC_DIR}/archive"
16 CSS_PATCH_FILE="${STATIC_DIR}/theme_overrides.css"
17
18 SOURCE_DIR='../../../docs/report'
19
20 PLOT_VPP_SOURCE_DIR=${WORKING_DIR}/vpp_plot
21 PLOT_DPDK_SOURCE_DIR=${WORKING_DIR}/dpdk_plot
22
23 DTR_SOURCE_DIR=${SOURCE_DIR}/detailed_test_results
24 DTR_PERF_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_performance_results
25 DTR_DPDK_SOURCE_DIR=${DTR_SOURCE_DIR}/dpdk_performance_results
26 DTR_FUNC_SOURCE_DIR=${DTR_SOURCE_DIR}/vpp_functional_results
27 DTR_HONEYCOMB_SOURCE_DIR=${DTR_SOURCE_DIR}/honeycomb_functional_results
28
29 DTC_SOURCE_DIR=${SOURCE_DIR}/test_configuration
30 DTC_PERF_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_performance_configuration
31 DTC_FUNC_SOURCE_DIR=${DTC_SOURCE_DIR}/vpp_functional_configuration
32
33 DTO_SOURCE_DIR=${SOURCE_DIR}/test_operational_data
34 DTO_PERF_SOURCE_OPER_DIR=${DTO_SOURCE_DIR}/vpp_performance_operational_data
35
36 # Jenkins links
37 CSIT_JEN_URL='https://jenkins.fd.io/view/csit/job'
38 HC_JEN_URL='https://jenkins.fd.io/view/hc2vpp/job'
39
40 sudo apt-get -y update
41 sudo apt-get -y install libxml2 libxml2-dev libxslt-dev build-essential \
42     zlib1g-dev unzip
43
44 # Clean-up when finished:
45 trap 'rm -rf ${WORKING_DIR}; exit' EXIT
46 trap 'rm -rf ${WORKING_DIR}; exit' ERR
47
48 # Remove the old build:
49 rm -rf ${BUILD_DIR} || true
50 rm -rf ${WORKING_DIR} || true
51
52 # Create working directories
53 mkdir ${BUILD_DIR}
54
55 # Create virtual environment:
56 virtualenv ${WORKING_DIR}/env
57 . ${WORKING_DIR}/env/bin/activate
58
59 # Install Sphinx:
60 pip install -r requirements.txt
61
62 export PYTHONPATH=`pwd`
63
64 # Download raw outputs for plots
65 echo Downloading raw outputs for plots ...
66 mkdir -p ${STATIC_DIR_VPP}
67 mkdir -p ${STATIC_DIR_DPDK}
68 mkdir -p ${STATIC_DIR_ARCH}
69 mkdir -p ${PLOT_VPP_SOURCE_DIR}
70 mkdir -p ${PLOT_DPDK_SOURCE_DIR}
71
72 ### VPP PERFORMANCE SOURCE DATA
73
74 JEN_FILE_PERF='output_perf_data.xml'
75 JEN_JOB='csit-vpp-perf-1704-all'
76 JEN_BUILD=(6 7 8 9 10 12 14 15 16 17)
77
78 for i in "${JEN_BUILD[@]}"; do
79     curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
80         -o ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
81     if [[ ${DEBUG} -eq 1 ]] ;
82     then
83         cp ./${JEN_JOB}-10.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-10.zip
84     else
85         curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
86             -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
87     fi
88 done
89
90 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-10.zip -d ${WORKING_DIR}/
91 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
92     --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results.rst \
93     --formatting rst --start 4 --level 2
94 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
95     --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration.rst \
96     --data "VAT_H" -f "rst" --start 4 --level 2
97 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
98     -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data.rst \
99     --data "SH_RUN" -f "rst" --start 4 --level 2
100 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
101     ${DTR_PERF_SOURCE_DIR}/index.rst
102 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
103     ${DTR_PERF_SOURCE_DIR}/index.rst
104 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
105     ${DTC_PERF_SOURCE_DIR}/index.rst
106 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
107     ${DTC_PERF_SOURCE_DIR}/index.rst
108 sed -i -e "s@###JOB###@${JEN_JOB}\/75@g" \
109     ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
110 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/75@g" \
111     ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
112
113 ### DPDK PERFORMANCE SOURCE DATA
114
115 JEN_JOB='csit-dpdk-perf-master-all'
116 JEN_BUILD=(13 14 15 16)
117
118 for i in "${JEN_BUILD[@]}"; do
119     curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
120         -o ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.xml
121     if [[ ${DEBUG} -eq 1 ]] ;
122     then
123         cp ./${JEN_JOB}-16.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-16.zip
124     else
125         curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
126             -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
127     fi
128 done
129
130 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-16.zip -d ${WORKING_DIR}/
131 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
132     --output ${DTR_DPDK_SOURCE_DIR}/dpdk_performance_results.rst \
133     --formatting rst --start 3 --level 2
134 sed -i -e "s@###JOB###@${JEN_JOB}\/16@g" \
135     ${DTR_DPDK_SOURCE_DIR}/index.rst
136 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/16@g" \
137     ${DTR_DPDK_SOURCE_DIR}/index.rst
138
139 ### FUNCTIONAL SOURCE DATA
140
141 JEN_JOB='csit-vpp-functional-master-ubuntu1604-virl'
142 JEN_BUILD='lastSuccessfulBuild'
143
144 if [[ ${DEBUG} -eq 1 ]] ;
145 then
146     cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
147 else
148     curl -fs ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
149         -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
150 fi
151
152 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
153 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
154     --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results.rst \
155     --formatting rst --start 5 --level 2
156 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
157     --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration.rst \
158     --data "VAT_H" -f "rst" --start 5 --level 2
159 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
160     ${DTR_FUNC_SOURCE_DIR}/index.rst
161 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
162     ${DTR_FUNC_SOURCE_DIR}/index.rst
163 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
164     ${DTC_FUNC_SOURCE_DIR}/index.rst
165 sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
166     ${DTC_FUNC_SOURCE_DIR}/index.rst
167
168 ### HONEYCOMB SOURCE DATA
169
170 JEN_JOB='hc2vpp-csit-integration-master-ubuntu1604'
171 JEN_BUILD='lastSuccessfulBuild'
172
173 if [[ ${DEBUG} -eq 1 ]] ;
174 then
175     cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
176 else
177     curl -fs ${HC_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
178         -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
179 fi
180
181 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
182 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
183     --output ${DTR_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \
184     --formatting rst --start 3 --level 2
185 sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
186     ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
187 sed -i -e "s@###LINK###@${HC_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
188     ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
189
190 # Delete temporary json files
191 find ${SOURCE_DIR} -name "*.json" -type f -delete
192
193 # Generate the documentation:
194
195 DATE=$(date -u '+%d-%b-%Y')
196
197 sphinx-build -v -c . -a -b html -E \
198     -D release=$1 -D version="$1 report - $DATE" \
199     ${SOURCE_DIR} ${BUILD_DIR}/
200
201 # Patch the CSS for tables layout
202 cat - > ${CSS_PATCH_FILE} <<"_EOF"
203 /* override table width restrictions */
204 @media screen and (min-width: 767px) {
205     .wy-table-responsive table td, .wy-table-responsive table th {
206         white-space: normal !important;
207     }
208
209     .wy-table-responsive {
210         font-size: small;
211         margin-bottom: 24px;
212         max-width: 100%;
213         overflow: visible !important;
214     }
215 }
216 _EOF
217
218 # Plot packets per second
219
220 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
221     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
222     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
223     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
224 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
225     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
226     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
227     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
228
229 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
230     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
231     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
232     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
233 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
234     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
235     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
236     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
237
238 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
239     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
240     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
241     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
242 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
243     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
244     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
245     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
246
247 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
248     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
249     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
250     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
251 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
252     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
253     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
254     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
255
256 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
257     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
258     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
259     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
260 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
261     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
262     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
263     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
264
265 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
266     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
267     --title "64B-1t1c-.*vhost.*-ndrdisc" \
268     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
269 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
270     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
271     --title "64B-2t2c-.*vhost.*-ndrdisc" \
272     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
273
274 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
275     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
276     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
277     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
278 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
279     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
280     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
281     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
282
283 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
284     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
285     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
286     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
287 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
288     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
289     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
290     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
291
292 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
293     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
294     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
295     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
296 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
297     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
298     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
299     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
300
301 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
302     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
303     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
304     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
305 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
306     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
307     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
308     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]'
309
310 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
311     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
312     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
313     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
314 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
315     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
316     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
317     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
318
319 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
320     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
321     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
322     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
323 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
324     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
325     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
326     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]'
327
328 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
329     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
330     --title "64B-1t1c-.*vhost.*-pdrdisc" \
331     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
332 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
333     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
334     --title "64B-2t2c-.*vhost.*-pdrdisc" \
335     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
336
337 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
338     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
339     --title "64B-1t1c-.*ipsec.*-pdrdisc" \
340     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
341 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
342     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
343     --title "64B-2t2c-.*ipsec.*-pdrdisc" \
344     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]'
345
346 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
347     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc \
348     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
349     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
350 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
351     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc \
352     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
353     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
354 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
355     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc \
356     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
357     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]'
358 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
359     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc \
360     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
361     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]'
362
363 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
364     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-pdrdisc \
365     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
366     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
367 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
368     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-pdrdisc \
369     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
370     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]'
371 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
372     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-pdrdisc \
373     --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
374     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]'
375 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
376     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-pdrdisc \
377     --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
378     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]'
379
380 # Plot latency
381
382 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
383     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
384     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
385     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
386 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
387     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
388     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
389     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
390
391 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
392     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
393     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
394     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
395 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
396     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
397     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
398     --xpath '//*[@framesize="64B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
399
400 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
401     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
402     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
403     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
404 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
405     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
406     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
407     --xpath '//*[@framesize="78B" and (contains(@tags,"BASE") or contains(@tags,"SCALE") or contains(@tags,"FEATURE")) and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP6FWD") and not(contains(@tags,"IPSEC")) and not(contains(@tags,"VHOST"))]' --latency lat_50
408
409 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
410     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
411     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
412     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
413 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
414     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
415     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
416     --xpath '//*[@framesize="64B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
417
418 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
419     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
420     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
421     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
422 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
423     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
424     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
425     --xpath '//*[@framesize="78B" and contains(@tags,"ENCAP") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"VXLAN") or contains(@tags,"VXLANGPE") or contains(@tags,"LISP") or contains(@tags,"LISPGPE") or contains(@tags,"GRE")) and not(contains(@tags,"VHOST"))]' --latency lat_50
426
427 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
428     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
429     --title "64B-1t1c-.*vhost.*-ndrdisc" \
430     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
431 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
432     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
433     --title "64B-2t2c-.*vhost.*-ndrdisc" \
434     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
435
436 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
437     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
438     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
439     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "1T1C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]' --latency lat_50
440 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
441     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
442     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
443     --xpath '//*[@framesize="64B" and not(contains(@tags, "VHOST")) and contains(@tags, "IP4FWD") and contains(@tags, "NDRDISC") and contains(@tags, "2T2C") and contains(@tags, "IPSECHW") and (contains(@tags, "IPSECTRAN") or contains(@tags, "IPSECTUN"))]' --latency lat_50
444
445 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
446     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc-lat50 \
447     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
448     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
449 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
450     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc-lat50 \
451     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
452     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and (contains(@tags,"L2BDMACSTAT") or contains(@tags,"L2BDMACLRN") or contains(@tags,"L2XCFWD")) and not(contains(@tags,"VHOST"))]' --latency lat_50
453 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
454     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc-lat50 \
455     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
456     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
457 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
458     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc-lat50 \
459     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
460     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
461
462 # Create archive
463 echo Creating csit.report.tar.gz ...
464 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}