]> git.ipfire.org Git - thirdparty/openssh-portable.git/commitdiff
upstream: Add regress test for sftp resume.
authordtucker@openbsd.org <dtucker@openbsd.org>
Tue, 11 Mar 2025 07:50:20 +0000 (07:50 +0000)
committerDarren Tucker <dtucker@dtucker.net>
Tue, 11 Mar 2025 08:17:01 +0000 (19:17 +1100)
OpenBSD-Regress-ID: 37f629b3014338fa23a85df1e1bb320ea12282e1

regress/Makefile
regress/sftp-resume.sh [new file with mode: 0644]

index 7f7349706be12f15dc14db5ace1bb3258bc28777..7e7f95b58a2c28ea12c40e40503d4c6532aeab28 100644 (file)
@@ -1,4 +1,4 @@
-#      $OpenBSD: Makefile,v 1.135 2024/06/14 04:43:11 djm Exp $
+#      $OpenBSD: Makefile,v 1.136 2025/03/11 07:50:20 dtucker Exp $
 
 tests:         prep file-tests t-exec unit
 
@@ -65,6 +65,7 @@ LTESTS=       connect \
                sftp-batch \
                sftp-glob \
                sftp-perm \
+               sftp-resume \
                sftp-uri \
                reconfigure \
                dynamic-forward \
diff --git a/regress/sftp-resume.sh b/regress/sftp-resume.sh
new file mode 100644 (file)
index 0000000..4c2f6f1
--- /dev/null
@@ -0,0 +1,41 @@
+#      $OpenBSD: sftp-resume.sh,v 1.1 2025/03/11 07:50:20 dtucker Exp $
+#      Placed in the Public Domain.
+
+tid="sftp resume"
+
+CLIENT_LOG=${OBJ}/sftp.log
+
+# We test up to 1MB, ensure source data is large enough.
+increase_datafile_size 1200
+
+for cmd in put get; do
+    verbose "$tid: ${cmd}"
+    for size in 0 1 1k 1m size-1 same; do
+       trace "$tid: test ${cmd} ${size}"
+       rm -rf ${COPY}.1 ${COPY}.2
+       cp ${DATA} ${COPY}.1
+
+       # Set up requested source and destination file sizes.
+       case "${size}" in
+       0)      touch ${COPY}.2
+               ;;
+       size-1) dd if=${DATA} of=${COPY}.1 bs=1024 count=1 >/dev/null 2>&1
+               dd if=${DATA} of=${COPY}.2 bs=1023 count=1 >/dev/null 2>&1
+               ;;
+       same)   cp ${DATA} ${COPY}.2
+               ;;
+       *)      dd if=${COPY}.1 of=${COPY}.2 bs=${size} count=1 >/dev/null 2>&1
+               ;;
+       esac
+
+       # Perform copy and check.
+       echo "${cmd} -a ${COPY}.1 ${COPY}.2" | \
+           ${SFTP} -D ${SFTPSERVER} -vvv >${CLIENT_LOG} 2>&1 \
+           || fail "${cmd} failed"
+       cmp ${COPY}.1 ${COPY}.2 || fail "corrupted copy after ${cmd} ${size}"
+       grep "reordered" ${CLIENT_LOG} >/dev/null && \
+           fail "server reordered requests ${cmd} ${size}"
+    done
+done
+
+rm -rf ${COPY}.1 ${COPY}.2