Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147484743
D48015.id154024.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
8 KB
Referenced Files
None
Subscribers
None
D48015.id154024.diff
View Options
diff --git a/tests/ci/Makefile b/tests/ci/Makefile
--- a/tests/ci/Makefile
+++ b/tests/ci/Makefile
@@ -8,8 +8,9 @@
# Makefile for CI testing.
#
# User-driven targets:
-# ci: Run CI tests. Currently only smoke tests are supported.
-# ci-smokeit: Currently same as ci.
+# ci: Run CI tests
+# ci-smoke: Run smoke tests which is simply booting the image
+# ci-full: Run full tests
#
# Variables affecting the build process:
# TARGET/TARGET_ARCH: architecture of built release (default: same as build host)
@@ -68,11 +69,25 @@
VMFS?= ufs
FORMAT= raw
CIIMAGE= ci-${OSRELEASE}-${GITREV}-${KERNCONF}.${FORMAT}
+CIDISK?= ${.OBJDIR}/${CIIMAGE}
VMSIZE?= 6g
-CITYPE?=
+CITYPE?= full
+META_TAR!=mktemp /tmp/meta.XXXXXX
+META_DIR!=mktemp -d /tmp/meta.XXXXXX
+META_DIROUT!=mktemp -d /tmp/meta.XXXXXX
+DISC_CAM!=truncate -s 128m /tmp/disk-cam
+EXTRA_DISK_NUM?=5
+DISK_NUMBERS!=jot - 1 ${EXTRA_DISK_NUM}
+BHYVE_EXTRA_DISK_PARAM?=
+BHYVE_EXTRA_DISK_PARAM+=-s 4:0,ahci-hd,/tmp/disk-cam
+.for i in ${DISK_NUMBERS}
+NEW_DISK!=truncate -s 128m /tmp/disk${i}
+BHYVE_EXTRA_DISK_PARAM+=-s $$((${i} + 4)):0,virtio-blk,/tmp/disk${i}
+CLEANFILES+=/tmp/disk${i}
+.endfor
TEST_VM_NAME= ci-${OSRELEASE}-${GITREV}-${KERNCONF}
.if ${TOTAL_MEMORY} >= 16
-VM_MEM!=expr ${TOTAL_MEMORY} / 2
+VM_MEM=8
.elif ${TOTAL_MEMORY} >=4
VM_MEM=${TOTAL_MEMORY}
.else
@@ -117,10 +132,10 @@
METAMODE?=-DWITH_META_MODE
.endif
-CLEANFILES= ${CIIMAGE} ci.img
-CLEANDIRS= ci-buildimage
+CLEANFILES+= ${.OBJDIR}/${CIIMAGE} ${.OBJDIR}/ci.img ${META_TAR}
+CLEANDIRS+= ${.OBJDIR}/ci-buildimage
-portinstall: portinstall-pkg portinstall-qemu portinstall-expect portinstall-${TARGET_ARCH:tl} .PHONY
+portinstall: portinstall-pkg portinstall-qemu portinstall-expect portinstall-${TARGET_ARCH:tl} portinstall-xmlstarlet .PHONY
portinstall-pkg: .PHONY
.if !exists(/usr/local/sbin/pkg-static)
@@ -140,12 +155,19 @@
env ASSUME_ALWAYS_YES=yes pkg install lang/expect
.endif
+portinstall-xmlstarlet: portinstall-pkg .PHONY
+.if !exists(/usr/local/bin/xml)
+ env ASSUME_ALWAYS_YES=yes pkg install textproc/xmlstarlet
+.endif
+
beforeclean: .PHONY
- chflags -R noschg .
+ chflags -R noschg ${.OBJDIR}/${.TARGET}
.include <bsd.obj.mk>
clean: beforeclean .PHONY
+cleandir: beforeclean .PHONY
+
ci-buildworld: .PHONY
@echo "Building world for ${TARGET_ARCH}"
${IMAKE} -j${PARALLEL_JOBS} -C ${WORLDDIR} ${METAMODE} \
@@ -155,7 +177,7 @@
ci-buildkernel: ci-buildworld-${TARGET_ARCH:tl} .PHONY
- @echo "Building kenrel for ${TARGET_ARCH"}"
+ @echo "Building kernel for ${TARGET_ARCH"}"
${IMAKE} -j${PARALLEL_JOBS} -C ${WORLDDIR} ${METAMODE} \
${CROSS_TOOLCHAIN_PARAM} __MAKE_CONF=${MAKECONF} \
SRCCONF=${SRCCONF} buildkernel > ${.CURDIR}/_.${TARGET_ARCH}.${.TARGET} 2>&1 || \
@@ -174,19 +196,28 @@
(echo "${.TARGET} failed, check _.${TARGET_ARCH}.${.TARGET} for details" ; false)
touch ${.TARGET}
-ci-setsmokevar: .PHONY
+ci-set-smoke-var: .PHONY
CITYPE=smoke
+ci-set-full-var: .PHONY
+CITYPE=full
+
+ci-create-meta: .PHONY
+ truncate -s 512M ${META_TAR}
+ tar rvf ${META_TAR} -C ${META_DIR} .
+
ci-runtest: ci-buildimage-${TARGET_ARCH:tl} portinstall .PHONY
.if ${MACHINE} == "amd64" && ( ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" ) && ( !defined(USE_QEMU) || empty(USE_QEMU) )
/usr/sbin/bhyvectl --vm=${TEST_VM_NAME} --destroy || true
- /usr/sbin/bhyveload -c stdio -m ${VM_MEM_SIZE} -d ${CIIMAGE} ${TEST_VM_NAME}
+ /usr/sbin/bhyveload -c stdio -m ${VM_MEM_SIZE} -d ${CIDISK} ${TEST_VM_NAME}
expect -c "set timeout ${TIMEOUT_EXPECT}; \
spawn /usr/bin/timeout -k 60 ${TIMEOUT_VM} /usr/sbin/bhyve \
-c ${PARALLEL_JOBS} -m ${VM_MEM_SIZE} -A -H -P \
-s 0:0,hostbridge \
-s 1:0,lpc \
- -s 2:0,virtio-blk,${CIIMAGE} \
+ -s 2:0,virtio-blk,${CIDISK} \
+ -s 3:0,virtio-blk,${META_TAR} \
+ ${BHYVE_EXTRA_DISK_PARAM} \
-l com1,stdio \
${TEST_VM_NAME}; \
expect { eof }"
@@ -199,7 +230,8 @@
-nographic \
-no-reboot \
${QEMU_EXTRA_PARAM} \
- -drive if=none,file=${CIIMAGE},format=raw,id=hd0 \
+ -drive if=none,file=${CIDISK},format=raw,id=hd0 \
+ -drive if=none,file=${META_TAR},format=raw,id=hd1 \
${QEMU_DEVICES}
.endif
@@ -215,8 +247,10 @@
@echo "Error: ${TARGET_ARCH} is not supported on ${TYPE} ${REVISION} ${BRANCH}"
.endif
-ci-smokeit: ci-setsmokevar ci-checktarget .WAIT ci-runtest-${TARGET_ARCH:tl} .PHONY
+ci-smoke: ci-set-smoke-var ci-create-meta ci-checktarget .WAIT ci-runtest-${TARGET_ARCH:tl} .PHONY
+
+ci-full: ci-set-full-var ci-create-meta ci-checktarget .WAIT ci-runtest-${TARGET_ARCH:tl} .PHONY
-ci: ci-smokeit .PHONY
+ci: ci-${CITYPE:tl} .PHONY
.include "${RELEASEDIR}/Makefile.inc1"
diff --git a/tests/ci/tools/ci.conf b/tests/ci/tools/ci.conf
--- a/tests/ci/tools/ci.conf
+++ b/tests/ci/tools/ci.conf
@@ -11,7 +11,7 @@
export VM_RC_LIST="auditd freebsdci"
if [ "${CITYPE}" != "smoke" ]; then
-export VM_EXTRA_PACKAGES="coreutils devel/py-pytest gdb jq ksh93 net/py-dpkt net/scapy nist-kat nmap perl5 python python3 sudo tcptestsuite"
+export VM_EXTRA_PACKAGES="coreutils devel/py-pytest gdb jq ksh93 net/py-dpkt net/scapy nist-kat nmap perl5 python python3 sudo sysutils/porch tcptestsuite"
if [ "${TARGET}" = "amd64" ]; then
export VM_EXTRA_PACKAGES="${VM_EXTRA_PACKAGES} linux-c7-ltp"
@@ -41,6 +41,7 @@
kld_list="" # Load modules needed by tests
kld_list="${kld_list} blake2" # sys/opencrypto
kld_list="${kld_list} cryptodev" # sys/opencrypto
+kld_list="${kld_list} dummymbuf" # sys/netpfil
kld_list="${kld_list} fusefs" # sys/fs/fusefs
kld_list="${kld_list} ipsec" # sys/netipsec
kld_list="${kld_list} mac_portacl" # sys/mac/portacl
@@ -64,6 +65,10 @@
cat << EOF >> ${DESTDIR}/etc/rc.conf
freebsdci_type="smoke"
EOF
+elif [ "${CITYPE}" = "full" ]; then
+cat << EOF >> ${DESTDIR}/etc/rc.conf
+freebsdci_type="full"
+EOF
fi
cat << EOF >> ${DESTDIR}/etc/sysctl.conf
kern.cryptodevallowsoft=1
@@ -77,7 +82,6 @@
fdesc /dev/fd fdescfs rw 0 0
EOF
mkdir -p ${DESTDIR}/usr/local/etc/rc.d
- echo $scriptdir
cp -p ${scriptdir}/../../tests/ci/tools/freebsdci ${DESTDIR}/usr/local/etc/rc.d/
touch ${DESTDIR}/firstboot
diff --git a/tests/ci/tools/freebsdci b/tests/ci/tools/freebsdci
--- a/tests/ci/tools/freebsdci
+++ b/tests/ci/tools/freebsdci
@@ -26,6 +26,7 @@
. /etc/rc.subr
: ${freebsdci_enable:="NO"}
+: ${freebsdci_type:="full"}
name="freebsdci"
desc="Run FreeBSD CI"
@@ -33,10 +34,13 @@
start_cmd="firstboot_ci_run"
stop_cmd=":"
os_arch=$(uname -p)
+tardev=/dev/vtbd1
+metadir=/meta
+istar=$(file -s ${tardev} | grep "POSIX tar archive" | wc -l)
auto_shutdown()
{
- # XXX: Currently RISC-V kernels lack the ability to
+ # NOTE: Currently RISC-V kernels lack the ability to
# make qemu exit on shutdown. Reboot instead;
# it makes qemu exit too.
case "$os_arch" in
@@ -53,8 +57,6 @@
{
echo
echo "--------------------------------------------------------------"
- echo "BUILD sequence COMPLETED"
- echo "IMAGE sequence COMPLETED"
echo "BOOT sequence COMPLETED"
echo "INITIATING system SHUTDOWN"
echo "--------------------------------------------------------------"
@@ -62,15 +64,31 @@
full_tests()
{
- # Currently this is a placeholder.
- # This will be used to add the full tests scenario those are run in
- # the CI system
echo
echo "--------------------------------------------------------------"
- echo "BUILD sequence COMPLETED"
- echo "IMAGE sequence COMPLETED"
echo "BOOT sequence COMPLETED"
echo "TEST sequence STARTED"
+ if [ "${istar}" -eq 1 ]; then
+ rm -fr ${metadir}
+ mkdir -p ${metadir}
+ tar xvf ${tardev} -C ${metadir}
+ cd /usr/tests
+ set +e
+ kyua test
+ rc=$?
+ set -e
+ if [ ${rc} -ne 0 ] && [ ${rc} -ne 1 ]; then
+ exit ${rc}
+ fi
+ kyua report --verbose --results-filter passed,skipped,xfail,broken,failed --output test-report.txt
+ kyua report-junit --output=test-report.xml
+ mv test-report.* /${metadir}
+ tar cvf ${tardev} -C ${metadir} .
+ else
+ echo "ERROR: no device with POSIX tar archive format found."
+ # Don't shutdown because this is not run in unattended mode
+ exit 1
+ fi
echo "TEST sequence COMPLETED"
echo "INITIATING system SHUTDOWN"
echo "--------------------------------------------------------------"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 12, 8:51 AM (10 h, 47 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29566832
Default Alt Text
D48015.id154024.diff (8 KB)
Attached To
Mode
D48015: CI: Add full test support
Attached
Detach File
Event Timeline
Log In to Comment