-
Notifications
You must be signed in to change notification settings - Fork 1.8k
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. Signed-off-by: Tony Hutter <[email protected]>
- Loading branch information
1 parent
4313a5b
commit 947f126
Showing
12 changed files
with
1,091 additions
and
137 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
# =========================================================================== | ||
# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html | ||
# =========================================================================== | ||
# | ||
# SYNOPSIS | ||
# | ||
# AX_REQUIRE_DEFINED(MACRO) | ||
# | ||
# DESCRIPTION | ||
# | ||
# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have | ||
# been defined and thus are available for use. This avoids random issues | ||
# where a macro isn't expanded. Instead the configure script emits a | ||
# non-fatal: | ||
# | ||
# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found | ||
# | ||
# It's like AC_REQUIRE except it doesn't expand the required macro. | ||
# | ||
# Here's an example: | ||
# | ||
# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG]) | ||
# | ||
# LICENSE | ||
# | ||
# Copyright (c) 2014 Mike Frysinger <[email protected]> | ||
# | ||
# Copying and distribution of this file, with or without modification, are | ||
# permitted in any medium without royalty provided the copyright notice | ||
# and this notice are preserved. This file is offered as-is, without any | ||
# warranty. | ||
|
||
#serial 2 | ||
|
||
AC_DEFUN([AX_REQUIRE_DEFINED], [dnl | ||
m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])]) | ||
])dnl AX_REQUIRE_DEFINED |
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
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 |
85 changes: 85 additions & 0 deletions
85
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,85 @@ | ||
#!/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 export $TESTPOOL | ||
log_must zpool import $TESTPOOL | ||
|
||
log_note "$(ZFS_COLOR=1 zpool status)" | ||
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 $TESTPOOL | ||
log_must wait_scrubbed $TESTPOOL | ||
log_must zinject -c all | ||
|
||
|
||
# Replace the escape codes with "ESC" so they're easier to grep | ||
out="$(ZFS_COLOR=1 zpool status | grep -E 'pool:|DEGRADED' | \ | ||
sed -r 's/\s+//g;'$(echo -e 's/\033/ESC/g'))" | ||
|
||
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="$(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" |