mirror of
https://github.com/psy0rz/zfs_autobackup.git
synced 2025-04-23 23:00:53 +03:00
141 lines
5.7 KiB
Python
141 lines
5.7 KiB
Python
from basetest import *
|
|
import time
|
|
|
|
|
|
class TestZfsAutobackup31(unittest2.TestCase):
|
|
"""various new 3.1 features"""
|
|
|
|
def setUp(self):
|
|
prepare_zpools()
|
|
self.longMessage = True
|
|
|
|
def test_no_thinning(self):
|
|
with mocktime("20101111000000"):
|
|
self.assertFalse(ZfsAutobackup("test test_target1 --no-progress --verbose --allow-empty".split(" ")).run())
|
|
|
|
with mocktime("20101111000001"):
|
|
self.assertFalse(ZfsAutobackup(
|
|
"test test_target1 --no-progress --verbose --allow-empty --keep-target=0 --keep-source=0 --no-thinning".split(
|
|
" ")).run())
|
|
|
|
r = shelltest("zfs list -H -o name -r -t snapshot,filesystem " + TEST_POOLS)
|
|
self.assertMultiLineEqual(r, """
|
|
test_source1
|
|
test_source1/fs1
|
|
test_source1/fs1@test-20101111000000
|
|
test_source1/fs1@test-20101111000001
|
|
test_source1/fs1/sub
|
|
test_source1/fs1/sub@test-20101111000000
|
|
test_source1/fs1/sub@test-20101111000001
|
|
test_source2
|
|
test_source2/fs2
|
|
test_source2/fs2/sub
|
|
test_source2/fs2/sub@test-20101111000000
|
|
test_source2/fs2/sub@test-20101111000001
|
|
test_source2/fs3
|
|
test_source2/fs3/sub
|
|
test_target1
|
|
test_target1/test_source1
|
|
test_target1/test_source1/fs1
|
|
test_target1/test_source1/fs1@test-20101111000000
|
|
test_target1/test_source1/fs1@test-20101111000001
|
|
test_target1/test_source1/fs1/sub
|
|
test_target1/test_source1/fs1/sub@test-20101111000000
|
|
test_target1/test_source1/fs1/sub@test-20101111000001
|
|
test_target1/test_source2
|
|
test_target1/test_source2/fs2
|
|
test_target1/test_source2/fs2/sub
|
|
test_target1/test_source2/fs2/sub@test-20101111000000
|
|
test_target1/test_source2/fs2/sub@test-20101111000001
|
|
""")
|
|
|
|
def test_re_replication(self):
|
|
"""test re-replication of something thats already a backup (new in v3.1-beta5)"""
|
|
|
|
shelltest("zfs create test_target1/a")
|
|
shelltest("zfs create test_target1/b")
|
|
|
|
with mocktime("20101111000000"):
|
|
self.assertFalse(
|
|
ZfsAutobackup("test test_target1/a --no-progress --verbose --debug --allow-empty".split(" ")).run())
|
|
|
|
# NOTE: since v3.4 this changed. autobackup: properties are filtered. So its up to the admin to reset this property on the other side:
|
|
shelltest("zfs set autobackup:test=true test_target1/a")
|
|
|
|
with mocktime("20101111000001"):
|
|
self.assertFalse(
|
|
ZfsAutobackup("test test_target1/b --no-progress --verbose --allow-empty".split(" ")).run())
|
|
|
|
r = shelltest("zfs list -H -o name -r -t snapshot test_target1")
|
|
# NOTE: it wont backup test_target1/a/test_source2/fs2/sub to test_target1/b since it doesnt have the zfs_autobackup property anymore.
|
|
self.assertMultiLineEqual("""
|
|
test_target1/a@test-20101111000001
|
|
test_target1/a/test_source1@test-20101111000001
|
|
test_target1/a/test_source1/fs1@test-20101111000000
|
|
test_target1/a/test_source1/fs1@test-20101111000001
|
|
test_target1/a/test_source1/fs1/sub@test-20101111000000
|
|
test_target1/a/test_source1/fs1/sub@test-20101111000001
|
|
test_target1/a/test_source2@test-20101111000001
|
|
test_target1/a/test_source2/fs2@test-20101111000001
|
|
test_target1/a/test_source2/fs2/sub@test-20101111000000
|
|
test_target1/a/test_source2/fs2/sub@test-20101111000001
|
|
test_target1/b/test_source1/fs1@test-20101111000000
|
|
test_target1/b/test_source1/fs1@test-20101111000001
|
|
test_target1/b/test_source1/fs1/sub@test-20101111000000
|
|
test_target1/b/test_source1/fs1/sub@test-20101111000001
|
|
test_target1/b/test_source2/fs2/sub@test-20101111000000
|
|
test_target1/b/test_source2/fs2/sub@test-20101111000001
|
|
test_target1/b/test_target1/a@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source1@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source1/fs1@test-20101111000000
|
|
test_target1/b/test_target1/a/test_source1/fs1@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source1/fs1/sub@test-20101111000000
|
|
test_target1/b/test_target1/a/test_source1/fs1/sub@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source2@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source2/fs2@test-20101111000001
|
|
test_target1/b/test_target1/a/test_source2/fs2/sub@test-20101111000000
|
|
test_target1/b/test_target1/a/test_source2/fs2/sub@test-20101111000001
|
|
""", r)
|
|
|
|
def test_zfs_compressed(self):
|
|
with mocktime("20101111000000"):
|
|
self.assertFalse(
|
|
ZfsAutobackup("test test_target1 --no-progress --verbose --debug --zfs-compressed".split(" ")).run())
|
|
|
|
def test_force(self):
|
|
"""test 1:1 replication"""
|
|
|
|
shelltest("zfs set autobackup:test=true test_source1")
|
|
|
|
with mocktime("20101111000000"):
|
|
self.assertFalse(
|
|
ZfsAutobackup(
|
|
"test test_target1 --no-progress --verbose --debug --force --strip-path=1".split(" ")).run())
|
|
|
|
r = shelltest("zfs list -H -o name -r -t snapshot test_target1")
|
|
self.assertMultiLineEqual(r, """
|
|
test_target1@test-20101111000000
|
|
test_target1/fs1@test-20101111000000
|
|
test_target1/fs1/sub@test-20101111000000
|
|
test_target1/fs2/sub@test-20101111000000
|
|
""")
|
|
|
|
def test_exclude_unchanged(self):
|
|
shelltest("zfs snapshot -r test_source1@somesnapshot")
|
|
|
|
with mocktime("20101111000000"):
|
|
self.assertFalse(
|
|
ZfsAutobackup(
|
|
"test test_target1 --verbose --allow-empty --exclude-unchanged=1".split(" ")).run())
|
|
|
|
# everything should be excluded, but should not return an error (see #190)
|
|
with mocktime("20101111000001"):
|
|
self.assertFalse(
|
|
ZfsAutobackup(
|
|
"test test_target1 --verbose --allow-empty --exclude-unchanged=1".split(" ")).run())
|
|
|
|
r = shelltest("zfs list -H -o name -r -t snapshot test_target1")
|
|
self.assertMultiLineEqual(r, """
|
|
test_target1/test_source2/fs2/sub@test-20101111000000
|
|
""")
|