1
0

resilience_test.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from __future__ import unicode_literals
  2. from __future__ import absolute_import
  3. import mock
  4. from compose.project import Project
  5. from .testcases import DockerClientTestCase
  6. class ResilienceTest(DockerClientTestCase):
  7. def setUp(self):
  8. self.db = self.create_service('db', volumes=['/var/db'], command='top')
  9. self.project = Project('composetest', [self.db], self.client)
  10. container = self.db.create_container()
  11. self.db.start_container(container)
  12. self.host_path = container.get('Volumes')['/var/db']
  13. def test_successful_recreate(self):
  14. self.project.up(force_recreate=True)
  15. container = self.db.containers()[0]
  16. self.assertEqual(container.get('Volumes')['/var/db'], self.host_path)
  17. def test_create_failure(self):
  18. with mock.patch('compose.service.Service.create_container', crash):
  19. with self.assertRaises(Crash):
  20. self.project.up(force_recreate=True)
  21. self.project.up()
  22. container = self.db.containers()[0]
  23. self.assertEqual(container.get('Volumes')['/var/db'], self.host_path)
  24. def test_start_failure(self):
  25. with mock.patch('compose.service.Service.start_container', crash):
  26. with self.assertRaises(Crash):
  27. self.project.up(force_recreate=True)
  28. self.project.up()
  29. container = self.db.containers()[0]
  30. self.assertEqual(container.get('Volumes')['/var/db'], self.host_path)
  31. class Crash(Exception):
  32. pass
  33. def crash(*args, **kwargs):
  34. raise Crash()