~thedac/charms/trusty/neutron-gateway/action-managed-upgrade

« back to all changes in this revision

Viewing changes to unit_tests/test_quantum_hooks.py

  • Committer: Corey Bryant
  • Date: 2015-04-10 14:22:04 UTC
  • mto: This revision was merged to the branch mainline in revision 100.
  • Revision ID: corey.bryant@canonical.com-20150410142204-cxv98ibq76r4m6mq
Deploy from source

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
from mock import MagicMock, patch, call
 
2
import yaml
2
3
import charmhelpers.core.hookenv as hookenv
3
4
hookenv.config = MagicMock()
4
5
import quantum_utils as utils
23
24
    'filter_installed_packages',
24
25
    'get_early_packages',
25
26
    'get_packages',
 
27
    'git_install',
26
28
    'log',
27
29
    'do_openstack_upgrade',
28
30
    'openstack_upgrade_available',
103
105
        self.assertTrue(self.log.called)
104
106
        _exit.assert_called_with(1)
105
107
 
106
 
    def test_config_changed(self):
 
108
    @patch.object(utils, 'git_install_requested')
 
109
    def test_install_hook_git(self, git_requested):
 
110
        git_requested.return_value = True
 
111
        self.valid_plugin.return_value = True
 
112
        _pkgs = ['foo', 'bar']
 
113
        self.filter_installed_packages.return_value = _pkgs
 
114
        repo = 'cloud:trusty-juno'
 
115
        openstack_origin_git = {
 
116
            'repositories': [
 
117
                {'name': 'requirements',
 
118
                 'repository': 'git://git.openstack.org/openstack/requirements',  # noqa
 
119
                 'branch': 'stable/juno'},
 
120
                {'name': 'neutron',
 
121
                 'repository': 'git://git.openstack.org/openstack/neutron',
 
122
                 'branch': 'stable/juno'}
 
123
            ],
 
124
            'directory': '/mnt/openstack-git',
 
125
        }
 
126
        projects_yaml = yaml.dump(openstack_origin_git)
 
127
        self.test_config.set('openstack-origin', repo)
 
128
        self.test_config.set('openstack-origin-git', projects_yaml)
 
129
        self._call_hook('install')
 
130
        self.configure_installation_source.assert_called_with(
 
131
            'cloud:trusty-juno'
 
132
        )
 
133
        self.apt_update.assert_called_with(fatal=True)
 
134
        self.apt_install.assert_has_calls([
 
135
            call(_pkgs, fatal=True),
 
136
            call(_pkgs, fatal=True),
 
137
        ])
 
138
        self.assertTrue(self.get_early_packages.called)
 
139
        self.assertTrue(self.get_packages.called)
 
140
        self.git_install.assert_called_with(projects_yaml)
 
141
        self.assertTrue(self.execd_preinstall.called)
 
142
 
 
143
    @patch.object(hooks, 'git_install_requested')
 
144
    def test_config_changed(self, git_requested):
107
145
        def mock_relids(rel):
108
146
            return ['relid']
 
147
        git_requested.return_value = False
109
148
        self.test_config.set('sysctl', '{ kernel.max_pid: "1337"}')
110
149
        self.openstack_upgrade_available.return_value = True
111
150
        self.valid_plugin.return_value = True
125
164
        self.assertTrue(_zmq_joined.called)
126
165
        self.create_sysctl.assert_called()
127
166
 
128
 
    def test_config_changed_upgrade(self):
 
167
    @patch.object(hooks, 'git_install_requested')
 
168
    def test_config_changed_upgrade(self, git_requested):
 
169
        git_requested.return_value = False
129
170
        self.openstack_upgrade_available.return_value = True
130
171
        self.valid_plugin.return_value = True
131
172
        self._call_hook('config-changed')
132
173
        self.assertTrue(self.do_openstack_upgrade.called)
133
174
        self.assertTrue(self.configure_ovs.called)
134
175
 
135
 
    def test_config_changed_n1kv(self):
 
176
    @patch.object(hooks, 'git_install_requested')
 
177
    def test_config_changed_n1kv(self, git_requested):
 
178
        git_requested.return_value = False
136
179
        self.openstack_upgrade_available.return_value = False
137
180
        self.valid_plugin.return_value = True
138
181
        self.filter_installed_packages.side_effect = lambda p: p
144
187
        self.apt_purge.assert_called_with('neutron-l3-agent')
145
188
 
146
189
    @patch('sys.exit')
147
 
    def test_config_changed_invalid_plugin(self, _exit):
 
190
    @patch.object(hooks, 'git_install_requested')
 
191
    def test_config_changed_invalid_plugin(self, git_requested, _exit):
 
192
        git_requested.return_value = False
148
193
        self.valid_plugin.return_value = False
149
194
        self._call_hook('config-changed')
150
195
        self.assertTrue(self.log.called)
151
196
        _exit.assert_called_with(1)
152
197
 
 
198
    @patch.object(hooks, 'git_install_requested')
 
199
    @patch.object(hooks, 'config_value_changed')
 
200
    def test_config_changed_git(self, config_val_changed, git_requested):
 
201
        def mock_relids(rel):
 
202
            return ['relid']
 
203
        git_requested.return_value = True
 
204
        self.test_config.set('sysctl', '{ kernel.max_pid: "1337"}')
 
205
        self.openstack_upgrade_available.return_value = True
 
206
        self.valid_plugin.return_value = True
 
207
        self.relation_ids.side_effect = mock_relids
 
208
        _db_joined = self.patch('db_joined')
 
209
        _pgsql_db_joined = self.patch('pgsql_db_joined')
 
210
        _amqp_joined = self.patch('amqp_joined')
 
211
        _amqp_nova_joined = self.patch('amqp_nova_joined')
 
212
        _zmq_joined = self.patch('zeromq_configuration_relation_joined')
 
213
        repo = 'cloud:trusty-juno'
 
214
        openstack_origin_git = {
 
215
            'repositories': [
 
216
                {'name': 'requirements',
 
217
                 'repository':
 
218
                 'git://git.openstack.org/openstack/requirements',
 
219
                 'branch': 'stable/juno'},
 
220
                {'name': 'neutron',
 
221
                 'repository': 'git://git.openstack.org/openstack/neutron',
 
222
                 'branch': 'stable/juno'}
 
223
            ],
 
224
            'directory': '/mnt/openstack-git',
 
225
        }
 
226
        projects_yaml = yaml.dump(openstack_origin_git)
 
227
        self.test_config.set('openstack-origin', repo)
 
228
        self.test_config.set('openstack-origin-git', projects_yaml)
 
229
        self._call_hook('config-changed')
 
230
        self.git_install.assert_called_with(projects_yaml)
 
231
        self.assertFalse(self.do_openstack_upgrade.called)
 
232
        self.assertTrue(self.configure_ovs.called)
 
233
        self.assertTrue(_db_joined.called)
 
234
        self.assertTrue(_pgsql_db_joined.called)
 
235
        self.assertTrue(_amqp_joined.called)
 
236
        self.assertTrue(_amqp_nova_joined.called)
 
237
        self.assertTrue(_zmq_joined.called)
 
238
        self.create_sysctl.assert_called()
 
239
 
153
240
    def test_upgrade_charm(self):
154
241
        _install = self.patch('install')
155
242
        _config_changed = self.patch('config_changed')