mirror of
				https://git.proxmox.com/git/mirror_zfs.git
				synced 2025-10-26 18:05:04 +03:00 
			
		
		
		
	 92c384cbac
			
		
	
	
		92c384cbac
		
	
	
	
	
		
			
			The commit uses heuristics to determine whether a PR is behavioral: It runs "quick" CI (i.e., only use sanity.run on fewer OSes) if (explicitly requested by user): - the *last* commit message contains a line 'ZFS-CI-Type: quick', or if (by heuristics): - the files changed are not in the list of specified directory, and - all commit messages does not contain 'ZFS-CI-Type: full'. It runs "full" CI otherwise. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Reviewed-by: Tino Reichardt <milky-zfs@mcmilk.de> Signed-off-by: Shengqi Chen <harry-chen@outlook.com> Closes #16564
		
			
				
	
	
		
			106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| ######################################################################
 | |
| # 6) load openzfs module and run the tests
 | |
| #
 | |
| # called on runner:  qemu-6-tests.sh
 | |
| # called on qemu-vm: qemu-6-tests.sh $OS $2/$3
 | |
| ######################################################################
 | |
| 
 | |
| set -eu
 | |
| 
 | |
| function prefix() {
 | |
|   ID="$1"
 | |
|   LINE="$2"
 | |
|   CURRENT=$(date +%s)
 | |
|   TSSTART=$(cat /tmp/tsstart)
 | |
|   DIFF=$((CURRENT-TSSTART))
 | |
|   H=$((DIFF/3600))
 | |
|   DIFF=$((DIFF-(H*3600)))
 | |
|   M=$((DIFF/60))
 | |
|   S=$((DIFF-(M*60)))
 | |
| 
 | |
|   CTR=$(cat /tmp/ctr)
 | |
|   echo $LINE| grep -q "^Test[: ]" && CTR=$((CTR+1)) && echo $CTR > /tmp/ctr
 | |
| 
 | |
|   BASE="$HOME/work/zfs/zfs"
 | |
|   COLOR="$BASE/scripts/zfs-tests-color.sh"
 | |
|   CLINE=$(echo $LINE| grep "^Test[ :]" | sed -e 's|/usr/local|/usr|g' \
 | |
|     | sed -e 's| /usr/share/zfs/zfs-tests/tests/| |g' | $COLOR)
 | |
|   if [ -z "$CLINE" ]; then
 | |
|     printf "vm${ID}: %s\n" "$LINE"
 | |
|   else
 | |
|     # [vm2: 00:15:54  256] Test: functional/checksum/setup (run as root) [00:00] [PASS]
 | |
|     printf "[vm${ID}: %02d:%02d:%02d %4d] %s\n" \
 | |
|       "$H" "$M" "$S" "$CTR" "$CLINE"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| # called directly on the runner
 | |
| if [ -z ${1:-} ]; then
 | |
|   cd "/var/tmp"
 | |
|   source env.txt
 | |
|   SSH=$(which ssh)
 | |
|   TESTS='$HOME/zfs/.github/workflows/scripts/qemu-6-tests.sh'
 | |
|   echo 0 > /tmp/ctr
 | |
|   date "+%s" > /tmp/tsstart
 | |
| 
 | |
|   for i in $(seq 1 $VMs); do
 | |
|     IP="192.168.122.1$i"
 | |
|     daemonize -c /var/tmp -p vm${i}.pid -o vm${i}log.txt -- \
 | |
|       $SSH zfs@$IP $TESTS $OS $i $VMs $CI_TYPE
 | |
|     # handly line by line and add info prefix
 | |
|     stdbuf -oL tail -fq vm${i}log.txt \
 | |
|       | while read -r line; do prefix "$i" "$line"; done &
 | |
|     echo $! > vm${i}log.pid
 | |
|     # don't mix up the initial --- Configuration --- part
 | |
|     sleep 0.13
 | |
|   done
 | |
| 
 | |
|   # wait for all vm's to finish
 | |
|   for i in $(seq 1 $VMs); do
 | |
|     tail --pid=$(cat vm${i}.pid) -f /dev/null
 | |
|     pid=$(cat vm${i}log.pid)
 | |
|     rm -f vm${i}log.pid
 | |
|     kill $pid
 | |
|   done
 | |
| 
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| # this part runs inside qemu vm
 | |
| export PATH="$PATH:/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin"
 | |
| case "$1" in
 | |
|   freebsd*)
 | |
|     sudo kldstat -n zfs 2>/dev/null && sudo kldunload zfs
 | |
|     sudo -E ./zfs/scripts/zfs.sh
 | |
|     TDIR="/usr/local/share/zfs"
 | |
|     ;;
 | |
|   *)
 | |
|     # use xfs @ /var/tmp for all distros
 | |
|     sudo mv -f /var/tmp/*.txt /tmp
 | |
|     sudo mkfs.xfs -fq /dev/vdb
 | |
|     sudo mount -o noatime /dev/vdb /var/tmp
 | |
|     sudo chmod 1777 /var/tmp
 | |
|     sudo mv -f /tmp/*.txt /var/tmp
 | |
|     sudo -E modprobe zfs
 | |
|     TDIR="/usr/share/zfs"
 | |
|     ;;
 | |
| esac
 | |
| 
 | |
| # run functional testings and save exitcode
 | |
| cd /var/tmp
 | |
| TAGS=$2/$3
 | |
| if [ "$4" == "quick" ]; then
 | |
|   export RUNFILES="sanity.run"
 | |
| fi
 | |
| sudo dmesg -c > dmesg-prerun.txt
 | |
| mount > mount.txt
 | |
| df -h > df-prerun.txt
 | |
| $TDIR/zfs-tests.sh -vK -s 3GB -T $TAGS
 | |
| RV=$?
 | |
| df -h > df-postrun.txt
 | |
| echo $RV > tests-exitcode.txt
 | |
| sync
 | |
| exit 0
 |