Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-ci
Path: blob/main/jobs/FreeBSD-main-amd64-test_tcptestsuite/build.sh
1130 views
1
#!/bin/sh
2
3
export TARGET=amd64
4
export TARGET_ARCH=amd64
5
6
# modified freebsd-ci/scripts/test/run-tests.sh:
7
8
SSL_CA_CERT_FILE=/usr/local/share/certs/ca-root-nss.crt
9
10
if [ -z "${GIT_COMMIT}" ]; then
11
echo "No git commit id specified"
12
exit 1
13
fi
14
15
ARTIFACT_SERVER=${ARTIFACT_SERVER:-artifact.ci.freebsd.org}
16
ARTIFACT_SUBDIR=snapshot/${FBSD_BRANCH}/${GIT_COMMIT}/${TARGET}/${TARGET_ARCH}
17
IMG_NAME=disk-test.img
18
JOB_DIR=freebsd-ci/jobs/${JOB_NAME}
19
TEST_BASE=freebsd-ci/scripts/test
20
21
TIMEOUT_MS=${BUILD_TIMEOUT:-5400000}
22
TIMEOUT=$((${TIMEOUT_MS} / 1000))
23
TIMEOUT_EXPECT=$((${TIMEOUT} - 60))
24
TIMEOUT_VM=$((${TIMEOUT_EXPECT} - 120))
25
26
EXTRA_DISK_NUM=5
27
EXTRA_DISK_SIZE=8G
28
BHYVE_EXTRA_DISK_PARAM=""
29
30
METADIR=meta
31
METAOUTDIR=meta-out
32
33
TEST_VM_MEMORY=8192m
34
35
fetch https://${ARTIFACT_SERVER}/${ARTIFACT_SUBDIR}/${IMG_NAME}.zst
36
zstd --rm -fd ${IMG_NAME}.zst
37
38
for i in `jot ${EXTRA_DISK_NUM}`; do
39
truncate -s ${EXTRA_DISK_SIZE} disk${i}
40
BHYVE_EXTRA_DISK_PARAM="${BHYVE_EXTRA_DISK_PARAM} -s $((i + 3)):0,virtio-blk,disk${i}"
41
done
42
43
DISK_TMP=disktmp
44
truncate -s 32G ${DISK_TMP}
45
BHYVE_EXTRA_DISK_PARAM="${BHYVE_EXTRA_DISK_PARAM} -s $((${EXTRA_DISK_NUM} + 4)):0,virtio-blk,${DISK_TMP}"
46
47
# prepare meta disk to pass information to testvm
48
rm -fr ${METADIR}
49
mkdir ${METADIR}
50
cp -R ${JOB_DIR}/${METADIR}/ ${METADIR}/
51
for i in ${USE_TEST_SUBR}; do
52
cp ${TEST_BASE}/subr/${i} ${METADIR}/
53
done
54
touch ${METADIR}/auto-shutdown
55
sh -ex ${TEST_BASE}/create-meta.sh
56
57
# run test VM image with bhyve
58
FBSD_BRANCH_SHORT=`echo ${FBSD_BRANCH} | sed -e 's,.*-,,'`
59
TEST_VM_NAME="testvm-${FBSD_BRANCH_SHORT}-${TARGET_ARCH}-${BUILD_NUMBER}"
60
sudo /usr/sbin/bhyvectl --vm=${TEST_VM_NAME} --destroy || true
61
sudo /usr/sbin/bhyveload -c stdio -m ${TEST_VM_MEMORY} -d ${IMG_NAME} ${TEST_VM_NAME}
62
set +e
63
expect -c "set timeout ${TIMEOUT_EXPECT}; \
64
spawn sudo /usr/bin/timeout -k 60 ${TIMEOUT_VM} /usr/sbin/bhyve \
65
-c 2 -m ${TEST_VM_MEMORY} -H -P \
66
-s 0:0,hostbridge \
67
-s 1:0,lpc \
68
-s 2:0,virtio-blk,${IMG_NAME} \
69
-s 3:0,virtio-blk,meta.tar \
70
${BHYVE_EXTRA_DISK_PARAM} \
71
-l com1,stdio \
72
${TEST_VM_NAME}; \
73
expect { eof }"
74
rc=$?
75
echo "bhyve return code = $rc"
76
sudo /usr/sbin/bhyvectl --vm=${TEST_VM_NAME} --destroy
77
78
# extract test result
79
sh -ex ${TEST_BASE}/extract-meta.sh
80
rm -f test-report.*
81
mv ${METAOUTDIR}/test-report.* .
82
83
for i in `jot ${EXTRA_DISK_NUM}`; do
84
rm -f disk${i}
85
done
86
rm -f ${DISK_TMP}
87
rm -f ${IMG_NAME}
88
89