summaryrefslogtreecommitdiffstats
path: root/tests/unit
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit')
-rw-r--r--tests/unit/post/test_keystoneauth.py82
-rw-r--r--tests/unit/post/test_post_execute.py131
-rw-r--r--tests/unit/prepare/test_prepare_execure.py67
3 files changed, 280 insertions, 0 deletions
diff --git a/tests/unit/post/test_keystoneauth.py b/tests/unit/post/test_keystoneauth.py
new file mode 100644
index 00000000..afd9062a
--- /dev/null
+++ b/tests/unit/post/test_keystoneauth.py
@@ -0,0 +1,82 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+import os
+
+import pytest
+
+from deploy.post.keystoneauth import Keystoneauth
+
+
+@pytest.mark.parametrize('openrc, expected', [
+ ('/etc/kolla/admin-openrc.sh', '/etc/kolla/admin-openrc.sh'),
+ (None, '/etc/kolla/admin-openrc.sh')])
+def test_create_Keystoneauth_instance(openrc, expected):
+ KeystoneClient = Keystoneauth(openrc)
+ assert KeystoneClient.openrc == expected
+
+
+@pytest.mark.parametrize('raws, expected', [
+ (
+ {
+ 'OS_USERNAME': 'admin',
+ 'OS_PASSWORD': 'keystone',
+ 'OS_AUTH_URL': 'http://10.20.11.11:35357/v3',
+ 'OS_TENANT_NAME': 'admin',
+ 'OS_USER_DOMAIN_NAME': 'Default',
+ 'OS_PROJECT_DOMAIN_NAME': 'Default',
+ 'OS_PROJECT_NAME': 'admin',
+ 'OS_INTERFACE': 'internal',
+ 'OS_IDENTITY_API_VERSION': 'region_name'
+ },
+ {
+ 'username': 'admin',
+ 'password': 'keystone',
+ 'auth_url': 'http://10.20.11.11:35357/v3',
+ 'tenant_name': 'admin',
+ 'user_domain_name': 'Default',
+ 'project_domain_name': 'Default',
+ 'project_name': 'admin'
+ }),
+ (
+ {
+ 'OS_USERNAME': 'admin',
+ 'OS_PASSWORD': 'keystone',
+ 'OS_AUTH_URL': 'http://10.20.11.11:35357/v3',
+ 'OS_TENANT_NAME': 'admin',
+ 'OS_USER_DOMAIN_NAME': 'Default',
+ 'OS_PROJECT_DOMAIN_NAME': 'Default',
+ 'OS_PROJECT_NAME': 'admin',
+ 'OS_ENDPOINT_TYPE': 'Default',
+ 'OS_REGION_NAME': 'Default'
+ },
+ {
+ 'username': 'admin',
+ 'password': 'keystone',
+ 'auth_url': 'http://10.20.11.11:35357/v3',
+ 'tenant_name': 'admin',
+ 'user_domain_name': 'Default',
+ 'project_domain_name': 'Default',
+ 'project_name': 'admin',
+ 'endpoint_type': 'Default',
+ 'region_name': 'Default'
+ }
+ )])
+def test__parse_credentials_in_Keystoneauth(raws, expected):
+ assert Keystoneauth._parse_credentials(raws) == expected
+
+
+@pytest.fixture(scope="session")
+def openrc_conf_file_dir(data_root):
+ return os.path.join(data_root, 'openrc_conf')
+
+
+def test_session(openrc_conf_file_dir):
+ openrc = os.path.join(openrc_conf_file_dir, 'admin-openrc.sh')
+ KeystoneClient = Keystoneauth(openrc)
+ assert KeystoneClient.session
diff --git a/tests/unit/post/test_post_execute.py b/tests/unit/post/test_post_execute.py
new file mode 100644
index 00000000..d614360c
--- /dev/null
+++ b/tests/unit/post/test_post_execute.py
@@ -0,0 +1,131 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+import shutil
+import os
+
+from deepdiff import DeepDiff
+import pytest
+
+from deploy.post.execute import (
+ _config_external_network,
+ _config_icmp_security_group_rule,
+ _config_ssh_security_group_rule,
+ _config_kolla_admin_openrc
+)
+
+
+@pytest.mark.parametrize('ext_name, physnet, expected', [
+ ('EXTERNAL', 'ens8',
+ {
+ 'network': {
+ 'name': 'EXTERNAL',
+ 'admin_state_up': True,
+ 'shared': False,
+ 'provider:network_type': 'flat',
+ 'provider:physical_network': 'ens8',
+ 'router:external': True
+ }
+ }),
+ ('EXTERNAL', 'ens3',
+ {
+ 'network': {
+ 'name': 'EXTERNAL',
+ 'admin_state_up': True,
+ 'shared': False,
+ 'provider:network_type': 'flat',
+ 'provider:physical_network': 'ens3',
+ 'router:external': True
+ }
+ })])
+def test__config_external_network(ext_name, physnet, expected):
+ assert _config_external_network(ext_name, physnet) == expected
+
+
+@pytest.mark.parametrize('security_group_id, expected', [
+ ('0x1111',
+ {
+ 'security_group_rule': {
+ 'direction': 'ingress',
+ 'ethertype': 'IPv4',
+ 'protocol': 'icmp',
+ 'remote_ip_prefix': '0.0.0.0/0',
+ 'security_group_id': '0x1111'
+ }
+ }),
+ ('0xaaaa',
+ {
+ 'security_group_rule': {
+ 'direction': 'ingress',
+ 'ethertype': 'IPv4',
+ 'protocol': 'icmp',
+ 'remote_ip_prefix': '0.0.0.0/0',
+ 'security_group_id': '0xaaaa'
+ }
+ })])
+def test__config_icmp_security_group_rule(security_group_id, expected):
+ assert _config_icmp_security_group_rule(security_group_id) == expected
+
+
+@pytest.mark.parametrize('security_group_id, expected', [
+ ('0x1111',
+ {
+ 'security_group_rule': {
+ 'direction': 'ingress',
+ 'ethertype': 'IPv4',
+ 'protocol': 'tcp',
+ 'port_range_min': 22,
+ 'port_range_max': 22,
+ 'remote_ip_prefix': '0.0.0.0/0',
+ 'security_group_id': '0x1111'
+ }
+ }),
+ ('0xaaaa',
+ {
+ 'security_group_rule': {
+ 'direction': 'ingress',
+ 'ethertype': 'IPv4',
+ 'protocol': 'tcp',
+ 'port_range_min': 22,
+ 'port_range_max': 22,
+ 'remote_ip_prefix': '0.0.0.0/0',
+ 'security_group_id': '0xaaaa'
+ }
+ })])
+def test__config_ssh_security_group_rule(security_group_id, expected):
+ assert _config_ssh_security_group_rule(security_group_id) == expected
+
+
+@pytest.fixture(scope="module")
+def openrc_conf_file_dir(data_root):
+ return os.path.join(data_root, 'openrc_conf')
+
+
+@pytest.mark.parametrize('globals_file_name', [
+ ('globals.yml'), ('globals_odl.yml')])
+def test__config_kolla_admin_openrc(globals_file_name, openrc_conf_file_dir, tmpdir):
+ src_globals_file_path = os.path.join(openrc_conf_file_dir, globals_file_name)
+ dst_globals_file_path = os.path.join(tmpdir.dirname, 'globals.yml')
+ shutil.copyfile(src_globals_file_path, dst_globals_file_path)
+
+ src_openrc_file_path = os.path.join(openrc_conf_file_dir, 'admin-openrc.sh')
+ dst_openrc_file_path = os.path.join(tmpdir.dirname, 'admin-openrc.sh')
+ shutil.copyfile(src_openrc_file_path, dst_openrc_file_path)
+
+ _config_kolla_admin_openrc(tmpdir.dirname)
+ src_openrc_lines = open(src_openrc_file_path, 'r').readlines()
+ dst_openrc_lines = open(dst_openrc_file_path, 'r').readlines()
+ if globals_file_name == 'globals.yml':
+ assert DeepDiff(src_openrc_lines, dst_openrc_lines, ignore_order=True) == {}
+ elif globals_file_name == 'globals_odl.yml':
+ diff = DeepDiff(src_openrc_lines, dst_openrc_lines, ignore_order=True)
+ assert len(diff) == 1 and diff.get('iterable_item_added') is not None
+ assert len(diff['iterable_item_added']) == 1
+ for val in diff['iterable_item_added'].values():
+ assert 'export SDN_CONTROLLER_IP' in val
+ tmpdir.remove()
diff --git a/tests/unit/prepare/test_prepare_execure.py b/tests/unit/prepare/test_prepare_execure.py
new file mode 100644
index 00000000..9e72722d
--- /dev/null
+++ b/tests/unit/prepare/test_prepare_execure.py
@@ -0,0 +1,67 @@
+##############################################################################
+# Copyright (c) 2017 ZTE Corp and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+import os
+import pytest
+
+import deploy.prepare.execute
+from deploy.prepare.execute import (
+ _set_qemu_compute,
+ _set_default_floating_pool,
+ _set_trusts_auth
+)
+
+deploy.prepare.execute.KOLLA_CONF_PATH = '/tmp'
+
+
+@pytest.fixture(scope="module")
+def kolla_conf_file_nov_path():
+ return os.path.join(deploy.prepare.execute.KOLLA_CONF_PATH, 'nova')
+
+
+@pytest.fixture(scope="module")
+def kolla_conf_file_heat_dir():
+ return os.path.join(deploy.prepare.execute.KOLLA_CONF_PATH, 'heat')
+
+
+@pytest.fixture(scope="module")
+def conf_file_dir(data_root):
+ return os.path.join(data_root, 'lab_conf')
+
+
+def clear_tmp_dir(path):
+ filelist = os.listdir(path)
+ for file in filelist:
+ file_path = os.path.join(path, file)
+ if os.path.isfile(file_path):
+ os.remove(file_path)
+ os.rmdir(path)
+
+
+def test__set_qemu_compute(kolla_conf_file_nov_path):
+ _set_qemu_compute()
+ exp_conf_file = os.path.join(kolla_conf_file_nov_path, 'nova-compute.conf')
+ assert os.path.isfile(exp_conf_file)
+ clear_tmp_dir(kolla_conf_file_nov_path)
+
+
+def test__set_default_floating_pool(kolla_conf_file_nov_path, conf_file_dir):
+ network_conf_file = os.path.join(conf_file_dir, 'network_virtual1.yml')
+ _set_default_floating_pool(network_conf_file)
+ exp_conf_file = os.path.join(kolla_conf_file_nov_path, 'nova-api.conf')
+ assert os.path.isfile(exp_conf_file)
+ clear_tmp_dir(kolla_conf_file_nov_path)
+
+
+def test__set_trusts_auth(kolla_conf_file_heat_dir):
+ _set_trusts_auth()
+ exp_conf_file_1 = os.path.join(kolla_conf_file_heat_dir, 'heat-api.conf')
+ exp_conf_file_2 = os.path.join(kolla_conf_file_heat_dir, 'heat-engine.conf')
+ assert (os.path.isfile(exp_conf_file_1) and os.path.isfile(exp_conf_file_2))
+ clear_tmp_dir(kolla_conf_file_heat_dir)