Ensure we call application_version_set with valid argument
Change-Id: If5ddff7eaae5e23df7d705959cd8bffd1b9c6afe Closes-Bug: #1767060
This commit is contained in:
parent
5f90ad4ca6
commit
fce8db8756
|
@ -756,7 +756,25 @@ def assess_status(configs):
|
|||
"""
|
||||
assess_status_func(configs)()
|
||||
if pxc_installed():
|
||||
application_version_set(get_upstream_version(determine_packages()[0]))
|
||||
# NOTE(fnordahl) ensure we do not call application_version_set with
|
||||
# None argument. New charm deployments will have the meta-package
|
||||
# installed, but upgraded deployments will not.
|
||||
def _possible_packages():
|
||||
base = determine_packages()[0]
|
||||
yield base
|
||||
if '.' not in base:
|
||||
for i in range(5, 7+1):
|
||||
yield base+'-5.'+str(i)
|
||||
version = None
|
||||
for pkg in _possible_packages():
|
||||
version = get_upstream_version(pkg)
|
||||
if version is not None:
|
||||
break
|
||||
else:
|
||||
log('Unable to determine installed version for package "{}"'
|
||||
.format(determine_packages()[0]), level=WARNING)
|
||||
return
|
||||
application_version_set(version)
|
||||
|
||||
|
||||
def assess_status_func(configs):
|
||||
|
|
|
@ -467,6 +467,52 @@ class UtilsTestsCTC(CharmTestCase):
|
|||
)
|
||||
application_version_set.assert_called_with('5.6.17')
|
||||
|
||||
@mock.patch.object(percona_utils, 'pxc_installed')
|
||||
@mock.patch.object(percona_utils, 'determine_packages')
|
||||
@mock.patch.object(percona_utils, 'application_version_set')
|
||||
@mock.patch.object(percona_utils, 'get_upstream_version')
|
||||
def test_assess_status_find_pkg(self, get_upstream_version,
|
||||
application_version_set,
|
||||
determine_packages,
|
||||
pxc_installed):
|
||||
get_upstream_version.side_effect = [None, None, '5.6.17']
|
||||
determine_packages.return_value = ['percona-xtradb-cluster-server']
|
||||
pxc_installed.return_value = True
|
||||
with mock.patch.object(percona_utils, 'assess_status_func') as asf:
|
||||
callee = mock.Mock()
|
||||
asf.return_value = callee
|
||||
percona_utils.assess_status('test-config')
|
||||
asf.assert_called_once_with('test-config')
|
||||
callee.assert_called_once_with()
|
||||
get_upstream_version.assert_called_with(
|
||||
'percona-xtradb-cluster-server-5.6'
|
||||
)
|
||||
application_version_set.assert_called_with('5.6.17')
|
||||
|
||||
@mock.patch.object(percona_utils, 'log')
|
||||
@mock.patch.object(percona_utils, 'pxc_installed')
|
||||
@mock.patch.object(percona_utils, 'determine_packages')
|
||||
@mock.patch.object(percona_utils, 'application_version_set')
|
||||
@mock.patch.object(percona_utils, 'get_upstream_version')
|
||||
def test_assess_status_find_pkg_fails(self, get_upstream_version,
|
||||
application_version_set,
|
||||
determine_packages,
|
||||
pxc_installed, log):
|
||||
get_upstream_version.return_value = None
|
||||
determine_packages.return_value = ['percona-xtradb-cluster-server']
|
||||
pxc_installed.return_value = True
|
||||
with mock.patch.object(percona_utils, 'assess_status_func') as asf:
|
||||
callee = mock.Mock()
|
||||
asf.return_value = callee
|
||||
percona_utils.assess_status('test-config')
|
||||
asf.assert_called_once_with('test-config')
|
||||
callee.assert_called_once_with()
|
||||
get_upstream_version.assert_called_with(
|
||||
'percona-xtradb-cluster-server-5.7'
|
||||
)
|
||||
self.assertFalse(application_version_set.called)
|
||||
self.assertTrue(log.called)
|
||||
|
||||
@mock.patch.object(percona_utils, 'services')
|
||||
@mock.patch.object(percona_utils, 'REQUIRED_INTERFACES')
|
||||
@mock.patch.object(percona_utils, 'make_assess_status_func')
|
||||
|
|
Loading…
Reference in New Issue