volume_test.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. from __future__ import absolute_import
  2. from __future__ import unicode_literals
  3. from docker.errors import DockerException
  4. from .testcases import DockerClientTestCase
  5. from compose.volume import Volume
  6. class VolumeTest(DockerClientTestCase):
  7. def setUp(self):
  8. self.tmp_volumes = []
  9. def tearDown(self):
  10. for volume in self.tmp_volumes:
  11. try:
  12. self.client.remove_volume(volume.full_name)
  13. except DockerException:
  14. pass
  15. del self.tmp_volumes
  16. super(VolumeTest, self).tearDown()
  17. def create_volume(self, name, driver=None, opts=None, external=None):
  18. if external and isinstance(external, bool):
  19. external = name
  20. vol = Volume(
  21. self.client, 'composetest', name, driver=driver, driver_opts=opts,
  22. external_name=external
  23. )
  24. self.tmp_volumes.append(vol)
  25. return vol
  26. def test_create_volume(self):
  27. vol = self.create_volume('volume01')
  28. vol.create()
  29. info = self.client.inspect_volume(vol.full_name)
  30. assert info['Name'] == vol.full_name
  31. def test_recreate_existing_volume(self):
  32. vol = self.create_volume('volume01')
  33. vol.create()
  34. info = self.client.inspect_volume(vol.full_name)
  35. assert info['Name'] == vol.full_name
  36. vol.create()
  37. info = self.client.inspect_volume(vol.full_name)
  38. assert info['Name'] == vol.full_name
  39. def test_inspect_volume(self):
  40. vol = self.create_volume('volume01')
  41. vol.create()
  42. info = vol.inspect()
  43. assert info['Name'] == vol.full_name
  44. def test_remove_volume(self):
  45. vol = Volume(self.client, 'composetest', 'volume01')
  46. vol.create()
  47. vol.remove()
  48. volumes = self.client.volumes()['Volumes']
  49. assert len([v for v in volumes if v['Name'] == vol.full_name]) == 0
  50. def test_external_volume(self):
  51. vol = self.create_volume('composetest_volume_ext', external=True)
  52. assert vol.external is True
  53. assert vol.full_name == vol.name
  54. vol.create()
  55. info = vol.inspect()
  56. assert info['Name'] == vol.name
  57. def test_external_aliased_volume(self):
  58. alias_name = 'composetest_alias01'
  59. vol = self.create_volume('volume01', external=alias_name)
  60. assert vol.external is True
  61. assert vol.full_name == alias_name
  62. vol.create()
  63. info = vol.inspect()
  64. assert info['Name'] == alias_name
  65. def test_exists(self):
  66. vol = self.create_volume('volume01')
  67. assert vol.exists() is False
  68. vol.create()
  69. assert vol.exists() is True
  70. def test_exists_external(self):
  71. vol = self.create_volume('volume01', external=True)
  72. assert vol.exists() is False
  73. vol.create()
  74. assert vol.exists() is True
  75. def test_exists_external_aliased(self):
  76. vol = self.create_volume('volume01', external='composetest_alias01')
  77. assert vol.exists() is False
  78. vol.create()
  79. assert vol.exists() is True