forked from openzfs/zfs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
If the ZFS_COLOR env variable is set, then use ANSI color output in zpool status: - Column headers are bold - Degraded or offline pools/vdevs are yellow - Non-zero error counters and faulted vdevs/pools are red - The 'status:' and 'action:' sections are yellow if they're displaying a warning. This also includes a new 'faketty' function in libtest.shlib that is compatible with FreeBSD (code provided by @freqlabs). Reviewed-by: Jorgen Lundman <[email protected]> Reviewed-by: Brian Behlendorf <[email protected]> Reviewed-by: Ryan Moeller <[email protected]> Signed-off-by: Tony Hutter <[email protected]> Closes openzfs#9340
- Loading branch information
1 parent
5e8ac05
commit 9fb2771
Showing
10 changed files
with
479 additions
and
139 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -77,6 +77,7 @@ export SYSTEM_FILES_COMMON='arp | |
rm | ||
rmdir | ||
scp | ||
script | ||
sed | ||
seq | ||
setfacl | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -29,4 +29,4 @@ | |
|
||
DISK=${DISKS%% *} | ||
|
||
default_setup $DISK | ||
default_mirror_setup $DISKS |
91 changes: 91 additions & 0 deletions
91
tests/zfs-tests/tests/functional/cli_root/zpool/zpool_colors.ksh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,91 @@ | ||
#!/bin/ksh -p | ||
# | ||
# CDDL HEADER START | ||
# | ||
# This file and its contents are supplied under the terms of the | ||
# Common Development and Distribution License ("CDDL"), version 1.0. | ||
# You may only use this file in accordance with the terms of version | ||
# 1.0 of the CDDL. | ||
# | ||
# A full copy of the text of the CDDL should have accompanied this | ||
# source. A copy of the CDDL is also available via the Internet at | ||
# http://www.illumos.org/license/CDDL. | ||
# | ||
# CDDL HEADER END | ||
# | ||
# Copyright (c) 2019 Lawrence Livermore National Security, LLC. | ||
|
||
. $STF_SUITE/include/libtest.shlib | ||
|
||
# | ||
# DESCRIPTION: | ||
# Test that zpool status colored output works. | ||
# | ||
# STRATEGY: | ||
# 1. Create a pool with a bunch of errors and force fault one of the vdevs. | ||
# 2. Look for 'pool:' in bold. | ||
# 3. Look for 'DEGRADED' in yellow | ||
# 3. Look for 'FAULTED' in red | ||
# | ||
|
||
verify_runnable "both" | ||
|
||
function cleanup | ||
{ | ||
zinject -c all | ||
} | ||
|
||
log_onexit cleanup | ||
|
||
log_assert "Test colorized zpool status output" | ||
|
||
DISK2="$(echo $DISKS | cut -d' ' -f2)" | ||
DISK3="$(echo $DISKS | cut -d' ' -f3)" | ||
|
||
log_must dd if=/dev/urandom of=/$TESTDIR/testfile bs=10M count=1 | ||
|
||
log_must zpool sync | ||
|
||
log_must zpool offline -f $TESTPOOL $DISK3 | ||
log_must wait_for_degraded $TESTPOOL | ||
log_must zinject -d $DISK2 -e io -T read -f 20 $TESTPOOL | ||
log_must zinject -d $DISK2 -e io -T write -f 20 $TESTPOOL | ||
|
||
|
||
log_must zpool scrub -w $TESTPOOL | ||
log_must zinject -c all | ||
|
||
|
||
# Use 'script' to fake zpool status into thinking it's running in a tty. | ||
# Log the output here in case it's needed for postmortem. | ||
log_note "$(faketty TERM=xterm-256color ZFS_COLOR=1 zpool status)" | ||
|
||
# Replace the escape codes with "ESC" so they're easier to grep | ||
out="$(faketty TERM=xterm-256color ZFS_COLOR=1 zpool status | \ | ||
grep -E 'pool:|DEGRADED' | \ | ||
sed -r 's/\s+//g;'$(echo -e 's/\033/ESC/g'))" | ||
|
||
log_note "$(echo $out)" | ||
|
||
log_note "Look for 'pool:' in bold" | ||
log_must eval "echo \"$out\" | grep -q 'ESC\[1mpool:ESC\[0m' " | ||
|
||
log_note "Look for 'DEGRADED' in yellow" | ||
log_must eval "echo \"$out\" | grep -q 'ESC\[0;33mDEGRADEDESC\[0m'" | ||
|
||
# | ||
# The escape code for 'FAULTED' is a little more tricky. The line starts like | ||
# this: | ||
# | ||
# <start red escape code> loop2 FAULTED <end escape code> | ||
# | ||
# Luckily, awk counts the start and end escape codes as separate fields, so | ||
# we can easily remove the vdev field to get what we want. | ||
# | ||
out="$(faketty TERM=xterm-256color ZFS_COLOR=1 zpool status \ | ||
| awk '/FAULTED/{print $1$3$4}' | sed -r $(echo -e 's/\033/ESC/g'))" | ||
|
||
log_note "Look for 'FAULTED' in red" | ||
log_must eval "echo \"$out\" | grep -q 'ESC\[0;31mFAULTEDESC\[0m'" | ||
|
||
log_pass "zpool status displayed colors" |