Пример #1
0
    def test_list_masking_views(self, driver_manager, mock_fake):
        driver_manager.return_value = FakeStorageDriver()
        mock_fake.return_value = []
        api = API()
        storage_id = '12345'

        api.list_masking_views(context, storage_id)
        driver_manager.assert_called_once()
        mock_fake.assert_called_once()
Пример #2
0
    def test_collect_perf_metrics(self, driver_manager):
        driver_manager.return_value = FakeStorageDriver()
        storage_id = '12345'
        capabilities = API().get_capabilities(context, storage_id)

        metrics = API().collect_perf_metrics(context, storage_id,
                                             capabilities['resource_metrics'],
                                             1622808000000, 1622808000001)
        self.assertTrue('resource_metrics' in capabilities)
        self.assertTrue(True, isinstance(metrics[0], constants.metric_struct))
        self.assertEqual(driver_manager.call_count, 2)
Пример #3
0
    def test_get_storage(self, driver_manager, mock_fake):
        driver_manager.return_value = FakeStorageDriver()
        storage = copy.deepcopy(STORAGE)
        storage['id'] = '12345'
        mock_fake.return_value = storage
        api = API()

        storage_id = '12345'

        api.get_storage(context, storage_id)
        driver_manager.assert_called_once()
        mock_fake.assert_called()
Пример #4
0
    def test_parse_alert(self, mock_access_info, driver_manager, mock_fake):
        mock_access_info.return_value = ACCESS_INFO
        driver_manager.return_value = FakeStorageDriver()
        mock_fake.return_value = []
        api = API()

        storage_id = '12345'

        api.parse_alert(context, storage_id, 'alert')
        mock_access_info.assert_called_once()
        driver_manager.assert_called_once()
        mock_fake.assert_called_once()
Пример #5
0
    def test_update_access_info(self, mock_storage_get,
                                mock_access_info_update,
                                mock_storage_update,
                                mock_storage):
        storage = copy.deepcopy(STORAGE)
        access_info_new = copy.deepcopy(ACCESS_INFO)
        access_info_new['rest']['username'] = '******'

        mock_storage_get.return_value = storage
        mock_access_info_update.return_value = access_info_new
        mock_storage_update.return_value = None
        mock_storage.return_value = storage
        api = API()
        updated = api.update_access_info(context, access_info_new)

        storage_id = '12345'
        mock_storage_get.assert_called_with(
            context, storage_id)

        mock_access_info_update.assert_called_with(
            context, storage_id, access_info_new)

        mock_storage_update.assert_called_with(
            context, storage_id, storage)

        access_info_new['rest']['password'] = "******"
        self.assertDictEqual(access_info_new, updated)

        # Case: Wrong storage serial number
        wrong_storage = copy.deepcopy(STORAGE)
        wrong_storage['serial_number'] = '00000'
        mock_storage.return_value = wrong_storage
        with self.assertRaises(exception.StorageSerialNumberMismatch) as exc:
            api.update_access_info(context, access_info_new)

        msg = "Serial number 00000 does not match " \
              "the existing storage serial number"
        self.assertIn(msg, str(exc.exception))

        # Case: No storage serial number
        wrong_storage.pop('serial_number')
        mock_storage.return_value = wrong_storage
        with self.assertRaises(exception.InvalidResults) as exc:
            api.update_access_info(context, access_info_new)

        msg = "Serial number should be provided by storage"
        self.assertIn(msg, str(exc.exception))

        # Case: No storage
        mock_storage.return_value = None
        with self.assertRaises(exception.StorageBackendNotFound) as exc:
            api.update_access_info(context, access_info_new)

        msg = "Storage backend could not be found"
        self.assertIn(msg, str(exc.exception))
Пример #6
0
    def test_get_capabilities(self, driver_manager):
        driver_manager.return_value = FakeStorageDriver()
        storage_id = '12345'
        capabilities = API().get_capabilities(context, storage_id)

        self.assertTrue('resource_metrics' in capabilities)
        driver_manager.assert_called_once()
Пример #7
0
    def test_list_ports(self, mock_storage, mock_access_info,
                        mock_storage_create, mock_fake):
        storage = copy.deepcopy(STORAGE)
        storage['id'] = '12345'
        mock_storage.return_value = None
        mock_access_info.return_value = ACCESS_INFO
        mock_storage_create.return_value = storage
        mock_fake.return_value = []
        api = API()
        api.discover_storage(context, ACCESS_INFO)

        storage_id = '12345'
        driver = api.driver_manager.driver_factory.get(storage_id, None)
        self.assertIsNotNone(driver)
        api.list_ports(context, storage_id)
        mock_fake.assert_called_once()
