Пример #1
0
 def test_volumes_for_backup(self):
     containers = self.createContainers()
     containers += [
         {
             'service': 'web',
             'labels': {
                 'restic-compose-backup.volumes': True,
             },
             'mounts': [{
                 'Source': 'test',
                 'Destination': 'test',
                 'Type': 'bind',
             }]
         },
         {
             'service': 'mysql',
             'labels': {
                 'restic-compose-backup.mysql': True,
             },
             'mounts': [{
                 'Source': 'data',
                 'Destination': 'data',
                 'Type': 'bind',
             }]
         },
     ]
     with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
         cnt = RunningContainers()
         self.assertTrue(len(cnt.containers_for_backup()) == 2)
         self.assertEqual(cnt.generate_backup_mounts(), {'test': {'bind': '/volumes/web/test', 'mode': 'ro'}})
Пример #2
0
 def test_running_containers(self):
     containers = self.createContainers()
     containers += [
         {
             'service': 'web',
             'labels': {
                 'restic-compose-backup.volumes': True,
                 'test': 'test',
             },
             'mounts': [{
                 'Source': 'test',
                 'Destination': 'test',
                 'Type': 'bind',
             }]
         },
         {
             'service': 'mysql',
         },
         {
             'service': 'postgres',
         },
     ]
     with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
         result = RunningContainers()
         self.assertEqual(len(result.containers), 4, msg="Three containers expected")
         self.assertNotEqual(result.this_container, None, msg="No backup container found")
         web_service = result.get_service('web')
         self.assertNotEqual(web_service, None)
         self.assertEqual(len(web_service.filter_mounts()), 1)
Пример #3
0
    def test_exclude(self):
        containers = self.createContainers()
        containers += [
            {
                'service': 'web',
                'labels': {
                    'restic-compose-backup.volumes': True,
                    'restic-compose-backup.volumes.exclude': 'stuff',
                },
                'mounts': [
                    {
                        'Source': '/srv/files/media',
                        'Destination': '/srv/media',
                        'Type': 'bind',
                    },
                    {
                        'Source': '/srv/files/stuff',
                        'Destination': '/srv/stuff',
                        'Type': 'bind',
                    },
                ]
            },
        ]
        with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
            cnt = RunningContainers()

        web_service = cnt.get_service('web')
        self.assertNotEqual(web_service, None, msg="Web service not found")

        mounts = web_service.filter_mounts()
        self.assertEqual(len(mounts), 1)
        self.assertEqual(mounts[0].source, '/srv/files/media')
Пример #4
0
    def test_find_running_backup_container(self):
        containers = self.createContainers()
        with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
            cnt = RunningContainers()
            self.assertFalse(cnt.backup_process_running)

        containers += [
            {
                'service': 'backup_runner',
                'labels': {
                    'restic-compose-backup.process-default': 'True',
                },
            },
        ]
        with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
            cnt = RunningContainers()
            self.assertTrue(cnt.backup_process_running)
Пример #5
0
    def test_list_containers(self):
        """Test a basic container list"""
        containers = [
            {
                'service': 'web',
                'labels': {
                    'moo': 1,
                },
                'mounts': [{
                    'Source': 'moo',
                    'Destination': 'moo',
                    'Type': 'bind',
                }]
            },
            {
                'service': 'mysql',
            },
            {
                'service': 'postgres',
            },
        ]

        with mock.patch(list_containers_func, fixtures.containers(containers=containers)):
            test = utils.list_containers()