project_test.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. from fig.project import Project
  2. from .testcases import DockerClientTestCase
  3. class ProjectTest(DockerClientTestCase):
  4. def test_from_dict(self):
  5. project = Project.from_dicts('figtest', [
  6. {
  7. 'name': 'web',
  8. 'image': 'ubuntu'
  9. },
  10. {
  11. 'name': 'db',
  12. 'image': 'ubuntu'
  13. }
  14. ], self.client)
  15. self.assertEqual(len(project.services), 2)
  16. self.assertEqual(project.get_service('web').name, 'web')
  17. self.assertEqual(project.get_service('web').options['image'], 'ubuntu')
  18. self.assertEqual(project.get_service('db').name, 'db')
  19. self.assertEqual(project.get_service('db').options['image'], 'ubuntu')
  20. def test_from_dict_sorts_in_dependency_order(self):
  21. project = Project.from_dicts('figtest', [
  22. {
  23. 'name': 'web',
  24. 'image': 'ubuntu',
  25. 'links': ['db'],
  26. },
  27. {
  28. 'name': 'db',
  29. 'image': 'ubuntu'
  30. }
  31. ], self.client)
  32. self.assertEqual(project.services[0].name, 'db')
  33. self.assertEqual(project.services[1].name, 'web')
  34. def test_get_service(self):
  35. web = self.create_service('web')
  36. project = Project('test', [web], self.client)
  37. self.assertEqual(project.get_service('web'), web)
  38. def test_create_containers(self):
  39. web = self.create_service('web')
  40. db = self.create_service('db')
  41. project = Project('test', [web, db], self.client)
  42. project.create_containers(service_names=['web'])
  43. self.assertEqual(len(web.containers(stopped=True)), 1)
  44. self.assertEqual(len(db.containers(stopped=True)), 0)
  45. project.create_containers()
  46. self.assertEqual(len(web.containers(stopped=True)), 1)
  47. self.assertEqual(len(db.containers(stopped=True)), 1)
  48. def test_start_stop_kill_remove(self):
  49. web = self.create_service('web')
  50. db = self.create_service('db')
  51. project = Project('figtest', [web, db], self.client)
  52. project.start()
  53. self.assertEqual(len(web.containers()), 0)
  54. self.assertEqual(len(db.containers()), 0)
  55. web_container_1 = web.create_container()
  56. web_container_2 = web.create_container()
  57. db_container = db.create_container()
  58. project.start(service_names=['web'])
  59. self.assertEqual(set(c.name for c in project.containers()), set([web_container_1.name, web_container_2.name]))
  60. project.start()
  61. self.assertEqual(set(c.name for c in project.containers()), set([web_container_1.name, web_container_2.name, db_container.name]))
  62. project.stop(service_names=['web'], timeout=1)
  63. self.assertEqual(set(c.name for c in project.containers()), set([db_container.name]))
  64. project.kill(service_names=['db'])
  65. self.assertEqual(len(project.containers()), 0)
  66. self.assertEqual(len(project.containers(stopped=True)), 3)
  67. project.remove_stopped(service_names=['web'])
  68. self.assertEqual(len(project.containers(stopped=True)), 1)
  69. project.remove_stopped()
  70. self.assertEqual(len(project.containers(stopped=True)), 0)