diff options
Diffstat (limited to 'tests/unit/post/test_post_execute.py')
-rw-r--r-- | tests/unit/post/test_post_execute.py | 131 |
1 files changed, 131 insertions, 0 deletions
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() |