mirror of
git://git.sv.gnu.org/coreutils.git
synced 2026-08-14 22:19:02 +02:00
e34894bf3f
* tests/dd/reblock: Change the IPC mechanism to the dd process under test, from pipes to fifos. Also change the delay between data writes to 0.2s for both tests. This should increase the chance that the dd process will read the data chunks separately.
65 lines
1.9 KiB
Bash
Executable File
65 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
# test dd reblocking vs. bs=
|
|
|
|
# Copyright (C) 2008 Free Software Foundation, Inc.
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
if test "$VERBOSE" = yes; then
|
|
set -x
|
|
dd --version
|
|
fi
|
|
|
|
. $srcdir/lang-default
|
|
. $srcdir/test-lib.sh
|
|
|
|
# 2 short reads -> 1 full write + 1 partial write
|
|
cat <<\EOF > exp-reblock || framework_failure
|
|
0+2 records in
|
|
1+1 records out
|
|
4 bytes (4 B) copied
|
|
EOF
|
|
|
|
# 2 short reads -> 2 partial writes
|
|
cat <<\EOF > exp-no-reblock || framework_failure
|
|
0+2 records in
|
|
0+2 records out
|
|
4 bytes (4 B) copied
|
|
EOF
|
|
|
|
fail=0
|
|
|
|
# Use a fifo rather than a pipe in the tests below
|
|
# so that the producer (printf subshell) will wait
|
|
# until the consumer (dd) opens the fifo therefore
|
|
# increasing the chance that dd will read the data
|
|
# from each printf separately.
|
|
mkfifo dd.fifo || framework_failure
|
|
|
|
# ensure that dd reblocks when bs= is not specified
|
|
dd ibs=3 obs=3 if=dd.fifo > out 2> err&
|
|
(printf 'ab'; sleep .2; printf 'cd') > dd.fifo
|
|
wait #for dd to complete
|
|
sed 's/,.*//' err > k && mv k err
|
|
compare err exp-reblock || fail=1
|
|
|
|
# Demonstrate that bs=N supersedes even following ibs= and obs= settings.
|
|
dd bs=3 ibs=1 obs=1 if=dd.fifo > out 2> err&
|
|
(printf 'ab'; sleep .2; printf 'cd') > dd.fifo
|
|
wait #for dd to complete
|
|
sed 's/,.*//' err > k && mv k err
|
|
compare err exp-no-reblock || fail=1
|
|
|
|
Exit $fail
|