base.py 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. """Defines base classes for all provider tests."""
  2. import mock
  3. from coriolis.tests import test_base
  4. from coriolis.tests import testutils
  5. class ProvidersBaseTestCase(test_base.CoriolisBaseTestCase):
  6. def setUp(self):
  7. super(ProvidersBaseTestCase, self).setUp()
  8. self._mock_event_manager = mock.MagicMock()
  9. self._mock_context = mock.MagicMock()
  10. self._test_conn_info = mock.sentinel.test_connection_info
  11. self._test_instance_name = mock.sentinel.test_instance_name
  12. self._mock_morph = mock.MagicMock()
  13. osmorphing_patcher = mock.patch(
  14. 'coriolis.osmorphing.manager.morph_image', new=self._mock_morph)
  15. osmorphing_patcher.start()
  16. # NOTE: declare utils.retry_on_error mock; '_patch_utils_retry' should
  17. # be called to enable them.
  18. self._mock_utils_retry_inner = testutils.make_identity_decorator_mock()
  19. def retry_dec(*args, **kwargs):
  20. return self._mock_utils_retry_inner
  21. self._mock_utils_retry = mock.MagicMock(side_effect=retry_dec)
  22. # NOTE: declare various utils disk helpers mocks;
  23. # '_patch_utils_disk_functions' should be called to enable them...
  24. self._mock_utils_get_disk_info = mock.MagicMock()
  25. self._mock_utils_convert_disk = mock.MagicMock()
  26. self.addCleanup(mock.patch.stopall)
  27. def _patch_utils_retry(self):
  28. retry_patcher = mock.patch(
  29. 'coriolis.utils.retry_on_error', self._mock_utils_retry)
  30. retry_patcher.start()
  31. def _patch_utils_disk_functions(self):
  32. utils_patcher = mock.patch.multiple(
  33. 'coriolis.utils',
  34. get_disk_info=self._mock_utils_get_disk_info,
  35. convert_disk_format=self._mock_utils_convert_disk)
  36. utils_patcher.start()
  37. class ImportProviderTestCase(ProvidersBaseTestCase):
  38. @property
  39. def _platform(self):
  40. raise NotImplementedError("Missing platform type.")
  41. @property
  42. def _hypervisor(self):
  43. raise NotImplementedError("Missing hypervisor type.")
  44. def setUp(self):
  45. super(ImportProviderTestCase, self).setUp()
  46. self._test_target_env = mock.sentinel.target_environment
  47. self._test_export_info = mock.sentinel.export_info
  48. def _test_morphing_called(self, os_type="", nics_info=None,
  49. ignore_devs=[]):
  50. self._mock_morph.morph_image.assert_called_once_with(
  51. self._mock_conn_info, os_type,
  52. self._hypervisor, self._platform,
  53. nics_info, self._mock_event_manager,
  54. ignore_devices=ignore_devs)
  55. class ExportProviderTestCase(ProvidersBaseTestCase):
  56. def setUp(self):
  57. super(ExportProviderTestCase, self).setUp()
  58. self._export_path = mock.sentinel.export_path