3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
7 # http://www.apache.org/licenses/LICENSE-2.0
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
19 from cmframework.server.cmprocessor import CMProcessor
20 from cmframework.apis.cmerror import CMError
21 from cmframework.server.cmcsn import CMCSN
22 from cmframework.server import cmchangemonitor
25 class CMProcessorSnapshotTest(unittest.TestCase):
26 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
27 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
28 @mock.patch('cmframework.server.cmprocessor.logging')
29 def test_get_property(self, mock_logging, mock_cmsnapshot, mock_cmcsn):
30 mock_backend = mock.MagicMock()
32 mock_validator = mock.MagicMock()
33 mock_activator = mock.MagicMock()
34 mock_changemonitor = mock.MagicMock()
35 mock_activationstate_handler = mock.MagicMock()
36 mock_snapshot_handler = mock.MagicMock()
38 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
39 mock_changemonitor, mock_activationstate_handler,
40 mock_snapshot_handler)
42 property = processor.get_property('foo')
43 mock_cmsnapshot.return_value.assert_not_called()
45 snapshot_property = processor.get_property('foo', 'snap1')
46 mock_cmsnapshot.return_value.assert_has_calls([call.load('snap1'),
47 call.get_property('foo')],
50 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
51 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
52 @mock.patch('cmframework.server.cmprocessor.logging')
53 def test_get_properties(self, mock_logging, mock_cmsnapshot, mock_cmcsn):
54 mock_backend = mock.MagicMock()
56 mock_validator = mock.MagicMock()
57 mock_activator = mock.MagicMock()
58 mock_changemonitor = mock.MagicMock()
59 mock_activationstate_handler = mock.MagicMock()
60 mock_snapshot_handler = mock.MagicMock()
62 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
63 mock_changemonitor, mock_activationstate_handler,
64 mock_snapshot_handler)
66 property = processor.get_properties('.*')
67 mock_cmsnapshot.return_value.assert_not_called()
69 snapshot_property = processor.get_properties('.*', 'snap1')
70 mock_cmsnapshot.return_value.assert_has_calls([call.load('snap1'),
71 call.get_properties('.*')],
74 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
75 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
76 @mock.patch('cmframework.server.cmprocessor.logging')
77 def test_create_snapshot(self, mock_logging, mock_cmsnapshot, mock_cmcsn):
78 mock_backend = mock.MagicMock()
80 mock_validator = mock.MagicMock()
81 mock_activator = mock.MagicMock()
82 mock_changemonitor = mock.MagicMock()
83 mock_activationstate_handler = mock.MagicMock()
84 mock_snapshot_handler = mock.MagicMock()
86 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
87 mock_changemonitor, mock_activationstate_handler,
88 mock_snapshot_handler)
90 processor.create_snapshot('snap1')
92 mock_cmsnapshot.return_value.create.assert_called_once_with('snap1', mock_backend)
94 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
95 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
96 @mock.patch('cmframework.server.cmprocessor.logging')
97 def test_delete_snapshot(self, mock_logging, mock_cmsnapshot, mock_cmcsn):
98 mock_backend = mock.MagicMock()
100 mock_validator = mock.MagicMock()
101 mock_activator = mock.MagicMock()
102 mock_changemonitor = mock.MagicMock()
103 mock_activationstate_handler = mock.MagicMock()
104 mock_snapshot_handler = mock.MagicMock()
106 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
107 mock_changemonitor, mock_activationstate_handler,
108 mock_snapshot_handler)
110 processor.delete_snapshot('snap1')
112 mock_cmsnapshot.return_value.delete.assert_called_once_with('snap1')
114 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
115 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
116 @mock.patch('cmframework.server.cmprocessor.logging')
117 def test_list_snapshots(self, mock_logging, mock_cmsnapshot, mock_cmcsn):
118 mock_backend = mock.MagicMock()
120 mock_validator = mock.MagicMock()
121 mock_activator = mock.MagicMock()
122 mock_changemonitor = mock.MagicMock()
123 mock_activationstate_handler = mock.MagicMock()
124 mock_snapshot_handler = mock.MagicMock()
126 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
127 mock_changemonitor, mock_activationstate_handler,
128 mock_snapshot_handler)
130 processor.list_snapshots()
132 mock_cmsnapshot.return_value.list.assert_called_once()
134 @mock.patch('cmframework.server.cmprocessor.cmactivationwork.CMActivationWork')
135 @mock.patch('cmframework.server.cmprocessor.cmcsn.CMCSN')
136 @mock.patch('cmframework.server.cmprocessor.cmsnapshot.CMSnapshot')
137 @mock.patch('cmframework.server.cmprocessor.logging')
138 def test_restore_snapshot(self,
142 mock_cmactivationwork):
143 csn1 = mock.MagicMock()
144 csn2 = mock.MagicMock()
145 mock_cmcsn.side_effect = [csn1, csn2]
146 mock_backend = mock.MagicMock()
148 mock_validator = mock.MagicMock()
149 mock_activator = mock.MagicMock()
150 mock_changemonitor = mock.MagicMock()
151 mock_activationstate_handler = mock.MagicMock()
152 mock_snapshot_handler = mock.MagicMock()
154 processor = CMProcessor(mock_backend, mock_validator, mock_activator,
155 mock_changemonitor, mock_activationstate_handler,
156 mock_snapshot_handler)
158 self.assertEqual(processor.csn, csn1)
160 processor.restore_snapshot('snap1')
162 self.assertEqual(processor.csn, csn2)
163 mock_cmsnapshot.return_value.load.assert_called_once_with('snap1')
164 mock_validator.validate_set.assert_called_once_with(
165 mock_cmsnapshot.return_value.get_properties.return_value)
166 mock_cmsnapshot.return_value.restore.assert_called_once_with(mock_backend)
167 mock_cmactivationwork.assert_called_once_with(
168 mock_cmactivationwork.OPER_SET,
169 csn2.get.return_value,
170 mock_cmsnapshot.return_value.get_properties.return_value)
171 mock_activator.add_work.assert_called_once_with(mock_cmactivationwork.return_value)
173 if __name__ == '__main__':