Esempio n. 1
0
    def test_take_snapshot(self, zpools):
        fs, _ = zpools
        config = [{
            'name': fs.name,
            'frequent': 1,
            'hourly': 1,
            'daily': 1,
            'weekly': 1,
            'monthly': 1,
            'yearly': 1,
            'snap': True
        }]
        take_config(config)
        take_config(config)

        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in fs.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == 1
Esempio n. 2
0
    def test_take_snapshot_recursive(self, zpools):
        _, fs = zpools
        ssh = fs.ssh

        fs.destroy(force=True)
        config = [{'name': 'ssh:{:d}:{}'.format(PORT, fs), 'key': KEY, 'frequent': 1, 'hourly': 1,
                   'daily': 1, 'weekly': 1, 'monthly': 1, 'yearly': 1, 'snap': True}]
        take_config(config)
        fs.snapshots()[-1].destroy(force=True)
        fs.snapshots()[-1].destroy(force=True)

        sub1 = zfs.create('{:s}/sub1'.format(fs.name), ssh=ssh)
        abc = zfs.create('{:s}/sub1/abc'.format(fs.name), ssh=ssh)
        sub1_abc = zfs.create('{:s}/sub1_abc'.format(fs.name), ssh=ssh)
        config += [{'name': 'ssh:{:d}:{}/sub1'.format(PORT, fs), 'key': KEY, 'frequent': 1, 'hourly': 1,
                    'daily': 1, 'weekly': 1, 'monthly': 1, 'yearly': 1, 'snap': False}]
        take_config(config)

        # Check fs
        snapshots = {'frequent': [], 'hourly': [], 'daily': [], 'weekly': [], 'monthly': [], 'yearly': []}
        for snap in fs.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]

        # Check sub1
        snapshots = {'frequent': [], 'hourly': [], 'daily': [], 'weekly': [], 'monthly': [], 'yearly': []}
        for snap in sub1.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]

        # Check abc
        snapshots = {'frequent': [], 'hourly': [], 'daily': [], 'weekly': [], 'monthly': [], 'yearly': []}
        for snap in abc.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]

        # Check sub1_abc
        snapshots = {'frequent': [], 'hourly': [], 'daily': [], 'weekly': [], 'monthly': [], 'yearly': []}
        for snap in sub1_abc.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]
Esempio n. 3
0
    def test_clean_recursive(self, zpools):
        fs, _ = zpools
        fs.destroy(force=True)
        sub1 = zfs.create('{:s}/sub1'.format(fs.name))
        abc = zfs.create('{:s}/sub1/abc'.format(fs.name))
        abc_efg = zfs.create('{:s}/sub1/abc_efg'.format(fs.name))
        sub2 = zfs.create('{:s}/sub2'.format(fs.name))
        efg = zfs.create('{:s}/sub2/efg'.format(fs.name))
        hij = zfs.create('{:s}/sub2/efg/hij'.format(fs.name))
        klm = zfs.create('{:s}/sub2/efg/hij/klm'.format(fs.name))
        sub3 = zfs.create('{:s}/sub3'.format(fs.name))

        config = [{
            'name': fs.name,
            'frequent': 1,
            'hourly': 1,
            'daily': 1,
            'weekly': 1,
            'monthly': 1,
            'yearly': 1,
            'snap': True
        }]
        take_config(config)

        config = [{
            'name': fs.name,
            'frequent': 1,
            'hourly': 0,
            'daily': 1,
            'weekly': 0,
            'monthly': 0,
            'yearly': 0,
            'clean': True
        }, {
            'name': '{}/sub2'.format(fs),
            'frequent': 0,
            'hourly': 1,
            'daily': 0,
            'weekly': 1,
            'monthly': 0,
            'yearly': 1,
            'clean': True
        }, {
            'name': '{}/sub3'.format(fs),
            'frequent': 1,
            'hourly': 0,
            'daily': 1,
            'weekly': 0,
            'monthly': 1,
            'yearly': 0,
            'clean': False
        }, {
            'name': '{}/sub1/abc'.format(fs),
            'frequent': 0,
            'hourly': 0,
            'daily': 0,
            'weekly': 1,
            'monthly': 1,
            'yearly': 1,
            'clean': True
        }, {
            'name': '{}/sub2/efg/hij'.format(fs),
            'frequent': 0,
            'hourly': 0,
            'daily': 0,
            'weekly': 0,
            'monthly': 0,
            'yearly': 0,
            'clean': True
        }]
        clean_config(config)

        # Check parent filesystem
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in fs.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]
        # Check sub1
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in sub1.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]
        # Check sub1/abc
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in abc.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[3][snap_type]
        # Check sub1/abc_efg
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in abc_efg.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[0][snap_type]
        # Check sub2
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in sub2.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[1][snap_type]
        # Check sub2/efg
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in efg.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[1][snap_type]
        # Check sub2/efg/hij
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in hij.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[4][snap_type]
        # Check sub2/efg/hij/klm
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in klm.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == config[4][snap_type]
        # Check sub3
        snapshots = {
            'frequent': [],
            'hourly': [],
            'daily': [],
            'weekly': [],
            'monthly': [],
            'yearly': []
        }
        for snap in sub3.snapshots():
            snap_type = snap.name.split('_')[-1]
            snapshots[snap_type].append(snap)

        for snap_type, snaps in snapshots.items():
            assert len(snaps) == 1