Пример #8
0
    def test_remove_storage(self, mock_storage, mock_access_info,
                            mock_storage_create):
        storage = copy.deepcopy(STORAGE)
        storage['id'] = '12345'
        mock_storage.return_value = None
        mock_access_info.return_value = ACCESS_INFO
        mock_storage_create.return_value = storage
        api = API()
        api.discover_storage(context, ACCESS_INFO)

        storage_id = '12345'
        driver = api.driver_manager.driver_factory.get(storage_id, None)
        self.assertIsNotNone(driver)

        api.remove_storage(context, storage_id)

        driver = api.driver_manager.driver_factory.get(storage_id, None)
        self.assertIsNone(driver)
Пример #9
0
    def test_remove_storage(self, mock_storage, mock_access_info,
                            mock_storage_create, mock_get_storage,
                            mock_dm):
        storage = copy.deepcopy(STORAGE)
        storage['id'] = '12345'
        mock_storage.return_value = None
        mock_access_info.return_value = ACCESS_INFO
        mock_storage_create.return_value = storage
        api = API()
        api.discover_storage(context, ACCESS_INFO)
        mock_get_storage.return_value = None
        mock_dm.return_value = FakeStorageDriver()

        storage_id = '12345'

        # Verify that driver instance not added to factory
        driver = api.driver_manager.driver_factory.get(storage_id, None)
        self.assertIsNone(driver)

        api.remove_storage(context, storage_id)

        driver = api.driver_manager.driver_factory.get(storage_id, None)
        self.assertIsNone(driver)
Пример #10
0
    def test_discover_storage(self, mock_storage, mock_access_info,
                              mock_storage_create, mock_get_storage):
        # Case: Positive scenario for fake driver discovery
        storage = copy.deepcopy(STORAGE)
        storage['id'] = '12345'
        mock_storage.return_value = None
        mock_access_info.return_value = ACCESS_INFO
        mock_storage_create.return_value = storage
        api = API()
        api.discover_storage(context, ACCESS_INFO)
        mock_storage.assert_called()
        mock_access_info.assert_called_with(context, ACCESS_INFO)
        mock_storage_create.assert_called()
        mock_get_storage.return_value = None

        # Case: Register already existing storage
        with self.assertRaises(exception.StorageAlreadyExists) as exc:
            mock_storage.return_value = storage
            api.discover_storage(context, ACCESS_INFO)
        self.assertIn('Storage already exists', str(exc.exception))
        mock_storage.return_value = None

        # Case: Storage without serial number
        wrong_storage = copy.deepcopy(STORAGE)
        wrong_storage.pop('serial_number')
        wrong_storage['id'] = '12345'
        m = mock.Mock()
        with mock.patch.object(FakeStorageDriver, 'get_storage') as m:
            with self.assertRaises(exception.InvalidResults) as exc:
                m.return_value = wrong_storage
                api.discover_storage(context, ACCESS_INFO)
            self.assertIn('Serial number should be provided by storage',
                          str(exc.exception))

            # Case: No Storage found
            with self.assertRaises(exception.StorageBackendNotFound) as exc:
                m.return_value = None
                api.discover_storage(context, ACCESS_INFO)
            self.assertIn('Storage backend could not be found',
                          str(exc.exception))

        # Case: Test access info without 'storage_id' for driver
        test_access_info = copy.deepcopy(ACCESS_INFO)
        test_access_info.pop('storage_id')

        s = api.discover_storage(context, ACCESS_INFO)
        self.assertDictEqual(s, storage)

        # Case: Wrong access info (model) for driver
        wrong_access_info = copy.deepcopy(ACCESS_INFO)
        wrong_access_info['model'] = 'wrong_model'
        with self.assertRaises(exception.StorageDriverNotFound) as exc:
            api.discover_storage(context, wrong_access_info)

        msg = "Storage driver 'fake_storage wrong_model'could not be found"
        self.assertIn(msg, str(exc.exception))
Пример #11
0
 def test_init(self):
     api = API()
     self.assertIsNotNone(api.driver_manager)