Re: FAIL: df/total-awk.log

2008-10-12 Thread Jim Meyering
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

2008-10-11 Thread Jim Meyering
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

2008-10-11 Thread Philip Rowlands

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

2008-10-11 Thread Jim Meyering
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

2008-10-11 Thread Jim Meyering
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

2008-10-10 Thread Ed Avis
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