]> granicus.if.org Git - procps-ng/commitdiff
build-sys: Handle zero length diskstats in tests
authorCraig Small <csmall@dropbear.xyz>
Mon, 29 Mar 2021 11:23:03 +0000 (22:23 +1100)
committerCraig Small <csmall@dropbear.xyz>
Mon, 29 Mar 2021 11:23:03 +0000 (22:23 +1100)
vmstat -d testsuite will fail if your /proc/diskstats is present
but zero length. While this seems buggy behaviour from lxcfs, its
there and its a simple matter to test for it and skip those tests
if we are run on a zero length /proc/diskstats system.

testsuite/vmstat.test/vmstat.exp

index b044903b13e83a5e2d1bb4ed196d6a8c57c2017d..cd55e529d8347a4868c5473f5d3065bd36d16bbe 100644 (file)
@@ -35,20 +35,23 @@ set test "vmstat disk information (-d option)"
 if { [ file readable "/sys/block" ] == 0 }  {
     unsupported "$test /sys/block not readable"
 } else {
-    spawn $vmstat -d
-    expect_pass "$test" "^disk\[ -\]+reads\[ -\]+writes\[ -\]+IO\[ -\]+\\s+total\\s+merged\\s+sectors\\s+ms\\s+total\\s+merged\\s+sectors\\s+ms\\s+cur\\s+sec\\s+"
-}
-
-# Need a partition
-set diskstats [ exec cat /proc/diskstats ]
-if { [ file readable "/sys/block" ] == 0 }  {
-    unsupported "vmstat partition /sys/block not readable"
-} else {
-  if [ regexp "\\s+\\d+\\s+\\d+\\s+\((?:hd|sd|vd)\[a-z\]\\d+\)\\s+\[0-9\]\[0-9\]+" $diskstats line partition == 1 ] {
-      set test "vmstat partition (using $partition)"
-      spawn $vmstat -p $partition
-      expect_pass "$test" "^${partition}\\s+reads"
-  } else {
-      unsupported "vmstat partition (cannot find partition)"
-  }
+    set fp [open /proc/diskstats ]
+    if { [ read $fp ] == "" } {
+       close $fp
+        unsupported "$test /proc/diskstats empty"
+    } else {
+        close $fp
+        spawn $vmstat -d
+        expect_pass "$test" "^disk\[ -\]+reads\[ -\]+writes\[ -\]+IO\[ -\]+\\s+total\\s+merged\\s+sectors\\s+ms\\s+total\\s+merged\\s+sectors\\s+ms\\s+cur\\s+sec\\s+"
+
+       # Need a partition
+        set diskstats [ exec cat /proc/diskstats ]
+        if [ regexp "\\s+\\d+\\s+\\d+\\s+\((?:hd|sd|vd)\[a-z\]\\d+\)\\s+\[0-9\]\[0-9\]+" $diskstats line partition == 1 ] {
+            set test "vmstat partition (using $partition)"
+            spawn $vmstat -p $partition
+            expect_pass "$test" "^${partition}\\s+reads"
+        } else {
+            unsupported "vmstat partition (cannot find partition)"
+        }
+    }
 }