~ionutbalutoiu/charms/trusty/neutron-api/next

« back to all changes in this revision

Viewing changes to unit_tests/test_neutron_api_hooks.py

  • Committer: Liam Young
  • Date: 2014-06-20 10:02:09 UTC
  • Revision ID: liam.young@canonical.com-20140620100209-ibeiy1g9kt5ayimn
Added openstack upgrade, unit tests and lint fixes

Show diffs side-by-side

added added

removed removed

Lines of Context:
21
21
    'api_port',
22
22
    'apt_update',
23
23
    'apt_install',
24
 
#    'charm_dir',
25
24
    'canonical_url',
26
25
    'config',
27
26
    'CONFIGS',
29
28
    'determine_endpoints',
30
29
    'determine_packages',
31
30
    'determine_ports',
 
31
    'do_openstack_upgrade',
32
32
    'execd_preinstall',
33
33
    'is_leader',
34
34
    'is_relation_made',
36
36
    'network_manager',
37
37
    'neutron_plugin_attribute',
38
38
    'open_port',
 
39
    'openstack_upgrade_available',
39
40
    'relation_get',
40
41
    'relation_ids',
41
42
    'relation_set',
48
49
 
49
50
from random import randrange
50
51
 
 
52
 
51
53
class NeutronAPIHooksTests(CharmTestCase):
52
54
 
53
55
    def setUp(self):
57
59
        self.relation_get.side_effect = self.test_relation.get
58
60
        self.test_config.set('openstack-origin', 'distro')
59
61
        self.test_config.set('neutron-plugin', 'ovs')
60
 
#        self.test_config.set('neutron-external-network', 'ext_net')
61
 
#        self.lsb_release.return_value = {'DISTRIB_CODENAME': 'trusty'}
62
 
#        self.charm_dir.return_value = '/var/lib/juju/charms/neutron/charm'
63
62
 
64
63
    def _fake_relids(self, rel_name):
65
 
        return [ randrange(100) for _count in range(2) ]
 
64
        return [randrange(100) for _count in range(2)]
66
65
 
67
66
    def _call_hook(self, hookname):
68
67
        hooks.hooks.execute([
71
70
    def test_install_hook(self):
72
71
        _pkgs = ['foo', 'bar']
73
72
        _ports = [80, 81, 82]
74
 
        _port_calls = [ call(port) for port in _ports ]
 
73
        _port_calls = [call(port) for port in _ports]
75
74
        self.determine_packages.return_value = _pkgs
76
75
        self.determine_ports.return_value = _ports
77
76
        self._call_hook('install')
86
85
        self.assertTrue(self.execd_preinstall.called)
87
86
 
88
87
    def test_config_changed(self):
 
88
        self.openstack_upgrade_available.return_value = True
89
89
        self.relation_ids.side_effect = self._fake_relids
90
90
        _n_api_rel_joined = self.patch('neutron_api_relation_joined')
91
 
        _n_plugin_api_rel_joined = self.patch('neutron_plugin_api_relation_joined')
 
91
        _n_plugin_api_rel_joined =\
 
92
            self.patch('neutron_plugin_api_relation_joined')
92
93
        _amqp_rel_joined = self.patch('amqp_joined')
93
94
        _id_rel_joined = self.patch('identity_joined')
94
95
        self._call_hook('config-changed')
97
98
        self.assertTrue(_amqp_rel_joined.called)
98
99
        self.assertTrue(_id_rel_joined.called)
99
100
        self.assertTrue(self.CONFIGS.write_all.called)
 
101
        self.assertTrue(self.do_openstack_upgrade.called)
100
102
 
101
103
    def test_amqp_joined(self):
102
104
        self._call_hook('amqp-relation-joined')
200
202
        self._call_hook('identity-service-relation-changed')
201
203
        self.assertTrue(self.CONFIGS.write.called_with(NEUTRON_CONF))
202
204
        self.assertTrue(_api_rel_joined.called)
203
 
          
 
205
 
204
206
    @patch.object(hooks, '_get_keystone_info')
205
207
    def test_neutron_api_relation_no_id_joined(self, _get_ks_info):
206
208
        _get_ks_info.return_value = None
239
241
    @patch.object(hooks, '_get_keystone_info')
240
242
    def test_neutron_api_relation_joined(self, _get_ks_info):
241
243
        _ks_info = {
242
 
             'service_tenant': 'bob',
243
 
             'service_username': 'bob',
244
 
             'service_password': 'bob',
245
 
             'auth_url': 'http://127.0.0.2',
246
 
        } 
 
244
            'service_tenant': 'bob',
 
245
            'service_username': 'bob',
 
246
            'service_password': 'bob',
 
247
            'auth_url': 'http://127.0.0.2',
 
248
        }
247
249
        _get_ks_info.return_value = _ks_info
248
250
        manager = 'neutron'
249
251
        host = 'http://127.0.0.1'
292
294
    @patch.object(hooks, 'get_hacluster_config')
293
295
    def test_ha_joined(self, _get_ha_config):
294
296
        _ha_config = {
295
 
             'vip': '10.0.0.1',
296
 
             'vip_cidr': '24',
297
 
             'vip_iface': 'eth0',
298
 
             'ha-bindiface': 'eth1',
299
 
             'ha-mcastport': '5405',
300
 
        } 
 
297
            'vip': '10.0.0.1',
 
298
            'vip_cidr': '24',
 
299
            'vip_iface': 'eth0',
 
300
            'ha-bindiface': 'eth1',
 
301
            'ha-mcastport': '5405',
 
302
        }
301
303
        vip_params = 'params ip="%s" cidr_netmask="%s" nic="%s"' % \
302
 
                     (_ha_config['vip'], _ha_config['vip_cidr'], _ha_config['vip_iface'])
303
 
        
 
304
                     (_ha_config['vip'], _ha_config['vip_cidr'],
 
305
                      _ha_config['vip_iface'])
304
306
        _get_ha_config.return_value = _ha_config
305
307
        _relation_data = {
306
308
            'init_services': {'res_neutron_haproxy': 'haproxy'},
307
309
            'corosync_bindiface': _ha_config['ha-bindiface'],
308
310
            'corosync_mcastport': _ha_config['ha-mcastport'],
309
 
            'resources': {'res_neutron_vip': 'ocf:heartbeat:IPaddr2',
310
 
                          'res_neutron_haproxy': 'lsb:haproxy'},
311
 
            'resource_params': { 'res_neutron_vip': vip_params,
312
 
                                 'res_neutron_haproxy': 'op monitor interval="5s"'},
313
 
            'clones': { 'cl_nova_haproxy': 'res_neutron_haproxy' }
 
311
            'resources': {
 
312
                'res_neutron_vip': 'ocf:heartbeat:IPaddr2',
 
313
                'res_neutron_haproxy': 'lsb:haproxy'
 
314
            },
 
315
            'resource_params': {
 
316
                'res_neutron_vip': vip_params,
 
317
                'res_neutron_haproxy': 'op monitor interval="5s"'
 
318
            },
 
319
            'clones': {'cl_nova_haproxy': 'res_neutron_haproxy'}
314
320
        }
315
321
        self._call_hook('ha-relation-joined')
316
322
        self.relation_set.assert_called_with(