check: force hostname to be unique
PATCH 1/1 check: force hostname to be unique
If you use a hostname which is part of the output of standard tools you end up with failures with fstests due to differences in output against the golden output.
The failures are false positives due to the hostname. For instance if you hostname is 'xfs' _dump_filter_main() will substitute the initiial 'xfs' with HOSTNAME as part of your logs, and will fail the output will fail against the golden output on say all xfsdump / xfsrestores tests.
The hostname must be a unique string, not used as part of the output from any tool used when capturing output.
---
We could be more pedantic about uniqueness, but this should suffice at last of most issues.
README | 2 ++ check | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+)
README +2 -0
@@ -22,6 +22,8 @@ _______________________ - create fsgqa test user ("sudo useradd fsgqa") - create fsgqa group ("sudo groupadd fsgqa") - create 123456-fsgqa test user ("sudo useradd 123456-fsgqa") +- assign a unique hostname to the test system. It must not clash with + any word used on output by standard tools or tools for your filesystem. ______________________ USING THE FSQA SUITE
check +36 -0
@@ -251,6 +251,40 @@ _prepare_test_list() fi } +_invalid_hostname() +{ + host_check=`hostname` + + case $host_check in + xfs) + return 1; + ;; + btrfs) + return 1; + ;; + ext4) + return 1; + ;; + ext3) + return 1; + ;; + ext2) + return 1; + ;; + esac + + return 0 +} + +_check_unique_hostname() +{ + _invalid_hostname + if [ $? -ne -0 ]; then + echo "Hostname `hostname` is not unique, make a unique hostname to avoid output log clashes with tools" + exit 1 + fi +} + # Process command arguments first. while [ $# -gt 0 ]; do case "$1" in
@@ -371,6 +405,8 @@ then exit 1 fi +_check_unique_hostname + _wipe_counters() { n_try="0"
Signature · 1 line
2.20.1
Quoted 10 lines · Luis Chamberlain
If you use a hostname which is part of the output of standard tools you end up with failures with fstests due to differences in output against the golden output.
The failures are false positives due to the hostname. For instance if you hostname is 'xfs'
_dump_filter_main()will substitute the initiial 'xfs' with HOSTNAME as part of your logs, and will fail the output will fail against the golden output on say all xfsdump / xfsrestores tests.
Quoted 4 lines
The hostname must be a unique string, not used as part of the output from any tool used when capturing output.
Signed-off-by Luis Chamberlain <[email protected]>
IMHO, a better fix would be improving the regexp in _dump_filter_main to match hostname more precisely. I did the following update and it seemed to work fine, I tested with '-g dump' and all tests passed (some tests _notrun due to missing tape device).
common/dump +2 -1
@@ -826,7 +826,8 @@ _dump_filter_main() -e "s#$__XFSDUMP_PROG#xfsdump#" \ -e "s#$XFSRESTORE_PROG#xfsrestore#" \ -e "s#$XFSINVUTIL_PROG#xfsinvutil#" \ - -e "s/`hostname`/HOSTNAME/" \ + -e "s/`hostname`:/HOSTNAME:/" \ + -e "s/: `hostname`/: HOSTNAME/" \ -e "s#$SCRATCH_DEV#SCRATCH_DEV#" \ -e "s#$SCRATCH_RAWDEV#SCRATCH_DEV#" \ -e "s#$dumptape#TAPE_DEV#" \
It's based on the fact that there're basically two patterns that contain 'HOSTNAME':
xfsrestore: hostname: HOSTNAME
xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
Thanks,
Eryu
Quoted 34 lines · Eryu Guan
Quoted 10 lines · Luis Chamberlain
If you use a hostname which is part of the output of standard tools you end up with failures with fstests due to differences in output against the golden output.
The failures are false positives due to the hostname. For instance if you hostname is 'xfs'
_dump_filter_main()will substitute the initiial 'xfs' with HOSTNAME as part of your logs, and will fail the output will fail against the golden output on say all xfsdump / xfsrestores tests.Quoted 4 lines
The hostname must be a unique string, not used as part of the output from any tool used when capturing output.
Signed-off-by Luis Chamberlain <[email protected]>IMHO, a better fix would be improving the regexp in
_dump_filter_mainto match hostname more precisely. I did the following update and it seemed to work fine, I tested with '-g dump' and all tests passed (some tests_notrundue to missing tape device).common/dump +2
-1@@ -826,7 +826,8 @@ _dump_filter_main() -e "s#$__XFSDUMP_PROG#xfsdump#" \ -e "s#$XFSRESTORE_PROG#xfsrestore#" \ -e "s#$XFSINVUTIL_PROG#xfsinvutil#" \ - -e "s/`hostname`/HOSTNAME/" \ + -e "s/`hostname`:/HOSTNAME:/" \ + -e "s/: `hostname`/: HOSTNAME/" \ -e "s#$SCRATCH_DEV#SCRATCH_DEV#" \ -e "s#$SCRATCH_RAWDEV#SCRATCH_DEV#" \ -e "s#$dumptape#TAPE_DEV#" \
Quoted 5 lines
It's based on the fact that there're basically two patterns that contain 'HOSTNAME':
xfsrestore: hostname: HOSTNAME
xfsdump: level 0 dump of HOSTNAME:SCRATCH_MNT
Works for me but this is still pretty fragile, and it does not cover the what other filesystems use as best-practices for issuign a hostname either. Even if we consider xfs: are we *certain* that the above regexp covers all output issued by xfs utils when hostname is used? We're talking about a generic rule of thumb here.
So I'd say we do both for now. Just my 0.01 CRC.
Luis