volume_test.py 2.9 KB

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