aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/test/stress2/misc/all.exclude3
-rwxr-xr-xtools/test/stress2/misc/msdos22.sh79
-rwxr-xr-xtools/test/stress2/misc/msdos23.sh79
-rwxr-xr-xtools/test/stress2/misc/msdos24.sh80
4 files changed, 241 insertions, 0 deletions
diff --git a/tools/test/stress2/misc/all.exclude b/tools/test/stress2/misc/all.exclude
index 9ec5bffde0f6..7109555c5508 100644
--- a/tools/test/stress2/misc/all.exclude
+++ b/tools/test/stress2/misc/all.exclude
@@ -39,6 +39,9 @@ mount7.sh https://people.freebsd.org/~pho/stress/log/log0549.txt 20240912
mlockall2.sh Unrecoverable OOM killing seen 20190203
mlockall6.sh https://people.freebsd.org/~pho/stress/log/log0430.txt 20230403
mlockall7.sh Needs further investigation 20210123
+msdos22.sh Waiting for fix 20260529
+msdos23.sh Waiting for fix 20260529
+msdos24.sh Waiting for fix 20260529
msetdomain.sh May change policy for random threads to domainset_fixed 20210104
newfs4.sh watchdog fired. newbuf (still seen 20240729) 20190225
nfs10.sh Double fault 20151013
diff --git a/tools/test/stress2/misc/msdos22.sh b/tools/test/stress2/misc/msdos22.sh
new file mode 100755
index 000000000000..158a52a7aa7b
--- /dev/null
+++ b/tools/test/stress2/misc/msdos22.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# Test file operations using long random file names consisting only of ASCII characters
+
+MDUNIT=10
+FS=/mnt
+LOCALE=C.UTF-8
+FILES=1000
+
+export LANG=$LOCALE
+
+randomfilename () {
+ name="f"
+ count=$(jot -r 1 10 3)
+ for r in $(jot -r $count 7 0); do
+ r=$(( r + 0 ))
+ c='_'
+ if [ $r -gt 0 ]; then
+ for i in $(jot $r); do
+ name="$name$i"
+ done
+ fi
+ count=$(( count - 1 ))
+ if [ "$count" -gt 0 ]; then
+ name="$name$c"
+ fi
+ done
+ echo "$name"
+}
+
+(
+ set -e
+
+ mdconfig -u $MDUNIT -t malloc -s 512m
+ newfs_msdos -c 8 -F 32 /dev/md$MDUNIT > /dev/null 2>&1
+ mkdir -p $FS
+ mount_msdosfs /dev/md$MDUNIT $FS
+
+ mkdir -p $FS/test
+ cd $FS/test
+
+ for i in $(jot $FILES); do
+ newfile=$(randomfilename)
+ case $testfiles in
+ *"$newfile"*) continue;;
+ esac
+ testfiles="$(randomfilename)
+$testfiles"
+ done
+
+ for f in $testfiles; do
+ echo "$f" > $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ cp $f $f.tmp
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ mv $f.tmp $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ rm $f
+ done
+)
+
+failed=$?
+
+cd
+
+[ "$failed" -ne 0 ] && ls $FS/test
+
+umount /dev/md$MDUNIT
+
+#[ "$failed" -ne 0 ] && hd /dev/md$MDUNIT > /tmp/msdos22.dump
+
+fsck_msdosfs -y /dev/md$MDUNIT
+
+mdconfig -d -u $MDUNIT 2>/dev/null
+
+exit $failed
diff --git a/tools/test/stress2/misc/msdos23.sh b/tools/test/stress2/misc/msdos23.sh
new file mode 100755
index 000000000000..18982c34f68b
--- /dev/null
+++ b/tools/test/stress2/misc/msdos23.sh
@@ -0,0 +1,79 @@
+#!/bin/sh
+
+# Test file operations using random file names containing non-ASCII characters
+
+MDUNIT=10
+FS=/mnt
+LOCALE=C.UTF-8
+FILES=1000
+
+export LANG=$LOCALE
+
+randomfilename () {
+ name="f"
+ count=$(jot -r 1 10 3)
+ for r in $(jot -r $count 7 0); do
+ r=$(( r + 0 ))
+ c='ยท'
+ if [ $r -gt 0 ]; then
+ for i in $(jot $r); do
+ name="$name$i"
+ done
+ fi
+ count=$(( count - 1 ))
+ if [ "$count" -gt 0 ]; then
+ name="$name$c"
+ fi
+ done
+ echo "$name"
+}
+
+(
+ set -e
+
+ mdconfig -u $MDUNIT -t malloc -s 512m
+ newfs_msdos -c 8 -F 32 /dev/md$MDUNIT > /dev/null 2>&1
+ mkdir -p $FS
+ mount_msdosfs -L $LOCALE /dev/md$MDUNIT $FS
+
+ mkdir -p $FS/test
+ cd $FS/test
+
+ for i in $(jot $FILES); do
+ newfile=$(randomfilename)
+ case $testfiles in
+ *"$newfile"*) continue;;
+ esac
+ testfiles="$(randomfilename)
+$testfiles"
+ done
+
+ for f in $testfiles; do
+ echo "$f" > $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ cp $f $f.tmp
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ mv $f.tmp $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ rm $f
+ done
+)
+
+failed=$?
+
+cd
+
+[ "$failed" -ne 0 ] && ls $FS/test
+
+umount /dev/md$MDUNIT
+
+#[ "$failed" -ne 0 ] && hd /dev/md$MDUNIT > /tmp/msdos23.dump
+
+fsck_msdosfs -y /dev/md$MDUNIT
+
+mdconfig -d -u $MDUNIT 2>/dev/null
+
+exit $failed
diff --git a/tools/test/stress2/misc/msdos24.sh b/tools/test/stress2/misc/msdos24.sh
new file mode 100755
index 000000000000..195c4ba8d9b9
--- /dev/null
+++ b/tools/test/stress2/misc/msdos24.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+# Test file operations using long random file names containing UTF-16 surrogate pairs
+
+MDUNIT=10
+FS=/mnt
+LOCALE=C.UTF-8
+FILES=1000
+
+export LANG=$LOCALE
+
+randomfilename () {
+ name="f"
+ count=$(jot -r 1 10 3)
+ for r in $(jot -r $count 7 0); do
+ r=$(( r + 0 ))
+ emoji="\0360\0237\0230\020$r"
+ c=$(echo -e $emoji)
+ if [ $r -gt 0 ]; then
+ for i in $(jot $r); do
+ name="$name$i"
+ done
+ fi
+ count=$(( count - 1 ))
+ if [ "$count" -gt 0 ]; then
+ name="$name$c"
+ fi
+ done
+ echo "$name"
+}
+
+(
+ set -e
+
+ mdconfig -u $MDUNIT -t malloc -s 512m
+ newfs_msdos -c 8 -F 32 /dev/md$MDUNIT > /dev/null 2>&1
+ mkdir -p $FS
+ mount_msdosfs -L $LOCALE /dev/md$MDUNIT $FS
+
+ mkdir -p $FS/test
+ cd $FS/test
+
+ for i in $(jot $FILES); do
+ newfile=$(randomfilename)
+ case $testfiles in
+ *"$newfile"*) continue;;
+ esac
+ testfiles="$(randomfilename)
+$testfiles"
+ done
+
+ for f in $testfiles; do
+ echo "$f" > $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ cp $f $f.tmp
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ mv $f.tmp $f
+ done
+ for f in $(echo "$testfiles" | sort -R); do
+ rm $f
+ done
+)
+
+failed=$?
+
+cd
+
+[ "$failed" -ne 0 ] && ls $FS/test
+
+umount /dev/md$MDUNIT
+
+#[ "$failed" -ne 0 ] && hd /dev/md$MDUNIT > /tmp/msdos24.dump
+
+fsck_msdosfs -y /dev/md$MDUNIT
+
+mdconfig -d -u $MDUNIT 2>/dev/null
+
+exit $failed