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