Coverage for manila/tests/test_manager.py: 100%

74 statements  

« prev     ^ index     » next       coverage.py v7.11.0, created at 2026-02-18 22:19 +0000

1# Copyright 2014 Mirantis Inc. 

2# All Rights Reserved. 

3# 

4# Licensed under the Apache License, Version 2.0 (the "License"); you may 

5# not use this file except in compliance with the License. You may obtain 

6# a copy of the License at 

7# 

8# http://www.apache.org/licenses/LICENSE-2.0 

9# 

10# Unless required by applicable law or agreed to in writing, software 

11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 

12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 

13# License for the specific language governing permissions and limitations 

14# under the License. 

15 

16"""Test of Base Manager for Manila.""" 

17 

18from unittest import mock 

19 

20import ddt 

21from oslo_utils import importutils 

22 

23from manila import manager 

24from manila import test 

25 

26 

27@ddt.ddt 

28class ManagerTestCase(test.TestCase): 

29 

30 def setUp(self): 

31 super(ManagerTestCase, self).setUp() 

32 self.host = 'host' 

33 self.db_driver = 'fake_driver' 

34 self.mock_object(importutils, 'import_module') 

35 

36 def test_verify_manager_instance(self): 

37 fake_manager = manager.Manager(self.host, self.db_driver) 

38 self.assertTrue(hasattr(fake_manager, '_periodic_tasks')) 

39 self.assertTrue(hasattr(fake_manager, 'additional_endpoints')) 

40 self.assertTrue(hasattr(fake_manager, 'host')) 

41 self.assertTrue(hasattr(fake_manager, 'periodic_tasks')) 

42 self.assertTrue(hasattr(fake_manager, 'init_host')) 

43 self.assertTrue(hasattr(fake_manager, 'service_version')) 

44 self.assertTrue(hasattr(fake_manager, 'service_config')) 

45 self.assertEqual(self.host, fake_manager.host) 

46 importutils.import_module.assert_called_once_with(self.db_driver) 

47 

48 @ddt.data(True, False) 

49 def test_periodic_tasks(self, raise_on_error): 

50 fake_manager = manager.Manager(self.host, self.db_driver) 

51 fake_context = 'fake_context' 

52 self.mock_object(fake_manager, 'run_periodic_tasks') 

53 

54 fake_manager.periodic_tasks(fake_context, raise_on_error) 

55 

56 fake_manager.run_periodic_tasks.assert_called_once_with( 

57 fake_context, raise_on_error=raise_on_error) 

58 

59 

60@ddt.ddt 

61class SchedulerDependentManagerTestCase(test.TestCase): 

62 

63 def setUp(self): 

64 super(SchedulerDependentManagerTestCase, self).setUp() 

65 self.context = 'fake_context' 

66 self.host = 'host' 

67 self.db_driver = 'fake_driver' 

68 self.service_name = 'fake_service_name' 

69 self.mock_object(importutils, 'import_module') 

70 self.sched_manager = manager.SchedulerDependentManager( 

71 self.host, self.db_driver, self.service_name) 

72 

73 def test_verify_scheduler_dependent_manager_instance(self): 

74 self.assertTrue(hasattr(self.sched_manager, '_periodic_tasks')) 

75 self.assertTrue(hasattr(self.sched_manager, 'additional_endpoints')) 

76 self.assertTrue(hasattr(self.sched_manager, 'host')) 

77 self.assertTrue(hasattr(self.sched_manager, 'periodic_tasks')) 

78 self.assertTrue(hasattr(self.sched_manager, 'init_host')) 

79 self.assertTrue(hasattr(self.sched_manager, 'service_version')) 

80 self.assertTrue(hasattr(self.sched_manager, 'service_config')) 

81 self.assertTrue(hasattr(self.sched_manager, 'last_capabilities')) 

82 self.assertTrue(hasattr(self.sched_manager, 'service_name')) 

83 self.assertTrue(hasattr(self.sched_manager, 'scheduler_rpcapi')) 

84 self.assertTrue(hasattr(self.sched_manager, 

85 'update_service_capabilities')) 

86 self.assertTrue(hasattr(self.sched_manager, 

87 '_publish_service_capabilities')) 

88 self.assertEqual(self.host, self.sched_manager.host) 

89 self.assertEqual(self.service_name, self.sched_manager.service_name) 

90 importutils.import_module.assert_called_once_with(self.db_driver) 

91 

92 @ddt.data(None, {}, [], '') 

93 def test__publish_service_capabilities_no_update(self, last_capabilities): 

94 self.sched_manager.last_capabilities = last_capabilities 

95 self.mock_object( 

96 self.sched_manager.scheduler_rpcapi, 'update_service_capabilities') 

97 

98 self.sched_manager._publish_service_capabilities('fake_context') 

99 

100 self.assertFalse( 

101 self.sched_manager.scheduler_rpcapi.update_service_capabilities. 

102 called) 

103 

104 @ddt.data('fake_last_capabilities', {'foo': 'bar'}) 

105 def test__publish_service_capabilities_with_update(self, 

106 last_capabilities): 

107 self.sched_manager.last_capabilities = last_capabilities 

108 self.mock_object( 

109 self.sched_manager.scheduler_rpcapi, 'update_service_capabilities') 

110 self.mock_object(manager.LOG, 'debug') 

111 

112 self.sched_manager._publish_service_capabilities(self.context) 

113 

114 (self.sched_manager.scheduler_rpcapi.update_service_capabilities. 

115 assert_called_once_with( 

116 self.context, self.service_name, self.host, last_capabilities)) 

117 manager.LOG.debug.assert_called_once_with(mock.ANY) 

118 

119 @ddt.data(None, '', [], {}, {'foo': 'bar'}) 

120 def test_update_service_capabilities(self, capabilities): 

121 self.sched_manager.update_service_capabilities(capabilities) 

122 self.assertEqual(capabilities, self.sched_manager.last_capabilities)