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'}})
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)
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')
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)
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()