summaryrefslogtreecommitdiffstats
path: root/.gitmodules
blob: 846ab2455ff2bff34295af6d30724b3eb59c112f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
[submodule "docs/submodules/apex"]
	path = docs/submodules/apex
	url = ../apex
	branch = .
	ignore = dirty
[submodule "docs/submodules/armband"]
	path = docs/submodules/armband
	url = ../armband
	branch = .
	ignore = dirty
[submodule "docs/submodules/auto"]
	path = docs/submodules/auto
	url = ../auto
	branch = .
	ignore = dirty
[submodule "docs/submodules/bottlenecks"]
	path = docs/submodules/bottlenecks
	url = ../bottlenecks
	branch = .
	ignore = dirty
[submodule "docs/submodules/compass4nfv"]
	path = docs/submodules/compass4nfv
	url = ../compass4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/container4nfv"]
	path = docs/submodules/container4nfv
	url = https://gerrit.opnfv.org/gerrit/container4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/copper"]
	path = docs/submodules/copper
	url = ../copper
	branch = .
	ignore = dirty
[submodule "docs/submodules/daisy"]
	path = docs/submodules/daisy
	url = ../daisy
	branch = .
	ignore = dirty
[submodule "docs/submodules/domino"]
	path = docs/submodules/domino
	url = ../domino
	branch = .
	ignore = dirty
[submodule "docs/submodules/dovetail"]
	path = docs/submodules/dovetail
	url = ../dovetail
	branch = .
	ignore = dirty
[submodule "docs/submodules/escalator"]
	path = docs/submodules/escalator
	url = ../escalator
	branch = .
	ignore = dirty
[submodule "docs/submodules/fastpathmetrics"]
	path = docs/submodules/fastpathmetrics
	url = ../fastpathmetrics
	branch = .
	ignore = dirty
[submodule "docs/submodules/fds"]
	path = docs/submodules/fds
	url = ../fds
	branch = .
	ignore = dirty
[submodule "docs/submodules/fuel"]
	path = docs/submodules/fuel
	url = ../fuel
	branch = .
	ignore = dirty
[submodule "docs/submodules/functest"]
	path = docs/submodules/functest
	url = ../functest
	branch = .
	ignore = dirty
[submodule "docs/submodules/ipv6"]
	path = docs/submodules/ipv6
	url = ../ipv6
	branch = .
	ignore = dirty
[submodule "docs/submodules/joid"]
	path = docs/submodules/joid
	url = ../joid
	branch = .
	ignore = dirty
[submodule "docs/submodules/kvmfornfv"]
	path = docs/submodules/kvmfornfv
	url = ../kvmfornfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/multisite"]
	path = docs/submodules/multisite
	url = ../multisite
	branch = .
	ignore = dirty
[submodule "docs/submodules/netready"]
	path = docs/submodules/netready
	url = ../netready
	branch = .
	ignore = dirty
[submodule "docs/submodules/nfvbench"]
	path = docs/submodules/nfvbench
	url = https://gerrit.opnfv.org/gerrit/nfvbench
	branch = .
	ignore = dirty
[submodule "docs/submodules/octopus"]
	path = docs/submodules/octopus
	url = ../octopus
	branch = .
	ignore = dirty
[submodule "docs/submodules/onosfw"]
	path = docs/submodules/onosfw
	url = ../onosfw
	branch = .
	ignore = dirty
[submodule "docs/submodules/orchestra"]
	path = docs/submodules/orchestra
	url = https://gerrit.opnfv.org/gerrit/orchestra
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovn4nfv"]
	path = docs/submodules/ovn4nfv
	url = https://gerrit.opnfv.org/gerrit/ovn4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovsnfv"]
	path = docs/submodules/ovsnfv
	url = ../ovsnfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/parser"]
	path = docs/submodules/parser
	url = ../parser
	branch = .
	ignore = dirty
[submodule "docs/submodules/pharos"]
	path = docs/submodules/pharos
	url = ../pharos
	branch = .
	ignore = dirty
[submodule "docs/submodules/promise"]
	path = docs/submodules/promise
	url = ../promise
	branch = .
	ignore = dirty
