xref: /freebsd/crypto/openssh/regress/sftp-resume.sh (revision 8e28d84935f2f0ee081d44f9803f3052b960e50b)
1*8e28d849SEd Maste#	$OpenBSD: sftp-resume.sh,v 1.2 2025/03/11 09:06:50 dtucker Exp $
2*8e28d849SEd Maste#	Placed in the Public Domain.
3*8e28d849SEd Maste
4*8e28d849SEd Mastetid="sftp resume"
5*8e28d849SEd Maste
6*8e28d849SEd MasteCLIENT_LOG=${OBJ}/sftp.log
7*8e28d849SEd Maste
8*8e28d849SEd Maste# We test up to 1MB, ensure source data is large enough.
9*8e28d849SEd Masteincrease_datafile_size 1200
10*8e28d849SEd Maste
11*8e28d849SEd Mastefor cmd in put get; do
12*8e28d849SEd Maste    verbose "$tid: ${cmd}"
13*8e28d849SEd Maste    for size in 0 1 1k 1m size-1 same; do
14*8e28d849SEd Maste	trace "$tid: test ${cmd} ${size}"
15*8e28d849SEd Maste	rm -rf ${COPY}.1 ${COPY}.2
16*8e28d849SEd Maste	cp ${DATA} ${COPY}.1
17*8e28d849SEd Maste
18*8e28d849SEd Maste	# Set up requested source and destination file sizes.
19*8e28d849SEd Maste	case "${size}" in
20*8e28d849SEd Maste	0)	touch ${COPY}.2
21*8e28d849SEd Maste		;;
22*8e28d849SEd Maste	size-1)	dd if=${DATA} of=${COPY}.1 bs=1024 count=1 >/dev/null 2>&1
23*8e28d849SEd Maste		dd if=${DATA} of=${COPY}.2 bs=1023 count=1 >/dev/null 2>&1
24*8e28d849SEd Maste		;;
25*8e28d849SEd Maste	same)	cp ${DATA} ${COPY}.2
26*8e28d849SEd Maste		;;
27*8e28d849SEd Maste	1m)	dd if=${COPY}.1 of=${COPY}.2 bs=1k count=1k >/dev/null 2<&1
28*8e28d849SEd Maste		;;
29*8e28d849SEd Maste	*)	dd if=${COPY}.1 of=${COPY}.2 bs=${size} count=1 >/dev/null 2>&1
30*8e28d849SEd Maste		;;
31*8e28d849SEd Maste	esac
32*8e28d849SEd Maste
33*8e28d849SEd Maste	# Perform copy and check.
34*8e28d849SEd Maste	echo "${cmd} -a ${COPY}.1 ${COPY}.2" | \
35*8e28d849SEd Maste	    ${SFTP} -D ${SFTPSERVER} -vvv >${CLIENT_LOG} 2>&1 \
36*8e28d849SEd Maste	    || fail "${cmd} failed"
37*8e28d849SEd Maste	cmp ${COPY}.1 ${COPY}.2 || fail "corrupted copy after ${cmd} ${size}"
38*8e28d849SEd Maste	grep "reordered" ${CLIENT_LOG} >/dev/null && \
39*8e28d849SEd Maste	    fail "server reordered requests ${cmd} ${size}"
40*8e28d849SEd Maste    done
41*8e28d849SEd Mastedone
42*8e28d849SEd Maste
43*8e28d849SEd Masterm -rf ${COPY}.1 ${COPY}.2
44