diff options
author | Richard Jones <rjones@redhat.com> | 2010-03-30 16:14:09 +0100 |
---|---|---|
committer | Richard Jones <rjones@redhat.com> | 2010-03-30 16:14:09 +0100 |
commit | 29c78cc979297b95407a5956b4caa34240a2f5a8 (patch) | |
tree | 0db9bceb10601595628ffaba1e59302016da0abd /tools/test-virt-df.sh | |
parent | fc5fbd460aa0aaf6bb65ca5fa1be59345f4f079f (diff) | |
download | libguestfs-29c78cc979297b95407a5956b4caa34240a2f5a8.tar.gz libguestfs-29c78cc979297b95407a5956b4caa34240a2f5a8.tar.xz libguestfs-29c78cc979297b95407a5956b4caa34240a2f5a8.zip |
virt-df: Match output with native (coreutils) 'df' command (RHBZ#578123).
This commit fixes the 'Use%' field in the output so it matches what
coreutils' 'df' command would print.
Firstly we change the calculation to use the space available to root,
not the space available to non-root. This means it matches what 'df'
when run as root in the guest would show.
Secondly we display this rounded up to the next whole percent (ie. using
ceil), which is also what 'df' does.
Thirdly we change the regression test so it tests this.
Note that even with these changes you are not guaranteed to get precisely
the same figures from inside and outside the guest, as it depends on
how quiescent the guest is and how recently the superblock was synced.
Thanks: Rita Wu
Diffstat (limited to 'tools/test-virt-df.sh')
-rwxr-xr-x | tools/test-virt-df.sh | 36 |
1 files changed, 31 insertions, 5 deletions
diff --git a/tools/test-virt-df.sh b/tools/test-virt-df.sh index 8e610632..a7b50b8f 100755 --- a/tools/test-virt-df.sh +++ b/tools/test-virt-df.sh @@ -4,13 +4,10 @@ export LANG=C set -e # Run virt-df. -output=$(./virt-df test.img -h) - -# The output will be slightly different from one machine to another. -# So just do some tests to make sure it looks reasonable. +output=$(./virt-df test.img) # Check title is the first line. -if [[ ! $output =~ ^Filesystem[[:space:]]+Size[[:space:]]+Used[[:space:]]+Available[[:space:]]+Use% ]]; then +if [[ ! $output =~ ^Filesystem.* ]]; then echo "$0: error: no title line" exit 1 fi @@ -44,3 +41,32 @@ if [[ ! $output =~ test.img:/dev/[hsv]da1 ]]; then echo "$0: error: filesystem /dev/VG/sda1 was not found" exit 1 fi + +# This is what df itself prints for these filesystems (determined +# by running the test image under virt-rescue): +# +# ><rescue> df -h +# Filesystem Size Used Avail Use% Mounted on +# /dev/dm-1 31M 28K 30M 1% /sysroot/lv1 +# /dev/dm-2 31M 395K 29M 2% /sysroot/lv2 +# /dev/dm-3 62M 144K 59M 1% /sysroot/lv3 +# ><rescue> df -i +# Filesystem Inodes IUsed IFree IUse% Mounted on +# /dev/dm-1 8192 11 8181 1% /sysroot/lv1 +# /dev/dm-2 8192 11 8181 1% /sysroot/lv2 +# /dev/dm-3 16384 11 16373 1% /sysroot/lv3 +# ><rescue> df +# Filesystem 1K-blocks Used Available Use% Mounted on +# /dev/dm-1 31728 28 30064 1% /sysroot/lv1 +# /dev/dm-2 31729 395 29696 2% /sysroot/lv2 +# /dev/dm-3 63472 144 60052 1% /sysroot/lv3 +# +# Only test plain 'df' output at the moment (XXX). + +if [ "$(echo "$output" | sort | awk '/VG.LV[123]/ { print $2 " " $3 " " $4 " " $5 }')" != \ +"31728 28 30064 1% +31729 395 29696 2% +63472 144 60052 1%" ]; then + echo "$0: error: output of virt-df did not match expected (df) output" + exit 1 +fi |