[submodule "docs/submodules/qtip"]
	path = docs/submodules/qtip
	url = ../qtip
	branch = .
	ignore = dirty
[submodule "docs/submodules/releng"]
	path = docs/submodules/releng
	url = ../releng
	branch = master
[submodule "docs/submodules/sdnvpn"]
	path = docs/submodules/sdnvpn
	url = ../sdnvpn
	branch = .
	ignore = dirty
[submodule "docs/submodules/sfc"]
	path = docs/submodules/sfc
	url = ../sfc
	branch = .
	ignore = dirty
[submodule "docs/submodules/storperf"]
	path = docs/submodules/storperf
	url = ../storperf
	branch = .
	ignore = dirty
[submodule "docs/submodules/stor4nfv"]
	path = docs/submodules/stor4nfv
	url = ../stor4nfv
	branch = .
	ignore = dirty
[submodule "docs/submodules/ves"]
	path = docs/submodules/ves
	url = ../ves
	branch = .
	ignore = dirty
[submodule "docs/submodules/vnf_forwarding_graph"]
	path = docs/submodules/vnf_forwarding_graph
	url = ../vnf_forwarding_graph
	branch = .
	ignore = dirty
[submodule "docs/submodules/vswitchperf"]
	path = docs/submodules/vswitchperf
	url = ../vswitchperf
	branch = .
	ignore = dirty
[submodule "docs/submodules/yardstick"]
	path = docs/submodules/yardstick
	url = ../yardstick
	branch = .
	ignore = dirty
[submodule "docs/submodules/doctor"]
	path = docs/submodules/doctor
	url = ../doctor
	branch = .
	ignore = dirty
[submodule "docs/submodules/availability"]
	path = docs/submodules/availability
	url = ../availability
	branch = .
	ignore = dirty
[submodule "docs/submodules/opera"]
	path = docs/submodules/opera
	url = ../opera
	branch = .
	ignore = dirty
[submodule "docs/submodules/samplevnf"]
	path = docs/submodules/samplevnf
	url = ../samplevnf
	branch = .
	ignore = dirty
[submodule "docs/submodules/snaps"]
	path = docs/submodules/snaps
	url = ../snaps
	branch = .
	ignore = dirty
[submodule "docs/submodules/barometer"]
	path = docs/submodules/barometer
	url = ../barometer
	branch = .
	ignore = dirty
[submodule "docs/submodules/releng-xci"]
	path = docs/submodules/releng-xci
	url = ../releng-xci
	branch = .
	ignore = dirty
[submodule "docs/submodules/ovno"]
	path = docs/submodules/ovno
	url = https://gerrit.opnfv.org/gerrit/ovno
	branch = .
	ignore = dirty
[submodule "docs/submodules/moon"]
	path = docs/submodules/moon
	url = ../moon
	branch = .
	ignore = dirty
[submodule "docs/submodules/calipso"]
	path = docs/submodules/calipso
	url = https://gerrit.opnfv.org/gerrit/calipso
	branch = .
	ignore = dirty
[submodule "docs/submodules/stor4nfv"]
	path = docs/submodules/stor4nfv
	url = https://gerrit.opnfv.org/gerrit/stor4nfv
[submodule "docs/submodules/clover"]
	path = docs/submodules/clover
	url = https://gerrit.opnfv.org/gerrit/clover
	branch = .
	ignore = dirty
