CSIT-618 CSIT rls1707 Report - Update I
[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-master-all'
76 JEN_BUILD=(1567)
77 JEN_FBUILD=1567
78
79 for i in "${JEN_BUILD[@]}"; do
80     curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
81         -o ${PLOT_VPP_SOURCE_DIR}/${JEN_JOB}-${i}.xml
82     if [[ ${DEBUG} -eq 1 ]] ;
83     then
84         cp ./${JEN_JOB}-${JEN_FBUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip
85     else
86         curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
87             -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
88     fi
89 done
90
91 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_FBUILD}.zip -d ${WORKING_DIR}/
92 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
93     --output ${DTR_PERF_SOURCE_DIR}/vpp_performance_results.rst \
94     --formatting rst --start 4 --level 2
95 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
96     --output ${DTC_PERF_SOURCE_DIR}/vpp_performance_configuration.rst \
97     --data "VAT_H" -f "rst" --start 4 --level 2
98 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
99     -o ${DTO_PERF_SOURCE_OPER_DIR}/vpp_performance_operational_data.rst \
100     --data "SH_RUN" -f "rst" --start 4 --level 2
101 if [[ ${DEBUG} -eq 0 ]] ;
102 then
103     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
104         ${DTR_PERF_SOURCE_DIR}/index.rst
105     sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
106         ${DTR_PERF_SOURCE_DIR}/index.rst
107     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
108         ${DTC_PERF_SOURCE_DIR}/index.rst
109     sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
110         ${DTC_PERF_SOURCE_DIR}/index.rst
111     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_FBUILD}@g" \
112         ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
113     sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_FBUILD}@g" \
114         ${DTO_PERF_SOURCE_OPER_DIR}/index.rst
115 fi
116
117 ### DPDK PERFORMANCE SOURCE DATA
118
119 JEN_JOB='csit-dpdk-perf-1707-all'
120 JEN_BUILD=(1 2 3 4)
121
122 for i in "${JEN_BUILD[@]}"; do
123     curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/output_perf_data.xml \
124         -o ${PLOT_DPDK_SOURCE_DIR}/${JEN_JOB}-${i}.xml
125     if [[ ${DEBUG} -eq 1 ]] ;
126     then
127         cp ./${JEN_JOB}-${JEN_BUILD[-1]}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip
128     else
129         curl --fail -fs ${CSIT_JEN_URL}/${JEN_JOB}/${i}/robot/report/\*zip\*/robot-plugin.zip \
130             -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${i}.zip
131
132         sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
133             ${DTR_DPDK_SOURCE_DIR}/index.rst
134         sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD[-1]}@g" \
135             ${DTR_DPDK_SOURCE_DIR}/index.rst
136     fi
137 done
138
139 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD[-1]}.zip -d ${WORKING_DIR}/
140 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
141     --output ${DTR_DPDK_SOURCE_DIR}/dpdk_performance_results.rst \
142     --formatting rst --start 4 --level 2
143
144 ### FUNCTIONAL SOURCE DATA
145
146 JEN_JOB='csit-vpp-functional-1707-ubuntu1604-virl'
147 JEN_BUILD='lastSuccessfulBuild'
148
149 if [[ ${DEBUG} -eq 1 ]] ;
150 then
151     cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
152 else
153     curl -fs ${CSIT_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
154         -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
155
156     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
157         ${DTR_FUNC_SOURCE_DIR}/index.rst
158     sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
159         ${DTR_FUNC_SOURCE_DIR}/index.rst
160     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
161         ${DTC_FUNC_SOURCE_DIR}/index.rst
162     sed -i -e "s@###LINK###@${CSIT_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
163         ${DTC_FUNC_SOURCE_DIR}/index.rst
164 fi
165
166 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
167 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
168     --output ${DTR_FUNC_SOURCE_DIR}/vpp_functional_results.rst \
169     --formatting rst --start 5 --level 2
170 python run_robot_teardown_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
171     --output ${DTC_FUNC_SOURCE_DIR}/vpp_functional_configuration.rst \
172     --data "VAT_H" -f "rst" --start 5 --level 2
173
174 ### HONEYCOMB SOURCE DATA
175
176 JEN_JOB='hc2vpp-csit-integration-1707-ubuntu1604'
177 JEN_BUILD='lastSuccessfulBuild'
178
179 if [[ ${DEBUG} -eq 1 ]] ;
180 then
181     cp ./${JEN_JOB}-${JEN_BUILD}.zip ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
182 else
183     curl -fs ${HC_JEN_URL}/${JEN_JOB}/${JEN_BUILD}/robot/report/\*zip\*/robot-plugin.zip \
184         -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip
185
186     sed -i -e "s@###JOB###@${JEN_JOB}\/${JEN_BUILD}@g" \
187         ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
188     sed -i -e "s@###LINK###@${HC_JEN_URL}\/${JEN_JOB}\/${JEN_BUILD}@g" \
189         ${DTR_HONEYCOMB_SOURCE_DIR}/index.rst
190 fi
191
192 unzip -o ${STATIC_DIR_ARCH}/${JEN_JOB}-${JEN_BUILD}.zip -d ${WORKING_DIR}/
193 python run_robot_data.py -i ${WORKING_DIR}/robot-plugin/output.xml \
194     --output ${DTR_HONEYCOMB_SOURCE_DIR}/honeycomb_functional_results.rst \
195     --formatting rst --start 5 --level 2
196
197 # Delete temporary json files
198 find ${SOURCE_DIR} -name "*.json" -type f -delete
199
200 # Generate the documentation
201
202 DATE=$(date -u '+%d-%b-%Y')
203
204 sphinx-build -v -c . -a -b html -E \
205     -D release=$1 -D version="$1 report - $DATE" \
206     ${SOURCE_DIR} ${BUILD_DIR}/
207
208 # Patch the CSS for tables layout
209 cat - > ${CSS_PATCH_FILE} <<"_EOF"
210 /* override table width restrictions */
211 @media screen and (min-width: 767px) {
212     .wy-table-responsive table td, .wy-table-responsive table th {
213         white-space: normal !important;
214     }
215
216     .wy-table-responsive {
217         font-size: small;
218         margin-bottom: 24px;
219         max-width: 100%;
220         overflow: visible !important;
221     }
222 }
223 _EOF
224
225 # Plot packets per second
226
227 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
228     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc \
229     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
230     --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"))]'
231 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
232     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc \
233     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
234     --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"))]'
235
236 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
237     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc \
238     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
239     --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"))]'
240 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
241     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc \
242     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
243     --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"))]'
244
245 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
246     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc \
247     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
248     --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"))]'
249 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
250     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc \
251     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
252     --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"))]'
253
254 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
255     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc \
256     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
257     --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"))]'
258 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
259     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc \
260     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
261     --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"))]'
262
263 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
264     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc \
265     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
266     --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"))]'
267 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
268     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc \
269     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
270     --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"))]'
271
272 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
273     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc \
274     --title "64B-1t1c-.*vhost.*-ndrdisc" \
275     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]'
276 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
277     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc \
278     --title "64B-2t2c-.*vhost.*-ndrdisc" \
279     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]'
280
281 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
282     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc \
283     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
284     --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"))]'
285 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
286     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc \
287     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
288     --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"))]'
289
290 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
291     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-pdrdisc \
292     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
293     --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"))]'
294 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
295     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-pdrdisc \
296     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
297     --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"))]'
298
299 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
300     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-pdrdisc \
301     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
302     --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"))]'
303 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
304     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-pdrdisc \
305     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*pdrdisc" \
306     --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"))]'
307
308 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
309     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-pdrdisc \
310     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
311     --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"))]'
312 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
313     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-pdrdisc \
314     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*pdrdisc" \
315     --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"))]'
316
317 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
318     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-pdrdisc \
319     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
320     --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"))]'
321 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
322     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-pdrdisc \
323     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-pdrdisc" \
324     --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"))]'
325
326 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
327     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-pdrdisc \
328     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
329     --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"))]'
330 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
331     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-pdrdisc \
332     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-pdrdisc" \
333     --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"))]'
334
335 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
336     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-pdrdisc \
337     --title "64B-1t1c-.*vhost.*-pdrdisc" \
338     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"1T1C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
339 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
340     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-pdrdisc \
341     --title "64B-2t2c-.*vhost.*-pdrdisc" \
342     --xpath '//*[@framesize="64B" and contains(@tags,"PDRDISC") and contains(@tags,"2T2C") and not(contains(@tags,"NDRDISC")) and contains(@tags,"VHOST")]'
343
344 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
345     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-pdrdisc \
346     --title "64B-1t1c-.*ipsec.*-pdrdisc" \
347     --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"))]'
348 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
349     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-pdrdisc \
350     --title "64B-2t2c-.*ipsec.*-pdrdisc" \
351     --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"))]'
352
353 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
354     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc \
355     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
356     --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"))]'
357 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
358     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc \
359     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
360     --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"))]'
361 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
362     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc \
363     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
364     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
365     --lower 2000000 --upper 12000000
366 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
367     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc \
368     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
369     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
370     --lower 2000000 --upper 12000000
371
372 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
373     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-pdrdisc \
374     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
375     --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"))]'
376 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
377     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-pdrdisc \
378     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-pdrdisc" \
379     --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"))]'
380 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
381     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-pdrdisc \
382     --title "64B-1t1c-ethip4-ip4base-l3fwd-pdrdisc" \
383     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' \
384     --lower 20000000 --upper 30000000
385 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
386     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-pdrdisc \
387     --title "64B-2t2c-ethip4-ip4base-l3fwd-pdrdisc" \
388     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"PDRDISC") and not(contains(@tags,"NDRDISC")) and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' \
389     --lower 20000000 --upper 30000000
390
391 # Plot latency
392
393 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
394     --output ${STATIC_DIR_VPP}/64B-1t1c-l2-ndrdisc-lat50 \
395     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
396     --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
397 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
398     --output ${STATIC_DIR_VPP}/64B-2t2c-l2-ndrdisc-lat50 \
399     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
400     --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
401
402 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
403     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ip4-ndrdisc-lat50 \
404     --title "64B-1t1c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
405     --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
406 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
407     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ip4-ndrdisc-lat50 \
408     --title "64B-2t2c-ethip4-ip4[a-z0-9]+-[a-z-]*ndrdisc" \
409     --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
410
411 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
412     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ip6-ndrdisc-lat50 \
413     --title "78B-1t1c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
414     --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
415 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
416     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ip6-ndrdisc-lat50 \
417     --title "78B-2t2c-ethip6-ip6[a-z0-9]+-[a-z-]*ndrdisc" \
418     --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
419
420 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
421     --output ${STATIC_DIR_VPP}/64B-1t1c-ethip4-ndrdisc-lat50 \
422     --title "64B-1t1c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
423     --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
424 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
425     --output ${STATIC_DIR_VPP}/64B-2t2c-ethip4-ndrdisc-lat50 \
426     --title "64B-2t2c-ethip4[a-z0-9]+-[a-z0-9]*-ndrdisc" \
427     --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
428
429 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
430     --output ${STATIC_DIR_VPP}/78B-1t1c-ethip6-ndrdisc-lat50 \
431     --title "78B-1t1c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
432     --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
433 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
434     --output ${STATIC_DIR_VPP}/78B-2t2c-ethip6-ndrdisc-lat50 \
435     --title "78B-2t2c-ethip6[a-z0-9]+-[a-z0-9]*-ndrdisc" \
436     --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
437
438 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
439     --output ${STATIC_DIR_VPP}/64B-1t1c-vhost-ndrdisc-lat50 \
440     --title "64B-1t1c-.*vhost.*-ndrdisc" \
441     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"VHOST")]' --latency lat_50
442 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
443     --output ${STATIC_DIR_VPP}/64B-2t2c-vhost-ndrdisc-lat50 \
444     --title "64B-2t2c-.*vhost.*-ndrdisc" \
445     --xpath '//*[@framesize="64B" and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"VHOST")]' --latency lat_50
446
447 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
448     --output ${STATIC_DIR_VPP}/64B-1t1c-ipsechw-ndrdisc-lat50 \
449     --title "64B-1t1c-.*ipsec.*-ndrdisc" \
450     --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
451 python run_plot.py --input ${PLOT_VPP_SOURCE_DIR} \
452     --output ${STATIC_DIR_VPP}/64B-2t2c-ipsechw-ndrdisc-lat50 \
453     --title "64B-2t2c-.*ipsec.*-ndrdisc" \
454     --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
455
456 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
457     --output ${STATIC_DIR_DPDK}/64B-1t1c-l2-ndrdisc-lat50 \
458     --title "64B-1t1c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
459     --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
460 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
461     --output ${STATIC_DIR_DPDK}/64B-2t2c-l2-ndrdisc-lat50 \
462     --title "64B-2t2c-(eth|dot1q|dot1ad)-(l2xcbase|l2bdbasemaclrn)-ndrdisc" \
463     --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
464 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
465     --output ${STATIC_DIR_DPDK}/64B-1t1c-ipv4-ndrdisc-lat50 \
466     --title "64B-1t1c-ethip4-ip4base-l3fwd-ndrdisc" \
467     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"1T1C") and contains(@tags,"IP4FWD")]' --latency lat_50
468 python run_plot.py --input ${PLOT_DPDK_SOURCE_DIR} \
469     --output ${STATIC_DIR_DPDK}/64B-2t2c-ipv4-ndrdisc-lat50 \
470     --title "64B-2t2c-ethip4-ip4base-l3fwd-ndrdisc" \
471     --xpath '//*[@framesize="64B" and contains(@tags,"BASE") and contains(@tags,"NDRDISC") and contains(@tags,"2T2C") and contains(@tags,"IP4FWD")]' --latency lat_50
472
473 # Create archive
474 echo Creating csit.report.tar.gz ...
475 tar -czvf ./csit.report.tar.gz ${BUILD_DIR}