71
75
call(_pkgs, fatal=True),
72
76
call(_pkgs, fatal=True),
74
self.get_early_packages.assert_called()
75
self.get_packages.assert_called()
76
self.execd_preinstall.assert_called()
78
self.assertTrue(self.get_early_packages.called)
79
self.assertTrue(self.get_packages.called)
80
self.assertTrue(self.execd_preinstall.called)
78
82
def test_install_hook_precise_nocloudarchive(self):
79
83
self.test_config.set('openstack-origin', 'distro')
86
90
def test_install_hook_invalid_plugin(self, _exit):
87
91
self.valid_plugin.return_value = False
88
92
self._call_hook('install')
89
self.log.assert_called()
93
self.assertTrue(self.log.called)
90
94
_exit.assert_called_with(1)
92
96
def test_config_changed_upgrade(self):
93
97
self.openstack_upgrade_available.return_value = True
94
98
self.valid_plugin.return_value = True
95
99
self._call_hook('config-changed')
96
self.do_openstack_upgrade.assert_called_with(self.CONFIGS)
97
self.CONFIGS.write_all.assert_called()
98
self.configure_ovs.assert_called()
100
self.assertTrue(self.do_openstack_upgrade.called)
101
self.assertTrue(self.configure_ovs.called)
100
103
@patch('sys.exit')
101
104
def test_config_changed_invalid_plugin(self, _exit):
102
105
self.valid_plugin.return_value = False
103
106
self._call_hook('config-changed')
104
self.log.assert_called()
107
self.assertTrue(self.log.called)
105
108
_exit.assert_called_with(1)
107
110
def test_upgrade_charm(self):
108
111
_install = self.patch('install')
109
112
_config_changed = self.patch('config_changed')
110
_amqp_joined = self.patch('amqp_joined')
111
self.relation_ids.return_value = ['amqp:0']
112
113
self._call_hook('upgrade-charm')
113
114
self.assertTrue(_install.called)
114
115
self.assertTrue(_config_changed.called)
115
_amqp_joined.assert_called_with(relation_id='amqp:0')
117
117
def test_db_joined(self):
118
self.is_relation_made.return_value = False
118
119
self.unit_get.return_value = 'myhostname'
119
120
self._call_hook('shared-db-relation-joined')
120
121
self.relation_set.assert_called_with(
121
quantum_username='quantum',
122
quantum_database='quantum',
123
quantum_hostname='myhostname',
124
nova_username='nova',
125
nova_database='nova',
126
nova_hostname='myhostname',
124
hostname='myhostname',
128
def test_db_joined_with_postgresql(self):
129
self.is_relation_made.return_value = True
131
with self.assertRaises(Exception) as context:
133
self.assertEqual(context.exception.message,
134
'Attempting to associate a mysql database when there '
135
'is already associated a postgresql one')
137
def test_postgresql_db_joined(self):
138
self.unit_get.return_value = 'myhostname'
139
self.is_relation_made.return_value = False
140
self._call_hook('pgsql-db-relation-joined')
141
self.relation_set.assert_called_with(
146
def test_postgresql_joined_with_db(self):
147
self.is_relation_made.return_value = True
149
with self.assertRaises(Exception) as context:
150
hooks.pgsql_db_joined()
151
self.assertEqual(context.exception.message,
152
'Attempting to associate a postgresql database when'
153
' there is already associated a mysql one')
129
155
def test_amqp_joined(self):
130
156
self._call_hook('amqp-relation-joined')
137
163
def test_amqp_changed(self):
138
164
self._call_hook('amqp-relation-changed')
139
self.CONFIGS.write_all.assert_called()
165
self.assertTrue(self.CONFIGS.write_all.called)
141
167
def test_shared_db_changed(self):
142
168
self._call_hook('shared-db-relation-changed')
143
self.CONFIGS.write_all.assert_called()
169
self.assertTrue(self.CONFIGS.write_all.called)
171
def test_pgsql_db_changed(self):
172
self._call_hook('pgsql-db-relation-changed')
173
self.assertTrue(self.CONFIGS.write_all.called)
145
175
def test_nm_changed(self):
146
176
self.relation_get.return_value = "cert"
147
177
self._call_hook('quantum-network-service-relation-changed')
148
self.CONFIGS.write_all.assert_called()
178
self.assertTrue(self.CONFIGS.write_all.called)
149
179
self.install_ca_cert.assert_called_with('cert')
151
181
def test_cluster_departed_nvp(self):
152
182
self.test_config.set('plugin', 'nvp')
153
183
self._call_hook('cluster-relation-departed')
154
self.log.assert_called()
155
self.eligible_leader.assert_not_called()
156
self.reassign_agent_resources.assert_not_called()
184
self.assertTrue(self.log.called)
185
self.assertFalse(self.eligible_leader.called)
186
self.assertFalse(self.reassign_agent_resources.called)
158
188
def test_cluster_departed_ovs_not_leader(self):
159
189
self.eligible_leader.return_value = False
160
190
self._call_hook('cluster-relation-departed')
161
self.reassign_agent_resources.assert_not_called()
191
self.assertFalse(self.reassign_agent_resources.called)
163
193
def test_cluster_departed_ovs_leader(self):
164
194
self.eligible_leader.return_value = True
165
195
self._call_hook('cluster-relation-departed')
166
self.reassign_agent_resources.assert_called()
196
self.assertTrue(self.reassign_agent_resources.called)
168
198
def test_stop(self):
169
199
self._call_hook('stop')
170
self.stop_services.assert_called
200
self.assertTrue(self.stop_services.called)