mirror of
https://github.com/psy0rz/zfs_autobackup.git
synced 2025-04-11 22:40:01 +03:00
zfs-check broken pipe handling tests
This commit is contained in:
parent
ed61f03b4b
commit
3e6a327647
@ -107,7 +107,21 @@ dir/testfile 0 2e863f1fcccd6642e4e28453eba10d2d3f74d798
|
||||
""", buf.getvalue())
|
||||
|
||||
|
||||
# def test_brokenpipe_cleanup_filesystem(self):
|
||||
# """test if stuff is cleaned up correctly, in debugging mode , when a pipe breaks. """
|
||||
def test_brokenpipe_cleanup_filesystem(self):
|
||||
"""test if stuff is cleaned up correctly, in debugging mode , when a pipe breaks. """
|
||||
|
||||
prepare_zpools()
|
||||
shelltest("cp tests/data/whole /test_source1/testfile")
|
||||
shelltest("zfs snapshot test_source1@test")
|
||||
|
||||
#breaks pipe when grep exists:
|
||||
#important to use --debug, since that generates extra output which would be problematic if we didnt do correct SIGPIPE handling
|
||||
shelltest("python -m zfs_autobackup.ZfsCheck test_source1@test --debug | grep -m1 Hashing")
|
||||
|
||||
#should NOT be mounted anymore if cleanup went ok:
|
||||
self.assertNotRegex(shelltest("mount"), "test_source1@test")
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -2,7 +2,7 @@ import time
|
||||
|
||||
import argparse
|
||||
from signal import signal, SIGPIPE
|
||||
from .util import output_redir
|
||||
from .util import output_redir, sigpipe_handler
|
||||
|
||||
from .ZfsAuto import ZfsAuto
|
||||
|
||||
@ -492,7 +492,7 @@ class ZfsAutobackup(ZfsAuto):
|
||||
def cli():
|
||||
import sys
|
||||
|
||||
signal(SIGPIPE, output_redir)
|
||||
signal(SIGPIPE, sigpipe_handler)
|
||||
|
||||
sys.exit(ZfsAutobackup(sys.argv[1:], False).run())
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
# from util import activate_volume_snapshot, create_mountpoints, cleanup_mountpoint
|
||||
from signal import signal, SIGPIPE
|
||||
from .util import output_redir
|
||||
from .util import output_redir, sigpipe_handler
|
||||
|
||||
from .ZfsAuto import ZfsAuto
|
||||
from .ZfsNode import ZfsNode
|
||||
@ -305,7 +305,7 @@ class ZfsAutoverify(ZfsAuto):
|
||||
def cli():
|
||||
import sys
|
||||
|
||||
signal(SIGPIPE, output_redir)
|
||||
signal(SIGPIPE, sigpipe_handler)
|
||||
|
||||
sys.exit(ZfsAutoverify(sys.argv[1:], False).run())
|
||||
|
||||
|
@ -147,8 +147,7 @@ class ZfsCheck(CliBase):
|
||||
|
||||
def cli():
|
||||
import sys
|
||||
|
||||
signal(SIGPIPE, output_redir)
|
||||
signal(SIGPIPE, sigpipe_handler)
|
||||
|
||||
sys.exit(ZfsCheck(sys.argv[1:], False).run())
|
||||
|
||||
|
@ -21,6 +21,7 @@ import sys
|
||||
import time
|
||||
|
||||
|
||||
|
||||
def block_hash(fname, count=10000, bs=4096):
|
||||
"""This function was created to checksum huge files and blockdevices (TB's)
|
||||
Instead of one sha1sum of the whole file, it generates sha1susms of chunks of the file.
|
||||
@ -100,3 +101,6 @@ def output_redir():
|
||||
os.dup2(devnull, sys.stdout.fileno())
|
||||
os.dup2(devnull, sys.stderr.fileno())
|
||||
|
||||
def sigpipe_handler(sig, stack):
|
||||
#redir output so we dont get more SIGPIPES during cleanup. (which my try to write to stdout)
|
||||
output_redir()
|
||||
|
Loading…
x
Reference in New Issue
Block a user