volume_test.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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. def create_volume(self, name, driver=None, opts=None, external=None):
  17. if external and isinstance(external, bool):
  18. external = name
  19. vol = Volume(
  20. self.client, 'composetest', name, driver=driver, driver_opts=opts,
  21. external_name=external
  22. )
  23. self.tmp_volumes.append(vol)
  24. return vol
  25. def test_create_volume(self):
  26. vol = self.create_volume('volume01')
  27. vol.create()
  28. info = self.client.inspect_volume(vol.full_name)
  29. assert info['Name'] == vol.full_name
  30. def test_recreate_existing_volume(self):
  31. vol = self.create_volume('volume01')
  32. vol.create()
  33. info = self.client.inspect_volume(vol.full_name)
  34. assert info['Name'] == vol.full_name
  35. vol.create()
  36. info = self.client.inspect_volume(vol.full_name)
  37. assert info['Name'] == vol.full_name
  38. def test_inspect_volume(self):
  39. vol = self.create_volume('volume01')
  40. vol.create()
  41. info = vol.inspect()
  42. assert info['Name'] == vol.full_name
  43. def test_remove_volume(self):
  44. vol = Volume(self.client, 'composetest', 'volume01')
  45. vol.create()
  46. vol.remove()
  47. volumes = self.client.volumes()['Volumes']
  48. assert len([v for v in volumes if v['Name'] == vol.full_name]) == 0
  49. def test_external_volume(self):
  50. vol = self.create_volume('composetest_volume_ext', external=True)
  51. assert vol.external is True
  52. assert vol.full_name == vol.name
  53. vol.create()
  54. info = vol.inspect()
  55. assert info['Name'] == vol.name
  56. def test_external_aliased_volume(self):
  57. alias_name = 'composetest_alias01'
  58. vol = self.create_volume('volume01', external=alias_name)
  59. assert vol.external is True
  60. assert vol.full_name == alias_name
  61. vol.create()
  62. info = vol.inspect()
  63. assert info['Name'] == alias_name
  64. def test_exists(self):
  65. vol = self.create_volume('volume01')
  66. assert vol.exists() is False
  67. vol.create()
  68. assert vol.exists() is True
  69. def test_exists_external(self):
  70. vol = self.create_volume('volume01', external=True)
  71. assert vol.exists() is False
  72. vol.create()
  73. assert vol.exists() is True
  74. def test_exists_external_aliased(self):
  75. vol = self.create_volume('volume01', external='composetest_alias01')
  76. assert vol.exists() is False
  77. vol.create()
  78. assert vol.exists() is True