e40b0060c2
Before this commit, the test checking `vmstat -m` (slabinfo) output uses a fairly strict regular expression that only allows alphanumeric characters and a few exceptions such as "_", "-", "(" and ")". However, recent kernels use a wider range of characters, such as ">". For instance, see this Linux commit which creates a "page->ptl" slab: https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/mm/memory.c?id=b35f1819acd9243a3ff7ad25b1fa8bd6bfe80fb2#n4283 Other patches for reporting slab usage per memcg include the names of the cgroup in the slabinfo output, which can include additional characters and use dots for abbreviation. The check should not be so string, instead it could simply look for a chain of non-whitespace characters and that should be enough. Tested that `make check` is still working, including in some of the environments where features that enable the additional slabinfo names. Signed-off-by: Filipe Brandenburger <filbranden@google.com> Signed-off-by: Craig Small <csmall@enc.com.au>
49 lines
1.8 KiB
Plaintext
49 lines
1.8 KiB
Plaintext
|
|
#
|
|
# Dejagnu tests for vmstat - part of procps
|
|
|
|
set vmstat "${topdir}vmstat"
|
|
|
|
# Run vmstat with no arguments
|
|
set test "vmstat with no arguments"
|
|
spawn $vmstat
|
|
expect_pass "$test" "^procs\[ -\]+memory\[ -\]+swap\[ -\]+io\[ -\]+system\[ -\]+cpu\[ -\]+\\s*r\\s+b\\s+swpd\\s+free\\s+buff\\s+cache\\s+si\\s+so\\s+bi\\s+bo\\s+in\\s+cs us sy id wa st\\s*\(\\s+\\d+\){17}\\s*$"
|
|
|
|
set test "vmstat with -a flag"
|
|
spawn $vmstat -a
|
|
expect_pass "$test" "^procs\[ -\]+memory\[ -\]+swap\[ -\]+io\[ -\]+system\[ -\]+cpu\[ -\]+\\s*r\\s+b\\s+swpd\\s+free\\s+inact\\s+active\\s+si\\s+so\\s+bi\\s+bo\\s+in\\s+cs us sy id wa st\\s*\(\\s+\\d+\){17}\\s*$"
|
|
|
|
set test "vmstat fork option"
|
|
spawn $vmstat -f
|
|
expect_pass "$test" "^\\s+\\d+ forks\\s*$"
|
|
|
|
if { [ file readable "/proc/slabinfo" ] == 0 } {
|
|
unsupported "slabinfo (-m option) test disabled as /proc/slabinfo is unreadable"
|
|
} else {
|
|
set test "vmstat slabinfo (-m option)"
|
|
spawn $vmstat -m
|
|
expect_pass "$test" "^Cache\\s+Num\\s+Total\\s+Size\\s+Pages\\s+\(\\S+\\s+\\d+\\s+\\d+\\s+\\d+\\s+\\d+\\s*\){1,}"
|
|
}
|
|
|
|
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)"
|
|
}
|
|
}
|