quot; TEST_REPORT_INDEX="${TEST_REPORT_DIR}/index.rst" TEST_REPORT_LINK_OLD="https://wiki.opnfv.org/wiki/vsperf_results" TEST_REPORT_FILE="${WORKSPACE}/docs_output/results/results.pdf" TEST_REPORT_TARBALL="vswitchperf_logs_${DATE}.tar.gz" if [[ "x${BRANCH}" == "xmaster" ]]; then TEST_REPORT_LINK_NEW="https://artifacts.opnfv.org/logs/$PROJECT/$NODE_NAME/$DATE/${TEST_REPORT_TARBALL}" else TEST_REPORT_LINK_NEW="https://artifacts.opnfv.org/logs/$PROJECT/$NODE_NAME/$BRANCH/$DATE/${TEST_REPORT_TARBALL}" fi TEST_REPORT_LOG_DIR="${HOME}/opnfv/$PROJECT/results/$BRANCH" # # functions # # terminate vsperf and all its utilities # it is expected that vsperf is the only python3 app # and no other ovs or qemu instances are running # at CI machine # parameters: # none function terminate_vsperf() { sudo pkill stress &> /dev/null sudo pkill python3 &> /dev/null sudo killall -9 qemu-system-x86_64 &> /dev/null # sometimes qemu resists to terminate, so wait a bit and kill it again if pgrep qemu-system-x86_64 &> /dev/null ; then sleep 5 sudo killall -9 qemu-system-x86_64 &> /dev/null sleep 5 fi sudo pkill ovs-vswitchd &> /dev/null sleep 1 sudo pkill ovsdb-server &> /dev/null sleep 1 } # check and print testcase execution status # parameters: # $1 - directory with results function print_results() { for i in $TESTCASES ; do if [[ $i == *"pvp"* ]]; then DEPLOYMENT="pvp" elif [[ $i == *"pvvp"* ]]; then DEPLOYMENT="pvvp" else DEPLOYMENT="p2p" fi RES_FILE="result_${i}_${DEPLOYMENT}.csv" if [ -e "${1}/${RES_FILE}" ]; then printf " %-70s %-6s\n" $RES_FILE "OK" else printf " %-70s %-6s\n" $RES_FILE "FAILED" EXIT=$EXIT_TC_FAILED fi done } # execute tests and display results # parameters: # $1 - vswitch and vnf combination, one of OVS_vanilla, OVS_with_DPDK_and_vHost_Cuse, OVS_with_DPDK_and_vHost_User # $2 - CI job type, one of verify, merge, daily function execute_vsperf() { # figure out list of TCs and execution parameters case $2 in "verify") TESTPARAM=$TESTPARAM_VERIFY TESTCASES=$TESTCASES_VERIFY ;; "merge") TESTPARAM=$TESTPARAM_MERGE TESTCASES=$TESTCASES_MERGE ;; *) # by default use daily build TESTPARAM=$TESTPARAM_DAILY TESTCASES=$TESTCASES_DAILY ;; esac # execute testcases echo -e "\nExecution of VSPERF for $1" DATE_SUFFIX=$(date -u +"%Y-%m-%d_%H-%M-%S") case $1 in "OVS_vanilla") # figure out log file name LOG_SUBDIR="OvsVanilla" LOG_FILE="${LOG_FILE_PREFIX}_${LOG_SUBDIR}_${DATE_SUFFIX}.log" echo "$VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE" $VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsVanilla --vnf QemuVirtioNet $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE ;; "OVS_with_DPDK_and_vHost_Cuse") # figure out log file name LOG_SUBDIR="OvsDpdkVhostCuse" LOG_FILE="${LOG_FILE_PREFIX}_${LOG_SUBDIR}_${DATE_SUFFIX}.log" echo "$VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE" $VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostCuse $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE ;; *) # figure out log file name LOG_SUBDIR="OvsDpdkVhost" LOG_FILE="${LOG_FILE_PREFIX}_${LOG_SUBDIR}_${DATE_SUFFIX}.log" echo "$VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostUser $CONF_FILE $TESTPARAM $TESTCASES > $LOG_FILE" $VSPERF_BIN --opnfvpod="$NODE_NAME" --vswitch OvsDpdkVhost --vnf QemuDpdkVhostUser $CONF_FILE $TESTPARAM $TESTCASES &> $LOG_FILE ;; esac # evaluation of results echo -e "\nResults for $1" RES_DIR="/$(grep "Creating result directory" $LOG_FILE | cut -d'/' -f2-)" if [[ "/" == "${RES_DIR}" ]] ; then echo "FAILURE: Results are not available." exit $EXIT_NO_RESULTS else print_results "${RES_DIR}" fi # show detailed result figures for md_file in $(grep '\.md"$' $LOG_FILE | cut -d'"' -f2); do # TC resut file header echo -e "\n-------------------------------------------------------------------" echo -e " $md_file" echo -e "-------------------------------------------------------------------\n" # TC details sed -n '/^- Test ID/,/Bidirectional/{/Packet size/b;p;/Bidirectional/q};/Results\/Metrics Collected/,/Statistics collected/{/^$/p;/^|/p}' $md_file # TC results sed -n '/Results\/Metrics Collected/,/Statistics collected/{/^$/p;/^|/p}' $md_file | grep -v "Unknown" | cat -s done # add test results into the final doc template for report in ${RES_DIR}/${TEST_REPORT_PARTIAL} ; do # modify link to the artifactory with test report and logs if [ -f $report ] ; then sed -i -e "s,$TEST_REPORT_LINK_OLD,$TEST_REPORT_LINK_NEW," "$report" cp $report $TEST_REPORT_DIR echo " $(basename $report)" >> $TEST_REPORT_INDEX fi done # copy logs into dedicated directory mkdir ${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR} [ -f "$LOG_FILE" ] && cp -a "${LOG_FILE}" "${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}" &> /dev/null [ -d "$RES_DIR" ] && cp -ar "$RES_DIR" "${TEST_REPORT_LOG_DIR}/${LOG_SUBDIR}" &> /dev/null } # generates final test_report in PDF and HTML formats function generate_report() { # prepare final tarball with all logs... tar --exclude "${TEST_REPORT_TARBALL}" -czf "${TEST_REPORT_LOG_DIR}/${TEST_REPORT_TARBALL}" $(find "${TEST_REPORT_LOG_DIR}" -mindepth 1 -maxdepth 1 -type d) # ...and remove original log files find "${TEST_REPORT_LOG_DIR}" -mindepth 1 -maxdepth 1 -type d -exec rm -rf \{\} \; # clone releng repository echo "Cloning releng repository..." [ -d releng ] && rm -rf releng git clone https://gerrit.opnfv.org/gerrit/releng &> /dev/null # generate final docs with test results echo "Generating test report..." sed -ie 's,python ,python2 ,g' ./releng/utils/docs-build.sh ./releng/utils/docs-build.sh &> /dev/null # store PDF with test results into dedicated directory if [ -f $TEST_REPORT_FILE ] ; then cp -a $TEST_REPORT_FILE $TEST_REPORT_LOG_DIR echo "Final test report has been created." else echo "FAILURE: Generation of final test report has failed." fi } # pushes test report and logs collected during test execution into artifactory function push_results_to_artifactory() { echo "Pushing results and logs into artifactory..." . ./releng/utils/push-test-logs.sh "$DATE" # enter workspace as it could be modified by 3rd party script cd $WORKSPACE } # removes any local changes of repository function cleanup() { echo "Cleaning up..." git stash -u } # prepares directory for logs collection and removes old logs function initialize_logdir() { if [[ "x$TEST_REPORT_LOG_DIR" == "x" ]] ; then echo "FAILURE: Logging directory is not defined. Logs and report cannot be published!" exit $EXIT_NO_TEST_REPORT_LOG_DIR else # remove TEST_REPORT_LOG_DIR if it exists if [ -e $TEST_REPORT_LOG_DIR ] ; then if [ -f $TEST_REPORT_LOG_DIR ] ; then rm $TEST_REPORT_LOG_DIR else rm -rf ${TEST_REPORT_LOG_DIR} fi fi # create TEST_REPORT_LOG_DIR mkdir -p $TEST_REPORT_LOG_DIR fi } # # main # # enter workspace dir cd $WORKSPACE # initialization initialize_logdir # execute job based on passed parameter case $1 in "verify") echo "VSPERF verify job" echo "=================" #execute_vsperf OVS_with_DPDK_and_vHost_User $1 exit $EXIT ;; "merge") echo "VSPERF merge job" echo "================" #execute_vsperf OVS_with_DPDK_and_vHost_User $1 exit $EXIT ;; *) echo "VSPERF daily job" echo "================" terminate_vsperf execute_vsperf OVS_with_DPDK_and_vHost_User $1 terminate_vsperf execute_vsperf OVS_vanilla $1 terminate_vsperf generate_report push_results_to_artifactory cleanup exit $EXIT ;; esac exit $EXIT # # end #