Re: FAIL: df/total-awk.log
Jim Meyering [EMAIL PROTECTED] wrote: Philip Rowlands [EMAIL PROTECTED] wrote: I get the same results as Jim, even though on my system (Ubuntu Hardy) both gawk and mawk docs state OFMT defaults to %.6g. I can't tell why OFMT is being ignored here by gawk - although I found a bug-gnu-utils post suggesting a difference between printing integers vs floating-point, this can't be right: $ gawk --version GNU Awk 3.1.6 $ gawk 'BEGIN {print 2607560285.99}' 2.60756e+09 $ gawk 'BEGIN {print 2607560286.00}' 2607560286 $ gawk 'BEGIN {print 2607560286.01}' 2.60756e+09 Hi Phil, I confirmed that using mawk is a problem by running make -C tests check TESTS=df/total-awk AWK=mawk on a system with 1.4T of space. I get this difference, --- out12008-10-11 13:13:40.0 +0200 +++ out22008-10-11 13:13:40.0 +0200 @@ -1,3 +1,3 @@ -2147483647 +2905220074 1254884328 1648269068 which confirms that mawk is limited to 32-bit integers. So I'm ready to give up on using awk here. A rewrite in Perl would be most welcome. I've done that and handled a few more corner cases along the way: From 1833a876ae2497b2bd915b9e1a8f364cef66272e Mon Sep 17 00:00:00 2001 From: Jim Meyering [EMAIL PROTECTED] Date: Sun, 12 Oct 2008 10:40:22 +0200 Subject: [PATCH] tests: df: avoid test failure when using mawk * tests/df/total-awk: Rewrite to use $PERL, not $AWK. mawk can't even count above 2^31. Reported by Ed Avis. http://thread.gmane.org/gmane.comp.gnu.coreutils.bugs/14792/focus=14802 * tests/df/total-verify: Rename from total-awk. * tests/Makefile.am (TESTS): Reflect renaming. --- tests/Makefile.am |2 +- tests/df/total-awk| 80 - tests/df/total-verify | 64 +++ 3 files changed, 65 insertions(+), 81 deletions(-) delete mode 100755 tests/df/total-awk create mode 100755 tests/df/total-verify diff --git a/tests/Makefile.am b/tests/Makefile.am index e0377cc..7a523a5 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -285,7 +285,7 @@ TESTS = \ dd/skip-seek2\ dd/unblock-sync \ df/total \ - df/total-awk \ + df/total-verify \ du/2g\ du/8gb \ du/basic \ diff --git a/tests/df/total-awk b/tests/df/total-awk deleted file mode 100755 index a10a03d..000 --- a/tests/df/total-awk +++ /dev/null @@ -1,80 +0,0 @@ -#!/bin/sh -# Ensure df --total computes well summary statistics - -# 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 - ls --version -fi - -. $srcdir/test-lib.sh - -fail=0 - -# Don't let a different umask perturb the results. -umask 22 - -echo ' -BEGIN { - total = 0 - used = 0 - available = 0 -} -{ - if (NR==1 || $0==$1 || $0~/^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/) -next - if ($1~/^[0-9]/) -{ - total += $1 - used += $2 - available += $3 -} - else -{ - total += $2 - used += $3 - available += $4 -} -} -END { - print total - print used - print available -} -' compute_sum.awk || fail=1 - -echo ' -/^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/ { - print $2; - print $3; - print $4 -} -' parse_total.awk || fail=1 - -# Use --block-size=512 to keep df from printing rounded-to-kilobyte -# numbers which wouldn't necessarily add up to the displayed total. -df --block-size=512 --total |tee tmp || fail=1 -$AWK -f compute_sum.awk tmp out1 || fail=1 -$AWK -f parse_total.awk tmp out2 || fail=1 -compare out1 out2 || fail=1 - -df -i --block-size=512 --total |tee tmp || fail=1 -$AWK -f compute_sum.awk tmp out1 || fail=1 -$AWK -f parse_total.awk tmp out2 || fail=1 -compare out1 out2 || fail=1 - -Exit $fail diff --git a/tests/df/total-verify b/tests/df/total-verify new file mode 100755 index 000..5b58565 --- /dev/null +++ b/tests/df/total-verify @@ -0,0 +1,64 @@ +#!/bin/sh +# Ensure df --total computes accurate totals + +# Copyright (C) 2008
Re: FAIL: df/total-awk.log
Ed Avis [EMAIL PROTECTED] wrote: FAIL: df/total-awk.log (exit: 1) + diff -u out1 out2 --- out1 2008-10-10 20:22:10.0 +0100 +++ out2 2008-10-10 20:22:10.0 +0100 @@ -1,3 +1,3 @@ -4.11081e+09 -2.60756e+09 +4110809460 +2607560286 1501678984 Actually, that might be due to something else. What version of awk are you using? With the versions of gawk I've tried (3.1.5 and 3.1.6), it doesn't use the offending format: $ awk 'BEGIN {print 2607560286}' 2607560286 Ah ha! But if i use mawk, it does: $ mawk 'BEGIN {print 2607560286}' 2.60756e+09 This might be the last straw. If my patch doesn't work for you, then I'd welcome a rewrite of that test to make it use perl (and to skip it if perl is not available). ___ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils
Re: FAIL: df/total-awk.log
On Sat, 11 Oct 2008, Jim Meyering wrote: Actually, that might be due to something else. What version of awk are you using? With the versions of gawk I've tried (3.1.5 and 3.1.6), it doesn't use the offending format: $ awk 'BEGIN {print 2607560286}' 2607560286 Ah ha! But if i use mawk, it does: $ mawk 'BEGIN {print 2607560286}' 2.60756e+09 This might be the last straw. If my patch doesn't work for you, then I'd welcome a rewrite of that test to make it use perl (and to skip it if perl is not available). I get the same results as Jim, even though on my system (Ubuntu Hardy) both gawk and mawk docs state OFMT defaults to %.6g. I can't tell why OFMT is being ignored here by gawk - although I found a bug-gnu-utils post suggesting a difference between printing integers vs floating-point, this can't be right: $ gawk --version GNU Awk 3.1.6 $ gawk 'BEGIN {print 2607560285.99}' 2.60756e+09 $ gawk 'BEGIN {print 2607560286.00}' 2607560286 $ gawk 'BEGIN {print 2607560286.01}' 2.60756e+09 Cheers, Phil ___ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils
Re: FAIL: df/total-awk.log
Philip Rowlands [EMAIL PROTECTED] wrote: I get the same results as Jim, even though on my system (Ubuntu Hardy) both gawk and mawk docs state OFMT defaults to %.6g. I can't tell why OFMT is being ignored here by gawk - although I found a bug-gnu-utils post suggesting a difference between printing integers vs floating-point, this can't be right: $ gawk --version GNU Awk 3.1.6 $ gawk 'BEGIN {print 2607560285.99}' 2.60756e+09 $ gawk 'BEGIN {print 2607560286.00}' 2607560286 $ gawk 'BEGIN {print 2607560286.01}' 2.60756e+09 Hi Phil, I confirmed that using mawk is a problem by running make -C tests check TESTS=df/total-awk AWK=mawk on a system with 1.4T of space. I get this difference, --- out12008-10-11 13:13:40.0 +0200 +++ out22008-10-11 13:13:40.0 +0200 @@ -1,3 +1,3 @@ -2147483647 +2905220074 1254884328 1648269068 which confirms that mawk is limited to 32-bit integers. So I'm ready to give up on using awk here. A rewrite in Perl would be most welcome. ___ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils
Re: FAIL: df/total-awk.log
Ed Avis [EMAIL PROTECTED] wrote: With current coreutils source from git, one test fails on my machine. It is a Fedora 9 box with a few Windows filesystems mounted. Here is the tests/test- suite.log. === GNU coreutils 7.0.5-42df6-dirty: tests/test-suite.log === 1 of 353 tests failed. (44 tests were not run). .. contents:: :depth: 2 FAIL: df/total-awk.log (exit: 1) + diff -u out1 out2 --- out1 2008-10-10 20:22:10.0 +0100 +++ out2 2008-10-10 20:22:10.0 +0100 @@ -1,3 +1,3 @@ -4.11081e+09 -2.60756e+09 +4110809460 +2607560286 1501678984 Thanks for the report. That's due to our use of print, which uses awk's default format. Does this fix it for you? diff --git a/tests/df/total-awk b/tests/df/total-awk index a10a03d..fad2d80 100755 --- a/tests/df/total-awk +++ b/tests/df/total-awk @@ -51,9 +51,9 @@ BEGIN { } } END { - print total - print used - print available + printf %d\n, total + printf %d\n, used + printf %d\n, available } ' compute_sum.awk || fail=1 ___ Bug-coreutils mailing list Bug-coreutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-coreutils
FAIL: df/total-awk.log
With current coreutils source from git, one test fails on my machine. It is a Fedora 9 box with a few Windows filesystems mounted. Here is the tests/test- suite.log. === GNU coreutils 7.0.5-42df6-dirty: tests/test-suite.log === 1 of 353 tests failed. (44 tests were not run). .. contents:: :depth: 2 FAIL: df/total-awk.log (exit: 1) + ls --version ls (GNU coreutils) 7.0.5-42df6-dirty Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later http://gnu.org/licenses/gpl.html This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Written by Richard M. Stallman and David MacKenzie. + . ./test-lib.sh ++ unset function_test ++ eval 'function_test() { return 11; }; function_test' +++ function_test +++ return 11 ++ test 11 '!=' 11 +++ pwd ++ test_dir_=/home/eda/git_working/coreutils/tests +++ this_test_ +++ echo ././df/total-awk +++ sed 's,.*/,,' ++ this_test=total-awk +++ /home/eda/git_working/coreutils/src/mktemp -d -- tmp=/home/eda/git_working/coreutils/tests cu-total-awk.XX ++ t_=/home/eda/git_working/coreutils/tests/cu-total-awk.gT1QMUWGvo ++ trap remove_tmp_ 0 ++ trap 'Exit $?' 1 2 13 15 ++ cd /home/eda/git_working/coreutils/tests/cu-total-awk.gT1QMUWGvo ++ diff --version ++ grep GNU + fail=0 + umask 22 + echo ' BEGIN { total = 0 used = 0 available = 0 } { if (NR==1 || $0==$1 || $0~/^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/) next if ($1~/^[0-9]/) { total += $1 used += $2 available += $3 } else { total += $2 used += $3 available += $4 } } END { print total print used print available } ' + echo ' /^total +(-?[0-9]+|-) +(-?[0-9]+|-) +(-?[0-9]+|-) +-?[0-9]+%$/ { print $2; print $3; print $4 } ' + df --block-size=512 --total + tee tmp Filesystem 512B-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 30218224 20334128 8324344 71% / /dev/sda1 202172 49990141744 27% /boot tmpfs 207492096 2074824 1% /dev/shm //wcl-fp1/users 384801112 288044832 96756280 75% /mnt/users //wcl-fp1/shared 384801112 288044832 96756280 75% /mnt/shared //wcl-fp1/systems384801112 288044832 96756280 75% /mnt/systems //wcl-fp2/research 1146724760 1054703624 92021136 92% /mnt/research //wcl-prod/wwwroot41950520 28946968 13003552 70% /mnt/prod_wwwroot //wcl-cr/crdprodorderimport 242670232 84690984 157979248 35% /mnt/crdprodorderimport //wcl-prod/log41950520 28946968 13003552 70% /mnt/prod_log //wcl-prod2/log 143289560 16162712 127126848 12% /mnt/prod2_log //wcl-prod-dr/log 41950520 19097328 22853192 46% /mnt/prod-dr_log //wcl-bt1/log145195400 45603352 99592048 32% /mnt/bt1_log //wcl-ws13/log 139476264 25230736 114245528 19% /mnt/ws13_log //wcl-ws44/log 156280256 133967288 22312968 86% /mnt/ws44_log //wcl-trademanager/log 156280256 16683232 139597024 11% /mnt/trademanager_log //wcl-prod/C$ 41950520 28946968 13003552 70% /mnt/wcl-prod //wcl-prod2/C$ 143289560 16162712 127126848 12% /mnt/wcl-prod2 //wcl-prod-dr/C$ 41950520 19097328 22853192 46% /mnt/wcl-prod-dr //wcl-bt1/C$ 145195400 45603352 99592048 32% /mnt/wcl-bt1 //wcl-ws13/C$139476264 25230736 114245528 19% /mnt/wcl-ws13 //wcl-ws44/C$156280256 133967288 22312968 86% /mnt/wcl-ws44 total4110809460 2607560286 1501678984 64% + gawk -f compute_sum.awk tmp + gawk -f parse_total.awk tmp + compare out1 out2 + diff -u out1 out2 --- out12008-10-10 20:22:10.0 +0100 +++ out22008-10-10 20:22:10.0 +0100 @@ -1,3 +1,3 @@ -4.11081e+09 -2.60756e+09 +4110809460 +2607560286 1501678984 + fail=1 + df -i --block-size=512 --total + tee tmp FilesystemInodes IUsed IFree IUse% Mounted on /dev/mapper/VolGroup00-LogVol00 3899392 390616 3508776 11% / /dev/sda1 26104 44 260601% /boot tmpfs 223850 2 2238481% /dev/shm //wcl-fp1/users0 0 0- /mnt/users //wcl-fp1/shared 0 0 0- /mnt/shared //wcl-fp1/systems 0 0 0- /mnt/systems //wcl-fp2/research 0 0 0- /mnt/research //wcl-prod/wwwroot 0 0 0- /mnt/prod_wwwroot //wcl-cr/crdprodorderimport 0 0 0- /mnt/crdprodorderimport //wcl-prod/log 0 0 0- /mnt/prod_log //wcl-prod2/log0 0 0- /mnt/prod2_log //wcl-prod-dr/log 0 0