def test_backup_incremental_missing_parent(s3_manager): expected = ( 'pool@p1\t0\t19K\t-\t19K\n' 'pool/fs@snap_1_f\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_4_mp\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_5\t10.0M\t10.0M\t-\t10.0M\n' ) zfs_manager = FakeZFSManager(fs_name='pool/fs', expected=expected, snapshot_prefix='snap_') fake_cmd = FakeCommandExecutor() pair_manager = PairManager(s3_manager, zfs_manager, command_executor=fake_cmd) with pytest.raises(IntegrityError) as excp_info: pair_manager.backup_incremental() assert excp_info.value.message == \ "Broken snapshot detected pool/fs@snap_5, reason: 'parent broken'" assert fake_cmd._called_commands == []
def test_backup_incremental_cycle(s3_manager): zfs_list = ( 'pool@p1\t0\t19K\t-\t19K\n' 'pool/fs@snap_1_f\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_2\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_3\t10.0M\t10.0M\t-\t10.0M\n' # the next 2 have bad metadata in the s3 fixture 'pool/fs@snap_6_cycle\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_7_cycle\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_8\t10.0M\t10.0M\t-\t10.0M\n' ) zfs_manager = FakeZFSManager(fs_name='pool/fs', expected=zfs_list, snapshot_prefix='snap_') fake_cmd = FakeCommandExecutor() pair_manager = PairManager(s3_manager, zfs_manager, command_executor=fake_cmd) with pytest.raises(IntegrityError) as excp_info: pair_manager.backup_incremental() assert excp_info.value.message == \ "Broken snapshot detected pool/fs@snap_7_cycle, reason: 'cycle detected'" assert fake_cmd._called_commands == []
def test_backup_incremental_compressed(s3_manager): zfs_list = ( 'pool/fs@snap_1_f\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_2\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_3\t10.0M\t10.0M\t-\t10.0M\n' 'pool/fs@snap_8\t10.0M\t10.0M\t-\t10.0M\n' ) zfs_manager = FakeZFSManager(fs_name='pool/fs', expected=zfs_list, snapshot_prefix='snap_') fake_cmd = FakeCommandExecutor() pair_manager = PairManager( s3_manager, zfs_manager, command_executor=fake_cmd, compressor='pigz1') pair_manager.backup_incremental() commands = [ "zfs send -nvP -i 'pool/fs@snap_3' 'pool/fs@snap_8'", ("zfs send -i 'pool/fs@snap_3' 'pool/fs@snap_8' | " "pigz -1 --blocksize 4096 | " "pput --quiet --estimated 1234 --meta size=1234 --meta parent=pool/fs@snap_3 " "--meta compressor=pigz1 {}pool/fs@snap_8"), ] expected = [e.format(FakeBucket.rand_prefix) for e in commands] assert fake_cmd._called_commands == expected