Add unit tests for OpenStackSnap.setup()
Change-Id: I35856ae3dfc2b5e8dd9e81daa96b749ed08c54cb
This commit is contained in:
parent
1b6970a551
commit
995054e370
@ -1,19 +1,20 @@
|
|||||||
# Basic test yaml for snap-openstack
|
# Basic test yaml for snap-openstack
|
||||||
|
# This file is taken directly from the keystone snap, except as noted below.
|
||||||
setup:
|
setup:
|
||||||
dirs:
|
dirs:
|
||||||
|
# Some dirs were trimmed from keystone's snap-openstack.yaml to minimize test code.
|
||||||
- "{snap_common}/etc/keystone/keystone.conf.d"
|
- "{snap_common}/etc/keystone/keystone.conf.d"
|
||||||
- "{snap_common}/etc/nginx/sites-enabled"
|
- "{snap_common}/etc/nginx/sites-enabled"
|
||||||
- "{snap_common}/etc/nginx/snap/sites-enabled"
|
- "{snap_common}/etc/nginx/snap/sites-enabled"
|
||||||
- "{snap_common}/etc/uwsgi/snap"
|
- "{snap_common}/etc/uwsgi/snap"
|
||||||
- "{snap_common}/fernet-keys"
|
|
||||||
- "{snap_common}/lib"
|
|
||||||
- "{snap_common}/lock"
|
|
||||||
- "{snap_common}/log"
|
|
||||||
- "{snap_common}/run"
|
|
||||||
templates:
|
templates:
|
||||||
keystone-nginx.conf.j2: "{snap_common}/etc/nginx/snap/sites-enabled/keystone.conf"
|
keystone-nginx.conf.j2: "{snap_common}/etc/nginx/snap/sites-enabled/keystone.conf"
|
||||||
keystone-snap.conf.j2: "{snap_common}/etc/keystone/keystone.conf.d/keystone-snap.conf"
|
keystone-snap.conf.j2: "{snap_common}/etc/keystone/keystone.conf.d/keystone-snap.conf"
|
||||||
nginx.conf.j2: "{snap_common}/etc/nginx/snap/nginx.conf"
|
nginx.conf.j2: "{snap_common}/etc/nginx/snap/nginx.conf"
|
||||||
|
chmod: # Doesn't exist in keystone's snap-openstack.yaml. Added for testing purposes.
|
||||||
|
"{snap_common}/lib": 0755
|
||||||
|
chown: # Doesn't exist in keystone's snap-openstack.yaml. Added for testing purposes.
|
||||||
|
"{snap_common}/lib": "root:root"
|
||||||
entry_points:
|
entry_points:
|
||||||
keystone-manage:
|
keystone-manage:
|
||||||
binary: "{snap}/bin/keystone-manage"
|
binary: "{snap}/bin/keystone-manage"
|
||||||
|
@ -22,6 +22,7 @@ Tests for `snap_openstack` module.
|
|||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
from mock import call
|
||||||
from mock import mock_open
|
from mock import mock_open
|
||||||
from mock import patch
|
from mock import patch
|
||||||
|
|
||||||
@ -33,6 +34,7 @@ TEST_DIR = os.path.join(os.path.dirname(os.path.realpath(__file__)),
|
|||||||
|
|
||||||
MOCK_SNAP_ENV = {
|
MOCK_SNAP_ENV = {
|
||||||
'snap_common': '/var/snap/keystone/common',
|
'snap_common': '/var/snap/keystone/common',
|
||||||
|
'snap_data': '/var/snap/keystone/x1',
|
||||||
'snap': '/snap/keystone/current',
|
'snap': '/snap/keystone/current',
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,8 +66,10 @@ class TestOpenStackSnapExecute(test_base.TestCase):
|
|||||||
return paths.get(path, False)
|
return paths.get(path, False)
|
||||||
|
|
||||||
def mock_snap_utils(self, mock_utils):
|
def mock_snap_utils(self, mock_utils):
|
||||||
snap_utils = mock_utils.return_value
|
'''Mock SnapUtils code'''
|
||||||
snap_utils.snap_env = MOCK_SNAP_ENV
|
mock_utils_obj = mock_utils.return_value
|
||||||
|
mock_utils_obj.snap_env = MOCK_SNAP_ENV
|
||||||
|
return mock_utils_obj
|
||||||
|
|
||||||
@patch.object(base, 'SnapFileRenderer')
|
@patch.object(base, 'SnapFileRenderer')
|
||||||
@patch('snap_openstack.base.SnapUtils')
|
@patch('snap_openstack.base.SnapUtils')
|
||||||
@ -253,3 +257,56 @@ class TestOpenStackSnapExecute(test_base.TestCase):
|
|||||||
snap.execute,
|
snap.execute,
|
||||||
['snap-openstack',
|
['snap-openstack',
|
||||||
'keystone-broken'])
|
'keystone-broken'])
|
||||||
|
|
||||||
|
|
||||||
|
class TestOpenStackSnapSetup(test_base.TestCase):
|
||||||
|
|
||||||
|
def mock_snap_utils(self, mock_utils):
|
||||||
|
'''Mock SnapUtils code'''
|
||||||
|
mock_utils_obj = mock_utils.return_value
|
||||||
|
mock_utils_obj.snap_env = MOCK_SNAP_ENV
|
||||||
|
mock_utils_obj.ensure_dir.return_value = None
|
||||||
|
mock_utils_obj.chmod.return_value = None
|
||||||
|
mock_utils_obj.chown.return_value = None
|
||||||
|
return mock_utils_obj
|
||||||
|
|
||||||
|
@patch.object(base, 'SnapFileRenderer')
|
||||||
|
@patch('snap_openstack.base.SnapUtils')
|
||||||
|
@patch('oslo_concurrency.lockutils.lock')
|
||||||
|
@patch.object(base, 'os')
|
||||||
|
def test_base_setup(self, mock_os, mock_lock, mock_utils, mock_renderer):
|
||||||
|
'''Ensure setup method handles snap-openstack.yaml keys/values'''
|
||||||
|
mock_utils_obj = self.mock_snap_utils(mock_utils)
|
||||||
|
snap = base.OpenStackSnap(os.path.join(TEST_DIR,
|
||||||
|
'snap-openstack.yaml'))
|
||||||
|
builtin = '__builtin__'
|
||||||
|
if sys.version_info > (3, 0):
|
||||||
|
builtin = 'builtins'
|
||||||
|
with patch('{}.open'.format(builtin), mock_open(), create=True):
|
||||||
|
snap.setup()
|
||||||
|
mock_lock.assert_called_once_with(
|
||||||
|
'setup.lock', external=True,
|
||||||
|
lock_path='/var/snap/keystone/x1/snap-openstack')
|
||||||
|
mock_utils_obj.chmod.assert_called_with(
|
||||||
|
'/var/snap/keystone/common/lib', 0o755)
|
||||||
|
mock_utils_obj.chown.assert_called_with(
|
||||||
|
'/var/snap/keystone/common/lib', 'root', 'root')
|
||||||
|
expected = [
|
||||||
|
call('/var/snap/keystone/common/etc/keystone/keystone.conf.d',
|
||||||
|
perms=488),
|
||||||
|
call('/var/snap/keystone/common/etc/nginx/sites-enabled',
|
||||||
|
perms=488),
|
||||||
|
call('/var/snap/keystone/common/etc/nginx/snap/sites-enabled',
|
||||||
|
perms=488),
|
||||||
|
call('/var/snap/keystone/common/etc/uwsgi/snap',
|
||||||
|
perms=488),
|
||||||
|
call('/var/snap/keystone/common/etc/keystone/keystone.conf.d/'
|
||||||
|
'keystone-snap.conf',
|
||||||
|
is_file=True),
|
||||||
|
call('/var/snap/keystone/common/etc/nginx/snap/sites-enabled/'
|
||||||
|
'keystone.conf',
|
||||||
|
is_file=True),
|
||||||
|
call('/var/snap/keystone/common/etc/nginx/snap/nginx.conf',
|
||||||
|
is_file=True)
|
||||||
|
]
|
||||||
|
mock_utils_obj.ensure_dir.assert_has_calls(expected, any_order=True)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user