legacy_test.py 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. from compose import legacy
  2. from compose.project import Project
  3. from .testcases import DockerClientTestCase
  4. class ProjectTest(DockerClientTestCase):
  5. def setUp(self):
  6. super(ProjectTest, self).setUp()
  7. self.services = [
  8. self.create_service('web'),
  9. self.create_service('db'),
  10. ]
  11. self.project = Project('composetest', self.services, self.client)
  12. # Create a legacy container for each service
  13. for service in self.services:
  14. service.ensure_image_exists()
  15. self.client.create_container(
  16. name='{}_{}_1'.format(self.project.name, service.name),
  17. **service.options
  18. )
  19. # Create a single one-off legacy container
  20. self.client.create_container(
  21. name='{}_{}_run_1'.format(self.project.name, self.services[0].name),
  22. **self.services[0].options
  23. )
  24. def get_names(self, **kwargs):
  25. if 'stopped' not in kwargs:
  26. kwargs['stopped'] = True
  27. return list(legacy.get_legacy_container_names(
  28. self.client,
  29. self.project.name,
  30. [s.name for s in self.services],
  31. **kwargs
  32. ))
  33. def test_get_legacy_container_names(self):
  34. self.assertEqual(len(self.get_names()), len(self.services))
  35. def test_get_legacy_container_names_one_off(self):
  36. self.assertEqual(len(self.get_names(one_off=True)), 1)
  37. def test_migration_to_labels(self):
  38. with self.assertRaises(legacy.LegacyContainersError) as cm:
  39. self.assertEqual(self.project.containers(stopped=True), [])
  40. self.assertEqual(
  41. set(cm.exception.names),
  42. set(['composetest_web_1', 'composetest_db_1']),
  43. )
  44. legacy.migrate_project_to_labels(self.project)
  45. self.assertEqual(len(self.project.containers(stopped=True)), len(self.services))