Files
storlets/tests/unit/agent/daemon/test_server.py
Takashi Kajinami b6f141aef5 Replace third party mock
... because now we do not support Python 2.

Change-Id: I3d3ebad466ee0f17e8d6a80bdaa3cd8310f4dd74
2022-06-26 14:58:26 +00:00

80 lines
2.8 KiB
Python

# Copyright (c) 2015-2016 OpenStack Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import unittest
from unittest import mock
from storlets.sbus import command as sbus_cmd
from storlets.agent.daemon.server import StorletDaemon, StorletDaemonLoadError
from tests.unit import FakeLogger
from tests.unit.agent.common import test_server
class FakeModule(object):
FakeClass = mock.MagicMock
class TestStorletDaemon(unittest.TestCase):
def setUp(self):
self.logger = FakeLogger()
def test_invalid_module_name(self):
for module_name in ('only_module',
'OnlyClass',
'nested.module.Class',
1, None, True, False):
self._test_invalid_module_name(module_name)
def _test_invalid_module_name(self, module_name):
with self.assertRaises(ValueError) as cm:
StorletDaemon(module_name, 'fake_path', self.logger, 16)
self.assertEqual('Invalid storlet name %s' % module_name,
cm.exception.args[0])
def test_module_not_found(self):
with self.assertRaises(StorletDaemonLoadError) as cm:
StorletDaemon('nomodule.Nothing', 'fake_path', self.logger, 16)
self.assertEqual('Failed to load storlet nomodule.Nothing',
cm.exception.args[0])
class TestStorletDaemonMain(test_server.TestSBusServerMain):
def _get_test_server(self):
with mock.patch('importlib.import_module') as fake_import:
fake_import.return_value = FakeModule()
server = StorletDaemon(
'fakeModule.FakeClass', self.sbus_path, self.logger, 16)
return server
def test_main_loop_successful_stop(self):
# SBUS_CMD_HALT is for working to stop requested from
# storlet_middleware
self._test_main_loop_stop(sbus_cmd.SBUS_CMD_HALT)
def test_main_loop_canceled_stop(self):
# SBUS_CMD_CANCEL is for working to stop from sort of daemon
# management tools
# TODO(kota_): SBUS_CMD_CANCEL has more tasks to do for cleanup
# so need more assertions.
self._test_main_loop_stop(sbus_cmd.SBUS_CMD_CANCEL)
def test_main_loop_timeout(self):
self._test_main_loop_timeout()
if __name__ == '__main__':
unittest.main()